Connecting a MIDI Controller

You have a question or need an advice about how to do something? Ask it here!
User avatar
radio42
Site Admin
Posts: 8295
Joined: 05 Apr 2012 16:26
Location: Hamburg, Germany
Contact:
Connecting a MIDI Controller

Post by radio42 »

To control e.g. the ProppFrexx ONAIR mixer-channel faders from a MIDI-Control-Device you need to enable and configure a so called MIDI-Mapping.

This can be done in the general settings dialog (F3) in the section 'GPIO/Remoting'.
First enable the checkbox 'MIDI Control Enabled' and select the propper MIDI Input Device.
Then you need to translate the incomming MIDI-Messages to appropriate ProppFrexx control-command(s) - which can be done via the MIDI Mapping (click on the flash arrow icon next to the mapping file name to invoke the MIDI Message Mapping dialog).

In the MIDI Message Mapping dialog you can now translate any MIDI ShortMessage into any ProppFrexx control-command.
Meaning when a certain MIDI ShortMessage arrives it will trigger the execution of the given ProppFrexx control-command.
A complete listing of all available control-commands can be found in the appendix of the User Manual.
Some general information about using control-commands can be found: here!

So you need to know what MIDI ShortMessages are send by your external MIDI device.
A MIDI ShortMessage is composed out of three parts (bytes):
- a status byte
- a data1 byte
- a data2 byte

In the following example we assume, that the external MIDI Control-Device (e.g. an external mixer) sends a ControlChange message along with a Channel number as the Status byte. The Data1 byte will then contain e.g. a MainVolume control change value whereas the Data2 byte will finally contain the external fader position:
E.g.:
Status = 0xB1 (Type=ControlChange, Channel=1..16)
Data1 = 0x07 (MainVolume)
Data2 = ANY (between 0 and 255)

Note, that the "ANY" entry for Data2 byte will pass the data2 value as is.

In the "MIDI Message Mapping" dialog you can now map this MIDI ShortMessage to the following ProppFrexx control-command:

Code: Select all

MIXER_OUTPUT_VOLUME_SET OUT1|${mididata2asvol}
This mapping will map the MIDI-ShortMessage "0xB1 0x07" to the Control Command "MIXER_OUTPUT_VOLUME_SET OUT1|${mididata2asvol}".

The Control Command 'MIXER_OUTPUT_VOLUME_SET' has 2 parameters:
a) <mixername>
b) <volume>
The <mixername> is the name of the ProppFrexx mixer channel you want to change (in the above example this is "OUT1").
The <volume> represents a decimal number within ProppFrexx and must be between 0.0 (silent) and 1.0 (maximum).
So we need to convert the Data2 byte of the MIDI-ShortMessage from 0...255 to 0.0...1.0.

This can be done via the macro "${mididata2asvol}" - which converts the Data2 byte to an appropriate volume value.
More macros can be found in the appendix of the User Manual.

Therefore the above mapping was used:
MIDI-Message: "0xB1 0x07" (Data2=Any)
to
Command: "MIXER_OUTPUT_VOLUME_SET OUT1|${mididata2asvol}"

You might use the "Control Command Builder" Dialog (just click on the 'Edit' button) to define the control command(s) to be executed.

So each mapping entry works like a filter.
- For each incomming MIDI ShortMessage all mapping entries are checked.
- If the incomming MIDI ShortMessage matches one of the defined MIDI messages (status byte, data1 byte and optionally data2 byte is checked), the related command is executed.
Note: So for each MIDI ShortMessage you must add a seperate mapping entry!

If you for example have 4 output mixer channels defined in ProppFrexx (e.g. OUT1, OUT2, OUT3, OUT4) you would need to also define 4 mapping entries, e.g.:
- "0xB1 0x07" -> "MIXER_OUTPUT_VOLUME_SET OUT1|${mididata2asvol}"
- "0xB2 0x07" -> "MIXER_OUTPUT_VOLUME_SET OUT2|${mididata2asvol}"
- "0xB3 0x07" -> "MIXER_OUTPUT_VOLUME_SET OUT3|${mididata2asvol}"
- "0xB4 0x07" -> "MIXER_OUTPUT_VOLUME_SET OUT4|${mididata2asvol}"

Note:
There is a 'Record' button in the 'MIDI Message Mapping' dialog which might be used to get a live incomming MIDI-ShortMessage.
Meaning the Status, Data1 and Data2 bytes will change according to the live recorded incomming MIDI messages. This makes it more simple to know what messages are send by your external MIDI Control-Device. But note, that you might need to change your recorded Data2 value back to 'Any' in case you are dealing with a fader, rotary knob etc. and you want to use the "${mididata2asvol}" macro!

In addition you might click on the 'Monitor...' button (within the 'GPIO/Remoting' section of the general settings dialog) in order to monitor your current mapping and any other incomming MIDI messages.

Mapping of other external GPIOs (like GamePort, Serial-IO, Velleman, IO-Warrior, Keyboard Hotkeys etc.) almost work in exactly the same way.
The only main difference is, that those GPIO mappings do have other input values of course.
E.g.:
- a Keyboard Hotkeys has a 'Key' value which might be mapped to a control-command
- a GamePort has a 'Button Event' value which might be mapped to a control-command
etc.
User avatar
radio42
Site Admin
Posts: 8295
Joined: 05 Apr 2012 16:26
Location: Hamburg, Germany
Contact:
Re: Connecting a MIDI Controller

Post by radio42 »

No, I guess that is currently not possible - but it can be easily added to the next version - I'll let you know!
Michiel Bouwmeester
Posts: 69
Joined: 04 Nov 2012 16:07
Contact:
Re: Connecting a MIDI Controller

Post by Michiel Bouwmeester »

Dear Bernd,

I am currently trying to setup a "Icon QCONex" midi panel to work with ProppFrexx.

The mute button, fader/sliders and PFL butttons all are assigned and working but now I am stuck with the "Gain".

The rotary knob gives the following data out: "0xB0 0x10" + "0x01" for a clockwise rotation and "0x41" for a counterclockwise rotation.
If I map this to "mididata2asgain" the knob action is reversed and also "speed dials" in 1 direction.

I have tried all combinations I could think of but can't get it to work propperly. Do you have any idea's that might get me going again?
User avatar
radio42
Site Admin
Posts: 8295
Joined: 05 Apr 2012 16:26
Location: Hamburg, Germany
Contact:
Re: Connecting a MIDI Controller

Post by radio42 »

I am not sure what 'Gain' you would like to control, but I assume it is a mixer channel.
If so, you might use the MIXER_INPUT_GAIN_CHANGE or MIXER_OUTPUT_GAIN_CHANGE control-command to do so.
These commands accept the following parameters: [<mixername>|]<gaindelta(-15.0...15.0)>

E.g. you might map the "0xB0 0x10" + "0x01" message to "MIXER_OUTPUT_GAIN_CHANGE OUT1|0.1".
And map the "0xB0 0x10" + "0x41" message to "MIXER_OUTPUT_GAIN_CHANGE OUT1|-0.1".

So no need to use any macros at all with these commands.
Michiel Bouwmeester
Posts: 69
Joined: 04 Nov 2012 16:07
Contact:
Re: Connecting a MIDI Controller

Post by Michiel Bouwmeester »

Hi Bernd,

Thank you for the info. I forgot to add the delta value behind it, making it behave strange.
The gain setting now works perfect.

Another question:

Is it possible to make the sound level meters display the snd2 signal (or better the pre fade signal)?
(I have the SND set to "pre fade" so what i would like is when i press "snd" the meters will show the actual pre fade signal)
User avatar
radio42
Site Admin
Posts: 8295
Joined: 05 Apr 2012 16:26
Location: Hamburg, Germany
Contact:
Re: Connecting a MIDI Controller

Post by radio42 »

I might add the pre-fade level meter display in a next release.
Michiel Bouwmeester
Posts: 69
Joined: 04 Nov 2012 16:07
Contact:
Re: Connecting a MIDI Controller

Post by Michiel Bouwmeester »

That would be great, do you want me to post it in the request forum ?
User avatar
radio42
Site Admin
Posts: 8295
Joined: 05 Apr 2012 16:26
Location: Hamburg, Germany
Contact:
Re: Connecting a MIDI Controller

Post by radio42 »

No it is fine this way.
Michiel Bouwmeester
Posts: 69
Joined: 04 Nov 2012 16:07
Contact:
Re: Connecting a MIDI Controller

Post by Michiel Bouwmeester »

Hi Bernd,

I am currently working on the panel and keep getting stuck on the motor faders.
The channel 1 fader gives the following midi to PF:

postion 0% : MSG: 0xE0 0x00 0x00 [Channel 0 PitchBend PitchBend=0]
Position 100%: MSG: 0xE0 0x7F 0x7F [Channel 0 PitchBend PitchBend=16383]

What would be the appropriate setting in the GPIO/map setting, since also midi data 1 is changing ?
User avatar
radio42
Site Admin
Posts: 8295
Joined: 05 Apr 2012 16:26
Location: Hamburg, Germany
Contact:
Re: Connecting a MIDI Controller

Post by radio42 »

Some midi controllers might actually use two sub-sequent short messages to construct a paired message representing a single value range. This to support paired values with a higher resolution (16384 instead of 128 values).
It seems your controller is doing so.
In such case, make sure to enable the 'Auto Pair MIDI Messages' options in the GPIO midi options - to automatically detect paired messages for coarse/fine resolutions.

You might the use e.g. the ${mididata2asvol} macro in your mapping definition.

Post Reply