sending fader positions to a midi controler (motormix)
After working out how to control something from a motormix fader, I would like to ask, if there is someone who has written a patch to set fader positions on a controler. At this point I think one probably has to write lists and load them up....
Thanks for your thoughts
Using ctlin for an incoming midi signal should be the contrary to ctlout sending a midi signal. When I look at the ctlout helpfile, I can't figure out how to connect ctlout to midiout. Does someone use ctlout to send midi data?
cheers
Thanks Patrick just figured out to chose the midi device by dobble clicking on ctlout but when I send numbers they do not reach the motormix. I guess that the motormix needs to have a special format for the control. Does someone know how to convert int to motormix control values?
cheers
Unless the motormix only takes MIDI input formatted as sysex, there
should be no specific format. If it accepts standard MIDI
controllers, you just need to make sure that the outgoing controller
and channel numbers match the MIDI input settings in the motormix. If
indeed it only accepts external MIDI control in sysex, you'll need to
consult either the unit's owner's manual or manufacturer's website
for the sysex format.
On May 24, 2007, at 8:27 AM, Hans Mittendorf wrote:
>
> Thanks Patrick just figured out to chose the midi device by dobble
> clicking on ctlout but when I send numbers they do not reach the
> motormix. I guess that the motormix needs to have a special format
> for the control. Does someone know how to convert int to motormix
> control values?
> cheers
----
Steven M. Miller
Professor, Contemporary Music Program
College of Santa Fe
Home
SFIFEM
Atrium Sound Space
OVOS
CMP
well, logically one should inverse this patch which handles incoming midi from the motormix.
So who can reverse this patch?
max v2;
#N vpatcher 37 59 637 459;
#P window setfont "Sans Serif" 9.;
#P window linecount 1;
#P newex 159 240 27 196617 / 2;
#P number 157 289 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P newex 156 215 29 196617 << 1;
#P newex 156 188 50 196617 ctlin 0 1;
#P connect 0 0 1 0;
#P connect 3 0 2 0;
#P connect 1 0 3 0;
#P pop;
cheers
Hans Mittendorf schrieb:
> After working out how to control something from a motormix fader, I
> would like to ask, if there is someone who has written a patch to set
> fader positions on a controler. At this point I think one probably
> has to write lists and load them up.... Thanks for your thoughts
Its all built into Max since twenty years (long before the first motor
faders arrived on the mass market...)
I just guess that you'd send the same messages as you receive, best with
ctlout...
Stefan
--
Stefan Tiedje------------x-------
--_____-----------|--------------
--(_|_ ----|-----|-----()-------
-- _|_)----|-----()--------------
----------()--------www.ccmix.com
Yes, Stefan that's what I thought but it is tricky. So how do you invert this ( I do not have the second output attached)
cheers
The example you posted is not using the fine resolution of the fader, because ctlin does not output the LSB (CC 32 in your example) of a two-part MSB/LSB CC message. So most of the objects in your example are redundant anyway. If CC32 was receiving, the example would not give you 0-127 values.
For some tasks where you need to make adjustments with more than 128 steps, you may find the finer resolution of the MotorMix faders very useful - to get the full resolution you need to use midiparse.
The following shows one way to do that for all 8 MotorMix faders, as well as how to reverse both versions for output. Copy/paste the following into an empty Max patcher:
John, you connected the your subpatcher to the wrog outlet of midiparse...
This shoud be correct:
2007/5/24, John Pitcairn :
>
> The example you posted is not using the fine resolution of the fader, because ctlin does not output the LSB (CC 32 in your example) of a two-part MSB/LSB CC message. So most of the objects in your example are redundant anyway. If CC32 was receiving, the example would not give you 0-127 values.
>
> For some tasks where you need to make adjustments with more than 128 steps, you may find the finer resolution of the MotorMix faders very useful - to get the full resolution you need to use midiparse.
>
> The following shows one way to do that for all 8 MotorMix faders, as well as how to reverse both versions for output. Copy/paste the following into an empty Max patcher:
>
>
> #P window setfont "Sans Serif" 9.;
> #P window linecount 1;
> #P comment 774 455 167 196617 set the correct output port names!;
> #P newex 789 276 60 196617 loadmess 1;
> #P newex 755 334 31 196617 + 31;
> #P newex 789 333 27 196617 - 1;
> #P number 789 302 35 9 1 8 3 3 0 0 0 221 221 221 222 222 222 0 0 0;
> #P newex 488 422 21 196617 t 0;
> #P newex 470 453 141 196617 ctlout "MotorMix port name";
> #P newex 625 453 141 196617 ctlout "MotorMix port name";
> #P comment 774 129 156 196617 other CC numbers & values;
> #P number 735 127 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
> #P number 696 127 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
> #N vpatcher 10 59 773 447;
> #P window setfont "Sans Serif" 9.;
> #P window linecount 0;
> #P newex 311 178 30 196617 - 31;
> #N comlet Fader8 14-bit value;
> #P outlet 417 327 15 0;
> #N comlet Fader7 14-bit value;
> #P outlet 394 327 15 0;
> #N comlet Fader6 14-bit value;
> #P outlet 371 327 15 0;
> #N comlet Fader5 14-bit value;
> #P outlet 348 327 15 0;
> #N comlet Fader4 14-bit value;
> #P outlet 325 327 15 0;
> #N comlet Fader3 14-bit value;
> #P outlet 302 327 15 0;
> #N comlet Fader2 14-bit value;
> #P outlet 279 327 15 0;
> #P window linecount 1;
> #P newex 584 274 22 196617 b 1;
> #P newex 584 298 48 196617 v cc-val;
> #N comlet non-fader CC values;
> #P outlet 584 327 15 0;
> #N comlet non-fader CC numbers;
> #P outlet 527 327 15 0;
> #N comlet Fader1 14-bit value;
> #P outlet 256 327 15 0;
> #P comment 274 99 75 196617 store the value;
> #P comment 436 268 55 196617 Faders 1-8;
> #P newex 256 265 174 196617 gate 8 0;
> #P comment 25 99 55 196617 Fader MSB;
> #P comment 128 121 53 196617 Fader LSB;
> #P newex 85 140 48 196617 v cc-val;
> #P newex 186 231 64 196617 +;
> #P newex 240 207 30 196617 << 7;
> #P newex 240 179 66 196617 v fader-msb;
> #P newex 186 147 22 196617 b 1;
> #P newex 186 179 48 196617 v cc-val;
> #P newex 220 96 48 196617 v cc-val;
> #P newex 186 119 351 196617 split 32 39;
> #P newex 85 119 22 196617 b 1;
> #P newex 85 96 111 196617 split 0 7;
> #P newex 85 161 66 196617 v fader-msb;
> #P newex 85 73 145 196617 unpack 0 0;
> #P comment 543 122 179 196617 non-fader CC numbers come out here;
> #P inlet 85 47 15 0;
> #P connect 0 0 2 0;
> #P connect 2 0 4 0;
> #P connect 4 0 5 0;
> #P connect 5 0 13 0;
> #P connect 13 0 3 0;
> #P connect 4 1 6 0;
> #P connect 6 0 9 0;
> #P connect 9 0 8 0;
> #P connect 8 0 12 0;
> #P connect 2 1 7 0;
> #P connect 9 0 10 0;
> #P connect 10 0 11 0;
> #P connect 11 0 12 1;
> #P connect 31 0 16 0;
> #P connect 16 0 19 0;
> #P connect 16 1 24 0;
> #P connect 16 2 25 0;
> #P connect 6 0 31 0;
> #P connect 16 3 26 0;
> #P connect 16 4 27 0;
> #P connect 16 5 28 0;
> #P connect 16 6 29 0;
> #P connect 16 7 30 0;
> #P fasten 12 0 16 1 191 256 425 256;
> #P connect 6 1 20 0;
> #P connect 6 1 23 0;
> #P connect 23 0 22 0;
> #P connect 22 0 21 0;
> #P pop;
> #P newobj 472 99 263 196617 p MSB/LSB;
> #P newex 154 404 21 196617 t 0;
> #P window linecount 2;
> #P comment 197 346 125 196617 This is the reverse - note the order , MSB first;
> #P number 154 346 35 9 0 127 3 3 0 0 0 221 221 221 222 222 222 0 0 0;
> #P window linecount 1;
> #P newex 154 427 60 196617 ctlout 32 1;
> #P window linecount 2;
> #P comment 212 254 108 196617 This does exactly the same thing as above;
> #P number 154 269 35 9 0 127 3 3 0 0 0 221 221 221 222 222 222 0 0 0;
> #P window linecount 1;
> #P newex 154 244 50 196617 ctlin 0 1;
> #P window linecount 3;
> #P comment 199 165 116 196617 so this is only the 7-bit MSB value , not the full fader resolution;
> #P window linecount 1;
> #P comment 194 143 98 196617 so this does nothing;
> #P comment 588 39 155 196617 set the correct input port name!;
> #P newex 490 174 29 196617 >> 7;
> #P comment 604 336 91 196617 send 7-bit values;
> #P number 561 334 35 9 0 127 3 3 0 0 0 221 221 221 222 222 222 0 0 0;
> #P comment 514 304 188 196617 send full-resolution 14-bit fader values;
> #P number 470 302 35 9 0 16383 3 3 0 0 0 221 221 221 222 222 222 0 0 0;
> #P newex 470 333 40 196617 % 128;
> #P newex 513 333 29 196617 >> 7;
> #P comment 534 200 163 196617 Fader1 7-bit values (128 steps);
> #P number 490 198 35 9 0 127 3 3 0 0 0 221 221 221 222 222 222 0 0 0;
> #P comment 516 227 201 196617 Fader1 full-resolution 14-bit fader values;
> #P number 472 225 35 9 0 16383 3 3 0 0 0 221 221 221 222 222 222 0 0 0;
> #P newex 437 68 221 196617 midiparse;
> #P newex 437 37 142 196617 midiin "MotorMix port name";
> #P window linecount 2;
> #P comment 227 83 96 196617 this is not receiving anything anyway;
> #P window linecount 1;
> #P comment 29 111 124 196617 so this just cancels it out!;
> #P newex 220 427 54 196617 ctlout 0 1;
> #P newex 157 140 27 196617 +;
> #P newex 157 109 27 196617 / 2;
> #P number 157 163 35 9 0 127 3 3 0 0 0 221 221 221 222 222 222 0 0 0;
> #P newex 157 89 29 196617 << 1;
> #P newex 216 59 50 196617 ctlin 32 1;
> #P newex 157 60 50 196617 ctlin 0 1;
> #P comment 40 91 114 196617 this is the same as * 2;
> #P comment 829 303 137 196617 set MotorMix fader number;
> #P connect 34 0 13 0;
> #P connect 34 0 23 0;
> #P connect 41 0 43 0;
> #P connect 41 0 42 0;
> #P connect 21 0 40 0;
> #P connect 21 0 38 0;
> #P connect 19 0 18 0;
> #P connect 19 0 17 0;
> #P connect 40 0 39 0;
> #P connect 43 0 39 1;
> #P connect 18 0 39 0;
> #P connect 42 0 38 1;
> #P connect 17 0 38 0;
> #P connect 44 0 41 0;
> #P connect 34 9 36 0;
> #P connect 34 8 35 0;
> #P connect 12 1 34 0;
> #P connect 31 0 33 0;
> #P connect 31 0 8 0;
> #P connect 33 0 30 0;
> #P connect 27 0 28 0;
> #P connect 11 0 12 0;
> #P connect 23 0 15 0;
> #P connect 3 0 7 1;
> #P connect 4 0 6 0;
> #P connect 6 0 7 0;
> #P connect 7 0 5 0;
> #P connect 2 0 4 0;
> #P window clipboard copycount 46;
>
>
--
Alessandro Fogar
John,
this for me worked...
And consider that no solution proposed considers that when you move
your 'view' of mmix faders, for example when you have 10 channels to
control, you have to consider an 'offset' to the first 'visible'
fader.
Hope I explained...
All the best
Alessandro Fogar
2007/5/24, John Pitcairn :
>
> The example you posted is not using the fine resolution of the fader, because ctlin does not output the LSB (CC 32 in your example) of a two-part MSB/LSB CC message. So most of the objects in your example are redundant anyway. If CC32 was receiving, the example would not give you 0-127 values.
>
> For some tasks where you need to make adjustments with more than 128 steps, you may find the finer resolution of the MotorMix faders very useful - to get the full resolution you need to use midiparse.
>
> The following shows one way to do that for all 8 MotorMix faders, as well as how to reverse both versions for output. Copy/paste the following into an empty Max patcher:
Interesting that ctlin is working with LSB/MSB for some.
I don't have a MotorMix, the example I posted is adapted from something I made for a HUI-compatible device and was testing with a Behringer BCR connected via USB - for which ctlin does not receive the LSB in your example (but mine works).
So I suspect that the issue of ctlin not receiving the LSB in some situations must be driver-related. I'll do some further testing on that at some point.
Oopsy on the misconnected midiparse, thanks for pointing that out.
Hi John,
thanks for posting this, it works fine with the motormix!!!
All four patches do their job well.
Nice one.
Best
Hans
Hi John,
there is one more issue regarding fader control. Since ctlout works and the fader takes a position according to the number send, should I not receive a value coming in on ctlin in relation to that move?
I mean that is what it is for to control the ctlin to set the values for the plug ins.
Or do we have to send a kind of refresh to get current fader positions?
Hans Mittendorf schrieb:
> Yes, Stefan that's what I thought but it is tricky. So how do you
> invert this ( I do not have the second output attached)
For positioning the faders you should be fine with 7-bit resolution...
And as I remember, the Motormix must not be in its "ProTools mode"
How to switch it should be explained in the manual. I always forget it,
and its a real design flaw of the box that its not as easy as just
pushing a single button, as well as it doesn't remember its state....
--
Stefan Tiedje------------x-------
--_____-----------|--------------
--(_|_ ----|-----|-----()-------
-- _|_)----|-----()--------------
----------()--------www.ccmix.com
Hi
> And as I remember, the Motormix must not be in its "ProTools mode"
Push "PLAY" and "ESCAPE" to toggle between ProTools Mode and Standard
Mode.
reinhold
Hans Mittendorf schrieb:
> there is one more issue regarding fader control. Since ctlout works
> and the fader takes a position according to the number send, should I
> not receive a value coming in on ctlin in relation to that move? I
> mean that is what it is for to control the ctlin to set the values
> for the plug ins. Or do we have to send a kind of refresh to get
> current fader positions?
Lucky you, the makers of the Motormix prevented feedback....
If you send the value out, you can also feed it to what ever part of
your patch where you need that information. You might also be able to
set the Motormix to feed it through, should be mentioned in the manual
if its possible... (I would prefer not to have feedback...)
Stefan
--
Stefan Tiedje------------x-------
--_____-----------|--------------
--(_|_ ----|-----|-----()-------
-- _|_)----|-----()--------------
----------()--------www.ccmix.com
This works fine Stefan.
Since I want to control faders by sending vlaues, I want of course the values to be returned inctlin immediately. When I use the patch you have send the value of the fader ctlout is not returned to ctlin. Do I have to set the mm into a special mode for real time operation?
Actually, I tryed the ctlout you send but in motormix it has to be like this
max v2;
#N vpatcher 48 74 648 474;
#P origin 0 28;
#P slider 365 21 15 128 0 1;
#P window setfont "Sans Serif" 9.;
#P window linecount 1;
#P newex 415 231 21 196617 t 0;
#P window linecount 2;
#P comment 458 173 125 196617 This is the reverse - note the order , MSB first;
#P number 415 173 35 9 0 127 3 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P window linecount 1;
#P newex 415 254 60 196617 ctlout 32 1;
#P newex 481 254 54 196617 ctlout 0 1;
#P newex 298 142 50 196617 ctlout 0 1;
#P number 298 119 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P comment 114 120 176 196617 your output with 0-127 resolution ->;
#P number 63 91 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P newex 63 57 50 196617 ctlin 0 1;
#P comment 114 93 176 196617
#P connect 1 0 2 0;
#P connect 4 0 5 0;
#P connect 11 0 8 0;
#P connect 8 0 10 0;
#P connect 10 0 7 0;
#P connect 8 0 6 0;
#P pop;
Thanks for you thoughts! Stefan
Thanks I found it and set it to standard. Do you know why a fader chnge from ctlout is not returned immediately to ctlin?
thanks this is a good point feedback or not. I will try a few things out.
Hans Mittendorf schrieb:
> Actually, I tryed the ctlout you send but in motormix it has to be like this
I doubt that you are obliged to send the LSB, the MSB should be enough...
And to get it back in I'd suggest the following:
--
Stefan Tiedje------------x-------
--_____-----------|--------------
--(_|_ ----|-----|-----()-------
-- _|_)----|-----()--------------
----------()--------www.ccmix.com
Sorry, but your patch does not make my fader move...
This one does
max v2;
#N vpatcher 48 74 648 474;
#P slider 129 40 15 128 0 1;
#P window setfont "Sans Serif" 9.;
#P window linecount 1;
#P newex 179 250 21 196617 t 0;
#P window linecount 2;
#P comment 222 192 125 196617 This is the reverse - note the order , MSB first;
#P number 179 192 35 9 0 127 3 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P window linecount 1;
#P newex 179 273 60 196617 ctlout 32 1;
#P newex 245 273 54 196617 ctlout 0 1;
#P connect 5 0 2 0;
#P connect 2 0 4 0;
#P connect 4 0 1 0;
#P connect 2 0 0 0;
#P pop;
best
Since you have two years experience with the mm could you point me to a way to change a preset?
Apart from sending fader messages, I would like to store some prsets. I would just like to press a button on the motormix to tell the preset to set to 1,2 or whatever.
Do you know how to program that?
cheers
On 27 May 2007, at 14:01, Hans Mittendorf wrote:
> Apart from sending fader messages, I would like to store some
> prsets. I would just like to press a button on the motormix to tell
> the preset to set to 1,2 or whatever.
I'm not sure what you mean: do you want presets representing Motor-
Mix mappings, or do you want the Motor-Mix to change presets in the
Max world?
In any case, the Motor-Mix doesn't have preset support onboard - the
way I use it is to set up several distinct MM pages in Max, and then
use one column of buttons to switch between pages. There is no need
for presets, since all the mappings are there at the same time - all
the code is doing is flipping the Motor-Mix between different views.
Nick Rothwell / Cassiel.com Limited
www.cassiel.com
www.myspace.com/cassieldotcom
www.loadbang.net
Want I want to do is to switch presets in the Max world. For example switching between presets which control fader settings.
I do not know what you mean by setting up distinct MM pages. I have not done this kind of control.
I remember that inside the instruction manual it is mentioned to use dump and coll to switch presets.
Please tell me more about how to set up this kind of control
cheers
The interesting part now is that I can send fader value changes the fader moves and at the same time the control values of ctlin are changing. Feedback without harm....
But through your input with this matter, I learned that one could control certain settings without external devise....
cheers Stefan
Nick,
> In any case, the Motor-Mix doesn't have preset support onboard - the
> way I use it is to set up several distinct MM pages in Max, and then
> use one column of buttons to switch between pages. There is no need
> for presets, since all the mappings are there at the same time - all
> the code is doing is flipping the Motor-Mix between different views.
can you please elaborate on this ? Or sending a patch ?
I'm currently using Darwin Grosse mmix object but they do not support
14 bits precision faders.
But I need to use more than 8 faders, the Darwin's objects let you
define 'virtaul faders' and swith between them using the 'view'
physical switch on the mmix.
All the best
Alessandro Fogar
On 28 May 2007, at 08:05, Alessandro Fogar wrote:
> can you please elaborate on this ?
Not really - since I've been using jhno's Motor-Mix objects, not
Darwin's. The jhno system allows for multiple pages of virtual
controls; it sounds as if Darwin's system does as well. (Since the
jhno objects are PPC only, I'll have to switch pretty soon...)
-- N.
Nick Rothwell / Cassiel.com Limited
www.cassiel.com
www.myspace.com/cassieldotcom
www.loadbang.net
The system is up and running thanks to your help too.