Midi controller like CTRLR for hardware synth
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?
You can make max standalone to talk midi to your hardware,
and do so using OSC messages to live.
Hi SOURCE AUDIO!
So is not possible to directly select a midi in/out inside an M4L device?
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.
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?
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.
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?


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
and patch I used for it
to reroute midi for standalone
one would compile that little thing to simply work, once midi I/O is stored
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 ....
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?
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 ?
Slim phatty manual states ONLY
Filter CutOff (CC#17 MSB / CC #51 LSB) and PitchWheel are 14bit capable.
Is that so ?
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
Do we have any example for MSB LSB usage?
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

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 ?
~ 127. , or 0.2 ~16383

I don't use live at all, and don't want to loose time finding that out...
Is it also init parameter values that could be causing the output ?
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 ?
This is what I see on midi monitor after enabling 14bit midi and moving cutoff knob:

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

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
this replaces dial in amxd
you only need to see about that modulation range
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?
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 ?
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.
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?
it translates to cut off frequency 20 hz ~16 Khz
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?
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.
