your experience with MIDI


    Jun 05 2006 | 5:23 pm
    Hi,
    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.
    Evan

    • Jun 05 2006 | 5:49 pm
      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 mapping.
      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 using line.
      This:
      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)
      Peter McCulloch
    • Jun 05 2006 | 6:36 pm
      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.
      Evan
    • Jun 05 2006 | 6:41 pm
      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 of 1Hz... 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 most cases.
      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.
      pc
    • Jun 05 2006 | 6:59 pm
      On 5 Jun 2006, at 19:41, Patrice Coulombe wrote:
      > Don't forget Pitchbend Controler is 14bits resolution (two MIDI > words).
      IMHE not many controllers put out 14-bit messages.
      -- N.
      nick rothwell -- composition, systems, performance -- http:// www.cassiel.com
    • Jun 05 2006 | 7:09 pm
      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.
      Evan
    • Jun 05 2006 | 8:51 pm
      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 fader top heavy | scale 0. 1. -127 12. | dbtoa
      Now you have a top-weighted fader.
      Peter McCulloch
    • Jun 06 2006 | 9:20 am
      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| http://www.dspaudio.com/ http://www.castine.de
    • Jun 06 2006 | 9:24 am
      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.
      Mattijs
    • Jun 06 2006 | 12:18 pm
      Yes, it would be more efficient to do it all in one object, but scale doesn't accept values for coefficient 5 that are 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 things.
      Peter McCulloch
    • Jun 06 2006 | 4:51 pm
    • Jun 07 2006 | 2:53 am
      what an excellent idea, should've thought about that myself. thanks...
    • Jun 07 2006 | 8:20 am
      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
      iCE: Sequencing, Recording & |home | chez nous| Interface Building for |bei uns | i nostri| Max/MSP Extremely cool http://www.castine.de http://www.dspaudio.com/
    • Jun 07 2006 | 10:55 am
      ... 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) cheers _yvan
      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 :)
    • Jun 08 2006 | 9:48 am
      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.
      Stefan
      -- Stefan Tiedje------------x------- --_____-----------|-------------- --(_|_ ----|-----|-----()------- -- _|_)----|-----()-------------- ----------()--------www.ccmix.com
    • Jun 08 2006 | 10:08 am
      > 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 > > > -- > Stefan Tiedje------------x------- > --_____-----------|-------------- > --(_|_ ----|-----|-----()------- > -- _|_)----|-----()-------------- > ----------()--------www.ccmix.com > > ----------------------------------------------------
    • Jun 08 2006 | 7:30 pm
      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...
      Stefan
      -- Stefan Tiedje------------x------- --_____-----------|-------------- --(_|_ ----|-----|-----()------- -- _|_)----|-----()-------------- ----------()--------www.ccmix.com
    • Jun 08 2006 | 8:13 pm
      > > 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:
      flonum toggle | | bondo | | * 1. | controls trim/volume, etc.
      Gives you a volume settings as well as an on/off all in one. (very useful as a bpatcher...)
      Peter McCulloch
    • Jun 12 2006 | 6:43 am
      Evan wrote: > 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 resolution.
      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.
      Stefan
      -- Stefan Tiedje------------x------- --_____-----------|-------------- --(_|_ ----|-----|-----()------- -- _|_)----|-----()-------------- ----------()--------www.ccmix.com