Files
Paul Lipscomb 7ecc718f5d Reorganize top-level directories with clearer naming convention
app -> app-desktop-macos, presets -> app-presets, server -> remote-server,
daw-config-reaper -> osc-config-daw, plugin-reaper-realearn -> plugin-reaper-relearn.
Updated run.py and presets.py path references accordingly.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-15 17:51:05 -04:00

50 lines
2.8 KiB
Plaintext

= Target "MIDI: Send message"
[[target-midi-send-message]]
Sends arbitrary MIDI messages (also sys-ex!) in response to incoming messages.
This target turns ReaLearn into a capable and convenient MIDI/OSC/Keyboard-to-MIDI converter.
== Output menu
Where to send the MIDI message.
FX output:: Sends the MIDI message to the output of this ReaLearn instance - which usually means it flows into the FX below ReaLearn, e.g. a VST instrument.
Feedback output:: Sends the MIDI message to the device which is set as _output_.
[[midi-send-output-input-device]] Input device:: Injects the MIDI message into the current MIDI input device buffer.
Enables a unique feature called "Global MIDI transformation", as shown in link:https://www.youtube.com/watch?v=WJiwmlJSsi8&list=PL0bFMT0iEtAgKY2BUSyjEO1I4s20lZa5G&index=11[tutorial video 11].
== Device menu
When choosing output <<midi-send-output-input-device>>, you can choose into which MIDI input device buffer the message will be injected.
<Same as input device>:: Injects the message into the same buffer of the MIDI input device chosen as xref:user-interface/main-panel/input-output-section.adoc#input[].
_Specific input device_:: Injects the message into another specific MIDI input device.
This can be useful for doing global MIDI transformation with controllers that expose multiple MIDI input ports.
A practical example is shown in link:https://www.youtube.com/watch?v=WJiwmlJSsi8&list=PL0bFMT0iEtAgKY2BUSyjEO1I4s20lZa5G&index=11[tutorial video 11].
== Pattern field
Defines the MIDI message to be sent as xref:further-concepts/mapping.adoc#raw-midi-pattern[].
It allows you to encode the incoming _absolute_ control value as part of the message (after it has been processed by xref:key-concepts.adoc#glue[]).
== Pre-defined patterns menu (...)
Provides predefined patterns.
[NOTE]
.This is a target capable of real-time control!
====
This target is a bit special in that it carries out its processing logic exclusively in the audio thread if it's controlled by a MIDI source.
This has the big advantage that receiving and producing MIDI messages happens in one go (without inter-thread-communication latency), which is often important when using MIDI message conversion.
However, this also means that the following things won't work when controlling this target using MIDI:
* It can't take the lead in xref:user-interface/mapping-panel/glue-section.adoc#group-interaction[].
* It won't work with timed xref:user-interface/mapping-panel/glue-section.adoc#fire-mode[fire modes].
* If _output_ is set to xref:user-interface/main-panel/input-output-section.adoc#fx-output[], additional limitations apply:
** It can't act as a follower in xref:user-interface/mapping-panel/glue-section.adoc#group-interaction[], either.
** It can't participate in xref:targets/realearn/load-mapping-snapshot.adoc[].
====