Acid Injector

source on github

tl;dr

Converts MIDI clips generated by STING by IFTAH (free Max For Live device) into .seq pattern dump files so you can use Behringer's Synthtribe software to send them to your TD-3 (Roland TB-303 clone). It also generates .syx (sysex) files so you can send a pattern to the TD-3 using any sysex librarian software or sysex-friendly DAW such as Reaper.

Sequence Length

Target Pattern Group (sysex only)
Target Pattern Slot (sysex only)

Triplet mode






        

Usage Notes

  1. Set up the STING Max For Live device on a MIDI track in Ableton Live. If you've got Ableton's Wavetable instrument, there's a preset called Basic 303 Bass that's good for monitoring STING's output; set the STING channel as its MIDI input so you can hear what STING's doing.
  2. Generate an acid line with STING that's disarmingly simplistic and catchy yet also beguilingly hypnotic and understatedly transcendental. This should only take one or two clicks.
  3. Record the output to any MIDI track (e.g. the one you've got Wavetable on) and trim the resulting clip down until you've got just one loop of the pattern; 16 steps maximum. Consolidate it, then right click the clip and click 'Export MIDI Clip...'
  4. Optionally set preferences for Sequence Length, Target Pattern Group/Slot and Triplet Mode BEFORE loading a MIDI file.
  5. Click 'Choose MIDI file' below and choose the .mid clip you just exported.
  6. Assuming you don't get any warnings, click 'Save .seq' to generate the Synthtribe pattern file.
  7. Synthtribe will only show you anything useful when your TD-3 is plugged in with USB and switched on, so do that, then go to the Sequencer view.
  8. Click 'Import' to find and load the .seq file you just created. Then click 'Store' to send the pattern to the TD-3, bearing in mind that the pattern will end up in the Pattern Group, Pattern Section and Pattern slot that you specify in the upper left.
  9. If you're using sysex, you can choose a Target Pattern Group/Slot before generating the file. Be careful - uploading to a slot will overwrite whatever's in it!

About

STING by IFTAH is a really nice acid line generator for Ableton Live (Max For Live device). It generates really nice acid lines for the Roland TB-303.

The TD-3 has a function not found in the original 303 which randomly generates a pattern when you press 'Clear' and 'Start/Stop' simultaneously. Sounds good, you're thinking! But I'm afraid you're wrong: it is actually bad. I want really nice semi-random acid patterns in my TD-3, not bad ones. Also I'm 10,000 years old and have two jobs and kids and sore knees and no time and I can't be arsed to program really nice patterns myself. I'd rather generate a load of them with STING and transfer them over.

Synthtribe is Behringer's Win/Mac software for various of its hardware synths, including its 303 knock-off the TD-3. As well as handling firmware updates via USB MIDI, it sends and receives sysex dumps and even has a little sequence editor of its own built in. It's not really nice, but it is pretty simple and reliable. And - surprisingly - it doesn't need to be installed, which means it doesn't litter your system with background processes, updaters and shortcuts.

This converter is pure Javascript - lightweight and dependency free - but doesn't really do anything fancy. If you export a 16-step MIDI clip from Ableton Live, regardless of tempo (or time signature, probably, but don't go crazy), you can use this converter to generate a .seq file that can be loaded into the Synthtribe software and then sent to your TD-3 via the 'Sequencer' page and 'Store' button; or a sysex file that you can transmit to the TD-3 via lots of free sysex librarian programs and many DAWs.

I did this on an unexpected September 2022 bank holiday after a quick google search failed to throw up any results for Behringer's proprietary file format. Just my luck: after spending ages picking it apart and figuring out how to reliably write the appropriate bytes back to the hardware, I did a better google search and found 303patterns.com, which has a very nice TD-3 pattern manager that uses Web MIDI and shows you the steps and stuff. It also lets you change TD-3 hardware settings, which can be a pain IRL without constant recourse to the manual. Very cool! I had some trouble getting it to work more than once (probably due to the war zone of MIDI drivers, multiclient virtual loopback drivers, and greedy DAWs that exists on my studio computer), so I didn't regret having made this (slightly more cumbersome) workflow for achieving similar ends. But if anyone else is looking for detailed sysex implementation info on the TD-3, Brad Isbell has dug deep into it and shared his findings here.

Anyway, it was a fun project for me. It forced me to learn about the Standard MIDI File format, which I've been putting off for years, and I'll have some use for that knowledge in future - especially calculating PPQN, evaluating timestamp deltas, all sorts of other fun stuff. This doc by Sean really helped with that!

Future

This is basically finished, unless I've overlooked or fucked up something fundamental that needs fixing. One more thing I might add is some means of quickly constructing (or partially/wholly populating) a Synthtribe .sqs file, which is a full dump of TD-3 patterns with some extra header info that specifies Track/Pattern Group/Pattern Section identifiers for each pattern. I assume that'll work via sysex as well.

More notes / troubleshooting