#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.

5 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

Hi Paul- thanks for your work on these: I’m just getting around to testing these out. A couple of quick questions. Am I correct in saying there is no way at the current time to control the surface (X,Y,Z) inputs directly via CV from Chem? Secondly, Having tested sending a VCO LFO to a macro (spectral balance of an Osc) I am getting some stepping behaviour in the modulation. Is this to be expected? Thanks.

(can of course use CV-to-Midi to get Gate and V/Oct information into the CM…just out of interest!)

That’s right. That’s the beauty of being in Rack - you have a huge selection of other modules to combine, and CHEM doesn’t have to do everything. For MPE Ahornberg’s module is good.

The interface to the EM is via MIDI, so X is note+pitch bend. Y is normally cc74. Z is normally channel pressure.

Because the EM is a MIDI 1.1 implementation, CHEM currently throttles changes to a reasonable MIDI rate. This can create stepping because we’re effectively sampling the CV at the MIDI rate. We are also limited to 14-bit precision.

Some aspects of the EM don’t respond well to rapid change, and driving some things with continuously changing CV can create audio artifacts. For example, most of the controls in Convolutions other than levels, index and left/right will glitch when automated. These kinds of things are better driven by a sequencer, rather than an LFO.

However, it’s quite possible I have a bug I need to fix and for that I’d need a copy of the preset if it’s not a factory preset, and the Rack patch.

I should probably allow for the MIDI rate to be tunable. There is a danger that automating too much at once can swamp the EM’s ability to process changes. The EM will crash if driven too hard, But if there aren’t a lot of cables, we might be able to handle a higher MIDI rate. The EM wasn’t designed for the deep automation that CHEM provides access to,

1 Like

I did significantly increase the MIDI rate, and things seem to remain happy, so I’m hoping that improves the stepping issue. If there are issues the rate can be changed by editing a text file in the installation (not yet documented). There are some other internal things that can be tuned in the same file, but most people will never need to.

I am planning to submit CHEM to the library tomorrow or the next day.

1 Like

I’ve submitted CHEM to the VCV Rack Library.

Here’s a snip with all modules (I think – extra MidiPad to fill space).

Compterscare Custom Blank for the image (me wearing the t-shirt from Continuucon 2024, photo-edited to add the CHEM logo, riffing on an EM t-shirt posted on FB), and DanT Purfenator for the background (or rather, lack thereof).

3 Likes

Just pushed a change to save/restore module positions for the MidiPad and XM editing flyouts (this always bugged me), and updated the Library submission issue.

After 2 weeks, VCV has yet to mark the Library submission with “plugin”. Not sure what stage of the process being marked “plugin” indicates. Anyone know?

I think that is added after the initial plugin review is complete. I believe that phase is skipped in subsequent releases.

The cadence of library maintenance is very uneven. We seem to be in a slow period at the moment. I submitted an update to Venom 5 days ago, and my plugin issue still has not been reopened. Maybe the person responsible is on vacation. I doubt there is a problem on your end, nor are you being singled out to ignore

2 Likes

Thanks, Dave that helps a lot!

I’m just being a bit of a squirrel, after 9 months of work ;-).

There are plugins submitted after mine that have changes in the issue from Andrew, so plugin processing is happening. He is likely deep into Rack 3 development (he’s started live-streaming work on it).

CHEM is big (16 modules), so there’s a lot of code to review. There is probably legal review again for a new plugin, even though the theoretical potential legal issues are the same as for HC-One. I have all platforms building and running cleanly, and I cleaned up the significant cppcheck issues before submitting.

2 Likes

Where, if I may ask?

1 Like

Not sure — but when he does, it’s announced on the VCV Discord. There’s a link for that int he footer of the main VCV website.

Yeah, that link never works for me, always get rejected and can’t get in. Ah well.

@LarsBjerregaard, I just tested it and it works for me… What error are you getting? Happy to help in PMs

1 Like

Very excited! – CHEM passed review, and looks like it’ll hit the Library in the next publishing run.

6 Likes