your experience with MIDI
I was wondering if all of you using MIDI controllers could describe your experiences with its 127-grain sensitivity on knobs, faders, and piano keys when fiddling with your sounds. I’m considering getting a keyboard controller with a few knobs and faders (for the curious, I’m looking at the CME UF5), but I’m afraid its 127 steps will be too coarse to allow for both subtle and dramatic parameter changes. Do you find you encounter the 127-step limitation often in your sound-making? Describing what you’re controlling (LFO, grain size, etc.) and with what kind of control (fader, knob, key) would be helpful as well.
It depends on what you’re doing. Obviously, higher values are nicer
especially if you’re dealing with data coming from say a pressure
sensor, but ultimately it has less to do with resolution than with
musical mapping. Hell, 1-bit data can be interesting with the right
It’s also very important to remember that with Max you aren’t bound to
linear mappings. Use the "table" or "function" object (normally used
with line~, but it outputs an interpolated value out the left when you
send in a single number) to make a mapping that is mostly linear, but
then takes some detours along the way; then, you can just access them
linearly, even though it sounds like you’re freaking out…
Also, notice that you don’t always need precision in certain ranges of
a parameter. For instance, this:
ctlin -> scale 0 127 400. 10000. -> filter cutoff freq
is much less effective than this:
ctlin -> table -> scale 0. 127. 36. 127. -> mtof -> filter cutoff freq
Here, you get more granularity in the range of values where you need it
(the lows and mids) and waste less space on the top. You may have to
combine several objects to get the desired curves, but the creativity
pays off in controls that are much more musical. Also, think about
ctlin -> pack f 1000 -> line 0. -> parameter to control
-> pack f 2000 -> line 0. -> some other parameter to control
can be an interesting way of controlling to parameters with one
controller. They’re linked, but they move slightly differently.
(especially interesting if one is inversely mapped)
Thanks for the suggestions. I think it clarified what I think I was actually asking — if MIDI would let me both do what I want musically (which can easily be done as you suggested), as well as experiment along broader, less clearly-defined limits (to alter parameters sonically and intuitively rather than technically). I suppose MIDI isn’t best suited to accommodate the latter situation, although there are obviously ways to work around it, like dynamically altering the scale of the values with another knob or something similar.
Don’t forget Pitchbend Controler is 14bits resolution (two MIDI words).
In most of my sound control experiences, 7bits resolution was enough.
Of course, we can’t expect to control a 20-to-20000Hz filter with a step
But do we really need that much resolution in a performance situation? In
most of the case I guess not. But of course it depends of your needs. And
Peter’s right: remaping your MIDI data is essential and is the solution in
Playing with a fader, I feel it’s not really relevant to give a better
resolution to this control. My finger mouvement can’t really reach that
"resolution intention"…. Unless with a really long fader, wich is not
the case on the CME UF5.
CME UF5 seems to be a nice controler: lots of faders and knobs, I like
that! In most situations, I’m using MIDI faders such as Behringer
B-control because I find keyboards burdensome and faders are longer,
bigger and motorised! When I need triggers, I use the programmable
pushbuttons on the B-control.
On 5 Jun 2006, at 19:41, Patrice Coulombe wrote:
> Don’t forget Pitchbend Controler is 14bits resolution (two MIDI
IMHE not many controllers put out 14-bit messages.
nick rothwell — composition, systems, performance — http://
You make a good point about faders, especially when using them for volume (which I’ll likely be doing). Assuming you can actually step through each of the 127 values, that will give you a 127db range with the most straightforward scaling. I doubt most people’s hearing resolves in steps finer than 1db, so 127 would likely be fine for most situations.
I’m mostly interested in getting a keyboard controller so I can compose more traditionally melodic parts. The extra knobs and faders would really just be a nice bonus, but they seem like they’ll be fairly usable.
Actually, I’ve often found that decibel-faders have the problem (and
this definitely depends on the type of sound-source you’re dealing
with, of giving me a little too much resolution at the bottom of the
scale. (in that sounds between -60 and -120 dB have as much priority
and resolution as do sounds between 0 and -60 dB) Linear scales for
gain are pretty decent for certain tasks, though they lack low-end
resolution, so I tend to use a hybrid approach, combining values from
both the linear and the log scales (maybe 50% lin, 50% log), and then
converting it back into a dB level for the interface.
Or, something else I’ve done is have a dB range from maybe -70 to +12
dB (scale 0. 127. -70. 12.), and then have a mute button. You
sacrifice the lowest of the low-end, but you get a much bigger
sweet-spot for your volume fader. This definitely depends on the kind
of sounds you’re making, noise floor, etc.
Another really easy trick for remapping:
scale 0. 127. 0. 1.
pow 0.5 < --- the curve of the fader. Values closer to 0 will make
the fader top heavy
scale 0. 1. -127 12.
Now you have a top-weighted fader.
The first three objects could be compressed to [scale 0. 127. -127.
12. 0.5] or, better still, [lp.scampf map 0 127 -127 .5 pow 0.5].
You could work the dbtoa into the lp.scampf parameters, using exp
mode instead of pow. That would save yet another object.
Optimizing patches is fun.
Best — Peter
————– http://www.bek.no/~pcastine/Litter/ ————-
Peter Castine +—> Litter Power & Litter Bundle for Jitter
Heavy-Duty Mathematics for Everyday Use
iCE: Sequencing, Recording &
Interface Building for |home | chez nous|
Max/MSP Extremely cool |bei uns | i nostri|
The situation in which I have a problem with midi resolution is when I control non-conventional parameters in max from a midi-based sequencer (Logic). We do that a lot, so I experience 7 bits as quite a limitation.
For example I want to control the position in a 2 minutes long sample up to a resolution of milliseconds. 128 steps is obviously not enough and there is no smart scaling trick that will help us here. Of course with hardware knobs there is no point in trying to do this due to the physical limitation, but we do this with automation in logic that has the same (unnecessary, if you ask me) limitation.
The sensor-suit we work with is different. Each limb has midi-resolution but parameters can be controlled with a combination of wrist, elbow and shoulder, thus the resolution becomes 127^3.
I try to do as much communication as possible with OSC, not with midi, but I admit there are not many hardware OSC-controllers available.
Yes, it would be more efficient to do it all in one object, but scale
doesn’t accept values for coefficient 5 that are <1., so no dice on
this one. (since we’re trying to squareroot instead of square.)
Unfortunately, the 5th coeff. of scale is only effective at bottom
weighting a scale. Though naturally there is a litter object for this,
(for that matter, you could do the entire thing in expr) I like solving
problems this way because it often points me in a new direction for
thinking about things. For instance, I use the same trick with
PM.Scale~ to skew LFOs top-heavy and bottom-heavy. (a sine-wave lfo
doing filter cutoff is much more interesting if the LFO gets warped…)
When you go to lock things down, then it’s definitely handy to optimize
what an excellent idea, should’ve thought about that myself.
Oh. I hadn’t noticed that. TBH, I never use scale. For other reasons.-)
————– http://www.bek.no/~pcastine/Litter/ ————-
Peter Castine +–> Litter Power & Litter Bundle for Jitter
… I own a Doepfer pocket dial "endless" rotary knobs and you have to
deal with the fact that
it sends the value 64 +/- 1 to 7 depending on the rotation speed…
I made a patch to manage the [ctlin]. Any advice is welcome !
(please, keep in mind I’m a newbie)
ps: the "pow" value helps to deal with bigger intervals… I know it
could be much better …
(and it’s been a long time I didn’t have any math courses :)
#N vpatcher 15 55 929 662;
#P origin 0 68;
#P window setfont "Sans Serif" 9.;
#P message 530 93 14 9109513 1;
#P newex 530 67 45 9109513 loadbang;
#P comment 370 58 18 9109513 $1;
#B color 10;
#P comment 439 124 24 9109513 pow;
#P newex 444 234 27 9109513 / 50.;
#P newex 414 263 70 9109513 switch 2;
#P newex 414 194 104 9109513 if $f1 < 1 then 1 else 2;
#P flonum 466 124 35 9 0 0 0 139 0 0 0 221 221 221 222 222 222 0 0 0;
#P button 466 97 15 0;
#P newex 373 305 14 9109513 _;
#P newex 328 160 128 9109513 expr pow(abs(64 – $f1)\, $f2);
#P window setfont Impact 14.;
#P flonum 530 412 85 14 0 0 0 177 248 18 0 255 255 255 222 222 222 0 0 0;
#P window setfont "Sans Serif" 9.;
#P newex 328 57 38 9109513 ctlin 10;
#P message 310 315 14 9109513 0;
#P message 280 315 14 9109513 1;
#P newex 280 244 38 9109513 t b i;
#P user gswitch2 310 349 39 32 0 0;
#P button 339 285 15 0;
#P newex 513 147 27 9109513 t b b;
#P message 530 468 33 9109513 set $1;
#P message 373 354 67 9109513 0.023925;
#P message 339 402 14 9109513 0;
#P message 310 400 14 9109513 0;
#P button 292 482 15 0;
#P newex 310 431 26 9109513 – 0.;
#P newex 339 431 44 9109513 + 0.;
#P newex 292 527 47 9109513 accum 0.;
#P newex 280 290 40 9109513 togedge;
#P newex 280 219 35 9109513 – 64;
#P comment 202 292 73 9109513 inc/dec detect;
#B color 2;
#P window linecount 2;
#P comment 556 242 123 9109513 choose a pow value < 1 if your dealing
#P window linecount 1;
#P comment 501 123 18 9109513 $2;
#B color 10;
#P fasten 19 0 3 0 333 91 285 91;
#P connect 3 0 16 0;
#P fasten 16 1 4 0 313 277 285 277;
#P connect 4 0 17 0;
#P fasten 6 0 8 0 344 467 297 467;
#P fasten 7 0 8 0 315 467 297 467;
#P fasten 12 0 5 0 535 506 297 506;
#P connect 8 0 5 0;
#P connect 4 1 18 0;
#P fasten 18 0 15 0 315 338 315 338;
#P fasten 17 0 15 0 285 338 315 338;
#P connect 15 0 9 0;
#P connect 9 0 7 0;
#P fasten 7 0 5 1 315 486 315 486;
#P fasten 6 0 5 1 344 506 315 506;
#P fasten 11 0 7 1 378 422 331 422;
#P connect 19 0 21 0;
#P fasten 16 0 14 0 285 277 344 277;
#P connect 14 0 15 1;
#P connect 15 1 10 0;
#P connect 10 0 6 0;
#P fasten 26 0 22 0 419 294 378 294;
#P connect 22 0 11 0;
#P fasten 14 0 11 0 344 335 378 335;
#P connect 11 0 6 1;
#P fasten 24 0 25 0 471 155 471 155 471 185 419 185;
#P connect 25 0 26 0;
#P fasten 21 0 27 0 333 224 449 224;
#P connect 27 0 26 1;
#P fasten 24 0 21 1 471 149 451 149;
#P fasten 19 0 23 0 333 91 471 91;
#P fasten 31 0 24 0 535 117 471 117;
#P connect 23 0 24 0;
#P fasten 21 0 26 2 333 224 479 224;
#P fasten 19 0 13 0 333 91 518 91;
#P connect 30 0 31 0;
#P fasten 5 0 20 0 297 560 498 560 498 385 535 385;
#P fasten 13 1 20 0 535 256 535 256;
#P connect 20 0 12 0;
Mattijs Kneppers wrote:
> The situation in which I have a problem with midi resolution is when
> I control non-conventional parameters in max from a midi-based
> sequencer (Logic). We do that a lot, so I experience 7 bits as quite
> a limitation.
Logic isn’t able to deal with 14-bit controllers? I haven’t used it for
ages, but I believe it was able to do that…
> For example I want to control the position in a 2 minutes long sample
> up to a resolution of milliseconds. 128 steps is obviously not
> enough and there is no smart scaling trick that will help us here.
even 16384 might be little… if you need more, the smart trick is to
use audio as controller, gives you 2 to 10-bits more…
But moving the sequencing part into Max could be an easier solution.
> Of course with hardware knobs there is no point in trying to do this
> due to the physical limitation,
Why not, rotary knobs will give you any resolution you could think of,
combine it with a display and a button to fire the value.
> Logic isn’t able to deal with 14-bit controllers? I haven’t used it for
> ages, but I believe it was able to do that…
I use automation to control a series of pluggo vsts that send OSC to max and automation in logic has only 128 steps. Probably the pitchbend midi cc in logic supports more, but editing in hyperdraw is almost obsolete in the latest logic versions.
> But moving the sequencing part into Max could be an easier solution.
I would have loved to ;) but we have added video editing options to Logic in this way. It is essential that the complete spectrum of audio composing possibilities remains available. Rebuilding all logic effects and editing options in max is definitly on my wishlist :)
> > Of course with hardware knobs there is no point in trying to do this
> > due to the physical limitation,
> Why not, rotary knobs will give you any resolution you could think of,
> combine it with a display and a button to fire the value.
That’s right, although you’ll still have come up with a smart way to access all this resolution in a useful way (you wouldn’t want to scroll through 2 minutes of data with a milliseconds resolution with any single knob).. With the sensor suit I mentioned, this problem has been solved by combining 3 parameters and some pressure sensors.
> Stefan Tiedje————x——-
> –(_|_ —-|—–|—–()——-
> — _|_)—-|—–()————–
Peter McCulloch wrote:
> Actually, I’ve often found that decibel-faders have the problem (and
> this definitely depends on the type of sound-source you’re dealing with,
> of giving me a little too much resolution at the bottom of the scale.
The bottom is very important if you want to fade in seemless, usually
the bottom lacks the resolution it needs at least for me. The first
value has to be just slightly above the audibility…
I need also higher resoltuion at the top, to be able to control the mix
subtly on a good working level.
I finally made a coll which is incorporated always to give me a good
control with a Midifader in all ranges. It ended up being sort of an
s-curve. I am happy with it and stick to it…
> The bottom is very important if you want to fade in seemless, usually
> the bottom lacks the resolution it needs at least for me. The first
> value has to be just slightly above the audibility…
> I need also higher resoltuion at the top, to be able to control the
> mix subtly on a good working level.
> I finally made a coll which is incorporated always to give me a good
> control with a Midifader in all ranges. It ended up being sort of an
> s-curve. I am happy with it and stick to it…
That’s an interesting approach, and makes a lot of sense. For
continuous values, you could also use the function object as a lookup
table (something that has been enormously helpful in the past), though
this is going to be slightly less efficient than coll. (though
probably negligible) It’s good for making "crazy" faders…
In the past couple of years, I’ve gone to using spatializers instead of
faders on my modules, so that the very softest sounds are filtered and
only in the reverb. As a source moves closer, the filter sweeps up,
and you also get more dry sound. It’s also a pretty effective way of
managing density; you can have a lot going on, but as long as things
are at different depths, you get pretty decent separation, and the
field doesn’t become saturated as easily.
Something I’ve found that works well is to run at about 70-85%, so that
you get used to that as "full volume"; then, when you punch it up to
100, it feels much more intense because of the additional high-freq
boost, even though the change in amplitude coeffs. isn’t that
substantial. When I’ve done it in concert, people tend to notice it.
("It’s like it was coming right at me, man…")
A high-shelf filter is really handy to have near volume controls, IMHO;
a 6dB boost or cut can make a world of difference.
One other thing mixing-land trick that I’ve found enormously useful is
the following combo:
controls trim/volume, etc.
Gives you a volume settings as well as an on/off all in one. (very
useful as a bpatcher…)
> Do you find you encounter the 127-step limitation often in your
> sound-making? Describing what you’re controlling (LFO, grain size,
> etc.) and with what kind of control (fader, knob, key) would be
> helpful as well.
In theory yes, in practice no. For mixing purposes I am happily using a
homebrewn mapping with a coll. For finer controls I have dials
(increment/decrement), which do not introduce any limitation with the
Faders and Knobs with 127-bit resolution serve well in most cases, and
don’t forget if you need more you get 10-bit or up to 14-bit resolution
faders/knobs. But I haven’t seen any 14-bit in real life, even most
pitchbends have a lower resolution.
Forums > MaxMSP