fader8 Posted February 18, 2012 Share Posted February 18, 2012 If you're new to MIDI, you've probably heard that one of its limitations is its low resolution message format for continuous controllers, eg 128 steps of control (0-127 or 7 bit). Well, it isn't true, but the myth gets perpetuated by the proliferation of low cost, substandard MIDI controllers flooding the market that simply choose not to support the transmission of higher resolution messaging. If you have a controller that does support higher resolution, (0-16,383 or 14 bit) then you're in luck because Logic Pro's channel strips, many of its plug-ins and even 3rd party plug-ins can benefit from this. I'll start with a couple of examples for using 14 bit MIDI messaging with a channel strip fader, but first a little primer on 14 bit MIDI.... The way it works with 14 bit MIDI continuous controllers is that rather than sending just one 7 bit message to get the 0-127 values, it sends a pair of 7 bit messages, one after the other. These are referred to as the MSB (most significant bit) and the LSB (least significant bit) respectively. For example, if we want to control channel strip fader level with just cc7, then we only get the MSB and we only get 128 steps of resolution. If we pair that up with an LSB, then we can get up to 127 steps "in between" each step of the MSB's resolution. Obviously, the LSB can't be cc7, so it's standardized that the LSB message number is exactly 32 above the MSB's message number. So to send a 14 bit control to a channel strip fader, we need to send a cc7 message, followed immediately by a cc39 message. (7+32=39, right?) Here's what that looks like. I've programmed a continuous rotary encoder on my Novation RemoteSL as a 14 bit volume control. (This is easy, more on this below.) Each consecutive click of the knob sends two messages. Here's 5 clicks to the right: Notice that the regular ol' cc7 stays at a value of 106, but the cc39 goes up. When that LSB cc39 message reaches a value of 127, the next click will advance the MSB message value: So, this means that we can start from 0: MSBcc7 0, LSBcc39 0, and twist the encoder through 16,383 clicks to MSBcc7 127, LSBcc39 127 to get to full level. That's a lot of clicks, you'll be there spinning that thing for a while! "OK, fader8. If I have to spin knobs forever, how is this useful in a normal mixing, etc., workflow in Logic?" Ah! Well, in it's present state, not very useful, other than for demonstration purposes. But we'll get to that... So you need to visit the configuration software that came with your controller. As an aside, the quality of any MIDI controller these days is not just in the controller itself, but also the quality and stability of the configuration software is really important. Some companies are great at making the hardware, but can't write desktop software that works worth a damn! Anyway, on with the examples. Here's a configurator for a Novation controller. Your controller should have a similar dialog available. Notice that all that's needed is to tell it the controller number is cc7. Clicking the 14 bit checkbox will automatically pair cc39 to the cc7 message. Hopefully the app that came with your rig makes it this simple. Once you have your controller sending the right thing, move on to Logic's controller assignments. 14 bit Control and Logic's Controller Assignment The Logic Pro manual doesn't go into a lot of detail regarding 14 bit controllers, other than to mention they are supported. No matter, since the procedure is pretty much the same. Open Controller Assignments and move a channel strip fader. Move your newly configured 14 bit MIDI control. Make sure you move it enough for Logic to recognize that the message is 14 bit. You should see both "Hi" and "Lo" values appear in the Value Change field, as shown here: You don't need to make any other changes, so close the Controller Assignment window and test your control out. OK, now that your fingers are cramping from all that knob spinning, we can turn this into something that's actually useful, a very fine control that only adjusts the fader from plus 2dB to minus 2 dB. Open up your controllers configuration app. You will need to enter the following values for the fader/encoder you use: (You may or may not need the "Default" setting, which represents setting 0dB on Logic's channel strip fader with this value. Your app may not even include a setting like this.) This fine control will write detailed automation to your track as the automation system runs also at high resolution. There isn't a level meter in Logic that measures dB to 2 decimal points, but if you have a metering plug-in that does, you can load up a test oscillator and see that you can automate the level to that precision using your new 14 bit controls. 14 bit Modulation Sources for Virtual Instruments You can skip Logic's Controller Assignments altogether if you want/need to use 14 bit controllers as modulation sources in some of Logic's software instruments. In fact, if you look at the ES2 MIDI mod source lists, you can see that there's a big chunk of cc numbers missing above #31. The synth doesn't let you assign those cc's as they are reserved in case you are ever using the LSB's for cc's 0-31. You don't have to configure the instrument any differently, it will automatically recognize the presence of the LSB message. Hi res controls for instruments can be REALLY useful, especially for detuning oscillators and things like that. Other things Where 14 bit MIDI controls can really be useful is when you have a plug-in parameter that has more than 128 values associated. This is very common. If you want to be able to dial those in from your MIDI controller, then you will need to use 14 bit controls. In addition to whatever facilities your MIDI controller has for adjusting the range of the control, the Controller Assignments window also has the "Multiplier" field for each learned parameter, which I can attest works well for 14 bit messages. That's enough geek stuff for now. Hope this is easy enough to understand! fader8 Quote Link to comment Share on other sites More sharing options...
Jordi Torres Posted February 18, 2012 Share Posted February 18, 2012 This is great, thanks fader8! J. Quote Link to comment Share on other sites More sharing options...
Eric Cardenas Posted February 19, 2012 Share Posted February 19, 2012 Thank you. This is awesome! Quote Link to comment Share on other sites More sharing options...
Doug Z Posted February 20, 2012 Share Posted February 20, 2012 Just when I thought I finally knew everything about Logic...... Very informative - will play with this when time allows. Thanks! Quote Link to comment Share on other sites More sharing options...
ski Posted March 6, 2012 Share Posted March 6, 2012 Excellent stuff! If we pair that up with an LSB, then we can get up to 127 steps "in between" each step of the MSB's resolution. Shouldn't that be 128 steps in between (values 0 - 127), resulting in 16,384 values? MSB = 0, with LSB 0 - 127 = 128 steps for MSB 0 thru MSB = 127, with LSB 0 - 127 = 128 steps for MSB 127 128 x 128 = 16,384 Just checkin'! Quote Link to comment Share on other sites More sharing options...
Eric Cardenas Posted March 6, 2012 Share Posted March 6, 2012 Excellent stuff! If we pair that up with an LSB, then we can get up to 127 steps "in between" each step of the MSB's resolution. Shouldn't that be 128 steps in between (values 0 - 127), resulting in 16,384 values? MSB = 0, with LSB 0 - 127 = 128 steps for MSB 0 thru MSB = 127, with LSB 0 - 127 = 128 steps for MSB 127 128 x 128 = 16,384 Just checkin'! 0 - 16,383 is 16,384 values. Quote Link to comment Share on other sites More sharing options...
ski Posted March 6, 2012 Share Posted March 6, 2012 [EDIT] Right. But my point was that there are 128 LSB steps, not 127. Quote Link to comment Share on other sites More sharing options...
ski Posted March 6, 2012 Share Posted March 6, 2012 Look up. Quote Link to comment Share on other sites More sharing options...
David Nahmani Posted March 6, 2012 Share Posted March 6, 2012 Right. But my point was that there are 128 LSB steps, not 127. You and fader8 both agree, ski: 128 LSB steps = 127 steps "in between" each LSB step. Maybe a simple drawing would help here? http://www.nzdl.org/gsdl/collect/cdl/archives/HASH3ffa.dir/p10.gif Quote Link to comment Share on other sites More sharing options...
ski Posted March 6, 2012 Share Posted March 6, 2012 You must have taken those from the plans of my old house in NY LOL! Now to be totally picayune, the LSB accounts for values from 0 - 127, so that's 128 steps inbetween each MSB step (which is probably what you meant. Right? Or do I need to provide a similar drawing :lol: Quote Link to comment Share on other sites More sharing options...
Eric Cardenas Posted March 6, 2012 Share Posted March 6, 2012 the LSB accounts for values from 0 - 127, so that's 128 steps inbetween each MSB step. You are totally right. There are 128 LSB events (Steps) inside each MSB. Quote Link to comment Share on other sites More sharing options...
David Nahmani Posted March 6, 2012 Share Posted March 6, 2012 Now to be totally picayune, the LSB accounts for values from 0 - 127, so that's 128 steps inbetween each MSB step (which is probably what you meant. Right? fader8 says "we can get up to 127 steps "in between" each step of the MSB's resolution." So if there are 128 steps of the MSB's resolution, meaning for that MSB, you have 128 possible values, then that's 127 intervals "in between" each one of those 128 steps. On top of those 127 intervals, there is one more interval between the highest LSB of a MSB and the lowest LSB of the next MSB, so in the end, you're right, there are 128 intervals between two MSBs, but fader8 is also right, there are 127 intervals in between each step of a single MSB. I just like it when everybody is right. Sue me. Quote Link to comment Share on other sites More sharing options...
ski Posted March 6, 2012 Share Posted March 6, 2012 I just like it when everybody is right. Sue me. Imagine if Einstein was off by one, like, E=mc^3. Then where would we be? Quote Link to comment Share on other sites More sharing options...
fader8 Posted March 6, 2012 Author Share Posted March 6, 2012 Imagine if Einstein was off by one, like, E=mc^3. Then where would we be? Gravity would bend the other way. That means your spare tire would be under your armpits instead of around your waist. And boobs wouldn't sag so you'd have a lot of 80 year old woman walking around with perky breasts, in case that's useful to you.... I think we'll buy you an abacus, ski. Quote Link to comment Share on other sites More sharing options...
ski Posted March 6, 2012 Share Posted March 6, 2012 I'm taken abacus by your imagery. Quote Link to comment Share on other sites More sharing options...
widdershins Posted June 27, 2012 Share Posted June 27, 2012 That's some great information, thanks! Sorry to dig up an old thread, however, I have a further question. I have a Moog Voyager which sends and receives 14-bit MIDI data. I'd really like to be able to automate its creamy filter smoothly from an External MIDI track in Logic. Is it possible to get Logic to send 14-bit MIDI as well as receive it? Perhaps it's possible to make something in the Environment? Thanks, T Quote Link to comment Share on other sites More sharing options...
ski Posted June 27, 2012 Share Posted June 27, 2012 It's not really possible to create anything in the environment that will output a continuous stream of 14-bit messages. In terms of "automation", there's no reason you can't record movements of the Voyager's cutoff control itself simply as MIDI (recording it in a region just like any other MIDI data), though any kind of editing on the LSB for that data would be extremely difficult. Quote Link to comment Share on other sites More sharing options...
widdershins Posted June 27, 2012 Share Posted June 27, 2012 Thanks ski, I can obviously HyperDraw the MSB but it's not really practical to HyperDraw the LSB. Sorry, I meant to say HyperDraw before, "automate" was a slip of the tongue. I've been learning Supercollider recently, I may see if I can build a tool that intercepts the MSB data and interpolates it to 14-bit. Thanks for replying though. Quote Link to comment Share on other sites More sharing options...
ski Posted June 27, 2012 Share Posted June 27, 2012 I put "automation" in quotes only because in Logic-speak this would be referred to as "region based automation" which is a term I can't stand. OK, off the soap box now LOL! Hope that works out with supercollider. Cheers, Ski Quote Link to comment Share on other sites More sharing options...
fader8 Posted July 12, 2012 Author Share Posted July 12, 2012 It's not really possible to create anything in the environment that will output a continuous stream of 14-bit messages. In terms of "automation", there's no reason you can't record movements of the Voyager's cutoff control itself simply as MIDI (recording it in a region just like any other MIDI data), though any kind of editing on the LSB for that data would be extremely difficult. Widdershins, You "can" create a 14 bit fader object in the environment, then record it's output to a track, but that wouldn't get you anything more than what you can achieve using the knob on your voyager anyway. Quote Link to comment Share on other sites More sharing options...
lordscruffo Posted January 21, 2017 Share Posted January 21, 2017 Hi Guys. I love this post. I'm having a little trouble getting results in Logic Pro X. I've been building my own Midi Controller, and now have gotten it to send 14 bit messages. In Logic Pro X, i'm not seeing the "Control Settings" (screenshot from your original post). So i'm not sure how to control the High Value and Low value to allow for more that 127 steps. I can see my controller properly sending the Hi and Lo as 14 bit in logic, but it still is reading as 127 steps. Any thoughts? Quote Link to comment Share on other sites More sharing options...
roblogic Posted November 14, 2018 Share Posted November 14, 2018 Hi so it´s not possible to use 14 bit resolution unless using a 14 bit midi controller? Is it not possible to configure it so that a normal 7 bit midi controller can send 14 bit midi data? Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.