Exercises in absurdity, or ... M-Audio Code controller

More interesting discoveries today while looking around for stuff built around Raspberry Pi: https://zynthian.org/

I’ve run across that thing before, but dismissed with “I don’t need a Linux based synth”. But looking at all the ports on that thing made me think, this is Linux, all open source and its got DIN MIDI + plenty of USB ports, so doing MIDI routing and processing would be just a matter of implementing it. And sure enough, somebody already did: https://wiki.zynthian.org/index.php/Configure_MIDI_Filter/Router

So this baby is this weirdest cross between a multiengine synth, multiport USB host and a MIDI router/processor. Plus deity knows what else, I’ve barely scratched the surface of the (potentially outdated) list so far:
https://wiki.zynthian.org/index.php/Zynthian_Features

The whole works including MIDI processing, is configurable via web interface, and ultimately you can just ssh into the box and do whatever you want.

I may have just fallen in love :yum:

1 Like

I have that bookmarked. Been watching for awhile, but everytime i think i might pull the trigger theyre out of one thing or another.
Heh heh

Im sure youre aware of Zoia and Axoloti too, right? So many tasty things these days!

1 Like

That’s the annoying thing with this indie stuff, everything is always out of stock. Like Axoloti Core has been for a while :joy: (so yeah, knew about that one through this forum, but…)

Zoia I didn’t know about, looks wonderfully crazy :smile:
Thanks for the tip, it’s something to keep an eye on, but on the expensive side for the time being.

In the meanwhile I went ahead and ordered a Zynthian while they do have the main kit in stock. Interestingly, according to this interview, it started life from solving largely the same problem: lacking USB MIDI Host, and not wanting a laptop/desktop in the setup.

1 Like

Pls keep me posted on your Zynthian journey, and okay to PM me here. Im very interested in the device but, even tho I used to work in tech, age and other issues have negatively affected my cognitive abilities (so I kind of fear open source stuff because it gets overwhelming).

Zynthian is great. Also its just a linux computer so you can run anything on it unlike the axoloti. You should also be able to hook up a monitor but then live you must use the touchscreen.

Yeah, it can be daunting, often because things move so fast and people don’t remember to update documentation.

To me it’s mostly about picking your battles. Open source is what pays my bills, but when you do that all day long, the last thing you want to do in the evenings is debug computer issues. Which is part of the reason I absolutely refuse to have general purpose computers in my setup. Zynthian is running a general purpose OS but it’s still special purpose hardware which makes it a bit different.

So here I have a situation where apparently no commercial box will do what I want in terms that are acceptable to me, and a open source hardware/software project that will at least enable me to add support if it doesn’t out of the box. And unlike a special purpose from-scratch Arduino hack, it comes in a nice casing and a powerful synth as a bonus. Which is surely a bit backwards way to look at that thing, but what the hey :smile:

And yeah, I’ll post updates in one form or another.

Ooh… this stuff is MIDI control porn:
https://wiki.zynthian.org/index.php/Zynthian_UI_Users_Guide#CUIA:_Callable_UI_Actions

The more I look, the more it seems as this baby will liberate me from the laptop on the studio table for good: the laptop is only there for recording mixdown/mastering and since Zynthian can record audio (even controllable over MIDI), and the result is accessible over the network…

CV and Midi - they are now talking about adding an oled to a couple of tiers

1 Like

Oh, that looks nice too. Thanks for the tip @thetechnobear! Like @CreepyPants noted above, there’s so much fun going on all over the place it’s like being a kid in a candy store. Now if they only sold time as well :joy:

An update on this uphill battle for your entertaintment :smile:

My MidiHub finally arrived on Friday, and with that it’s now possible (if a bit awkward) to translate the Mackie control (Note on-messages) the Code controller sends from its transport controls into other things, such as MIDI Start/Stop and CC for previous/next sequence and rec on/of on the Pyramid. So one step closer but many gaps to bridge still.

The MH is not an USB Host so it needs help from something else to actually connect the USB output from the Code to the MH for translating and routing.
The other thing the MH doesn’t currently do (but this might get addressed in a future firmware update) is transformations to SysEx, so I can’t translate Mackie controls to MMC for talking to the Fostex D2424 multitrack.

Another issue is that while Pyramid will start playback on MIDI Play even if it doesn’t receive external clock, it takes several seconds to do so and is unresponsive during that time. Which grows annoying really fast, so much so that it turns out not to be a real option, at least with my patience, especially with the long timeout setting required by the D2424. The MH could actually serve as a clock master which might be one option to deal with that, but then I’d really rather have Pyramid be the master, except during audio recording. The “native solution” to remote Pyramid start/stop/rec control is a pedal, which is probably the best solution in many ways, but it’s getting crowded on the floor, and I want to those damn transport controls on the controller working because they are there, damnit. :sweat_smile:

Having seen which gaps the MH still left to be solved, finally decided enough is enough. Took me a good part of the weekend (being a total newbie with electronics really) but I now have a DIY solution based on a Teensy board, which can talk USB and DIN MIDI, translate the Mackie transport to MMC for the Fostex, PyraMIDI CC’s where applicable, plus fake Pyramid pedal controls to let it start itself the way it wants. Yay. :crazy_face:

What is still missing though is USB Host, the Teensy LC boards that I have can’t do that. The just released Teensy 4.1 does though, among many other things. It’s quite a monster of a board (eight serial ports!) and a ridiculous overkill for this purpose, but then it’s so ridiculously cheap for the power it just doesn’t really matter. Guess I wont have any freetime problems next weekend either :laughing: Would be nice to make some music for a change but…

2 Likes

I feel the same way about Novation and my complete frustration with several of their controllers… I will never again fiddle with Novation Automap in my life.

Ironically enough the second audio interface I ever bought was a NI Z2… which eventually popped a power supply capacitor… requiring me to go back to the first audio interface I ever bought. An M-audio Conectiv which is still kicking after all these years…

Where there’s a will there’s a way… :crazy_face:

My Teensy 4.1 USB host project was on a hold for a bit due to reality and other hobbies intervening. In the meanwhile, we gained an RPi version of the MidiHub Editor, so now that I resumed the project and thinking about the routing task on the Teensy, I realized the Zynthian needs to be the USB Host in all this, because that’s what the MidiHub is now connected to, and two USB hosts cannot talk to each other. There’s USB OTG, but that’s only on RPi3. All these toys and the :face_with_symbols_over_mouth: transport controls are still unusable.

Today I was programming other stuff on the controller when it dawned on me that while most of the things on the keyboard can be assigned to arbitrary channel, there’s nothing like that for the transport controls. So maybe they always send on channel #1, in which case I could move the other stuff to other channels, at which point it becomes something the Zynthian’s MIDI router can handle and filter?
After changing the controller global MIDI channel to #6, the transport buttons still talk to channel #1. Yes!

So, make Zynthian listen to the Code USB output #3 (where this kind of UI stuff lives, actual playing goes through DIN to keep it more standalone), map << , >> and rec button Note-events to corresponding PyraMidi CC’s on channel #16 and play/stop buttons to note on/off events, route back to MidiHub where the note on/off is transformed to Play/Stop messages, filter out extra crap and return to Pyramid. Voila! :crazy_face: :partying_face: :crazy_face:

Edit: As it often happens with stuff like this, once you get a thing working you realize there’s a simpler way: there’s no need to change the keyboard channel at all, because Zynthian is not listening to that USB output at all in this setup. Which also points to how limited the USB routing + manipulation capabilities in this setup are, but for now…

1 Like

Love your updates
Thank you!

Note: transport is a system msg, not a channel msg, hence no channel #. Like F8 MIDI Clock, etc.

Yes, MIDI transport are system messages, but remember the case here: the M-Audio transport controls send Mackie control, which for Play/Stop/Fwd/Rwd/Rec is just Note on/off-messages, which are on a specific channel.

Aaaack! LOL
Sorry, forgot the Mackie

1 Like

If I had to summarize this whole topic in one line, I’d be hard-pressed to do better than that :joy:

1 Like

Quarterly absurdity update time :sweat_smile:

While I got the stuff working with Zynthian, this was an unsatisfactory setup as it doesn’t support arbitrary routing between USB ports as you’d want an USB host to do. And it’s slow to boot, doesn’t have a power button (which gets surprisingly annoying) and has these limits dealing with SysEx. So I finally broke the bank and bought an iConnectivity MioXL, which in a way is a huge overkill for my meager setup, but OTOH for the first time I can connect everything two-way for SysEx dump and restoration (all that nineties stuff with no backups is a bit of a timebomb) and connect and route all the damn USB stuff any way I damn want and powered from a central point.

All good then? Not so easy…

I obviously knew that the official Mio control software is Win/OSX only, but the SysEx protocol was well documented and there’s even an open-source GUI client (iconnconfig) for it all. It was untested for the X-series, so it was a jump to the unknown, but thought if it doesn’t work then how hard can it be. Well. Turns out iConnectivity did the unthinkable and completely redesigned the SysEx protocol for the X-series and didn’t document it at all. Of course they also didn’t explicitly state this anywhere…

I do have a Windows installation in the house, but its at the other end of the house on a dual-boot computer that usually runs Linux, so while it was possible to get it connected and running in a basic setup, this was not a feasible setup going forward. I had two weeks to figure out whether I can reverse-engineer the wire-protocol or return the damn box. This turned out to be quite an entertaining little project.

So for anybody interested, I have now a skeleton of a command-line tool for configuring Mio X-series. Lots of functionality is still missing but shouldn’t be too hard to add as time permits. Tested on Linux, but the actual requirements are Python 3 and MIDO library: https://codeberg.org/pmatilai/mioctl

1 Like

This is bril - thank you for sharing!

…and exactly one day short of a year from the purchase, this piece of :face_with_symbols_over_mouth: of a controller develops “issues”: a dozen dead keys, combined with random bursts of phantom keypresses in Poltergeist style.

This on a keyboard which has seen probably less than 1000 key presses in its lifetime - it has been doing little besides collecting dust, except that it just got a shiny new dust cover. I guess this is its way of thanking me.

Thankfully it’s under Thomann warranty for a long time still but … sigh.

Kids, don’t buy M-audio :laughing:

1 Like

Sorry. I detest M Audio for similar reasons but chalked it up to being a cranky old fart.

1 Like