How to increase semi-tone quickly?


Hello evertbody
I would like to quickly increase a semitone my master keyboard.
On my keyboard, it’s a combination of keys a little complicated.
How to assign the change of tone to my pedal controller for example ?
Is it possible ?


This is very easy.
Create a widget.
Assign it to the Transpose of your Midi In Block
And learn this widget to your pedal controller.

A small script is also a solution:
//Called when a CC message is received at some MidiIn block
//The CC numbers must be within the specified range

 var MID : MidiInBlock

    On ControlChangeEvent(m : ControlChangeMessage) Matching [7..10] from MID
     SetGlobalTranspose( m.GetCCValue())


Both answers are GREAT. I would just like to point out that they do slightly different things.

The first option which basically involves just having a widget connected to MIDI In block “transpose” parameter will transpose that BLOCK ONLY by the specified amount. This means that if you have multiple keyboards or you created keyboard splits - only that particular one will be transposed.
To transpose multiple blocks - add more widgets, assign them to their respective blocks.

Creating a variation that’s called “Semitone up” for example where these widgets are actually moved to the appropriate value already may be an easier and cleaner way to do this. In this case you just switch from “Semitone up” to “Default” say to go back and forth between the transposed and non transposed version.

The second option with scripting is setting the global transpose which will transpose every MIDI in block.
You could also trigger this transpose on a Note on event or a variation change etc… it doesn’t have to be a CC midi event.

So basically it depends what you want to do and how you use your rig. If it’s a simple one keyboard kind of thing and you just need to transpose up or down I think that a widget connected to MIDI In’s transpose parameter will be simpler. You can then use variations that will remember widget positions so you can just change the variation and the widget will switch to appropriate value and set the transpose to the desired amount.


Thank you for your answers.
The first solution does not work for me: it drops to -48 or increases to +48 all at once.
I’ll try the variation


Which did you consider to be the first solution that didn’t work?


You can define a widget.
Set the min value to 50 and the max value to 51.
Now it is possible to transpose by +1 when the knob put to full by for example pressing a Midi Pedal.


Of course … the transpose parameter range is from -50 to +50 semitones. If you just attach a midi knob to a widget and push it - that will go from/to around -50 to +50 or so. Why would you expect it to do anything else?

As @pianopaul mentioned - set the minimum value to 50 and maximum to 51 if you want to move just by one semitone OR as I mentioned in my initial answer - create a variation and set the value in the second variation to 51


Pfff Yes of course !. I,m tired … ok Thanks


I definitely can’t do it.
When I press the pedal, there is a semitone, but when I release the semitone, it goes down.
I would like to be able to increase each time I press the pedal.
Is it possible ?


With a little scripting that is possible.
The Widget with Name TRANSPOSER you can map to your physical controller.

   MIDIIN : MidiInBlock
   TRANSPOSER : Widget
   v_pvalue : double

on WidgetValueChanged (newValue : double) from TRANSPOSER
 if newValue == 1.0 then
  v_pvalue := GetParameter(MIDIIN, 18)
  SetParameter(MIDIIN, 18, v_pvalue + 1.0/96.0)


You might want to test the incoming parameter value in that callback, otherwise the transpose will happen twice, once when you press the pedal and again when releasing it.


Yes, you are absolutely right.