MiniDexed TX816 – Part 7 – In use!

Now that my MiniDexed TX816 seems largely usable (for me at least), this is the last part in the series for the time being and is simply a short demonstration of the module in use!

Here is an 80s style FM synth version of Jupiter from Holst’s Planets Suite.

Previous posts in this series:

  • Part 1: Introduction, context, and high-level design.
  • Part 2: PCB design.
  • Part 3: Panel design.
  • Part 4: PCB assembly.
  • Part 5: Mechanical assembly.
  • Part 6: Pico MIDI Router and TX816 IO Code.
  • Part 7: In use!

Warning! I strongly recommend using old or second hand equipment for your experiments.  I am not responsible for any damage to expensive instruments!

If you are new to microcontrollers and single board computers, see the Getting Started pages.

FM Lo-Fi Orchestra

As I have a significant collection of MIDI files already arrange for my Lo-Fi Orchestra, I thought it would be a great place to start to have my MiniDexed understand the Lo-Fi Orchestra MIDI channel setup.

Here is the routing table I’m using:

MIDIRT = [
  # TG CH
  0, # Dummy to allow 1-based index
  1, # 1 Brass
  2, # 2 Flute
  2, # 3 Flute
  4, # 4 Reeds
  4, # 5 Reeds
  6, # 6 Guitar
  7, # 7 Bass
  5, # 9 Timpani
  8, # 8 Glock/Vibes
  0, # 10 Drums
  3, # 11 Strings
  3, # 12 Strings
  3, # 13 Strings
  3, # 14 Strings
  0, # 15 n/a
  0, # 16 n/a
]

Looking at it from the other way round, this is how I’m using the tone generators:

  • TG 1: Brass (MIDI CH 1)
  • TG 2: Flute (MIDI CH 2 and 3)
  • TG 3: Strings (MIDI CH 11-14)
  • TG 4: Synth Lead 1 (MIDI CH 4, 5)
  • TG 5: Timpani (MIDI CH 8)
  • TG 6: Guitar (MIDI CH 6)
  • TG 7: Bass (MIDI CH 7)
  • TG 8; Vibes (MIDI CH 9)

I have no drums so I’ve not bothered trying to route MIDI CH 10 anywhere.  Also note that I’m only using voices from the first 32 “ROM1A” set.

This is sufficient to get many of the simpler Lo-Fi Orchestra files running on through the MiniDexed.  However there are a few additional tweaks required for the more complex ones if I don’t want to be losing MIDI messages or swamping the routing!

Key updates required:

  • Ideally remove channel 10 completely. It is a source of additional MIDI that is not parsed and any drum rolls send so many note changes that it can cause problems elsewhere.
  • Ideally remove the “MIDI CONTROL CHANGE” storm that happens at the start, where the MIDI file sends out CC messages to reset all controllers, clear notes, reset values to defaults and so on.  Again this causes the MIDI router to really struggle with all that unhandled MIDI data.
  • Any additional channels not in the above set (especially CH 15, 16) probably should be removed too.

Update: After setting up and recording the above video, I’ve actually updated the configuration slightly to support a Pico to MiniDexed interface on channels 2-9, but the principles here are essentially the same.  In short, this is a note to myself for when I look at my code in the future and wonder why it doesn’t exactly match this blog post anymore!

Usage Notes and Limitations

I mentioned last time how it is possible to get the UI IO panel out of sync if MiniDexed’s own menu system is used.  Basically it is best to pick one interfaec (either the TX816 panel or MiniDexed or MIDI) and stick with it!

I’ve already mentioned about how it is possible to swamp the MIDI routing.  Symptoms might include stuck notes, odd pitches, weird voice selections, and so on.

None of the settings (volume, detune, bank) are persistent across a power cycle.  The voice is persistent but only because the current position of the potentiometers is read on power up and the program change applied.

If the buttons are used to change modes whilst MIDI data is being streamed then the routing may get “out of sync” and notes will get stuck.  The only way out is for an external MIDI “reset all controllers” or “stop all notes” type action or a power cycle.

Ideally, I’d like a more intuitive selection of voices across banks, but for now I’m sticking with the “32 voices per bank” approach that MiniDexed is currently using.

Conclusion

As a general result, being able to have a TX816 aesthetic for my MiniDexed is great.  It is exactly what I wanted to do when I first encountered the MiniDexed project.  As you can hear in the video there is still the occasional “stutter” but performance wise it isn’t too bad!

I’m not sure I could recommend this approach for most people – it is quite niche – and there are still quite a few rough edges, but on the whole, considering how this has progressed through custom PCBs, a front panel, some mechanical assembly, and now custom code, I’m really pleased with how it has turned out.

So, on the plus side, everything you hear in the video is MiniDexed – there is nothing else involved other than the PC sending it the MIDI data.  On the “but why” side, you can do everything you hear in the video with MiniDexed and none of this messing around with PCBs, code and panels! In fact, to be honest, these days you can do everything you hear in the video (and more) in software on a laptop or Raspberry Pi anyway.

But that wasn’t the point of this project.  After all these years, I now have my TX816 (or as close as I will ever justify getting to it) and I’ve learnt quite a lot on the way.

And this is a really nice place to leave this now and just simply “use it” for a while.  But there is still plenty of scope for future updates, so watch this space.

And finally, just to reiterate, this project would not have been (so easily) possible without the discounts provided by the Seeed Fusion PCB service for the manufacturing of the PCBs, for which I am very grateful!

Kevin

Leave a comment