#d CHEM

CHEM is the successor to HC One. It’s a controller for Haken Audio’s EaganMatrix devices running firmware 10.4x or later. These are the Continuum, ContuinuuMini, EaganMatrix EuroRack Module, and the new EaganMatrix Micro.

Now available to preview from the “Nightly” Release on the CHEM GitHub repo.

The fully-implemented modules so far are shown here, connected to a Slim 70 Continuum.

Despite appearances, this plugin offers no audio processing at all. It is purely a controller for physical EaganMatrix devices. What this offers beyond the Haken Editor, is fast performance, voltage control of parameters. and the ability to work with multiple EM devices at once – just add another CHEM Core module.

Shown left to right:

CHEM module Summary
Core MIDI connection to and from the EM Device and supplemental MIDI controllers.
Play Preset playlists.
Macro Controls for the original 6 Macros with CV.
Jack Pedal configuration, and CV output signal from the pedals.
Sus, Sos, and Sos2 On-screen Sustain and 2 Sostenuto pedals.
Pre Pre-effects Compressor/Tanh and level with CV.
Fx EM Effects section with CV.
Post Post-effects EQ and level with CV.
Convolution Pre- and post- effects convolutions with CV.

Modules yet to come for:

  • Surface control and global settings (direction, rounding, polyphony, MIDI routing, etc).
  • Kinetic bank controls with CV.
  • Biq-bank controls with CV (?).
  • Builder for overlay presets with all Macros 1-90. I’m thinking something along the lines of PatchMaster.
  • User ideas…
6 Likes

Update

  • Settings module is complete
  • I’ve decided not to do Kinetic and the Bank controls. These aren’t automatable, so really belong in the preset editing domain, which is out of scope for a Rack plugin.

I’ve scaffolded most of the UI for 3 additional modules to address extended macros. One uses these to create the UI for Overlay Synths (as they’re called by the Haken team).

This shows Overlay on the left, and the current preset loaded on the device matches the preset name expected for the Overlay synth, so the green light is lit. Overlay works in conjunction with one or more XM modules that provide the knobs and cv inputs for the overlay’s parameters.

Then there are two instances of XM. Each provide up to 8 knobs for controlling extended macros. I haven’t added the input ports and modulation control yet. These will look and operate like the other CHEM modules.

The one on the right is in edit mode with the XM-Edit as the extender on its right providing the user interface for building out your overlay synth.

Once you’re done adding XM modules, Remove XM-Edit, and save your Overlay synth as a selection, so that you can create different patches that use that overlay synth in different ways.

Of course, if you need any of the other Eagan Matrix controls with your overlay, just add the required CHEM module.

If I get permission from the Haken team, I’d like to create factory selections for some of the existing overlay synths, like Ed Eagan’s Jenny and Ratio synths, and Richard Krams’s DualSubtractive monster that he’s using the Electra One as the interface for, and Chistophe Duquense’s Loris as well.

I hope to have this up and running in a week or two. Once the Overlay stuff is wrapped up, I’ll be feature complete, and can do some final housekeeping before releasing to the Library. I really want to get this wrapped for people to use, and I can move on to some even more ambitious projects.

4 Likes

I haven’t finished the extended macro modules. The editing paradigm with a companion module wasn’t working well, so I took a break to address another need for working with an Overlay Preset. The editing paradigm in this new module is much better, and I think provides a path forward for XM.

To support Overlay Synths, you need more than just knobs for the extended macros. Ratio, for example has selections for choosing the oscillator type, and other manipulations of the Matrix and the formulas. To enable this type of feature in CHEM, my MVP implementation is the MidiPad module.

MidiPad is a 4x4 matrix of pads like familiar physical pad controllers, but it embeds a custom language for working with the Eagan Matrix’s unique MIDI protocol. Rack is very limited in the affordances for making an editing UI. Most modules make do with the context menu, but that option really doesn’t cut it for CHEM, so here we have to innovate a bit on user interface.

On the left is MidiPad in Run mode, with three defined pads. These pads are doing octave transposition and restore by manipulating where Middle C falls on the playing surface, using a matrix poke (mp[44 52]).

On the right is MidiPad in Edit mode. When you click the e button, the module dynamically changes its size, expanding to the right to show it’s editing interface. Clicking the close button or toggling the e button collapses back to its Run proportions. This implementation has some annoyances and oddities. Annoying to disturb your layout by pushing out adjacent modules, but then I don’t have to try to emulate a more typical GUI modal dialog box in the Rack system. The oddity is that you can’t move the module by dragging the flyout. Haven’t figured out how to make that work, and not that big a deal. You can still drag from the main section.

This all works fine as a general means to push changes to anything in the Matrix but suffers from a significant flaw: No way to show the current state. There no way to show what kind of oscillator you just selected for column 5, for example, or in the sample above, just where we moved Middle C to (which can be any semitone within a large range of MIDI note numbers).

I’m not sure how I can solve that in the context of Rack.

MidiPad is complete, and working on my machine. Unfortunately, the GitHub actions are not working for the Rack level I’m synced to at the moment, and I need to switch to Bloodbat’s more up-to-date toolchain. This means that builds are not available for download until I get that fixed.

One step at a time…

2 Likes

Hooray! “Nightly” releases are back, with thanks to @Bloodbat for a current toolchain (well, _more) current, because it’s at SDK-1 due to Rack dep issues ATM).

2 Likes

I’ve just integrated the branch where I’ve been adding Osmose support to CHEM.

I have more work before it’s ready for release to the Rack library (mostly finishing extended macro support in the Overlay and XM modules), but all the rest is working, including MidiPad, where you can wire up sending any non-music MIDI to the device, which is great for testing stuff. (Reminds me, I need to document the MIDI logging feature so you can see what’s happening under the hood). You can download the “Nightly” release from Github and use it.

Osmose poses some real challenges for any external software like CHEM. EE have not published any interface for controlling the Osmose-specific features. In the last firmware update, Expressive E broke the ability to query it for the presets on the device. Even more painfully, the preset information returned when you select a preset is missing the codes required to select that preset on the device., and there are sometimes anomalies such as duplicated data (Yes, support requests filed and all that, which I do for all the issues I encounter). It took a while, but I’ve found ways to work around most of the missing functionality, and cope with the anomalous stuff that happens on the Osmose and doesn’t happen on other Haken devices. Oh the joys of reverse-engineering ;-/

If you try it, let me know how it goes. I love requests and bug reports!

2 Likes

Ok I am an osmose user and tried your plugins on the fly. Unfortunately I don’t have much time but I can say that there are no bugs at the moment. I can load my presets in CORE and then see and change them in the PRESET plug. It just takes forever to load all my presets, so I canceled it after a while. But praise. YOU have managed to solve all the midi problems. All respect.

Yes, on Osmose it’s slow — about 50 minutes for System presets for me. But the results are stored so you never have to do it again for system presets until the next EE upgrade.

1 Like