1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

Tempo & expression controllers from keyboard

Discussion in 'Logic Pro X' started by joswyl, Feb 26, 2014.

  1. joswyl

    joswyl Member

    Hi everybody,

    Here I am back with another small problem.

    For my recent work, I would want to use my keyboard controllers to record expression and tempo variation.

    1. would be the mod wheel for expression (CC11 whereas mod wheel is usually CC1)
    2. would be the pitch bend wheel to control the tempo variations. The main tempo is set to the mid position of the pitch wheel.

    BUT, I could no way and nowhere find how to achieve this in Logic Pro X. How should I start and can I switch from CC1 to CC11 to be able to use the mod wheel for expression?

    Important: this is for realtime recording, not only for playback.

    All help is welcome! ;)

  3. Peter Ostry

    Peter Ostry Administrator Staff Member

    CC1 => CC11

    If this should go to a software instrument, in Logic X you can use a MIDI plugin called "Modifier". It makes the translation and you can scale it to your needs.

    Or go the traditional way via the Logic Environment. On Layer "Click & Ports", insert a transformer between the Physical Input and the Sequencer Input and tell it to make the translation and optional scaling for you.

    There are several other ways but these two are the basic methods.


    Tempo recording

    Again, several ways to do this. First read the chapter in the Logic Manual. In the English PDF manual it starts on page 593 and it's name is "Recording tempo changes in Logic Pro".

    If you want to use your pitch wheel, the tempo fader may be what you are looking for.
  4. joswyl

    joswyl Member

    Thanks a lot, Peter.

    I will give it a try. It's all about software instruments (Vienna chamber strings and woodwinds). I could do the same manually in lanes, but it's so time consuming and it doesn't feel realistic after all. Since I'm quite new with any DAW (and certainly with Logic Pro X), I have to learn a lot. The manual is so terribly extensive and the used terminology so unfamiliar, that it is more than often a problem to find a solution for specific problem in that huge book.

    I will let you know about the result.

  5. joswyl

    joswyl Member

    Hi Peter,

    Maybe I'm still too unexperienced to understand and realise to connections, but I don't quite see what you mean exactly.
    I could open the midi environment, could set up a slider for the tempo change, but nothing more. As slider, it works, but i don't see how to connect it to the pitch bend wheel of my midi keyboard. The same goes for the expression slider. Where can I select the "modifier" or transformer? I did a lot of reading in the manual, but got overwhelmed after some time with the incredible amount of information and terminology... I'm still a newbie...

  6. Peter Ostry

    Peter Ostry Administrator Staff Member

    I can show you how to do it.

    What is the tempo of your song (PitchWheel at center position) and which tempo range do you want to control (upper and lower end position of the PitchWheel)?
  7. joswyl

    joswyl Member

    Hi Peter,

    Thanks for helping me out.

    The average tempo is 76, with a variation down to 50 and up to 80.

    If it's not too much to ask, could you show me how to create a expression wheel (mod wheel)? Now I do the expression in a lane manually. And another little question: I'v' created an expresion lane, but the header name is always 'volume', although in reality it is an expression (the volume sliders (CC7) are not affected by that lane). How can I change that header name?

    Thank you so much for your help!

  8. Peter Ostry

    Peter Ostry Administrator Staff Member

    Open a new Environment window.

    With the dropdown menu in the upper left corner select layer "Click & Ports".

    At the left side you see a big "Physical Input" object with all your currently connected MIDI ports. This is the point where the MIDI data from your keyboard enters the Environment.

    At the right side you see a "Sequencer Input" object. This is the entry door to the Logic sequencer and all MIDI data arriving there goes to the currently selected track in your Arrange window which means it goes to the channelstrip that is associated with this track.

    Move the object "MIDI Click" out of the way but don't delete it.

    Delete everything between the Physical Input and Sequencer Input (by default there are a monitor and a keyboard object). Now, without any cables, no MIDI data would reach the sequencer.

    From the local menu select New –> Monitor. Duplicate the object by alt-dragging with the mouse because we need two of them.

    From the same menu select New –> Transformer. This is a small object with huge functionality. It can convert almost everything in various ways.

    Arrange the objects. Draw cables. Rename the transformer. Doubleclick the transformer and configure it. All is shown in the screenshot below:


    Transformer function:

    The top dropdown menu means "Process only what I tell you to process and let everything else through, unchanged".

    The first field in the upper row (Conditions) tells the transformer to work on Control Changes only.

    The field "Channel" is not set because I don't know the MIDI channel of your keyboard. If you don't care about the channel, leave the field as it is.

    The field "Data Byte 1" is the controller number and we want to change it. In the upper row (Conditions) set it to 1 which, in this case, means CC1. In the lower row (Operation) set it to 11.

    We do not want to process the values, so we leave the last field as it is.

    That's it, basically. If you move the mod wheel on your keyboard and watch the two monitor objects to see that the transformer converts CC1 to CC11. Move the pitch wheel, play on the keys, all data but CC1 must go through the transformer as they are.



    This patch converts every incoming CC1 to CC11, it does not care about the source or the MIDI channel. If you want it to work on a particular channel only, set this channel in the upper row (Conditions) of the transformer. Then only CC1 on this particular channel gets converted, CC1 on other channels remains unchanged.

    If you see the MIDI interface of your keyboard in the Physical Input and want to only process this input but let all other MIDI data from other ports through, connect the Sum output of the Physical Input directly to the Sequencer Input and connect your first monitor object to the port of the Physical Input where your keyboard data come in. Below you see an example where I process only the MIDI data of my wireless interface, everything else goes to the Sum output and directly to the sequencer:


    For an expression wheel or pedal you normally want a logarithmic curve, not a linear behavior. You can set this in the same transformer by converting all incoming values of CC1 to an exponential curve of your choice:

  9. Peter Ostry

    Peter Ostry Administrator Staff Member

    For that we are going to expand the patch we have already.

    A transformer has several processing and routing modes determined by it's dropdown menu at the top. To make the cabling and general function of the whole patch clear, we just block all pitch bends after the CC1–>CC11 conversion because we want to process pitch bend separately.

    Creat a new transformer. Name it "No Pitch". Put it after the existing CC1–>CC11 transformer and configure it as shown in the screenshot below:


    The selected transformer mode means "Block the events I tell you to block, let everything else through." This way no pitch bend event will reach the sequencer along this route. Our modified CC and everything else goes through.

    Tempo Fader

    From the local menu select New –> Fader –> Special –> Tempo Control. In the parameter inspector of the tempo fader set its "Style" to "numerical 3", this does not change the function but makes the object smaller. For the input select "PitchBd" because we will control the fader by pitch bend events. Leave everything else unchanged:


    General setup

    Create two new transformers. Name them "Pitch Exp" and "Pitch Scale". Cable everything as shown in the screenshot below:


    I guess you already see what we are going to do? This is parallel processing. On the upper route is our CC convertion and the pitch bend block. The lower route processes the pitch bend and turns it into tempo control. Parallel processing is not good for large patches but in this case it makes function and cabling pretty clear.

    Transformer "Pitch Exp"

    Configure it as shown in the screenshot below:


    Transformer function:

    The mode menu setting means "Process only events I specified in the Conditions row (pitch bend on all channels) and block everything else."

    In the Conditions status select "Pitchbend" because this is what we want to work with.

    Your tempo range 50-76-80 is not linear. If we just set the overall range, the middle position of the PitchWheel would not give a tempo of 76. Therefore we have to bend the curve. This is done by setting the Conditions Data Byte 2 (pitch bend value) to "Exp." and the parameter of the curve like shown in the screenshot.

    Transformer "Pitch Scale"

    The only thing we have to set here is the scaling of the pitch bend value in the Conditions area. Your requested lowest tempo of 50 bpm is already the lowest possible value for the tempo fader (value 0), so we just have to set the highest value to give us a tempo of 80 bpm:


    Transformer function:

    The pitch bend value starts at 0 and gets scaled to produce a maximum of 30 to produce a tempo of 80 bpm via the following tempo fader.

    You are ready, the patch should work as expected:

    • All CC1 on all channels from all MIDI devices are converted to CC11.
    • All pitch bend events in the range 0-64-127 (low-mid-high) on all channels from all MIDI devices are converted to tempo 50-76-80 bpm (low-mid-high position of PitchWheels).
    • All other events on all channels from all MIDI devices go to the Logic sequencer unchanged.

    Since we connected the tempo fader to the sequencer, the tempo changes are recorded while you play:




    You may ask yourself how I calculated those weird parameter values for the pitch curve and scaling. Well, I didn't calculate at all. First I adjusted the scaling in the second transformer to produce tempo 80 at the high position of my PitchWheel. Then I bent the curve in the first transformer to give me 76 bpm in the middle position. This made it necessary to adjust the scaling, then the the curve again and so on. I went back and forth a couple of times until I got what you requested.

    Your upper tempo range is very coarse, you have only 4 values between the middle and the high position of the PitchWheel (77, 78, 79 and 80 bpm). Due to the curve of the first transformer the upper part is kinda negative logarithmic, you reach the maximum tempo very late. If you do not want this, you can switch the curve to "Use Map" and modify the values of single events in the graph. This can be done by mouse (ouch...) or by selecting and adjusting the values by the two parameter controllers below the map (lower left corner). The first parameter selects the incoming value (position in the graph), the second parameter sets the outgoing value (height of the bar).

    Continuous tempo changes with a grid of 1 bpm are coarse but this depends on your music. If you are not happy with the jumping tempo consider to use tap tempo instead, for example by tapping the tempo constantly on a foot switch. You find a description in the Logic Manual. It does not work perfectly but under certain conditions it is possible to record this way. On the other hand, you can edit and smooth the curve after recording, the recorded notes will follow your changes but of course change the performance. If you record audio simultaneously you may run into problems anyway. You just have to find out what works for you.
  10. joswyl

    joswyl Member

    Thanks again, Peter,

    but I don't see any screenshot. (I can see it though on my smartphone, but that is rather small.)

    Should anything appear in these monitors? Mine are empty. When moving the mod wheel, nothing happens.
  11. joswyl

    joswyl Member

    OK, Peter, I've found the mistake. The keyboard was set to advanced functions. Now, the transformer works.
  12. joswyl

    joswyl Member

    Hi Peter,

    So far, I managed to do everything as you've told me. This is very complicated and far beyond my knowledge of Logic so far. But I'm learning. Thanks to you, I have some more insight in the midi environment and its functions now.

    As to the strange speed settings:actually, I only have to slow down from time to time, in little bits. It's classical music I'm working with and in this particular piece, there are no accelerations. This was just a testcase for a larger composition. But it was very instructive and helpful.

    Many, many thanks for your help and patience!

  13. Peter Ostry

    Peter Ostry Administrator Staff Member

    But you got it working at your first try. You are good, this was more than many other people can do when they see the Environment for the first time.

    Ah, and probably you don't even need the 50 bpm as the lowest tempo? If this is true I suggest to modify the patch to get a better resolution from the PitchWheel. More wheel distance for a smaller tempo range means better handling.

    You could remove the first transformer (Pitch Exp), set the other one (Pitch Scale) to process only pitch bend and block everything else and finally tweak the scaling to get what you need.

    For example, a setting like in the screenshot below, with a single transformer, gives you a range from 76 bpm (middle position) down to 60 bpm:


    For other values just leave the transformer window open, turn your PitchWheel and adjust the lower and upper scaling range until the tempo indicator of Logic shows you what you want.
  14. joswyl

    joswyl Member

    Hi Peter,

    Unfortunately, it is not as successful as I thought. The Expressions work fine. But the speedwheel (transformed pitch wheel) keeps sending (limited) pitch bends. The monitor shows speed activity, but the central Logic Project display shows a fix tempo (76 bpm). No change at all. Only the pitch changes, as well in the first as in the second setup you've sent.
    I wonder whether there should be another transformer to change the pitch information into speed information. I don't see that in either transformers. Only the tempo fader says something about speed. The rest is scaling. But that's just my thinking. I'm not the expert... I make a comparison. In the Expression setup, the transformer tells to change CC1 into CC11. But I can't see a similar command anywhere in the tempo setup. Does that make any sense?

  15. Peter Ostry

    Peter Ostry Administrator Staff Member

    No pitch messages here after the tempo fader.

    Check the setting of the "No Pitch" transformer of the CC conversion, maybe your pitch messages come from there. Menu should be set to "Filter matching events" and Status in Conditions should be "Pitchbend".


    Regarding "tempo message":
    This should be Meta 100 as the tempo fader sends it. Every fader works as tempo control if you set its output to Meta 100. But if we send this from a transformer, it does not work. Don't know why, maybe a bug in the Environment, maybe a fader can do something else in the background we don't know of.
  16. joswyl

    joswyl Member

    Hi Peter,

    Sorry that I couldn't respond anymore yesterday, but we had a major current failure here in the village.
    I checked every transformer and the fader. They were all OK. So that couldn't be the reason. Afterwards I noticed that the mod wheel didn't function anymore at all and that the pitch wheel was sending only volume changes (CC7). Probably the keyboard settings had changed for an unknown reason. That could be the cause of the malfunction of the whole setup. I will check that today and reset it if necessary. We'll keep in touch.

  17. joswyl

    joswyl Member

    Finally I discovered what was going wrong. I tested the wheels in VSL standalone and there was no problem. So it had to do with some parameters in Logic. Then I checked the control settings and indeed, some had a 'learned' function that was not the original one. Don't ask me how, but I deleted all the 'learned' settings and everything was back to normal.
    I will rebuild the transformer setup today and inform you about the outcome later.

    Thanks again for all your patience and much appreciated advice!

  18. joswyl

    joswyl Member

    Thanks again, Peter, I got everything working fine.

    So, that issue is finished.

    Still, I have a question about it. I'm always confused about the issues "channel/track". I know that every track can have various midi channels. But in the above mentioned environment setup you speak about the channel choice. What do you exactly mean by "channel"? Is it the midi channel of the keyboard or is it the track to which it applies?

    Why do I ask? The setup works fine now, but when recording, the expression settings are recorded to ALL tracks and that is not the intention. For the tempo tool, that is of course OK, but not for the expression. That should be different for every track.

    And another technical question. Does it make any sense to tweak the velocity AND the expression for the same instrument?


  19. Peter Ostry

    Peter Ostry Administrator Staff Member

    Up to now we only talked about MIDI channels. We cannot process audio in the Logic Environment, it deals with MIDI only.

    If your patch is ok, the following should happen:

    1. If you turn the PitchWheel, the tempo of the song changes. With the last version of the patch, turning the PitchWheel upwards has no effect.
    2. If you turn the ModWheel, Expression events get recorded on the currently selected track.
    If you want to use the ModWheel differently for other tracks, you need to add a kind of switch to the patch and turn the Mod–>Exp translation on or off, according to your needs.

    Modifying incoming velocity events makes sense if you want another overall velocity, another curve, quantized or randomized velocity etc. In all cases where the keyboard does not deliver the velocity you want, you can process it.

    Some software instruments have a sensitivity setting for the velocity. Look for this parameter, because such instruments can sound very different at different sensitivity settings.

    Expression is a different thing, it works on the sound itself and how it is used depends on the software.
  20. joswyl

    joswyl Member

    Thanks, Peter.

    Again you were very helpful and cleared some things out.

    But what I said was true: I selected violin 1, applied the expression recording to it (creating first an expression lane). The mod wheel movements were recorded meticulously, but also on all the other tracks (exactly the same). When I deleted the content of an other expression lane, the recorded data disappeared on all tracks, also in violin 1...
    I was using your last setup (without the tempo scaling). (Pitch wheel with only downward movement).

  21. Peter Ostry

    Peter Ostry Administrator Staff Member

    What is an "expression lane" and why did you create such a thing?

    Honestly, I have no idea what you are doing. Maybe you are in some multitracking mode or you talk about track automation or whatever.

    Take a new approach:

    1. Do not create an additional track for the expression
    2. Select the track violin 1
    3. Only the track violin 1 must be record enabled
    4. Make sure that it's automation mode is set to "Read"
    5. Record
    You should see a recorded MIDI region with the embedded expression data inside. This is called "Region Automation".


    To view the region automation in the Arrange window, make the track a little higher, from the local menu select View–>MIDI Draw–>Expression


    You can also view the automation data in the Score and Piano Roll editors. And, because it is in the region, you find the events also in the event list.

Share This Page