Subversion Repositories svn.mios

Rev

Rev 1125 | Rev 1183 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1057 tk 1
HEADER 3 MIDIbox KB
2
 
3
<H1>MIDIbox KB</H1>
1066 tk 4
<H2>Keyboard Controller with MIDI, USB-MIDI and Ethernet interface</H1>
1057 tk 5
 
6
<P CLASS=INFO>This page collects some preliminary informations about the MIDIbox KB project.</P>
7
 
1077 tk 8
<P CLASS=INFO>MIDIbox KB utilizes the new <A HREF="mbhp_core_lpc17.html">MBHP_CORE_LPC17</A> and <A HREF="mbhp_dio_matrix.html">MBHP_DIO_MATRIX</A> modules.</P>
9
 
10
<P CLASS=INFO>Currently following features are already implemented:
11
<UL CLASS=CL>
1113 tk 12
<LI> up to 2 keyboard matrices can be scanned separately at a very high scan rate (around 200 uS)</A>
1077 tk 13
<LI> optional support for velocity!</A>
1105 tk 14
<LI> 6 analog inputs of the core module can be used to connect pitchwheels, modulation wheels and sustain pedal (or aftertouch)</A>
15
<LI> analog inputs can be calibrated</A>
1077 tk 16
<LI> two MIDI IN and two MIDI OUT ports
17
<LI> USB MIDI port with much higher transfer rate (ca. 100x faster!) than common MIDI
1086 tk 18
<LI> Ethernet port to send/receive events via <A HREF="midibox_osc.html">OSC</A>
1077 tk 19
<LI> support for DHCP - connect the module to a wireless router without additional configuration
20
<LI> different OSC modes are prepared for popular PC/Mac/iPhone/iPad apps, extensions can be added on request
21
<LI> integrated MIDI router with 16 configurable nodes
22
<LI> can also be used as USB/MIDI interface, or even as OSC/MIDI interface
23
<LI> configuration done via the MIOS Terminal of <A HREF="mios_studio.html">MIOS Studio</A>
24
<LI> configuration is stored in on-board EEPROM of LPCXPRESSO module
25
</UL>
26
</P>
27
 
1113 tk 28
<P CLASS=DESC>Please note: the same keyboard driver is also available in <A HREF="midibox_ng.html">MIDIbox NG</A>. If you are searching for more capabilities (e.g. integrated controller with many pots, encoders, buttons, leds), consider to use the MBNG firmware instead of MBKB.</P>
1077 tk 29
 
1113 tk 30
<P CLASS=DESC>The main difference between the two applications is, that MIDIbox KB is optimized for high scan speeds! MIDIbox NG scans the keyboard 10 times slower to give the core more processing time for other tasks. However, with MBNG the latency to scan the whole keyboard is still lower than 3 mS (MBKB: 260 uS)!</P>
31
 
32
 
1066 tk 33
<H2> <IMG SRC="images/bullet.gif" ALT=""> Schematics </H2>
34
 
1057 tk 35
<P CLASS=INFO>All schematics are subject to change without notice!</P>
36
 
37
  <TABLE WIDTH="100%" BORDER=0 CELLSPACING=5 CELLPADDING=0>
38
    <TR>
39
      <TD COLSPAN=2 CLASS=TABCOLOR1><FONT SIZE=3>Supported Keyboard Types</FONT></TD>
40
    </TR>
41
    <TR>
42
      <TD CLASS=TABCOLOR1><FONT SIZE=2><STRONG>Schematic</STRONG></FONT></td>
43
      <TD NOWRAP CLASS=TABCOLOR1><FONT SIZE=2><STRONG>Description</STRONG></FONT></TD>
44
    </TR>
45
    <TR>
46
      <TD CLASS=TABCOLOR2><A HREF="midibox_kb/midibox_kb_scanmatrix_type1.pdf">midibox_kb_scanmatrix_type1.pdf</A></TD>
47
      <TD CLASS=TABCOLOR2>Type #1 Keyboard without velocity</TD>
48
    </TR>
49
    <TR>
50
      <TD CLASS=TABCOLOR2><A HREF="midibox_kb/midibox_kb_scanmatrix_type2.pdf">midibox_kb_scanmatrix_type2.pdf</A></TD>
51
      <TD CLASS=TABCOLOR2>Type #2 Keyboard with Velocity (e.g. Fatar DR type)</TD>
52
    </TR>
53
    <TR>
54
      <TD CLASS=TABCOLOR2><A HREF="midibox_kb/midibox_kb_scanmatrix_type3.pdf">midibox_kb_scanmatrix_type3.pdf</A></TD>
55
      <TD CLASS=TABCOLOR2>Type #3 Keyboard with Velocity (alternating switch)</TD>
56
    </TR>
57
    <TR>
58
      <TD COLSPAN=2 CLASS=TABCOLOR1><FONT SIZE=3>Fatar DR Adapters to <A HREF="mbhp_dio_matrix.html">MBHP_DIO_MATRIX</A> module</FONT></TD>
59
    </TR>
60
    <TR>
61
      <TD CLASS=TABCOLOR2><A HREF="midibox_kb/midibox_kb_fatar_df_61_interconnections.pdf">midibox_kb_fatar_df_61_interconnections.pdf</A></TD>
62
      <TD CLASS=TABCOLOR2>Fatar DF Type with 61 keys</TD>
63
    </TR>
64
    <TR>
65
      <TD CLASS=TABCOLOR2><A HREF="midibox_kb/midibox_kb_fatar_df_76_interconnections.pdf">midibox_kb_fatar_df_76_interconnections.pdf</A></TD>
66
      <TD CLASS=TABCOLOR2>Fatar DF Type with 76 keys</TD>
67
    </TR>
68
    <TR>
69
      <TD CLASS=TABCOLOR2><A HREF="midibox_kb/midibox_kb_fatar_df_88_interconnections.pdf">midibox_kb_fatar_df_88_interconnections.pdf</A></TD>
70
      <TD CLASS=TABCOLOR2>Fatar DF Type with 88 keys</TD>
71
    </TR>
72
  </TABLE>
73
 
1066 tk 74
 
75
<H2> <IMG SRC="images/bullet.gif" ALT=""> Terminal Commands </H2>
76
 
77
<P CLASS=INFO>MIDIbox KB can be completely configured from the MIOS Terminal of <A HREF="mios_studio.html">MIOS Studio</A>.</P>
78
 
79
<P CLASS=DESC>Enter 'help' to get a list of available commands.<BR>
80
Here a more detailed description of most commands:</P>
81
 
82
<P CLASS=DESC>
83
<TABLE CLASS=BOX WIDTH=700 ALIGN=CENTER BORDER CELLSPACING=2 CELLPADDING=3 >
84
  <TR>
85
    <TD WIDTH=200> <SPAN CLASS=NORM><I>help</I></TD>
86
    <TD WIDTH=500> <SPAN CLASS=NORM>Lists all available commands (some of them are maybe not listed here)
87
    </SPAN></TD>
88
  </TR>
89
 
90
  <TR>
91
    <TD WIDTH=100> <SPAN CLASS=NORM><I>store</I></TD>
92
    <TD WIDTH=475> <SPAN CLASS=NORM>Stores the complete configuration (not only keyboard parameters, but also router, etc...) into the EEPROM of the LPCXPRESSO module, so that they will be restored during startup.<BR>
93
    Usually a firmware update doesn't overwrite the stored parameters if not noticed in the ChangeLog.<BR>
94
    Please enter the <I>store</I> command once you've adapted the parameters for your keyboard setup.
95
    </SPAN></TD>
96
  </TR>
97
 
98
  <TR>
99
    <TD WIDTH=100> <SPAN CLASS=NORM><I>restore</I></TD>
100
    <TD WIDTH=475> <SPAN CLASS=NORM>Restores the complete configuration from EEPROM. This command could become useful if you messed up the configuration, just type <I>restore</I> to undo the changes.
101
    </SPAN></TD>
102
  </TR>
103
 
104
  <TR>
105
    <TD WIDTH=100> <SPAN CLASS=NORM><I>system</I></TD>
106
    <TD WIDTH=475> <SPAN CLASS=NORM>Prints some system informations, such as the name and version number of the application.
107
    </SPAN></TD>
108
  </TR>
109
 
110
  <TR>
111
    <TD WIDTH=100> <SPAN CLASS=NORM><I>reset</I></TD>
112
    <TD WIDTH=475> <SPAN CLASS=NORM>Restarts the application remotely. Mainly intended for development.
113
    </SPAN></TD>
114
  </TR>
115
 
116
  <TR>
117
    <TD WIDTH=100> <SPAN CLASS=NORM><I>set srio_num &lt;1..16&gt;</I></TD>
118
    <TD WIDTH=475> <SPAN CLASS=NORM>Selects the number of DIN/DOUT shift registers (resp. 74HC165 and 74HC595) which should be scanned.<BR>
119
      <SPAN CLASS=NORM><B>Examples:</B><BR>
120
         <I>set srio_num 2</I>: two DIN and two DOUTs should be scanned<BR>
121
         <I>set srio_num 4</I>: four DIN and four DOUTs should be scanned<BR>
122
         <I>set srio_num 6</I>: e.g. if six DIN and four DOUTs should be scanned - more DINs than DOUTs, therefore the number of DINs is relevant here!<BR>
123
      </SPAN>
124
      <SPAN CLASS=NORM>Than more shift registers are scanned, than higher the latency of your keyboards. Therefore the minimum value is desired.<BR>
125
      <I>2</I> is typically a good choice if only one keyboard should be scanned, and <I>4</I> if two keyboard should be scanned.
126
      </SPAN></TD>
127
  </TR>
128
 
129
  <TR>
130
    <TD WIDTH=100> <SPAN CLASS=NORM><I>kb &lt;1|2&gt;</I><BR><I>keyboard &lt;1|2&gt;</I></TD>
131
    <TD WIDTH=475> <SPAN CLASS=NORM>Prints a list of all keyboard parameters. MIDIbox KB can handle up to 2 keyboards in parallel, please specify the keyboard number with:<BR>
132
      <I>kb 1</I> or <I>kb 2</I>
133
      </SPAN></TD>
134
  </TR>
135
 
136
  <TR>
137
    <TD WIDTH=100> <SPAN CLASS=NORM><I>set kb &lt;1|2&gt; debug &lt;on|off&gt;</I></TD>
138
    <TD WIDTH=475> <SPAN CLASS=NORM>Enables some useful debugging messages for troubleshooting the hardware. This switch is not stored in EEPROM. Means: on each reset/power-on MIDIbox KB starts with debug mode disabled, and you have to enable it again.<BR>
139
      <SPAN CLASS=NORM><B>Examples:</B><BR>
140
         <I>set kb 1 debug on</I>: print some useful debugging messages for keyboard 1<BR>
141
      </SPAN></TD>
142
  </TR>
143
 
144
  <TR>
145
    <TD WIDTH=100> <SPAN CLASS=NORM><I>set kb &lt;1|2&gt; midi_ports &lt;ports&gt;</I></TD>
146
    <TD WIDTH=475> <SPAN CLASS=NORM>Each keyboard can send to one or multiple MIDI ports. They are currently (unfortunately) entered via a hexadecimal number, which is a nice short cut for techies, but probably difficult to understand for normal users. A more comfortable solution will be available once I found the time to improve the parser.<BR>
147
      Coding:</SPAN>
148
      <UL CLASS=CL>
149
        <LI><B>Bit 0:</B> USB1</LI>
150
        <LI><B>Bit 1:</B> USB2</LI>
151
        <LI><B>Bit 2:</B> USB3</LI>
152
        <LI><B>Bit 3:</B> USB4</LI>
153
        <LI><B>Bit 4:</B> MIDI OUT1</LI>
154
        <LI><B>Bit 5:</B> MIDI OUT2</LI>
155
        <LI><B>Bit 12:</B> OSC1</LI>
156
        <LI><B>Bit 13:</B> OSC2</LI>
157
        <LI><B>Bit 14:</B> OSC3</LI>
158
        <LI><B>Bit 15:</B> OSC4</LI>
159
      </UL>
160
      <SPAN CLASS=NORM><B>Examples:</B><BR>
161
         <I>set kb 1 midi_ports 0x1011</I>: keyboard 1 will send to USB1, OUT1 and OSC1<BR>
162
         <I>set kb 1 midi_ports 0x0020</I>: keyboard 1 will only send to OUT2<BR>
163
         <I>set kb 2 midi_ports 0x0030</I>: keyboard 2 will send to OUT1 and OUT2
164
      </SPAN></TD>
165
  </TR>
166
 
167
  <TR>
168
    <TD WIDTH=100> <SPAN CLASS=NORM><I>set kb &lt;1|2&gt; midi_chn &lt;channel&gt;</I></TD>
169
    <TD WIDTH=475> <SPAN CLASS=NORM>Each keyboard can send to a dedicated MIDI channel.<BR>
170
       Select 1..16 for MIDI Channel 1..16. 0 will disable MIDI (no events will be sent to any channel)<BR></SPAN>
171
      <SPAN CLASS=NORM><B>Examples:</B><BR>
172
         <I>set kb 1 midi_chn 1</I>: keyboard 1 will send MIDI Channel 1<BR>
173
         <I>set kb 2 midi_chn 5</I>: keyboard 2 will send MIDI Channel 5
174
      </SPAN></TD>
175
  </TR>
176
 
177
  <TR>
178
    <TD WIDTH=100> <SPAN CLASS=NORM><I>set kb &lt;1|2&gt; note_offset &lt;0-127&gt;</I></TD>
179
    <TD WIDTH=475> <SPAN CLASS=NORM>Sets the starting note of the leftmost key of your keyboard. The value is entered in decimal format.<BR>
180
      Most important values:</SPAN>
181
      <UL CLASS=CL>
1117 tk 182
        <LI><B>21:</B> a-1 for Fatar DF Type with 88 keys
183
        <LI><B>28:</B> E-0 for Fatar DF Type with 76 keys
184
        <LI><B>36:</B> C-1 for Fatar DF Type with 61 and 49 keys
185
        <LI><B>48:</B> C-2 for Fatar DF Type with 25 keys
1066 tk 186
      </UL>
1117 tk 187
      <SPAN CLASS=NORM><B>Example:</B><BR>
188
         <I>set kb 1 note_offset 36</I>: a Fatar 61 keys will start with C-1<BR>
1066 tk 189
      </SPAN></TD>
190
  </TR>
191
 
192
  <TR>
193
    <TD WIDTH=100> <SPAN CLASS=NORM><I>set kb &lt;1|2&gt; rows &lt;0-16&gt;</I></TD>
194
    <TD WIDTH=475> <SPAN CLASS=NORM>Specifies how many rows of the keyboard matrix have to be scanned.<BR>
195
       If rows &lt; 9, and a second DOUT is specified, the selection signal will be available on both DOUTs (perfect for 1:1 connection to a Fatar Keyboard with 61 keys)<BR>
196
      <SPAN CLASS=NORM><B>Examples:</B><BR>
197
         <I>set kb 1 rows 8</I>: keyboard 1 will scan 8 rows of the matrix -&gt; up to 128 inputs = 64 break/make contacts (keys)<BR>
198
         <I>set kb 1 rows 16</I>: for a different hardware: keyboard 1 will scan 16 rows of the matrix -&gt; up to 256 inputs = 128 break/make contacts (keys)<BR>
1117 tk 199
         <I>set kb 2 rows 12</I>: keyboard 2 will scan 12 rows of the matrix -&gt; up to 192 inputs = 96 break/make contacts (keys)<BR>
1066 tk 200
      </SPAN></TD>
201
  </TR>
202
 
203
  <TR>
204
    <TD WIDTH=100> <SPAN CLASS=NORM><I>set kb &lt;1|2&gt; velocity &lt;on|off&gt;</I></TD>
205
    <TD WIDTH=475> <SPAN CLASS=NORM><B>off:</B> each row will send a MIDI event with maximum velocity. Has to be used for keyboard with only one contact per key<BR>
206
      <B>on:</B> one row is connect to "make" contacts, the next row to "break" contacts; period. This allows to measure the delay between contact activation in order to generate a velocity between 1 and 127 (see Fatar keyboard configuration examples below)<BR>
207
      <SPAN CLASS=NORM><B>Examples:</B><BR>
208
         <I>set kb 1 velocity on</I>: keyboard 1 provides two contacts to measure velocity<BR>
209
         <I>set kb 1 velocity off</I>: keyboard 1 provides only one contact, resp. a common button matrix is used<BR>
210
      </SPAN></TD>
211
  </TR>
212
 
213
  <TR>
1117 tk 214
    <TD WIDTH=100> <SPAN CLASS=NORM><I>set kb &lt;1|2&gt; release_velocity &lt;on|off&gt;</I></TD>
215
    <TD WIDTH=475> <SPAN CLASS=NORM><B>off:</B> when a key is released, a "Note On" event with velocity 0 will be sent.<BR>
216
      <B>on:</B> when a key is released, a "Note Off" event with a velocity value which has been determined with the <I>delay_fastest_release</I>, <I>delay_fastest_release_black_keys</I> and <I>delay_slowest_release</I> parameters will be sent.<BR>
217
      Example configuration:
218
      <UL CLASS=CL>
219
       <LI><I>set kb 1 release_velocity on</I>
220
       <LI><I>set kb 1 delay_fastest_release 100</I>
221
       <LI><I>set kb 1 delay_fastest_release_black_keys 80</I>
222
       <LI><I>set kb 1 delay_slowest_release 1000</I>
223
      </UL>
224
      </TD>
225
  </TR>
226
 
227
  <TR>
1066 tk 228
    <TD WIDTH=100> <SPAN CLASS=NORM><I>set kb &lt;1|2&gt; optimized &lt;on|off&gt;</I></TD>
229
    <TD WIDTH=475> <SPAN CLASS=NORM>Only valid in velocity mode.<BR>
230
      <B>off:</B> break and make contacts are always scanned. This is the default configuration and should be used for debugging!<BR>
1113 tk 231
      -&gt; The resulting scan latency of a complete Fatar 63 keys keyboard is ca. <B>260 uS</B><BR>
232
      <B>on:</B> make contacts will only be scanned if break contacts are active. This reduces the scan latency in most cases (no or only some keys are played). Won't work with <A HREF="midibox_kb/midibox_kb_scanmatrix_type3.pdf">Keyboard Type #3!</A><BR>
1066 tk 233
      -&gt; The resulting scan latency of a complete Fatar 63 keys keyboard is ca. <B>130 uS</B><BR>
234
      <SPAN CLASS=NORM><B>Examples:</B><BR>
235
         <I>set kb 1 optimized off</I>: keyboard 1 should be debugged because it doesn't send notes (e.g. type <I>set kb 1 debug on</I> thereafter).<BR>
236
         <I>set kb 1 optimized on</I>: keyboard 1 should run in low-latency mode. Type <I>store</I> thereafter if the keyboard works as expected!<BR>
237
      </SPAN></TD>
238
  </TR>
239
 
240
  <TR>
241
    <TD WIDTH=100> <SPAN CLASS=NORM><I>set kb &lt;1|2&gt; dout_sr1 &lt;0-16&gt;</I></TD>
242
    <TD WIDTH=475> <SPAN CLASS=NORM>Selects the first DOUT shift register which is used to select the keyboard matrix rows.<BR>
243
      <SPAN CLASS=NORM><B>Examples:</B><BR>
244
         <I>set kb 1 dout_sr1 1</I>: row selection lines 1..8 of keyboard 1 are connected to first DOUT shift register.<BR>
245
         <I>set kb 2 dout_sr1 3</I>: row selection lines 1..8 of keyboard 2 are connected to third DOUT shift register.<BR>
246
         <I>set kb 1 dout_sr1 0</I>: disable this function for keyboard 1 (use DOUT for other purposes)<BR>
247
      </SPAN></TD>
248
  </TR>
249
 
250
  <TR>
251
    <TD WIDTH=100> <SPAN CLASS=NORM><I>set kb &lt;1|2&gt; dout_sr2 &lt;0-16&gt;</I></TD>
252
    <TD WIDTH=475> <SPAN CLASS=NORM>Selects the second DOUT shift register which is used to select the keyboard matrix rows.<BR>
253
      <SPAN CLASS=NORM><B>Examples:</B><BR>
254
         <I>set kb 1 dout_sr2 2</I>: row selection lines 9..16 of keyboard 1 are connected to the second DOUT shift register (if rows &lt; 9, this DOUT will output the same pattern as dout_sr1)<BR>
255
         <I>set kb 2 dout_sr2 4</I>: row selection lines 9..16 of keyboard 2 are connected to the fourth DOUT shift register (if rows &lt; 9, this DOUT will output the same pattern as dout_sr1)<BR>
256
         <I>set kb 1 dout_sr2 0</I>: disable this function for keyboard 1 (use DOUT for other purposes)<BR>
257
      </SPAN></TD>
258
  </TR>
259
 
260
  <TR>
261
    <TD WIDTH=100> <SPAN CLASS=NORM><I>set kb &lt;1|2&gt; din_sr1 &lt;0-16&gt;</I></TD>
262
    <TD WIDTH=475> <SPAN CLASS=NORM>Selects the first DIN shift register which is used to scan a keyboard matrix row.<BR>
263
      <SPAN CLASS=NORM><B>Examples:</B><BR>
264
         <I>set kb 1 din_sr1 1</I>: left side of keyboard 1 is connected to first DIN shift register.<BR>
265
         <I>set kb 2 din_sr1 3</I>: left side of keyboard 2 is connected to third DIN shift register.<BR>
266
         <I>set kb 1 din_sr1 0</I>: disable this function for keyboard 1 (use DIN for other purposes)<BR>
267
      </SPAN></TD>
268
  </TR>
269
 
270
  <TR>
271
    <TD WIDTH=100> <SPAN CLASS=NORM><I>set kb &lt;1|2&gt; din_sr2 &lt;0-16&gt;</I></TD>
272
    <TD WIDTH=475> <SPAN CLASS=NORM>Selects the second DIN shift register which is used to scan a keyboard matrix row.<BR>
273
      <SPAN CLASS=NORM><B>Examples:</B><BR>
274
         <I>set kb 1 din_sr2 2</I>: right side of keyboard 1 is connected to second DIN shift register.<BR>
275
         <I>set kb 2 din_sr2 4</I>: right side of keyboard 2 is connected to fourthDIN shift register.<BR>
276
         <I>set kb 1 din_sr1 0</I>: disable this function for keyboard 1 (use DIN for other purposes)<BR>
277
      </SPAN></TD>
278
  </TR>
279
 
280
  <TR>
281
    <TD WIDTH=100> <SPAN CLASS=NORM><I>set kb &lt;1|2&gt; din_key_offset &lt;0-127&gt;</I></TD>
282
    <TD WIDTH=475> <SPAN CLASS=NORM>Selects the offset which is added to the keys of the right half. Typically 32 for velocity keyboards (64 contacts), and 64 for non-velocity keyboards.<BR>
283
      <SPAN CLASS=NORM><B>Examples:</B><BR>
1117 tk 284
         <I>set kb 1 din_key_offset 32</I>: key number starts at 32 for the right side of keyboard 1 (velocity sensitive), e.g. suitable for Fatar 61 and 76 keys<BR>
285
         <I>set kb 1 din_key_offset 40</I>: key number starts at 40 for the right side of keyboard 1 (velocity sensitive), e.g. suitable for Fatar 88 keys<BR>
1066 tk 286
         <I>set kb 1 din_key_offset 64</I>: key number starts at 64 for the right side of keyboard 1 (no velocity)<BR>
287
      </SPAN></TD>
288
  </TR>
289
 
290
  <TR>
291
    <TD WIDTH=100> <SPAN CLASS=NORM><I>set kb &lt;1|2&gt; din_inverted &lt;on|off&gt;</I></TD>
292
    <TD WIDTH=475> <SPAN CLASS=NORM>This option should be enabled if diodes are used with the opposite polarity, and pull-downs are connected to DINs.<BR>
293
      <SPAN CLASS=NORM><B>Examples:</B><BR>
294
         <I>set kb 1 din_inverted off</I>: diodes with "normal" direction and pull-up resistors at 74HC165<BR>
295
         <I>set kb 1 din_inverted on</I>: diodes with opposite direction and pull-down resistors at 74HC165<BR>
296
      </SPAN></TD>
297
  </TR>
298
 
299
  <TR>
300
    <TD WIDTH=100> <SPAN CLASS=NORM><I>set kb &lt;1|2&gt; break_inverted &lt;on|off&gt;</I></TD>
301
    <TD WIDTH=475> <SPAN CLASS=NORM>This option should be enabled for velocity keyboards with single switches (instead of break/make swicthes).<BR>
302
      <SPAN CLASS=NORM><B>Examples:</B><BR>
303
         <I>set kb 1 break_inverted off</I>: we have a break and make switch per key -&gt; <A HREF="midibox_kb/midibox_kb_scanmatrix_type2.pdf">Type #2</A><BR>
304
         <I>set kb 1 break_inverted on</I>: we have only a single switch per key -&gt; <A HREF="midibox_kb/midibox_kb_scanmatrix_type3.pdf">Type #3</A><BR>
305
      </SPAN></TD>
306
  </TR>
307
 
308
  <TR>
1162 tk 309
    <TD WIDTH=100> <SPAN CLASS=NORM><I>set kb &lt;1|2&gt; make_debounced &lt;on|off&gt;</I></TD>
310
    <TD WIDTH=475> <SPAN CLASS=NORM>This option has to be enabled for certain keyboard architectures, such as Fatar TP400. Note Off will be played when the Break contact has been released, and not when the Make contact has been released.<BR>
311
      <SPAN CLASS=NORM><B>Examples:</B><BR>
312
         <I>set kb 1 make_debounced off</I>: for usual keyboard architectures<BR>
313
         <I>set kb 1 make_debounced on</I>: for unusual keyboard architectures such as Fatar TP400<BR>
314
      </SPAN></TD>
315
  </TR>
316
 
317
  <TR>
1066 tk 318
    <TD WIDTH=100> <SPAN CLASS=NORM><I>set kb &lt;1|2&gt; delay_fastest &lt;0-65535&gt;</I></TD>
319
    <TD WIDTH=475> <SPAN CLASS=NORM>Only relevant for velocity sensitive keyboards: selects the minimum delay value at which the maximum velocity (=127) should be sent. Use <I>debug</I> mode to display the minimum delay when keys are hit strongly!<BR>
320
      <SPAN CLASS=NORM><B>Examples:</B><BR>
321
         <I>set kb 1 delay_fastest 100</I>: send maximum velocity when delay is &lt;= 100<BR>
322
         <I>set kb 1 delay_fastest 200</I>: send maximum velocity when delay is &lt;= 200<BR>
323
      </SPAN></TD>
324
  </TR>
325
 
326
  <TR>
1117 tk 327
    <TD WIDTH=100> <SPAN CLASS=NORM><I>set kb &lt;1|2&gt; delay_fastest_release &lt;0-65535&gt;</I></TD>
328
    <TD WIDTH=475> <SPAN CLASS=NORM>The same for the <I>release_velocity</I> option.</TD>
329
  </TR>
330
 
331
  <TR>
332
    <TD WIDTH=100> <SPAN CLASS=NORM><I>set kb &lt;1|2&gt; delay_fastest_black_keys &lt;0-65535&gt;</I></TD>
333
    <TD WIDTH=475> <SPAN CLASS=NORM>Optionally it's possible to specify a different delay value for the black keys (if 0: the value of <I>delay_fastest</I> will also be used for black keys - default!).<BR>
334
    Background: it turned out, that black keys reach the make contact faster than white keys. By specifying a different delay value it's possible to compensate this.</TD>
335
  </TR>
336
 
337
  <TR>
338
    <TD WIDTH=100> <SPAN CLASS=NORM><I>set kb &lt;1|2&gt; delay_fastest_release_black_keys &lt;0-65535&gt;</I></TD>
339
    <TD WIDTH=475> <SPAN CLASS=NORM>The same for the <I>release_velocity</I> option.</TD>
340
  </TR>
341
 
342
  <TR>
1066 tk 343
    <TD WIDTH=100> <SPAN CLASS=NORM><I>set kb &lt;1|2&gt; delay_slowest &lt;0-65535&gt;</I></TD>
344
    <TD WIDTH=475> <SPAN CLASS=NORM>Only relevant for velocity sensitive keyboards: selects the maximum delay value at which the minimum velocity (=1) should be sent. Use <I>debug</I> mode to display the maximum delay when keys are hit softly!<BR>
345
      <SPAN CLASS=NORM><B>Examples:</B><BR>
1105 tk 346
         <I>set kb 1 delay_slowest 1000</I>: send maximum velocity when delay is &gt;= 1000<BR>
1066 tk 347
         <I>set kb 1 delay_slowest 2000</I>: send maximum velocity when delay is &gt;= 2000<BR>
348
      </SPAN></TD>
349
  </TR>
350
 
351
  <TR>
1117 tk 352
    <TD WIDTH=100> <SPAN CLASS=NORM><I>set kb &lt;1|2&gt; delay_slowest_release &lt;0-65535&gt;</I></TD>
353
    <TD WIDTH=475> <SPAN CLASS=NORM>The same for the <I>release_velocity</I> option.</TD>
354
  </TR>
355
 
356
  <TR>
1066 tk 357
    <TD WIDTH=100> <SPAN CLASS=NORM><I>set kb &lt;1|2&gt; ain_pitchwheel &lt;0-5 or off&gt;</I></TD>
358
    <TD WIDTH=475> <SPAN CLASS=NORM>Selects the J5.Ax input to which the PitchWheel pot is connected. Use <I>off</I> if no PitchWheel is used to avoid that the unconnected analog input will send random MIDI events!<BR>
359
      <SPAN CLASS=NORM><B>Examples:</B><BR>
360
         <I>set kb 1 ain_pitchwheel 0</I>: PitchWheel of keyboard 1 connected to J5.A0 of the core module<BR>
1105 tk 361
         <I>set kb 2 ain_pitchwheel 3</I>: PitchWheel of keyboard 2 connected to J5.A3 of the core module<BR>
1066 tk 362
         <I>set kb 1 ain_pitchwheel off</I>: no PitchWheel connected<BR>
363
      </SPAN></TD>
364
  </TR>
365
 
366
  <TR>
1125 tk 367
    <TD WIDTH=100> <SPAN CLASS=NORM><I>set kb &lt;1|2&gt;<BR>ain_pitchwheel_inverted<BR>&lt;on|off&gt;</I></TD>
368
    <TD WIDTH=475> <SPAN CLASS=NORM>Inverts the output of the PitchWheel.<BR>
369
      <SPAN CLASS=NORM><B>Examples:</B><BR>
370
         <I>set kb 1 ain_pitchwheel_inverted off</I>: (default) PitchWheel outputs -8192..8191<BR>
371
         <I>set kb 1 ain_pitchwheel_inverted on</I>: PitchWheel outputs 8191..-8192<BR>
372
      </SPAN></TD>
373
  </TR>
374
 
375
  <TR>
1066 tk 376
    <TD WIDTH=100> <SPAN CLASS=NORM><I>set kb &lt;1|2&gt; ctrl_pitchwheel &lt;0-129&gt;</I></TD>
377
    <TD WIDTH=475> <SPAN CLASS=NORM>What kind of MIDI events should be sent by the PitchWheel?
378
      <UL CLASS=CL>
379
        <LI><B>0..127:</B> CC#0 .. CC#127
380
        <LI><B>128:</B> PitchBend (default)
381
        <LI><B>129:</B> Aftertouch
382
      </UL>
383
      <SPAN CLASS=NORM><B>Examples:</B><BR>
384
         <I>set kb 1 ctrl_pitchwheel 128</I>: the PitchWheel of keyboard 1 sends PitchBend MIDI events<BR>
385
         <I>set kb 1 ctrl_pitchwheel 129</I>: the PitchWheel of keyboard 2 sends Aftertouch MIDI events<BR>
386
      </SPAN></TD>
387
  </TR>
388
 
389
  <TR>
390
    <TD WIDTH=100> <SPAN CLASS=NORM><I>set kb &lt;1|2&gt; ain_modwheel &lt;0-5 or off&gt;</I></TD>
391
    <TD WIDTH=475> <SPAN CLASS=NORM>Selects the J5.Ax input to which the ModWheel pot is connected. Use <I>off</I> if no ModWheel is used to avoid that the unconnected analog input will send random MIDI events!<BR>
392
      <SPAN CLASS=NORM><B>Examples:</B><BR>
393
         <I>set kb 1 ain_modwheel 1</I>: ModWheel of keyboard 1 connected to J5.A1 of the core module<BR>
1105 tk 394
         <I>set kb 2 ain_modwheel 4</I>: ModWheel of keyboard 2 connected to J5.A4 of the core module<BR>
1066 tk 395
         <I>set kb 1 ain_modwheel off</I>: no ModWheel connected<BR>
396
      </SPAN></TD>
397
  </TR>
398
 
399
  <TR>
1125 tk 400
    <TD WIDTH=100> <SPAN CLASS=NORM><I>set kb &lt;1|2&gt;<BR>ain_modwheel_inverted<BR>&lt;on|off&gt;</I></TD>
401
    <TD WIDTH=475> <SPAN CLASS=NORM>Inverts the output of the ModWheel.<BR>
402
      <SPAN CLASS=NORM><B>Examples:</B><BR>
403
         <I>set kb 1 ain_modwheel_inverted off</I>: (default) ModWheel outputs 0..127<BR>
404
         <I>set kb 1 ain_modwheel_inverted on</I>: ModWheel outputs 127..0<BR>
405
      </SPAN></TD>
406
  </TR>
407
 
408
  <TR>
1066 tk 409
    <TD WIDTH=100> <SPAN CLASS=NORM><I>set kb &lt;1|2&gt; ctrl_modwheel &lt;0-129&gt;</I></TD>
410
    <TD WIDTH=475> <SPAN CLASS=NORM>What kind of MIDI events should be sent by the ModWheel?
411
      <UL CLASS=CL>
412
        <LI><B>0..127:</B> CC#0 .. CC#127 (default: CC#1)
413
        <LI><B>128:</B> PitchBend
414
        <LI><B>129:</B> Aftertouch
415
      </UL>
416
      <SPAN CLASS=NORM><B>Examples:</B><BR>
417
         <I>set kb 1 ctrl_modwheel 1</I>: the ModWheel of keyboard 1 sends CC#1 (CC Modulation)<BR>
418
         <I>set kb 2 ctrl_modwheel 7</I>: the ModWheel of keyboard 2 sends CC#7 (CC Volume)<BR>
419
      </SPAN></TD>
420
  </TR>
421
 
1105 tk 422
  <TR>
423
    <TD WIDTH=100> <SPAN CLASS=NORM><I>set kb &lt;1|2&gt; ain_sustain &lt;0-5 or off&gt;</I></TD>
424
    <TD WIDTH=475> <SPAN CLASS=NORM>Selects the J5.Ax input to which a Sustain Pedal is connected. Use <I>off</I> if no Pedal is used to avoid that the unconnected analog input will send random MIDI events!<BR>
425
      <SPAN CLASS=NORM><B>Examples:</B><BR>
426
         <I>set kb 1 ain_sustain 2</I>: Sustain Pedal of keyboard 1 connected to J5.A2 of the core module<BR>
427
         <I>set kb 2 ain_sustain 5</I>: Sustain Pedal of keyboard 2 connected to J5.A5 of the core module<BR>
428
         <I>set kb 1 ain_sustain off</I>: no Sustain Pedal connected<BR>
429
      </SPAN></TD>
430
  </TR>
431
 
432
  <TR>
1125 tk 433
    <TD WIDTH=100> <SPAN CLASS=NORM><I>set kb &lt;1|2&gt;<BR>ain_sustain_inverted<BR>&lt;on|off&gt;</I></TD>
434
    <TD WIDTH=475> <SPAN CLASS=NORM>Inverts the output of the Sustain Pedal.<BR>
435
      <SPAN CLASS=NORM><B>Examples:</B><BR>
436
         <I>set kb 1 ain_sustain_inverted off</I>: (default) Pedal outputs 0..127<BR>
437
         <I>set kb 1 ain_sustain_inverted on</I>: Pedal outputs 127..0<BR>
438
      </SPAN></TD>
439
  </TR>
440
 
441
  <TR>
442
    <TD WIDTH=100> <SPAN CLASS=NORM><I>set kb &lt;1|2&gt;<BR>ain_sustain_switch<BR>&lt;on|off&gt;</I></TD>
443
    <TD WIDTH=475> <SPAN CLASS=NORM>Changes the Sustain Pedal behaviour:<BR>
444
      <SPAN CLASS=NORM><B>Examples:</B><BR>
445
         <I>set kb 1 ain_sustain_switch off</I>: (default) the pedal will output continuous controllers like a pot.
446
         <I>set kb 1 ain_sustain_switch on</I>: the pedal will only send 0 or 127 like a switch.
447
      </SPAN></TD>
448
  </TR>
449
 
450
  <TR>
1105 tk 451
    <TD WIDTH=100> <SPAN CLASS=NORM><I>set kb &lt;1|2&gt; ctrl_sustain &lt;0-129&gt;</I></TD>
452
    <TD WIDTH=475> <SPAN CLASS=NORM>What kind of MIDI events should be sent by the Sustain Pedal?
453
      <UL CLASS=CL>
454
        <LI><B>0..127:</B> CC#0 .. CC#127 (default: CC#64)
455
        <LI><B>128:</B> PitchBend
456
        <LI><B>129:</B> Aftertouch
457
      </UL>
458
      <SPAN CLASS=NORM><B>Examples:</B><BR>
459
         <I>set kb 1 ctrl_sustain 64</I>: the Sustain Pedal of keyboard 1 sends CC#64 (CC Sustain)<BR>
460
         <I>set kb 2 ctrl_sustain 65</I>: the Sustain Pedal of keyboard 2 sends CC#65 (CC Portamento On)<BR>
461
      </SPAN></TD>
462
  </TR>
463
 
464
  <TR>
1125 tk 465
    <TD WIDTH=100> <SPAN CLASS=NORM><I>set kb &lt;1|2&gt;<BR>ain_bandwidth_ms &lt;delay&gt;</I></TD>
466
    <TD WIDTH=475> <SPAN CLASS=NORM>Allows to reduce the bandwidth for analog events. With 0 the default (very high) bandwidth will be used, which can send multiple MIDI events per milliseconds over USB. If this stresses your DAW too much, use higher values. E.g. with <I>set kb 1 ain_bandwidth_ms 5</I> MIDI events will only be sent each 5 mS (on value changes).
467
      </SPAN></TD>
468
  </TR>
469
 
470
  <TR>
1105 tk 471
    <TD WIDTH=100> <SPAN CLASS=NORM><I>set kb &lt;1|2&gt; calibration &lt;off|pitchwheel|modwheel|sustain&gt;</I></TD>
472
    <TD WIDTH=475> <SPAN CLASS=NORM>Starts the calibration of PitchWheel/ModWheel/Sustain potentiometers (or switches) to determine the minimum/maximum value.<BR>
473
       After the calibration, just enter 'set kb 1 calibration off' to stop the calibration (and to test the behaviour), thereafter type 'store' to save the new values.
474
  </TR>
475
 
1066 tk 476
</TABLE>
477
 
478
 
479
<H2> <IMG SRC="images/bullet.gif" ALT=""> Recommended Configurations </H2>
480
 
481
<P CLASS=INFO>Configuration examples for various keyboards - this list will be enhanced whenever new configurations have been tested:</P>
482
 
483
<P CLASS=DESC>
484
<TABLE CLASS=BOX WIDTH=700 ALIGN=CENTER BORDER CELLSPACING=2 CELLPADDING=3 >
485
  <TR>
486
    <TD WIDTH=300> <SPAN CLASS=NORM>Fatar DF Type with 61 keys (<A HREF="midibox_kb/midibox_kb_fatar_df_61_interconnections.pdf">schematic</A>)
487
    <TD WIDTH=400>
488
      <UL CLASS=CL>
1117 tk 489
        <LI><I>set kb 1 note_offset 36</I>
1066 tk 490
        <LI><I>set kb 1 rows 8</I>
491
        <LI><I>set kb 1 velocity on</I>
492
        <LI><I>set kb 1 optimized on</I>
493
        <LI><I>set kb 1 dout_sr1 1</I>
494
        <LI><I>set kb 1 dout_sr2 2</I>
495
        <LI><I>set kb 1 din_sr1 1</I>
496
        <LI><I>set kb 1 din_sr2 2</I>
497
        <LI><I>set kb 1 din_key_offset 32</I>
498
        <LI><I>set kb 1 din_inverted off</I>
499
        <LI><I>set kb 1 break_inverted off</I>
1105 tk 500
        <LI><I>set kb 1 delay_fastest 50</I>
501
        <LI><I>set kb 1 delay_slowest 1000</I>
1066 tk 502
        <LI><I>store</I>
503
      </UL>
504
    </SPAN></TD>
505
  </TR>
506
 
507
 
508
  <TR>
509
    <TD WIDTH=300> <SPAN CLASS=NORM>Fatar DF Type with 76 keys (<A HREF="midibox_kb/midibox_kb_fatar_df_76_interconnections.pdf">schematic</A>)
510
    <TD WIDTH=400>
511
      <UL CLASS=CL>
1084 tk 512
        <LI><I>set kb 1 note_offset 28</I>
513
        <LI><I>set kb 1 rows 12</I>
1066 tk 514
        <LI><I>set kb 1 velocity on</I>
515
        <LI><I>set kb 1 optimized on</I>
516
        <LI><I>set kb 1 dout_sr1 1</I>
517
        <LI><I>set kb 1 dout_sr2 2</I>
518
        <LI><I>set kb 1 din_sr1 1</I>
519
        <LI><I>set kb 1 din_sr2 2</I>
520
        <LI><I>set kb 1 din_key_offset 32</I>
521
        <LI><I>set kb 1 din_inverted off</I>
522
        <LI><I>set kb 1 break_inverted off</I>
1105 tk 523
        <LI><I>set kb 1 delay_fastest 50</I>
524
        <LI><I>set kb 1 delay_slowest 1000</I>
1066 tk 525
        <LI><I>store</I>
526
      </UL>
527
    </SPAN></TD>
528
  </TR>
529
 
530
 
531
  <TR>
532
    <TD WIDTH=300> <SPAN CLASS=NORM>Fatar DF Type with 88 keys (<A HREF="midibox_kb/midibox_kb_fatar_df_88_interconnections.pdf">schematic</A>)
533
    <TD WIDTH=400>
534
      <UL CLASS=CL>
1113 tk 535
        <LI><I>set kb 1 note_offset 21</I>
1066 tk 536
        <LI><I>set kb 1 rows 12</I>
537
        <LI><I>set kb 1 velocity on</I>
538
        <LI><I>set kb 1 optimized on</I>
539
        <LI><I>set kb 1 dout_sr1 1</I>
540
        <LI><I>set kb 1 dout_sr2 2</I>
541
        <LI><I>set kb 1 din_sr1 1</I>
542
        <LI><I>set kb 1 din_sr2 2</I>
543
        <LI><I>set kb 1 din_key_offset 40</I>
544
        <LI><I>set kb 1 din_inverted off</I>
545
        <LI><I>set kb 1 break_inverted off</I>
1105 tk 546
        <LI><I>set kb 1 delay_fastest 50</I>
547
        <LI><I>set kb 1 delay_slowest 1000</I>
1066 tk 548
        <LI><I>store</I>
549
      </UL>
550
    </SPAN></TD>
551
  </TR>
552
 
553
  <TR>
554
    <TD WIDTH=300> <SPAN CLASS=NORM>Two "Refurbished Organ" keyboards with 63 keys (<A HREF="midibox_kb/midibox_kb_scanmatrix_type3.pdf">schematic</A>)
555
    <TD WIDTH=400>
556
      <UL CLASS=CL>
557
        <LI><I>set srio_num 4</I>
558
        <LI><I>set kb 1 note_offset 36</I>
559
        <LI><I>set kb 1 rows 8</I>
560
        <LI><I>set kb 1 velocity on</I>
561
        <LI><I>set kb 1 optimized off</I>
562
        <LI><I>set kb 1 dout_sr1 1</I>
563
        <LI><I>set kb 1 dout_sr2 2</I>
564
        <LI><I>set kb 1 din_sr1 1</I>
565
        <LI><I>set kb 1 din_sr2 2</I>
566
        <LI><I>set kb 1 din_key_offset 32</I>
567
        <LI><I>set kb 1 din_inverted off</I>
568
        <LI><I>set kb 1 break_inverted on</I>
1105 tk 569
        <LI><I>set kb 1 delay_fastest 50</I>
570
        <LI><I>set kb 1 delay_slowest 1000</I>
1066 tk 571
        <LI><I>set kb 2 note_offset 36</I>
572
        <LI><I>set kb 2 rows 8</I>
573
        <LI><I>set kb 2 velocity on</I>
574
        <LI><I>set kb 2 optimized off</I>
575
        <LI><I>set kb 2 dout_sr1 3</I>
576
        <LI><I>set kb 2 dout_sr2 4</I>
577
        <LI><I>set kb 2 din_sr1 3</I>
578
        <LI><I>set kb 2 din_sr2 4</I>
579
        <LI><I>set kb 2 din_key_offset 32</I>
580
        <LI><I>set kb 2 din_inverted off</I>
581
        <LI><I>set kb 2 break_inverted on</I>
1105 tk 582
        <LI><I>set kb 2 delay_fastest 50</I>
583
        <LI><I>set kb 2 delay_slowest 1000</I>
1066 tk 584
        <LI><I>store</I>
585
      </UL>
586
    </SPAN></TD>
587
  </TR>
588
 
589
  <TR>
1105 tk 590
    <TD WIDTH=300> <SPAN CLASS=NORM>Adding a Pitch Wheel to J5.A0<BR>and a Modulation Wheel to J5.A1<BR>and a Sustain Pedal to J5.A2<BR>(no schematic yet)
1066 tk 591
    <TD WIDTH=400>
592
      <UL CLASS=CL>
593
        <LI><I>set kb 1 ain_pitchwheel 0</I>
594
        <LI><I>set kb 1 ctrl_pitchwheel 128</I>
595
        <LI><I>set kb 1 ain_modwheel 1</I>
596
        <LI><I>set kb 1 ctrl_modwheel 1</I>
1105 tk 597
        <LI><I>set kb 1 ain_sustain 2</I>
598
        <LI><I>set kb 1 ctrl_sustain 64</I>
1066 tk 599
        <LI><I>store</I>
600
      </UL>
1105 tk 601
      Use following commands to calibrate the potentiometers (resp. switches):
602
      <UL CLASS=CL>
603
        <LI><I>set kb 1 calibration pitchwheel</I><BR>-&gt; move the PitchWheel to min/max position
604
        <LI><I>set kb 1 calibration modwheel</I><BR>-&gt; move the PitchWheel to min/max position
605
        <LI><I>set kb 1 calibration sustain</I><BR>-&gt; turn on/off the Sustain Pedal
606
        <LI><I>set kb 1 calibration off</I>
607
        <LI><I>store</I>
608
      </UL>
1066 tk 609
    </SPAN></TD>
610
  </TR>
611
 
612
</TABLE>
613
 
614
 
1162 tk 615
<H2> <IMG SRC="images/bullet.gif" ALT=""> Wishlist </H2>
616
 
617
<P CLASS=INFO><UL CLASS=CL>
618
<LI>support for triple sensor keyboards (allow to measure the key release velocity) - needs somebody who owns such a keyboard and can help testing</LI>
619
</UL>
620
 
1066 tk 621
<H2> <IMG SRC="images/bullet.gif" ALT=""> Firmware Download </H2>
622
 
623
<P CLASS=INFO>The precompiled application can be downloaded from the <A HREF="mios32_download.html">MIOS32 Download</A> page.</P>
624
 
1057 tk 625
FOOTER