File: midiplugin.html

package info (click to toggle)
qlcplus 4.14.3-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 58,644 kB
  • sloc: cpp: 182,867; javascript: 7,764; xml: 2,453; ansic: 2,120; sh: 1,716; python: 634; ruby: 606; makefile: 23
file content (220 lines) | stat: -rw-r--r-- 9,710 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<TITLE>Q Light Controller Plus - MIDI Plugin</TITLE>
<SCRIPT SRC="utility.js" TYPE="text/javascript"></SCRIPT>
<link href="style.css" rel="stylesheet" type="text/css" />
</HEAD>
<BODY onLoad="replaceqrc()">

<H1>MIDI input/output plugin</H1>

<H2 id="introduction">Introduction</H2>
<P>
This plugin gives input/output support for the <a href="https://en.wikipedia.org/wiki/MIDI">MIDI protocol</a>
and gives the user freedom to control typical parameters like channels, Notes, Program Change and Control Change.<br>

The MIDI plugin can be quite powerful used in combination with MIDI devices such as keyboards, MIDI controllers
(like Behringer BCF2000 or KORG nanoKONTROL) or a software audio sequencer like Cubase or Ardour 3.<br>
The usage can vary from fader-to-fader control (the BCF2000 case) to sequence triggering for synchronized
shows (metronome controlled gigs using an audio sequencer)
</P>

<H2 id="configuration">Configuration</H2>

<P>
When you click on the configuration button <IMG SRC="qrc:/configure.png" ALIGN="absmiddle"> a window will appear,
showing all the MIDI input and output lines detected.<br>
Each line has three options that can be changed depending on your needs:
<ul>
 <li><b id="midi-channel">MIDI Channel</b>: This is the channel where QLC+ will receive or send data through the MIDI system. MIDI channels can go
     from 1 to 16. The special "1-16" channel will tell QLC+ to receive or send data on any MIDI channel.
 </li>
 <li><b>Mode</b>: This is the MIDI mode that QLC+ will use to send data through the MIDI system.
     This parameter can assume three possible values:
     <ul>
      <li><b>Note velocity</b>: in this mode, QLC+ will send data using MIDI notes velocity. MIDI notes can go from 21 (A0) to 108 (C8) and
          each note can have a velocity going from 0 to 127, which will be doubled inside QLC+ to match the DMX range (0-255).
      </li>
      <li><b>Control Change</b>: this is one of the MIDI protocol messages (like Program Change) frequently used by MIDI controllers.
      Each device should list the supported CC messages in its user manual, so please consult it before using this mode. The CC range can go
      from 0 to 127 and can have values from 0 to 127, which will be doubled inside QLC+ to match the DMX range (0-255).
      </li>
      <li><b>Program Change</b>: this is one of the MIDI protocol messages (like Control Change) frequently used by MIDI controllers.
      Each device should list the supported PC messages in its user manual, so please consult it before using this mode. The PC range can go
      from 0 to 127 and can have values from 0 to 127, which will be doubled inside QLC+ to match the DMX range (0-255).
      </li>
     </ul>
 </li>
 <li><b>Initialization message</b>: This is a list of presets (templates) containing the initialization message
        that QLC+ will send when opening a MIDI device before using it. A detailed explanation of this functionality
        is written below.
 </li>
</ul>
</P>

<H2 id="feedbacks">Feedbacks</H2>
<P>
The MIDI plugin is one of the QLC+ plugins supporting feedbacks. When QLC+ detects a MIDI device with an output line, it will
enable the feedback check box in the <A HREF="howto-input-output-mapping.html">Input/Output panel</A>. Please note that output
and feedback are exclusive, so they cannot both be used at the same time.<br>
If your MIDI device supports a return channel, QLC+ can send a visual/mechanical feedback to it.
Devices such as the Behringer BCF2000 support this feature.
This is very useful during live shows to have immediate knowledge of the current state of faders mapped in QLC+.<br><br>

A small trick that can be achieved with QLC+ is to use feedback as a generic MIDI output line to trigger external controllers/sequencers.<br>
Let's look at some examples:
<ul>
 <li>Input: <b>OSC</b> ---> Output: <b>DMX USB</b> --> Feedback: <b>MIDI</b></li>
 <li>Input: <b>Enttec Wing</b> --> Output: <b>ArtNet</b> --> Feedback: <b>MIDI</b></li>
</ul>
</P>

<H2 id="korg-nanopad">KORG nanoPAD X Axis</H2>
<P>
For unknown reasons, the nanoPAD factory defaults don't map the X Axis of the pad area.
To have it fully working with QLC+, please download the KORG utility (Windows and macOS only) from
<A HREF="http://i.korg.com/SupportPage.aspx?productid=415">here</A> and set the X Axis to CC2 (Control Change #2).
</P>

<H2 id="akai-feedbacks">AKAI APC LED Feedbacks</H2>
<P>
When using one of the Akai APC family controller, there is one feature that could come very handy: LED color feedbacks.<br>
The default behaviour with Virtual Console buttons is: value = 0: LED off, value = 255: LED green<br>
This can be customized when selecting an input channel, by pressing the "Custom feedback" button.<br>
A new area is displayed, showing the possibility to enter a lower and an upper value. This is basically translated in which
values QLC+ should send for buttons on/off states.<br>
Since the MIDI protocol works in a range of 0-127 values, and QLC+ works in the DMX range of 0-255, the following table points you
directly to the values you should enter to obtain the desired color of an APC LED. Basically they are taken from APC manuals and
doubled.
<table>
<tr><th>Value</th><th>LED color</th></tr>
<tr><td>0</td><td>Off</td></tr>
<tr><td>2</td><td>Green</td></tr>
<tr><td>4</td><td>Green Blinking</td></tr>
<tr><td>6</td><td>Red</td></tr>
<tr><td>8</td><td>Red Blinking</td></tr>
<tr><td>10</td><td>Yellow</td></tr>
<tr><td>12</td><td>Yellow Blinking</td></tr>
<tr><td>14-255</td><td>Green</td></tr>
</table>
It's interesting to notice that you don't necessarily need to keep 0 as lower value. For example with lower = 6 and upper = 2
the result will be: Function Off -> red LED, Function On -> green LED.
</P>

<H2 id="midi-beat-clock">MIDI beat clock</H2>
<P>
Starting from version 4.5.0, QLC+ supports the <A HREF="https://en.wikipedia.org/wiki/MIDI_beat_clock">MIDI beat clock</A><br>
Not to be confused with the <A HREF="https://en.wikipedia.org/wiki/MIDI_timecode">MIDI timecode</A>, the MIDI beat clock is
a useful signal to sync BPM-based devices such as a drum machine with your lights controlled by QLC+.<BR>
Two special MIDI channels have been mapped in QLC+ to control your <A HREF="virtualconsole.html">Virtual Console</A> widgets
with a beat clock.<BR>
Here's a brief explanation of the special channels:
<UL>
 <LI><B>Channel 530</B>: A signal is sent on this channel when a beat clock starts or stops.</LI>
 <LI><B>Channel 531</B>: This signal is sent every BPM. QLC+ doesn't take any notice of measures (e.g. 3/4, 4/4, 7/8), so when setting up your MIDI clock you need
      to consider how QLC+ will handle it.</LI>
</UL>
<BR>
<B>Hint</B>: If your controller is set to work at high BPM (e.g. 180-200), you might find difficult to catch the start signal.
One trick for doing this is to catch the stop signal. Example:<br>
<OL>
 <LI>Enable the QLC+ Virtual Console widget auto-detection</LI>
 <LI>Hit play on your device generating the MIDI beat clock. QLC+ will detect channel 530 and will switch very quickly to 531</LI>
 <LI>Stop the playback on your MIDI beat clock device. QLC+ will detect channel 530 again.</LI>
 <LI>Disable the QLC+ Virtual Console widget auto-detection</LI>
</OL>
In a similar way you can catch the beat signal as well. Just disable the auto-detection process before stopping the playback on your
beat controller (invert steps 3 and 4).
</P>

<H2 id="midi-template">MIDI initialization message</H2>
<P>
There might be cases where your MIDI device needs some commands to turn into a specific operating mode<br>
The MIDI protocol can handle this through SysEx. These are particular messages to instruct a MIDI device how to behave.<br>
QLC+ can use a XML template to achieve this that can be selected in the MIDI configuration panel.<br>
Here's an example of how a template looks like:<br>
<PRE>
&lt;!DOCTYPE MidiTemplate&gt;
&lt;MidiTemplate&gt;
 &lt;Creator&gt;
  &lt;Author&gt;Your name&lt;/Author&gt;
 &lt;/Creator&gt;
 &lt;Description&gt;A brief description of what the template does.&lt;/Description&gt;
 &lt;Name&gt;Template name to be displayed by QLC+&lt;/Name&gt;
 &lt;InitMessage&gt;F0 47 00 7B 60 00 04 41 09 00 05 F7&lt;/InitMessage&gt;
&lt;/MidiTemplate&gt;
</PRE>

You can create the ones you need and place them in your MidiTemplates folder.<br>
You are welcome to submit them in the QLC+ forum.
</P>

<H2 id="channelsmap">QLC+ Channels map</H2>

<P>To handle a mix of various MIDI messages (Notes, PC, CC, etc..), QLC+ remaps them into a sequential order.<br>
Following, the channel numbers to be used in the <a href="howto-input-profiles.html">Input Profile editor</a>:
</P>

<table>
<tr>
<th>Channel</th><th>MIDI message</th>
</tr>
<tr>
<td>1</td><td>Control Change 1</td>
<tr>
<td>...</td><td>...</td>
</tr>
<tr>
<td>128</td><td>Control Change 128</td>
</tr>
<tr>
<td>129</td><td>NOTE ON/NOTE OFF 1</td>
</tr>
<tr>
<td>...</td><td>...</td>
</tr>
<tr>
<td>256</td><td>NOTE ON/NOTE OFF 128</td>
</tr>
<tr>
<td>257</td><td>NOTE AFTERTOUCH 1</td>
</tr>
<tr>
<td>...</td><td>...</td>
</tr>
<tr>
<td>384</td><td>NOTE AFTERTOUCH 128</td>
</tr>
<tr>
<td>385</td><td>Program Change 1</td>
</tr>
<tr>
<td>...</td><td>...</td>
</tr>
<tr>
<td>512</td><td>Program Change 128</td>
</tr>
<tr>
<td>513</td><td>Channel Aftertouch</td>
</tr>
<tr>
<td>514</td><td>Pitch Wheel</td>
</tr>

<tr>
<td>530</td><td>MIDI Beat Clock: Start/Continue</td>
</tr>
<tr>
<td>531</td><td>MIDI Beat Clock: Beat</td>
</tr>
<tr>
<td>532</td><td>MIDI Beat Clock: Stop</td>
</tr>

</table>

<p>In OMNI mode, add 4096 * Channel number</p>

</BODY>
</HTML>