= 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 <>, you can choose into which MIDI input device buffer the message will be injected. :: 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[]. ====