Midi controller like CTRLR for hardware synth

spin lud's icon

spin lud

7月 20 2024 | 6:19 午後

Hi, I am having hard time finding a working vst for a Moog SlimPhatty synth.

Basically I would like to have the following:

  • Record midi cc as automation lanes (not envelopes!!!). Each hardware midi cc should be mapped to specific parameter in M4L device, so we can automate those parameters in Ableton instead of the original midi cc.

  • For the above to work, I suppose the M4L device should be able to set midi IN/OUT directly inside the device instead of using midi in/out of the Ableton track (e.g. with dropdowns menu). Not sure if this is possible?

  • Bidirectional midi data between hardware and M4L device (moving filter on hardware will move filter knob on the M4L device and viceversa).

  • Bonus: support 14 bit midi data for smooth.

I was able to achieve this in the past using this https://ctrlr.org/, but it is no longer mantained and it doesn't work on Apple Silicon.

Here there is an M4L device for this synth https://maxforlive.com/library/device/1002/m4l-moog-phatty-editor but unfortunately it still records midi ccs instead of parameters that can be automated in the arrangment.

Any idea if this is achievable using Max 4 Live? Any example that can I look at?

Source Audio's icon

Source Audio

7月 21 2024 | 10:03 午前

You can make max standalone to talk midi to your hardware,

and do so using OSC messages to live.

spin lud's icon

spin lud

7月 21 2024 | 8:12 午後

Hi SOURCE AUDIO!

So is not possible to directly select a midi in/out inside an M4L device?

Source Audio's icon

Source Audio

7月 22 2024 | 9:25 午前

not on Silicon Mac.

I don't know if anything changed in live 12, but I doubt it.

imp.midi externals that can do that are not available for arm64.

If you can live with a small max standalone to do what I described,

I'll be glad to help you with it.

Your amxd file can be modified in few minutes to use OSC instead of midi.

spin lud's icon

spin lud

7月 22 2024 | 5:59 午後

Too bad that these imp.midi don't work on Apple chip 😞. Honestly I thought that in Max 4 Live was possible to access midi devices independently from the hosting track (maybe even in an audio device will be useful to access midi for wahtever reason)..

So the plan is to develop a Max standalone device that will connect midi in/out with the Moog synth and transmit data back&forth via OSC protocol to a M4L device in Ableton, right?

Basically I have to create all the knobs and controls twice and map them between the two devices?

Source Audio's icon

Source Audio

7月 23 2024 | 8:27 午前

no, only amxd file has to replace midi with OSC.

In Max one simply translates input to midi and the other way arround.

In Live you keep all your GUI, in Max only select Midi In/Out ports.

I can patch that together using text editor in short time for you.

spin lud's icon

spin lud

7月 23 2024 | 11:24 午前

I have created a test patch for the standalone and for the M4L device (used an audio device just to avoid confusion). It seems to work although I am not sure about midi loops when moving knobs on the hardware...I have tried to put a change object on the M4L before sending the value to back to Max standalone, but I am not sure if this is the right way to solve this.

What do you think?

Max standalone

M4L

Source Audio's icon

Source Audio

7月 23 2024 | 11:34 午前

midi loops would be same if you use direct midi or if one inserts OSC in between.

how did that work till now ?

Important is what can you set in the hardware ?

I mean to block midi echo.

I have converted your patch for OSC, in an easier way, to use less OSC strings

Moog-OSC.amxd
amxd

and patch I used for it

Moog-OSC.maxpat
Max Patch

to reroute midi for standalone

Moog-Midi.maxpat
Max Patch


one would compile that little thing to simply work, once midi I/O is stored

Source Audio's icon

Source Audio

7月 23 2024 | 12:41 午後

I just tried little phatty editor to serve as test instead of hardware.

All works ok , no problem with midi loops.

only CC 114 (arp clock Source) is different in your patch ?

and filter seems to have no poles or velocity sensitivity ....

spin lud's icon

spin lud

7月 23 2024 | 4:15 午後

Thank you so much sir, working fine!

One question: this Moog is capable of sending 14bit midi data for certain parameters (e.g. cutoff and resonance) to have smoother transitions. I can turn this feature on/off on the synth (now it is off), would be possible to support 14bit midi <-> OSC data flow on Max?

Source Audio's icon

Source Audio

7月 23 2024 | 5:10 午後

sure, in max no problem to bundle 2 CCs into MSB LSB,

and send 14 bit value using OSC.

But you must see how to apply that to live.dial.

Maybe one 0 - 1 float ?

Source Audio's icon

Source Audio

7月 24 2024 | 7:49 午前

Slim phatty manual states ONLY

Filter CutOff (CC#17 MSB / CC #51 LSB) and PitchWheel are 14bit capable.

Is that so ?

spin lud's icon

spin lud

7月 24 2024 | 8:43 午前

Yes I am interested mainly for the filter, should be 19/51.

Btw I am converting almost all knobs to float instead of int, working better with Live automations

spin lud's icon

spin lud

7月 24 2024 | 8:44 午前

Do we have any example for MSB LSB usage?

spin lud's icon

spin lud

7月 24 2024 | 8:52 午前

Do you have any idea how can I block sending knobs parameters on M4L device load (they mess up the current patch)?

I have tried using a gate and a delay but it doesn't seem to work, looking to midi monitor it is outputting midi CCs anyway on load

spin lud's icon

spin lud

7月 24 2024 | 8:56 午前

This is the M4L device I am working on right now (removed things I don't need)

moog-phatty-osc-v3.amxd
amxd


Source Audio's icon

Source Audio

7月 24 2024 | 8:56 午前

If you want to use also Pitch Wheel ?

CC#1 MSB CC#33 LSB

To explain it in simple words, using MSB LSB

is usually MSB = coarse 0 - 127.

If 14 bit is used, then

MSB * 128 + LSB 0 - 16383.

controls must be sent in correct order.

I will send you example as soon as you decide about Pitch Wheel,

but can you check this for me :

if we use one float which represents real frequency 0.2 ~ 16 KHz

for CutOff dial, what does one need to set as Clip Modulation range ?

  1. ~ 127. , or 0.2 ~16383

I don't use live at all, and don't want to loose time finding that out...

LSka's icon

LSka

7月 24 2024 | 9:10 午前

Moog-OSC.amxd
amxd

Using [live.thisdevice] instead of [loadbang] and [deferlow] to postpone the bang at the end of the queue seems to work

Source Audio's icon

Source Audio

7月 24 2024 | 9:18 午前

Is it also init parameter values that could be causing the output ?

Source Audio's icon

Source Audio

7月 24 2024 | 9:59 午前

Another thing :

can you enable 14bit Filter and capture moog midi output.

I am not sure how they deal with MSB LSB for filter frequency .

if one would first use 128 MSB values, and then fine tune between

them using LSB ?

or scale 0 - 16383 to 0.2 - 16. Khz ?

spin lud's icon

spin lud

7月 24 2024 | 10:28 午前

This is what I see on midi monitor after enabling 14bit midi and moving cutoff knob:

spin lud's icon

spin lud

7月 24 2024 | 10:44 午前

Thanks a lot LSKA, using live.thisdevice + deferlow worked perfectly!

Source Audio's icon

Source Audio

7月 24 2024 | 12:51 午後

What would you prefer:

  • to send MSB LSB as 2 controls from max to live

  • to do MSB LSB to single value in max and send to live.

I would say it depends on what you want to see and use in live to change the value.

Only using mouse and hardware pot - would be ok for 1 float.

this is max part

Max Patch
Copy patch and select New From Clipboard in Max.

this replaces dial in amxd

Max Patch
Copy patch and select New From Clipboard in Max.

you only need to see about that modulation range

spin lud's icon

spin lud

7月 24 2024 | 2:53 午後

Ehi SOURCE AUDIO thank you very much! I'll check your patches asap.

For the M4L I would like to have only one knob for the filter if possible, two controls will be not good to use.

For the modulation range what you want me to check exactly?

Source Audio's icon

Source Audio

7月 24 2024 | 3:06 午後

from my post from earlier today:

I think question is clear...

by the way what is with PitchWheel ?

If you want it also 14bit what should live.dial be scaled to ?

- ~ + range ?

Source Audio's icon

Source Audio

7月 25 2024 | 7:44 午前

I see you ask again in another thread about direct midi...

As alternative to Max Standalone you could make m4Ldevice

to handle midi throughput to your Moog device.

Simply replace UDP / OSC with send / receive .

You can test what performs better.

spin lud's icon

spin lud

7月 30 2024 | 4:52 午後

Ehi Source Audio thanks a lor for the Max patches, I am finally able to test them. Just curious, why have you chosen range [0.02-16.] to map the input range [0 16383] instead of for example [0.-127.]? Any specific reason?

Source Audio's icon

Source Audio

7月 31 2024 | 6:20 午前

it translates to cut off frequency 20 hz ~16 Khz

spin lud's icon

spin lud

7月 31 2024 | 7:50 午前

Ah interesting, is that the frequency range of the Moog filter?

I have noticed some glitchness when moving cutoff (or other knobs) on hardware. I suspect this is because of midi echo (we send back the value received on the M4L to the Moog). The change objects help to prevent loops, but it seems it is not enough.

I was thinking to put a gate in the M4L device before the udpsend, that should be closed when receiving data on the udpreceive (moving knobs on hardware) and open when moving the dials on the M4L device (e.g. manually with mouse or by automations). I am not sure if this is possible to configure, what do you think?

Source Audio's icon

Source Audio

7月 31 2024 | 8:23 午前

moog manual states freq range so.

change can not help to avoid midi loop.

you could insert gate to dials to udpsend while receiving udp messages.