View Full Version : Sending MIDI Program Changes to LOGIC Pro/KONTAKT 5

12-31-2011, 09:49 PM
Hi Camille,

I've created a custom TOUCH OSC template where in one of my page tabs I have two buttons that
are designated to send program changes. My goal is to have one button to go from 0-127 and the
other button to go from 127-0. The event type in Osculator is set to "Midi Prg" and the value is set
to "Change by value." Now back in Logic I have instantiated a inst Channel track with Kontakt 5 and
a midi track cabled into Kontakt 5 in order to send/receive midi program changes in Kontakt 5.

Now the problem is when, I click on a either button on my Touch OSC temp, I can see the
midi track responding, but it's not changing program changes in sequence, it's jumping from 1 to
127. I'm sure I've set something up incorrectly, can you give me any input ? Thank you!!

01-02-2012, 03:30 PM
Hi Jorge,

The main problem is that TouchOSC as a controller application doesn't have a control to increment or decrement a value. Right now OSCulator does not has a way to increment or decrement values either, therefore you will have to find a solution in Logic or Kontact.

It seems Kontact is super powerful and even has a scripting engine (http://www.nilsliberg.se/ksp/scripts/tutorial/), so I would be surprised that you can't change a value and transform it to a program change or preset change.

I will present here a solution that works in Logic, it is inspired after the documentation found here : http://logicfaq.omega-art.com/html/faq20.htm#05 (FAQ 20.5 How can I inc/dec patch numbers on VSTi's that don't have inc/dec switches?)

This example uses the Beatmachine layout with push buttons 7 for incrementing the program change and 8 for decrementing.

NB 1: Logic Instruments do not respond to program changes, so in order to test the files I am sending, you will need a virtual instrument or plugin that is known to react to program changes.

NB 2: Channel 1 seems reserved in Logic, and it is most recommended to use Channel 2 for program changes in third party virtual instruments and plugins.

Using control changes from OSCulator, we will send Meta Events (see Meta Event Faders, here: http://documentation.apple.com/en/logicexpress/usermanual/index.html#chapter=37%26section=7) to increment and decrement the value of a Fader object. This fader object is configured to send Program Changes on Channel 2 and outputs its messages to the sequencer's input.

Open OSCulator and load the attached file
Open TouchOSC and load the Beatmachine layout
learn to locate the buttons used for incrementing and decrementing the values (push7 and push8)
You will notice that OSCulator will send Control Changes messages number 99 on channel 1. When incrementing the value it uses the scaling Output Max 127, and for decrementing, Output Max is set at 125 (more on this later).
Now in Logic, open the environment, and display the "Click and Ports" layer. Now, create two objects: a transformer and a fader. Patch them as in the following picture:
Double click at the center of the transformer icon to display the transformer's preferences and set them like this:
As you will notice, the received Control Change messages are transformed into Meta messages if the Control Change number is 99 (like in OSCulator config). The other parameters are passed thru. In Logic, the Meta message 99 is called "Fader bang" and control various properties of Fader objects. In our case, value 125 will increment the fader, and value 123 will decrement it. This is why we have set these values in OSCulator's scalings: when you push the button this is the value that is sent, and ultimately used to control the fader position change.
Finally, click on the fader and configure it like in this picture:
The only changed settings are the output type and output channel.
The result is that when a button is pushed in TouchOSC, it will send a message to Logic's sequencer whose program change number is incremented or decremented depending on the button pressed.

Best Regards,

01-02-2012, 06:01 PM
Hi Camille,

Thank you very much for posting such a detailed explanation. I'm working through your steps and so far its working pretty well!!!
Thanks again!!

01-02-2012, 06:03 PM
It was a pleasure :)