Earthsea - with two personalities

Here is a small mod which others might find handy. USB midi host support for earthsea.

  • With a grid (or nothing) plugged in, earthsea behaves as normal.
  • With a usb midi device plugged in, earthsea becomes a simple midi to cv converter.


The output in midi/cv mode is currently fixed as follows:

  • edge is gate
  • pos is pitch
  • 1 is mod wheel
  • 2 is key tracking
  • 3 is key velocity

Encoders when in midi/cv mode:

  • top: controls portamento
  • middle: shape control for key tracking; log -> linear -> exponential
  • bottom: shape control for key velocity; log -> linear -> exponential

Legato note handling with last note priority is always enabled. MIDI sustain and pitch bend (fixed at +/- 1 octave) are supported as well.

ii commands from teletype are ignored in midi/cv mode.

To go back to earthsea proper, just unplug the midi device.

Suggestions for improvement (or reports of problems) are welcome.


Will definitely give it a go!
would it work with a MIDI app on an iPad?

(of course I just sold my OP-1, and would be curious to try it with that, but got some other MIDI interfaces to try)

I don’t think so. The firmware mod adds USB midi host support where the earthsea module is effectively acting like the computer. Implementing host support means that you can plug in:

The iPad (or a computer) would most likely be expecting to USB midi device to be connected (like one of the above). It is conceivable that device mode could be implemented, the only thing I’m not immediately sure about is how one would go about telling the earthsea it should be a device or host.

For me personally I often use this with the zendrum zap => roland um-one interface => earthsea combo when I want to play something more rhythmic than what I can with a grid.

oh boy, what a great update! sounds like a really neat feature. i can imagine this on a WW as well, with the param knob controlling something like a quantized interval between A and B outputs…

Fantastic… Just when I had started considering adding an Intellijel uMidi to my setup. Looking forward to try this with my SubPhatty. Unfortunately, last night I was working on some presets on the Earthsea, and I suppose updating the firmware will delete them. So this will have to wait, until I’m done with my recorded presets. (Or if anyone can remind me if is it possible to backup presets on the computer… I assume it’s not possible).

This is totally amazing. Really clean and simple implementation. Will definitely come in handy at some point.

Thank you!

wonderful! can’t wait to try this with my op-1

Anybody trid it with the little QuNxus keyboard?

i’ll try it with my Qnexus

tested on op-1 - works great!

follow up:
also tested on akai mpd24 :+1:

1 Like

Finally got to try this with my beloved SubPhatty. Very nice, specially for when I feel like playing a more traditional keyboard. It’s easier than me setting up the Oplab, though I might also try connecting it to Oplab, to receive MIDI from the computer or the Octatrack.
The only problem I experienced was with pitch bending, which got Earthsea to hang on a note, until I took the USB cable or unplugged the SubPhatty. Perhaps I need to lower the range? By default it’s two semitones. Also, what cc is ‘tracking’ listening to? I didn’t seem to be getting anything out from that one.

I don’t think the pitch bend range on the controller should matter. The code is directly mapping the 14-bit MIDI pitch bend to +/- 12 semitones (unless I botched something which is entirely possible). Out of curiosity do you know if the SubPhatty transmits 7-bit pitch bend or 14-bit? Now that I’m thinking about it I’m not sure I tested 7-bit pitch bend. The next chance I get I’ll setup a torture test using a Continuum Fingerboard - not sure why I didn’t think to try that before, the Continuum can generate a lot of MIDI data.

The tracking output is actually a variation on pitch. Unlike pitch/pos where the output is mapped to semitones (based on 1v / octave), the tracking output maps MIDI notes 0-127 directly to the 0-10V range of the output. When the tracking knob is in the middle you get linear mapping, turn it left and the mapping is log(ish) in shape, turn it right for exponential(ish) shape.

The motivation for the tracking output was to aide in emulation of behavior more common to acoustical instruments. Take the decay of piano note for example; the low notes have a longer decay than the higher notes. Other instruments get brighter or darker depending on the note played. I tend to patch tracking to MATHS for inversion and scaling (if need be) then on to:

  • the rise/fall CV for one of its “slope” channels
  • the FM and/or resonance input on a filter

What I suspect is happing in your case is that tracking output appears to not be doing anything because the SubPhatty’s keyboard has a limited range - 25 keys or roughly 20% of the MIDI note range. Depending on what the base note of the SubPhatty’s keyboard is set to you might not see the tracking LED turn on. If the keyboard was translated up a few octaves I’d expect the tracking LED would illuminate.

Thanks for your detailed answer. I changed the default MIDI resolution in the SubPhatty from 7 to 14 bit, and now tracking is working as expected, but it still hangs on a note when I use pitch bending. Interestingly, when it hangs, it still accepts data from the mod wheel, which it first spits intermittently and then continuously, whilst the rest of the module is still stuck in one note, until I unplug the SubPhatty.
I have also tried it briefly with Oplab and I was pleased to find out I could even power the Oplab through Earthsea… And ES then had no problems receiving note info from the Octatrack (which, otherwise, would not accept if connected directly through the USB). Earthsea still hangs on a note when I change modes on the Oplab, but I can live with that. All it takes is to unplug it and plugged back on again.
I know I could just use Oplab, but I find it such a pain, having to find its own power plug, or connecting it to a computer… And with the CV ins and outs, I used to feel like I was spending more time troubleshooting the Oplab, than actually been able to use it to make music.
Thanks again for such alternative version for the Earthsea. I probably would still use ES more often with the grid, but it’s great to know I can also use it with other instruments, like the SubPhatty, to play more traditional keys, or the Octatrack, for some more rhythmic and crazy MIDI stuff.

@ngwese i’d love to merge this into the main firmware!


I don’t have an Oplab I can test with but if you could record the MIDI stream which is generated when you change modes and send it to me I can attempt to find and fix that problem. Recording the MIDI output from your SubPhatty as you play (key plus pitch bend) could also be of use in tracking down these bugs.

The MIDI spec has some finicky parts around running status which might not be getting handled properly. The pitch bend support was tested using a Push 1 (in user mode) as well as a Novation SL 61 but not as heavily as other parts of the code. I’ve found each controller can have it’s own quirks - the Zendrum controllers (I have a Zendrum ZAP) send note on and note off together in one burst which certain other devices didn’t work well with (it uses running status and zero velocity note on(s) in place of explicit not off(s) IIRC).

Took me couple attempts but I did install it eventually. Works like a charm with Qnexus. Thanks you ngwese!!
BTW, I though of it for a bit, maybe you can do something like built in arpeggiator and replace tracking knob with speed of arpeggios.

1 Like

@ngwese i’m absolutely loving this with the op-1. i was using the oplab to sequence, but this is waaaay more convenient. one thing i’m missing is a midi clock, so i can synchronize my other sequencers (meadowphysics & teletype) with the 4-track tape playback on the op-1. would it be hard to add this? perhaps holding the front panel button for a few seconds could switch output 1 (currently mod wheel) to be a clock out?


Anyone had any luck getting this to work with a Korg Microkey? I’ve tried both the latest HEAD and the linked hex and neither are working properly (though it is working a bit, if I wiggle the pitch bend it elicits a response).

so, is qunexus a “go” with this?

it might be a good idea to make sure the leds are turned off (via editor) or use switch in between, to prevent whine. but it seems yes.

need to test myself…