Meta Morph ... a new beginning

A quick preview of my latest development project, a new exciting way to use your Eigenharp.

Use your Eigenharp with VCV Rack (Free or Pro), no additional software required!
Running an audio rate, full resolution… no middleware/protocols, native eigenharp goodness :slight_smile:

all this, combined within the vast ecosystem that is VCV Rack.
and being modular, its open to extension, anyone can create new modules designed to support the Eigenharp.

Watch this space… it’s coming to vcvrack some time soon !

8 Likes

(reserved for future details)

The full rack (click to see details)

Setup

Im using a Tau, with VCV Rack Pro, and my Meta Morph VCV Rack plugin.
No additional software is required.

It supports any Eigenharp, and will run fine on VCV Rack Free.
You can use multiple Eigenharps at the same time in the same rack.

This was running on an M1 Mac mini, whilst also recording audio and screen capture.
VCV Rack reports around 30% CPU , 48khz SR , 256 (5.3ms) block size.

What does this demonstrate? How does it work?

I currently have 4 modules within Meta Morph
Eigenharp, Scaler, Splitter, Switch and Function.

The Eigenharp module connects to one Eigenharp (doh!), as you can see I pre-split into main keyboard, percussion and function keys… and have strip/pedal and breath support.

In this example,
The percussion keys goes to vcv drums using Function to trig individual drums.

For the main keys I use Splitter to split at row 8.
the bottom half has a single (polyphonic) voice, based on the cloud generator.
the top half feeds into a Switch, where I have two voice (both polyphonic)
one goes to a simple VCV VCO doing a bass voice, the other goes to Plaits (macro oscillator)
This switch is controlled by the Function module on mode key 1.

This function module controls the looper attached to the vcv drums.

in each case, Im able to route the x,y,z independently to ensure each voice is independent and has full expression.

The final module is Scaler, this converts the ‘key’ into into a v/oct to interface to oscillators etc.

1 Like

State of play?

It is still in development, but Im very happy with how its progressing…

whilst it may look complicate (doesn’t modular always?), its actually very quick and easy to use.
I put this preset together in about 5 minutes … much less time, that it’d take me in EigenD.

Im also making it very practical, you’ll see there is plenty of control of polyphony, to allow users to get the most of their machines e.g. allocate CPU on splits/switch where you need it.

as I said still in active development… Im really sharing, so I can stop referring to this as 'my new project ’ without any context :laughing:

the UI needs many tweaks… tidying up, and to make things less confusing.
(e.g. Im going to switch to row/column rather than x/y for layout items)

also as I build setups, I start to get a better feeling for things that might need to change on these modules, and requirements for others. so, Ive many ideas on how these will improve and also new modules that will be created. (e.g. Im considering the role of expander modules ;))

my main focus, so far, here has been on the infrastructure… things like connecting hardware, voicing, what voltages mean, and the led mechanics. things that are needed by every modules, so I need to get right before a proliferation of modules makes change difficult/time consuming.

anyway…I wanted to get this preview out the door before family turns up for a visit…
(which’ll reduce dev time for a couple of weeks)

one thing I want to finish on, and that excites me most…

a) VCV Rack ecosystem is huge
something like 2000+ modules !
we get to leverage all of this with the Eigenharp

even doing this demo, I found occasions where I thought Id needed to create a new module to do something, only to realise I could utilise something that already existed (in this case sequential switch)

b) module decoupling.
being modular, once this is released ANYONE will be able to create new modules to extend the Meta Morph ecosystem, without being part of the Meta Morph project.
modules are totally decoupled, only connected via voltage!
I use some special ‘protocols’ for thing like key/leds but I will detail that as a ‘wire protocol’ (as well as code), so even without my code, you can create modules - no code dependancy !

this makes it easy for new developers, as you don’t need to know anything about EigenD/EigenLite etc… just how to create a vcv module (which is very easy !)

2 Likes

Awesome, this looks super promising!
Do you see a chance that this will also work on Windows?

1 Like

Platform support.

Windows

I need to decide which route I use to interface EigenLite with hardware.
a) Use kernel EigenD driver (as EigenD does)
this is the easiest way… but is also the dying way, eg it’s only 32bit
It’s also against one of my principles of this project - No additional software required.

b) Use Libusb.
In theory this works… its what I use on Linux.
but I need to double check the libusb driver situation on windows.
I did get it to work previously, but it was a long time ago.

basically, I’d want to use libusb route… its not really even a decision.
but involves more fiddling and testing etc.

however, I’d also need to sort out a windows pc to do build/testing on.
(sorry, Im not willing to release it without being involved in it… Im picky about quality/testing :wink: )

talking of platforms…

really different platforms all come down to EigenLite support…
VCV Rack build supports Mac/Linux and Windows. (all 64 bit)

MacOS

its currently running on arm (m1 and m2) on Ventura.
I still need to build it for Intel, but thats just a matter of tweaking vcvrack makefiles and sorting out build environment - this’ll be done before release.
once I have on intel, I’ll also be able to see if there are any macOS version issues I need to work with.

Edit: Intel build done, and confirmed as working.
we should be able to support macOS 10.9+, 64 bit, arm/intel.

Linux

support will be ‘demand’ driven (to some extent!)
issue is there are many variants, and Im not going (nor able ) to build on everything, its quite time-consuming as I need to build the full ‘stack’.
but its very possible… like macOS, after building EigenLite, its just a matter of figuring out the build, no big deal.

2 Likes

So now here’s the question: can this be ported to e.g. the 4ms Meta Module? Because headless Eigenharp into my (physical) modular would make me weep with joy.

1 Like

why VCV rack?

really there are a lot of reasons as to why VCV could be considered a successor to EigenD…

spiritually, I believe its a close match…
EigenD was created because John, did not want to be limited by midi… the resolution , the bandwidth, its serial nature. ( * )

John wanted the Eigenharp to be connected to sound engine, midi was a ‘necessary evil’ as far as he was concerned.
Meta Morph follows this model, like EigenD, its sample accurate.

also technically its quite similar, EigenD is modular, supporting polyphonic wires, decoupling modules from each other… it was built to be extendable.

vcv rack shares all of this…

but…
with no new development in EigenD, I’d fallen to using midi/osc, because I wanted other sound sources.

I think my adventures in eurorack had re-ignited my understanding of what EigenD offered, what I felt I was missing from using midi and pretty static setups… the flexibility, the low latency.

Why VCV over EigenD?

vcv rack is built on a modern toolset, its pure c++, its cross-platform, it also has multi core support.

importantly it has a very broad user and developer community, vcv has literally thousands of modules available, with more becoming available all the time.

we can leverage so much of this…
meta morph ‘just’ needs to give us what is not available… connectivity, and things like key groups… the performance bits.

it does not need to create oscillators, filters, samplers, loopers, sequencers … they already exist… and, unlike vsts, these can all be modulated at audio rate!
(again, back to the EigenD ideal !)

what is more development IS simple…
e.g. if someone here, wants to develop the ‘strummer’ module for vcv/eigenharp.
its trivial … you can use any vcv rack tutorial to do it, you are not reliant on my code … aka decoupling… which means you can leverage the developer community of vcv.

(modules are couple via a wire protocol , not some complicated api!)

Elephant in the room?

so there is one thing I should point out…
at the moment, afaik, there is no MPE output module , or MPE enabled vst host for VCV rack :wink:
I do need to double check this, but if it’s the case, then I hope to create these two modules… so that you can integrate with your favourite mpe synths or vsts into vcv.

a couple of fun facts

(for those not familiar with VCV)

  • did you know VCV Rack (Pro) allows you to run VCV as a VST .
    … yup, you can have your Eigenharp setup all contained within your daw.
  • midi support
    of course, vcv has full midi support, so its trivial to integrate your midi controllers into your setup… e.g. do octave switching or instrument switching via a midi pedal

( * ) note : Im not going to argue/justify this viewpoint, just relaying why Meta Morph is close to EigenD in spirit!

no-one knows… as we don’t have the module to test with … or even know fully how 4ms have implemented it :wink:

but, I am super excited about the 4ms module,
but bare in mind its only running an A7, so performance is going to be a question… it also has (surprisingly) few CV outputs.

could it work?.. I think there is a very high chance I could indeed port it to work.

from what Ive read, and reading between the lines, the 4ms Meta module is going to be running a realtime stripped down linux kernel.
and as stated above, there is no reason for me to not compile/get this running on linux, as (my) EigenLite already supports linux.

There are a few modules that know something about MPE, but I think there’s a lot of room for an improved module.

IIRC from the VCV forums, MPE with VCV as a plugin works best in the CLAP version.

1 Like

From the description, this isn’t a standalone module and depends on the driver outside of Rack, which could be challenging to get on the M4 Meta, because that’s running on its own special stripped-down Linux kernel.

I’ve not found an output module, only input… which is not the issue.
the only output module I know of, outputs single channel midi, so its not suitable for MPE.

I want to host plugins in vcv not use vcv as a plugin…

I need to double check the vcv host plugin… but it did not look like it would treat polyphonic channels as MPE… as you’d really need to tell it to do this, and there is no option… so Im doubtful.

incorrect…as, Ive stated this plugin does not require any additional software or drivers - it communicates natively over usb.

so I need pretty low level usb support and given the usb device support present, I suspect this will be present - but what exact usb support is available won’t be known till release (given its not finalised yet)

(to be clear, its a custom protocol, so I dont need any class compliant drivers)

also, in the unlikely even of the required support being missing. I suspect 4ms would be more than happy to add on a case by case basis.

sorry, but this is bordering on hyperbole…
many of us use build root (and a like) to create ‘special’ stripped down’ realtime linux versions. theres no evidence at this stage anything particularly special has been done.
some are getting a bit carried away with this…and I think we need to manage expectations a bit (something 4ms are trying to do)

but sure, no one really knows for now… as the module is not even finalised yet. but Im reasonably confident, I’ll be able to get this working on the module.

as I said, Im as excited as everyone else in the module, but Im keeping a check on my expectations, esp. on its real world performance.
Im not so worried about the performance of my modules, but rather it implies polyphonic voices, where perhaps the 4ms module may struggle.

Thanks! - learned a lot there :wink:

1 Like

@GoneCaving raised a question via DM which raises some interesting points…

(if anyone has questions about is something possible, please post here, happy to answer)

tl;dr - yes :slight_smile:

so, it may not be clear in the demo, you can freely stack switch and splitter modules.

ok, Im going to do a simpler version of Duncan’s request, as illustration…

so going from a setup with 1 split to keyboard split in two
and initially we will use a tau as an example, as it has dedicated function buttons.

Eigenharp → Switch A (kg 1, k2)
Switch A - KG 2- > Splitter A

because a split 1 is the entire keyboard,
we can just use Switch A - kg 1 output to scaler->sound engine.
for the 2 split, we now splitter A - kg 1, 2

we then simply use a function module to flip Switch A to go between the two modes.

but what about a 3 split, as splitter only has 2 key groups?
well you can stack…
Eigenharp → Split A (kg 1 = split 1)
Split A (kg2) → Split B ( split 2,3)

for those that like thought experiments now you can create Duncan’s original request…
hint: logic modules are cool…

but, let address that pesky elephant…

sounds like for complex setups we are going to use a lot of splits/switches?

in practice, for many setups, its not that bad…
also, bare in mind you have the option to not use one MEGA vcv patch that has every combo possible, you can have different ones…
hint: vcv is MUCH quicker at loading new patches than EigenD !

but indeed, to re-create some of the complex eigenD setups (its possible, I believe Ive functional parity), but you’d end up with a lot of splits/functions/switches.
to counter this, , Im considering creating ‘module expanders’ for Switch,Split and Function.
this will allow each module to go beyond 2 without having to form a tree.
(its pretty straightforward in vcv to implement)


anyway, I’ll just finish with there are lots of implications/possibilities I did not show in the preview, mainly because I wanted the patch to be ‘simple’ to follow, and on one screen :wink:
so a lot of ‘advanced’ techniques are not shown, e.g. you can have overlap kg and use enable to control… rather than use switch.

but I do think its possible to do most things EigenD can do (in terms of setup etc) in Meta Morph, though at times it requires a different mindset.

however, its also a good illustration of ‘where Im at’ with Meta Morph.

most setups are possible today… the functionality is there, the next step is making it easier/more comfortable. Ive already mentioned expanders…
but there are questions about potentially combining modules…
Switch and Split actually have a lot of overlap of functionality.
Switch could include buttons, so you dont need to use Switch + Function.

each though has consequences, sometimes these ideas feel good, but in practice… they create more complex UI for modules… or start placing restrictions.

so… this is why I mention before, now I need to create quite a few different setups, to see if I can optimise things a bit, simplify some things, perhaps create modules for common use-cases.

… but the good news is, the fundamental architecture is in place, and that why I felt confident to share a preview :slight_smile:

anyway, if you have questions about if something is possible or not, please feel free to post in this topic… and we can discuss.
is possible? and is it cumbersome? have I missed something? do I need something else?

2 Likes

I haven’t used VCV Rack, so I will wait with questions until I have had a proper look at that, at least. For now I’ll stick to just expressing my enthusiasm. This just makes a ton of sense to me, although it is far from an obvious approach. So kudos for even coming up with this idea, let alone actually implementing it! :smiley:

1 Like

some good news… I quickly compiled it for intel macOS, and its working fine for me (under Rosetta)

so, should be good for macOS 10.9+, 64 bit (only) , arm/intel … just like VCV itself.
though I do want to double check, as Ive only run on Ventura (*)

again, I’m only going to put out a release once Ive sorted out some ‘nomenclature’ issues.
(otherwise its going to be too confusing, and take too much support … for something thats going to change anyway)
that’ll likely be in a couple of weeks once my family visits are out of the way :wink:


(*) I’m getting a warning about pico encoder being macOS 13.0, but given its functionality it should be fine… and I can fix at leisure.

2 Likes

yay, intel mac sounds good!
Played around with the host plugin in vcv rack pro. It is odd - it seems to support poly cables - so I can set the MIDI output plugin to MPE mode and when doing pitch bends it sends on the corresponding channel 2-15. But the host does just ignore those. In order to get it to work I have to use the poly to mapper. Then pitch bending works.
So I fear you are still up to date - the host plugin doesn’t seem to support MPE (or voice per channel) atm.

P.S.: Cardinal (a VCV fork) has the plugin host “Carla” that seems to support MPE(?) Couldn’t verify it yet though, after setting the paths to my plugin folders and rescanning the list of plugins inside Carla stays empty…

A birdie tells me that we can anticipate expanders for the 4ms Meta module. Now I am even more excited for the future—and less concerned about the mere A7.

birdie = 4ms on Modwiggler, seems to be main source of info (from 4ms directly)?!
there they talked about one expansion module which had ‘loads of buttons’ - we don’t know what is capable over than expansion port beyond that.

anyway, back to Meta Morph…
I reiterate - from what we know, there is a good chance Meta Morph could run on the 4ms Meta, but we will only know on release.

however, there are other (potential) issues :
my experience with a range of SoCs and the Pico is there are often issues/quirks down to everything from kernel versions to power management. so the kernel may support it, but it still not work reliably, and also the aforementioned cpu and io performance, has to be seen.
finally, I suspect this module will be $500-800 mark, likely the higher end.
frankly, Im not sure Im want to spend this on it - Ive other things higher on my wish-list :wink:
… and without a unit, I can’t test, and I don’t release on platforms I cannot test on.


tl;dr;

whilst, I am excited for this module…
this topic is not about the 4ms module, there are plenty of other places to enjoy this speculation, and I dont really want to engage in this.
Im happy to wait for release, when we will get finalised details and price, see performance.
at that point, I’ll decide if I want to pursue it or not.

Looking very forward to it; the slow and error-prone hassle of working with EigenD & Stage without the Browser is what has kept my Tau kept safely packed in its case for a few years, now.

1 Like