Alternative firmware for Radio Music

Rich Otero edited this page Nov 24, 2017 · 12 revisions

Alternative firmware for the Radio Music Module

The most obvious alternative firmware for Radio Music is Chord Organ, which turns your RM into an 8 voice polyphonic oscillator.

Learn more about Alternative Firmware for Radio Music in this great video from Voltage Control Lab.

A whole bunch of alternative firmwares being developed by James Carruthers over here.


  • This is the standard Arduino Hello World 'Blink' sketch, converted for the Radio Music module. Conversion in this case means changing the line "int led = 13;" into "int led = 3;" so the top left LED on the front panel blinks.


Loop Divider

  • This is a version of the normal Radio Music firmware. The Channel knob, reset button and bank change are all as normal.
  • But the Reset button becomes an OUTPUT, sending out pulses, and the Start pot controls the pulse speed.
  • The pulses are (crudely) synchronised to the loop playing. i.e. with the Start pot at zero (7 o'clock) there is one pulse each time the loop restarts. As you turn the pot up, the repeat length is divided.
  • It's easier to understand in this video demo.


  • sinesfun.ino is a ludicrous 32-channel sinewave drone machine with tunings based on La Monte Young's well tuned piano. Just press the reset button to move to another chord.


  • stereodelay.hex and stereodelay.ino turn the Radio Music module into a STUPID stereo delay module. With many caveats.
    • Audio demo
    • Input: The module expects a small (1.25v p-to-p) input signal that is floating at around 2.5v. That is very different from a modular signal, which is bipolar, 10v p-to-p. So, to get a clean (ish) signal, I used the two centre channels on a Maths to add a little offset and attenuate the signal a lot.
    • Output: To get stereo output, I'm using the Reset Input as an output. I'm also using the Teensy Audio library's PWM output module, which sends signals to pins 3 and 4. So I've run a jumper on the back of the teensy from Pin 5 (ie digital pin 3) to pin 11 (ie Digital pin 9). This may be a bad idea and might blow up your module. Mine is OK so far. LEDs 1 and 2 are on pins 3 & 4, so they flash all the time.
    • Output levels: The main output via the DAC is much higher than the PWM output, so you'll need to play with the mixer a bit.
    • Control. This is where it gets really stupid. The Teensy Audio input stream library uses the on-board ADC full time, so you can't use that ADC to read pots. So there are no controls on this delay module. Instead, delay time and feedback change randomly and independently across the two channels. The Teensy 3.1 does have a second ADC, so there will be a way around this.

UTA firmware

  • The goal of UTA firmware is to load binaries from the sd-card instead of using teensy loader. All compiled applications for RM can be store in sd-card and loading them does not require computer.
  • When RM module is powered, utasker firmware loads the application named "software.bin" in root folder. The other applications are stored in /firmware/ under name x.bin with x from 0 to 15. For switching to a new application, push the reset button for 5 seconds until the leds start blinking. Then, the time pot select the next binary to load frpm 0 to 15 (indicates in binary by leds). Pressing again reset button overwrite software.bin with the selected binary.
  • !!! Important information !!!
    • safety: from now on, i did not successfully brick the teensy after many wrong coding attempts (applications and bootloaders) but I successfully corrupted data on sd-card and had to reformat it. More seriously, I can't claim that it is 100% safe but I never brick the processor and the worst thing that happens to me was a lost of data on sd-card (and the bug that corrupts the data has been identified and fixed). If you have important files, I strongly recommend to backup these files. Please, read the documentation carefully and understand that this program is currently experimental and thus can't guarantee that UTA firmware is totally safe and nothing wrong will happen. The only things that I can say is since the beginning of this project, with many many wrong attempts with utasker bootloader, I never had critical hardware failures...
    • stability: not all sd-cards are working (surely driver problem on utasker).
      • sandisk 8G: OK
      • samsung 32G: KO
    • I want to restore the original firmware? Simply use teensy loader for loading normal hex file!
  • Installation
    • Copy the file x.bin (x from 0 to 15) in firmware directory on sd-card
    • Take one of x.bin file and copy it on the sd-card root directory as software.bin. It will be the first application loaded by utasker. If there is no software.bin file, the RM module won't start as there is no application to load!
    • Load the hex file in utasker folder with teensy loader. The onboard led of teensy should blink a couple of time and the first application should start after few seconds
  • Changing application
    • 5sec long press on reset button to enter the reset mode. The leds start to blink
    • Select the firmware you want to load with time knob. Feedback through the leds (binary number) tells you which application will be loaded
    • Push again reset button to reset the teensy and start with the selected application. If the selected application does not exist, e.g. leds show application 8 (0b1000) but firmware/8.bin is not on sd-card, the board resets and resumes the last application
  • How to setup environment for UTA: TODO
  • How to UTAified applications: TODO
  • Getting source of uTasker: you should contact the guy behind utasker for the source for kinetis processor. I will put later the patch for compiling utasker with RM module.
  • status of UTAified applications
    • RadioMusic:
      • seems ok from now on (but probably need more testing)
      • saving the current "radio" in ROM has been temporary deactivated
    • RM_blink: OK
    • sinesfun: can't be "UTAified"


Telharfauxnium is an additive synthesis firmware for Radio Music. Its tone is comprised of fifteen sines: The first sine is the funadmental, which is determined by the sum of the station knob and the station CV input (1 V per octave). Seven upper harmonics are generated by multiplying the fundamental frequency by exponents of a scaling factor and seven sub-harmonics are generated by dividing the center frequency by exponents of the same scaling factor. The scaling factor is determined by the sum of the start knob and the start CV input.

f = fundamental frequency = station knob + station input
s = scaling factor = start knob + start input

sine frequency calculation
harmonic 7 f * (s ^ 7)
harmonic 3 f * (s ^ 3)
harmonic 2 f * (s ^ 2)
harmonic 1 f * (s ^ 1)
fundamental f
sub-harmonic 1 f / (s ^ 1)
sub-harmonic 2 f / (s ^ 2)
sub-harmonic 3 f / (s ^ 3)
sub-harmonic 7 f / (s ^ 7)
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.