Skip to content

Latest commit

 

History

History
119 lines (64 loc) · 24 KB

README.MD

File metadata and controls

119 lines (64 loc) · 24 KB

(Let's start off on the right foot: this repository in its entirety is not affiliated with Dirtywave or Trash80, and has not been made available to help facilitate a permanent 'cheap alternative' to the Dirtywave M8. The headless experience, in whatever form you may decide to spin up, should be considered - at best - a trial; if you like the product and you're going to use it, buy one. Finally, Trash80: any issues with the content here - just say the word and it's gone.)

Hello!

So, looking to install m8c on a RG351V to test-drive M8 firmware on a Teensy, eh? Wanting a way to install/update m8c on that bad boy direct from source in an easy-to-use, fully scripted way that you can then, if you like, fairly easily extend for whatever your musical whims need to tickle - rather than roll with an otherwise valid, pre-built release? You'd like a 3D printable case for that Teensy too? And you're wanting to do this to trial whether a Dirtywave M8 is right for you, and totally will buy one if it invades your dreams? Well...you're in luck.


tl;dr:

  • Fair warning: this repo aims to fully automate everything and requires very little knowledge to 'just run' - for the purpose of not getting in the way of making music. I, however, haven't held your hand through this in super clear detail, nor tell you how to configure ArkOS etc. - I don't want to make building a 'fake' M8 easy, and I personally think people should do research on the random things they pull from the Internet.

  • The repo contains instructions (this file) and scripts to get a RG351V up and running with m8c built from its latest source. This methods makes the RG351V build m8c itself without enabling ArkOS dev mode - it does this by setting up a CHROOT jail for building, which is deleted after m8c is built. This only needs to be done when installing or updating m8c, and requires about 340M of space for building...which takes about 20 minutes on my end.

  • Also contains a display fix for newer RG351V units, and (soon, I promise; need to adjust the one I made for the RG351V) a 3D-printable Teensy 4.1 case to attach to the RG351V.

  • I've done other stuff for the Dirtywave M8 during my playing with my test build, like a PowerShell script to auto-magically prepare a sample library for the Dirtywave M8, and other bits and bobs. See my other repo for more.


The original version of this repo provided a script to build m8c from source by apt-get'ing missing dev packages. Yeah, I was apparently lucky - somehow I didn't break ArkOS. When I re-built it a second time, all bleedin' Heck opened up and...it wasn't good. A rabbit died, and I tore some things I'd ripped.

Anyway, this new script gives you two install/update options:

  • Build m8c within ArkOS via a CHROOT jail - this essentially sets up an isolated build environment for m8c so it doesn't affect ArkOS. Takes a bit of time to download everything, but isn't that long. Fully automated.

  • Build m8c within ArkOS if you have enabled dev mode. This is identical to the old repo script I had, but I haven't tested it in dev mode myself. It should work though. I wouldn't do it, however, as dev mode fundamentally changes ArkOS.

  • All three scripts provided (the install/update and start m8c scripts) can have user-created hook scripts for any custom actions you may want to include. The CHROOT build script has hooks before m8c is built, and after m8c is built but before the CHROOT is destroyed, in case the CHROOT jail is useful.


This repo started as a modified version of the approach utilised by jasonporritt. Their version is tailored towards getting things up and running quickly, and provides more-or-less ready-to-go release builds with some helper utilities for flexibility; mine is tailored towards supplying scripts to pull and build the latest version of m8c with little hand-holding. Ultimately there shouldn't be too much of a difference between the two when complete - bar downloading/build time! - but no hard feelings if you'd prefer the other route. That said, the Dirtywave M8 has seen continued growth since its launch, and updates to firmware sometimes means chasing the latest m8c version for compatibility, which pre-build repos don't help with if not updated - hence the focus here being on providing a route to install (and update to) the latest version fairly easily.

However, there is another way to ensure your handheld music box is always capable of displaying and utilising the latest M8 firmware! Yup: buy one. Do I have one? Maybe as soon as that pre-order button stops being grey, eh...?

For what it's worth: I adore the fact that Trash80 releases firmware blobs of the M8 so that people can 'roll their own'. Obviously this is, in part, a way to deal with supply issues, but he didn't need to do this; embracing - and trusting - the community with this is not just appreciated but noble. To me, that's practically an automatic purchase just out of sheer respect - and, to be blunt, no matter if you run the headless experience through a RG351V, a Raspberry Pi with a fancy DAC like the PiSound (with its lovely MIDI ports), or a 1960's microwave from Soviet Russia you've re-purposed and written your own Linux kernel in Brainfuck for, it just will not be as slick as the real thing. That's not arse-licking; the best device to run the M8 firmware, providing the full audio and MIDI in/out functionality alongside proper key-mapped inputs etc., is a hot-wired Chihuahua an M8.

Put simply: running through the steps and scripts here will grant you a knock-off M8, sure, and it'll be good enough to evaluate if you'd then use it long-term, but if you end up loving it, join me in F5'ing the product page...

Also, to be fair to all vendors (and your wallet), please do consider how the M8 functions and what you feel will help you re-create those beautiful noises that live inside your head - rather than fixating on that little GAS-voice in your head...or the louder GAS-voices on YouTube. That's why these solutions exist, after all - pretty much try-before-you-buy.

So, surely you know what a tracker is, yeah? If not, I'd suggest you do a bit of research on them before going much further; they're somewhat similar to regular DAW sequencers, but different enough. They also tend to make non-programmers think they're being tricked into coding due to all the hexadecimal and bounce off them too quickly due to the perception of difficulty. They're not difficult - they're great - but even if you can count to sixteen they might not be for you. You special little child, you.

As for other options to consider, there's a very similar project to the M8's software called LSDJ (or 'Little Sound Dj') that runs on Game Boy hardware; it's less capable than the M8, sure, but limitation often breeds creativity. Hardware-wise, I'd say the closest to the M8 (i.e., it's a hand-held tracker with synth capabilities!) would be the Polyend Mini. Software-wise, there are many trackers: from those focused on simply providing no-frills-but-full-fat tracker features like OpenMPT, to more DAW-like VST-chewing ones like Renoise (which is very nice and I very much love).

If you've never used a tracker and wandered into headless M8 because you don't know if trackers or the M8 are right for you, consider dipping your toes into an open-source software option or just watching a few videos online before putting money down on anything. Don't get me wrong: I love trackers, but they aren't for everyone...and GAS is one hell of a drug. Plus, if you're not that bothered about a DAW-less setup but want to explore tracking, no matter how impressive the M8 is, it is not as capable as a desktop-based software tracker like Renoise.

That said, another thing to consider is that the M8 isn't just a tracker; it also has a number of in-built synth engines which isn't something common to trackers (usually they just play samples), and it could be used with other hardware just as much as on its own. If the synth-side is what's pulled you, I expect maybe you thought about adding it alongside other hardware...so it's likely you've got some itchy money (I smell your GAS) to trial headless M8 and see if it works with your setup.

For what it's worth, I personally got a few Elektron units because I use computers all day (code monkey) and wanted to go DAW-less. Love 'em. However, I also grew up with Atari STs and Amigas, a soundtrack of The Prodigy and Atari Teenage Riot, and miss the days of forcing OctaMED to produce unholy noise my father did his best to smile at in support, so a portable tracker is right up my alley. However, I'm still sort of evaluating where the M8 'sits' with my setup. Like, I can get it to work various ways obviously, but Elektrons don't like being sequenced externally (you can't P-Lock external notes...ffs), and they're - shock - clearly not as mobile as the M8. I could sample what I make on the Elektrons into the M8, but that seems, well, counter-productive: they're sequencer-based instruments, not sound generators. So I'm currently sort of using the M8 almost like a tiny Digitone/Digitakt hybrid, with programmed M8 patterns triggered via MIDI. ...it works, but isn't how I wanted to use a tracker. It's not the M8's fault - Elektrons are great, super, wonderful, chef-kiss...but I like the flow of tracker sequencing. I'd ideally like the M8 to be the master, sending pattern change signals to the Elektrons where appropriate...but it gets weird with Elektrons needing a pattern change signal before the next pattern is due to start...they're just not gelling 100% how I'd like. I could, obviously, use the M8 entirely separately, but I have too many hobbies to then write music in two different eco-systems...! So it's fair to say I've moved to the RG351V to trial the 'mobile tinkering of sounds to plug into the Elektron workflow' side of things - the GAS allure of the M8 is strong, but I'm trying to be sensible before inevitably pulling the trigger...

So, err, yeah: if you're thinking you like the look of the M8 but aren't sure if it's right for you: before you put down a wedge of money you spent hours of your finite life miserably 'earning', here be a cost-effective way to trial it. The journey may not end with you getting an M8, but if the M8 is where your heart eventually lies: buy one. Revert your RG351V into a mobile gaming device. Go play a decent Super Metroid ROM hack or seven. ...well, if you're not glued to your shiny M8, eh.

I didn't ask for a damned blog, I want in; what do?

Consider it a tax for going down this road, along with a healthy bit of anti-GAS for good measure...!

Assuming you're starting from scratch:

  • First check how long it has been since this repo was updated. While this repo should hopefully be relevant for a while, I can't promise anything. Here be dragons and all that. You may still be able to piece together a working solution from what's here - and, hey, consider that a bonus: never stop learning!

  • Grab a Teensy 4.1; download the latest M8 headless firmware; flash the Teensy with it; test in on something like m8.run. Vague? I think it's fair you put some effort in...go do some research.

  • Grab an Anbernic RG351V. Now technically you could use a wide array of other devices here because they all simply act as an audio/visual front-end for the headless M8 - that said, the RG351V has a battery, fits in a pocket, and has a headphone jack. It's a decent, albeit obviously cut-down and thus imperfect, trial device. Personally I could have run in on my Steam Deck, and have run it on my PiSound-enhanced RPi4. I'm just giving you options.

  • Did you grab an Anbernic RG351V? If not, your quest kinda ends here - these instructions are pretty device specific. The repo is, essentially, just (preachy) instructions and script files to install build tools for m8c, do the needful build, and then provide an easy way to start-up m8c on the RG351V. If you're not using this device but are using Linux, setting up m8c is easy and you should look elsewhere for that.

  • I know it's 'boring' yadda yadda to most, but if you're going to re-use the SD card the RG351V comes with I'd personally suggest you take an image of it (the one in the TF1/INT solt), just in case you make a mistake or just want to revert to 'factory' settings. You could use something like ImageUSB to create the image.

  • Download the latest version of ArkOS and write it to your target SD card. This is an alternative operating system for the RG351V that you might want to consider switching to regardless as it's generally more performant than the stock OS. Make sure to download the image specifically for the RG351V, obviously.

  • Plop the card in your RG351V, turn it on, and let it boot. It'll restart a few times; this is normal. It should eventually then display ArkOS' stock graphical user interface - if it does, congrats: you can skip the next step.

  • ...if, like me, you found your device appeared to 'hang' on a yellow screen after a while, this is because newer units have a different display configuration - it's not a faulty install, etc.! As of ArkOS v2.0 (2024-04-24), the DTB file within this repo's EXTRAS/RG351V-SCREEN-FIX folder should fix this: simply overwrite the file on the SD card with this one. Are you a sensible and respectably paranoid individual? Good: so you know, I found this fix here; please do validate/check for newer solutions. It is a random binary blob, but do you trust the RG351V itself anyway...? Anyway, when done, check it boots! If it doesn't boot, well, umm, Software Failure. Press left mouse button to continue. Guru Meditation #D3ADB33F.48454C50.

  • (note: if you find you need this fix, you can technically apply it immediately after writing the ArkOS image, rather than after starting and falling over. Don't put this repo's files in place before first boot though; ArkOS will just delete them when it re-builds the SD card!)

  • Since we're all booted, no OI! I SAID GURU MEDIATION BITCH! issues, you're going to need an internet connection to pull and build m8c - so go ahead and configure the wireless connection now. And, for good measure, update ArkOS via its update menu option. When done, power the device down.

  • Plop the SD card back into a computer, and then slap the contents of this repo's RG351V-M8 folder into ArkOS' /roms/ports/ or /roms2/ports/ folder. Why's there two? Go look into ArkOS. Go look into the software you're randomly installing on your hardware. Don't be one of those idiots that blindly installs kernel-level anti-cheats, clicks links in spam emails, and be all 'oh, it'll be okay'. Make today the first day where you take responsibility for your digital security! Start using a Password Manager with a strong login, and in it store the unique-per-website, randomly generated, multi-word tongue-twisters you'll replace all your other passwords with! Question what led your monkey brain into thinking having social media apps on your 'phone that keep being proven to be secretly spying on you was a good idea! Stop using bloody Chrome! And while you're at all of this, don't forget to take care of yourself and your loved ones - and remember that all those other people you randomly see in life are humans made of the same meat, blood, and bone as you, and are loved by people too, so try to be kind to each other. The world is a strange place and we're only here once. Go down to the beach with your children; now, not tomorrow. See? Now breathe...and install Postal 2 and go fucking nuts. Cough.

  • Plop that sun'na'vah bitch SD card back into the RG351V. Boot it up, and under the Ports menu there's now a RG351V-M8-START and RG351V-M8-UPDATE option (and due to issues, also a RG351V-M8-UPDATE-DEVMODE option). Hurrah! ...if not, it's possible you may need to run PortMaster in order to jiggle things about properly. ...or just execute the scripts via a file manager?

  • If you are wanting to install or update m8c, run the RG351V-M8-UPDATE option (or RG351V-M8-UPDATE-DEVMODE if you are using dev mode). Note this will erase any current install of m8c, but remember: it's just a front-end. All your samples, songs, and secret picture collection of vintage Jeremy Clarkson are all on the Teensy's SD card, yeah? Note: if m8c fails to start, you may just need a reboot for the serial port user access to take effect.

  • Once you've got m8c built and installed, the RG351V-M8-START option...ooooh, it does things, you know?

...any notes?

Yeah:

  • I provide no support for any of this; you apply any of the repo's files and advice at your own risk. In terms of what I supply myself here, they're just plain-text scripts that I (originally, before the CHROOT jail approach...) took less time writing than this README.MD, and I strongly encourage a healthy sense of paranoia that should compel you to check over stuff like this anyway. In terms of software suggested for usage - e.g., m8c, ArkOS - before you harass them over any issue you may have, consider that their usage within this deployment's context may be the issue...and that they clearly aren't under any obligation to support you due to that. In other words: there is no offer of support, and you must not expect anyone will support you in any way. I'd like to assume (breathes in) rolling hard with system-altering scripts you found on the Internet written by someone who you don't know and executed on a non-stock OS to enable you to utilise a Chinese-produced device intended to play video-game preservation media as the host front-end for a USB-attached development board being used to test/trial closed-source firmware when its commercial alternative is not only available but recommended at multiple points means you're wearing your big boy pants and can clean your own mess. If you don't feel comfortable with that, there's no shame in that - but if you're not confident in fixing issues yourself, consider that the Dirtywave M8 off-the-shelf just, you know, kinda works?

  • My setup expects you to have connected any non-RG351V devices (i.e., the Teensy, MIDI devices, etc.) to the RG351V before starting the m8c start script so it can 'catch' everything. ...so, like, do that for best results. My modifications should hopefully automagically find the M8's audio output and route it to the RG351V, and the auto_midi_connect library should find MIDI devices (although I've not double-checked this yet).

  • While m8c is running you don't really need wifi (and it can cause audio noise), so I've got it switched off when starting up, and turned back on when it shuts down. "Oh, but Internet person!", I hear you cry! "What if I want a Samba share open so I can push/pull files like samples?", you prattle with a wry smile as you loudly jetison a wet and rippling fart that leaves no questions about whether you need to wipe. "This is where compromise comes in, my foul-gutted fart knobbler;", I'd likely retort, adding, "the samples are on the Teensy, ain't they, not the RG351V. Now go wipe your arse and get off my lawn."

  • Linux is great at giving you full control over something in the most 'normal user'-unfriendly way possible, especially within more embedded device leaning deployments - and this isn't made easy given a lack of a keyboard to angrily type WTF^^ why no midi bro into the terminal. This means hot-swapping MIDI devices etc. is not going to be detected - or, if it is, maybe you're The Chosen One?

  • The 3D print case for the Teensy should hopefully be easy to print. I'm against making this process too easy just out of principle, but I do think it's good to take care of your devices. The case makes an allowance for soldered pins 'cuz mine has its legs attached; my plan is to re-use the Teensy once this experiment ends.

  • Yerrrrsh, the scripts are commented. Yerrrrrrrshhhh, that's irregular. ...but I'm a C/C++/C#/Rust/etc. programmer doing safety-rated stuff, embedded stuff, game stuff, etc. so comments are natural to me. And yes, good code documents itself, but Bash and Linux need diagrams at the best of times. And I'd like people who do bother to read the scripts to know a) what bits are doing, and/or b) laugh at something I thought was clever that is actually wrong. You're your own QA department here though, remember.

  • Remember when I said this repo allowed you to 'easily extend' it? If you are interested in this, you'll see the scripts look for 'hook' scripts; just create these extra scripts yourself and Bob's your uncle.

...is that it?

Yes, you spicy little chinchilla, you. If you read all that, well, I hope it was useful/funny/reminded you that you didn't clean the beans out of that Soviet microwave before you started re-compiling that kernel.

Before we depart - and, don't worry, I won't miss you - I do recommend looking over all the projects in the M8 community eco-system, as well as those directly used by, or that inspired, this repo (below). Through Trash80's generosity, and the quality of their work behind the Dirtywave M8, there's a fantastic community of not just musicians making incredible noises, but tinkerers inspired to pick up CAD/electronics, soon to be depressed people learning the art of programming, and other such greatness. I do really love this sort of Golden Age we seem to be in where people can fairly easy just learn these skills and feasibly build something. I'm not one for Discord, but go have a look at the M8's. Search around YouTube for hours. A dude's made some Mick Gordon-esque Argent Metal on the M8 (boy, I loves me some Gordon). Some other dude made a LEGO-based* headless setup (which led to me trying m8c on the PiSound). Go explore all what this little creation led to. Hell, it might even inspire you to build something. ...and, respectfully, what is GAS? Baby, don't hurt me...no more.

Ciao.


*: NOTICE HOW I SAID LEGO?! BECAUSE, YOU BLOODY INTOLERABLE 'OVER THE POND'-ERS, IT IS LEGO! THE COMPANY IS LEGO; THE PRODUCTS ARE LEGO BRICKS! NOT LEGOS FOR THE LOVE OF ALL THAT IS HOLY AND PRECIOUS IN THIS WORLD! AND IF YOU 'COULD CARE LESS' IT MEANS YOU FUCKING DO CARE - AT LEAST A LITTLE! IF YOU COULDN'T CARE, THEN YOU. BLOODY. COULDN'T. CARE. LESS. YES, YES, I DAMN WELL KNOW THAT WE CHANGED 'Z'S TO 'S'S - SO IT WAS 'TRIVIALIZE', NOT 'TRIVIALISE', AND YOU GET BLAMED FOR THAT. AND THAT WE ADDED 'U'S IN PLACES THEY WEREN'T BEFORE, AND CSS 'ARTISTS' MOAN ABOUT 'COLOR' BEING WRONG ALL THE TIME. AND APPARENTLY 'SOCCER' WAS SOMETHING WE STOPPING USING. BUT FUCKING 'THRU'?! AND YOU HAVE THE FUCKING GALL TO SUBTITLE US SPEAKING CLEAR ENGLISH (ssh now Scousers; I can't understand you either) BUT HAVE YOU HEARD THE VERBIAGE DRIBBLE THAT DROPS OUT OF SO MANY OF YOUR STATES?! Okay, so neither of us is perfect. Look, how about you give us that quaint island you've got over there back to us, and we'll all have a couple of crumpets together.

Why'd I go to town on this? I originally was just going to push basic instructions, and then figured...why not? I don't know, man.