Max gen~ patch metadata

,

We’ve now added a new feature to our online compiler which will generate patch metadata based on the information entered on the patch details page. This metadata will then be used to assign any ‘extra’ output channels on your gen~ patch. This way you can add CV outs, triggers, and gates in any combination, and assign them to any output.

In addition, the metadata includes all the parameter names entered on the patch details page. This means that on e.g. Magus, instead of showing A, B and C, the parameters can be given proper, meaningful names.

So in order to use output parameters (control voltage outputs) and buttons (gates/triggers) in a Max Gen OWL patch, you have to add an output channel for each one in your gen patch. Parameters should come first, then buttons, in the order they are assigned. E.g. first Parameter F and G, then Button 4 and 5.
After that, the parameters and buttons must be correctly defined on the patch details page. And when the patch metadata changes, the patch must be recompiled for the changes to have an effect.

In gen~ all outputs are audio signals, so to convert to CV outputs the values will be averaged each block. For triggers and gates, any value within the block that is over 0.5 will set the output high, otherwise it will be low. The values sent to these outputs from gen~ should be from 0.0 to 1.0.

A simple example can be seen and tried here, it simply maps input parameters A and B to output parameters F and G, and buttons 1 and 2 to output buttons 4 and 5.

If you are using the OWL Watcher within Max, then you will have to follow the link to our patch library to edit the patch details there.

And if you are compiling patches offline then you can add your own metadata.h file as per this example:

#define OWL_METADATA 1

const char* PatchMetadata::name = "Test Patch";
const int PatchMetadata::channels_in = 2;
const int PatchMetadata::channels_out = 2;
const int PatchMetadata::parameter_count = 4;
const int PatchMetadata::button_count = 4;

const PatchMetadata::Control PatchMetadata::parameters[] = {
     {PARAMETER_A, CONTROL_INPUT, "Freq"},
     {PARAMETER_B, CONTROL_INPUT, "Cutoff"},
     {PARAMETER_F, CONTROL_OUTPUT, "Freq>"},
     {PARAMETER_G, CONTROL_OUTPUT, "Gain>"},
};

const PatchMetadata::Control PatchMetadata::buttons[] = {
     {BUTTON_1, CONTROL_INPUT, "Trigger"},
     {BUTTON_2, CONTROL_INPUT, "Overdrive"},
     {BUTTON_5, CONTROL_OUTPUT, "Trigger"},
     {BUTTON_6, CONTROL_OUTPUT, "Overdrive"}
};

Hello,
this metadata feature is fascinating. but it’s hard to figure out how it works on Magus (maybe more compatible with Litch ?)
I made really simple gen~ patch, just connect parameter A to parameter AA, parameter B to parameter AB…etc.
it seems working at first, since when knob parmeter A is moved, LED of prameter AA works in sync, same color.
but actually parameter AA (which i configure it as “out 3” on gen~) doesn’t output any signal. and its color is still blue to white, not green. it seems outputs on gen~ are not recognized as outputs. I think i set all parameters correctly on online compiler.
it would be great if it works… thanks for your support in advance !!!

here is gen~ patch for test mentioned above
untitled_01151f11b982.syx (21.7 KB)

Can you post a link to the patch please, it would help to see what the patch details look like. You configured AA and AB as outputs in the patch details, right, by clicking the ‘input/output’ toggle at the top? Same as parameters F and G in this patch.

Ah I see, the same thing is happening with the test patch!

I see now why that is: Magus depends on parameters having a > at the end of the name to configure them as outputs. This should be automatically added by the gen~ patch wrapper. The immediate workaround would be to add > manually, but I’ll try to get a fix deployed promptly.

Okay so that is now deployed to the online compiler, so try recompiling your patch and it should work :smile:

thank you ! surprisingly quick improvement… !

before i read your last post, i added “>” manually on each outputs, and it works perfectly !
that’s really fantastic !!!

it’s too simple patch to publish… but here is the link to magus in out patch

thanks !!!

1 Like

I’ve noticed one more thing on gen~ and Magus.
extended parameter control over midi works nicely from parameter A to BB through external midi controller.
but parameters from BC to DH (which don’t have dedicated hardware in/out) don’t respond to midi mapped messages.
it’s not so inconvenient for me right now, but i just want to put a note.

This is due to a limitation in the current Magus firmware. We should be able to fix that in the next firmware version.

1 Like