Enable MPE-recording by writing Native-Plugins with the SDK

Discuss how to use FL Studio

Return to “FL Studio Users Forum (Looptalk)”

[You can only see part of this thread as you are not logged in to the forums]
Thu Feb 13, 2020 12:25 am


Enable MPE-recording by writing Native-Plugins with the SDK

Hi Image-Line. :)

Currently you can feed MPE-enabled VST-instruments with the full data by using FL-Midi-Ports, but you can't record this midi data completly.
So I'm thinking about creating 2 native FLS plugins, that both work together to allow me and everybody else (I'd share the code and compiled plugins. ;) ) to record all midi from a ROLI Seaboard in full MPE-Mode.

My first question is: Is there anything planned to integrate recording of the MPE-data into piano roll, so the work on this would be obsolete soon?

MPE means summarized:
* Each note starting to be played on the input device is seperated into its own midi channel:
[Note On, Channel: 4, Key: 64 (E4), Velocity: 76]
[Note On, Channel: 7, Key: 57 (A3), Velocity: 96]
* On this channel there are midi messages sent continously for:
** Channel pressure (represents the pressure of the finger on the key)
[Channel Pressure, Channel: 4, Value: 100]
[Channel Pressure, Channel: 7, Value: 56]
** CC74 (represents the vertical position of the finger on that key)
[Controller, Channel: 4, Number: 74 (Sound Brightness), Value: 29]
[Controller, Channel: 7, Number: 74 (Sound Brightness), Value: 12]
** Pitch Wheel (represents the relative horizontal position of the finger on that key)
[Pitch Wheel, Channel: 4, Value: 8616]
[Pitch Wheel, Channel: 7, Value: 5677]
** Note Off WITH Velocity (represents how fast the finger moved away from the key)
Note Off, Channel: 4, Key: 64 (E4), Velocity: 100
Note Off, Channel: 7, Key: 57 (A3), Velocity: 86
For more information and to see it in action, have a look here:

So, my current concept looks like this:

* 2 Plugins
(Seaboard --MPE-Midi--> DECODER --Recordable Midi--> REENCODER[1..10] --MPE-Midi--> MPE-Instrument)

Takes the input of the Seaboard via FL-Midi-Port <<IN>>.
Converts MPE-Messages into messages, that FLS can record. For each key, it outputs the data using a different FLS-Midi-Port <<REC01>> to <<REC10>> (up to 10, one for each finger on the keyboard)
Takes the input from the DECODER via port <<REC01>> to <<REC10>>
Up to 10 instances of this (one per REC port). Basically an adapted clone of MIDI OUT. Here, the FLS-recording of notes and automation happens. The input is converted back into MPE-format and sent to one common FL-Midi-Port <<OUT>> for all instances.

The actual MPE-compatible-Instrument which plays the sound listenes to FL-Midi-Port <<OUT>> for playback.

Some questions:
* Do you have any suggestions or proposals for my concept? Do you see something, that won't work?
* Does the FL-Native-Plugin SDK allow me to receive midi from FL-Midi-Ports? How?
* Can I set FLS somehow to just record notes/controls in the REENCODER and not in the DECODER? How?
* Can you maybe provide some parts of the code for MIDI OUT plugin? That would be a great starting point for the REENCODER. Or maybe even put it to the SDK-examples? :)

Thank you and best wishes,

Return to “FL Studio Users Forum (Looptalk)”