126 |
<table summary="layout" width="66%" border="0" cellpadding="0" cellspacing="0"><tr><td><table summary="layout" width="100%" border="0" cellpadding="2" cellspacing="1"> |
<table summary="layout" width="66%" border="0" cellpadding="0" cellspacing="0"><tr><td><table summary="layout" width="100%" border="0" cellpadding="2" cellspacing="1"> |
127 |
<tr><td class="header">LinuxSampler Developers</td><td class="header">C. Schoenebeck</td></tr> |
<tr><td class="header">LinuxSampler Developers</td><td class="header">C. Schoenebeck</td></tr> |
128 |
<tr><td class="header">Internet-Draft</td><td class="header">Interessengemeinschaft Software</td></tr> |
<tr><td class="header">Internet-Draft</td><td class="header">Interessengemeinschaft Software</td></tr> |
129 |
<tr><td class="header">Expires: May 29, 2007</td><td class="header">Engineering e. V.</td></tr> |
<tr><td class="header">Expires: May 30, 2007</td><td class="header">Engineering e. V.</td></tr> |
130 |
<tr><td class="header"> </td><td class="header">November 25, 2006</td></tr> |
<tr><td class="header"> </td><td class="header">November 26, 2006</td></tr> |
131 |
</table></td></tr></table> |
</table></td></tr></table> |
132 |
<div align="right"><span class="title"><br />LinuxSampler Control Protocol</span></div> |
<div align="right"><span class="title"><br />LinuxSampler Control Protocol</span></div> |
133 |
<div align="right"><span class="title"><br />LSCP 1.1</span></div> |
<div align="right"><span class="title"><br />LSCP 1.2</span></div> |
134 |
|
|
135 |
<h3>Status of this Memo</h3> |
<h3>Status of this Memo</h3> |
136 |
<p> |
<p> |
153 |
The list of Internet-Draft Shadow Directories can be accessed at |
The list of Internet-Draft Shadow Directories can be accessed at |
154 |
<a href='http://www.ietf.org/shadow.html'>http://www.ietf.org/shadow.html</a>.</p> |
<a href='http://www.ietf.org/shadow.html'>http://www.ietf.org/shadow.html</a>.</p> |
155 |
<p> |
<p> |
156 |
This Internet-Draft will expire on May 29, 2007.</p> |
This Internet-Draft will expire on May 30, 2007.</p> |
157 |
|
|
158 |
<h3>Copyright Notice</h3> |
<h3>Copyright Notice</h3> |
159 |
<p> |
<p> |
318 |
Reset sampler<br /> |
Reset sampler<br /> |
319 |
<a href="#GET SERVER INFO">6.6.4.</a> |
<a href="#GET SERVER INFO">6.6.4.</a> |
320 |
General sampler informations<br /> |
General sampler informations<br /> |
321 |
|
<a href="#anchor14">6.7.</a> |
322 |
|
MIDI Instrument Mapping<br /> |
323 |
|
<a href="#MAP MIDI_INSTRUMENT">6.7.1.</a> |
324 |
|
Create or replace a MIDI instrument map entry<br /> |
325 |
|
<a href="#GET MIDI_INSTRUMENTS">6.7.2.</a> |
326 |
|
Getting ammount of MIDI instrument map entries<br /> |
327 |
|
<a href="#LIST MIDI_INSTRUMENTS">6.7.3.</a> |
328 |
|
Getting indeces of all MIDI instrument map entries<br /> |
329 |
|
<a href="#UNMAP MIDI_INSTRUMENT">6.7.4.</a> |
330 |
|
Remove an entry from the MIDI instrument map<br /> |
331 |
|
<a href="#GET MIDI_INSTRUMENT INFO">6.7.5.</a> |
332 |
|
Get current settings of MIDI instrument map entry<br /> |
333 |
|
<a href="#CLEAR MIDI_INSTRUMENTS">6.7.6.</a> |
334 |
|
Clear MIDI instrument map<br /> |
335 |
<a href="#command_syntax">7.</a> |
<a href="#command_syntax">7.</a> |
336 |
Command Syntax<br /> |
Command Syntax<br /> |
337 |
<a href="#events">8.</a> |
<a href="#events">8.</a> |
350 |
Total number of active voices changed<br /> |
Total number of active voices changed<br /> |
351 |
<a href="#SUBSCRIBE MISCELLANEOUS">8.7.</a> |
<a href="#SUBSCRIBE MISCELLANEOUS">8.7.</a> |
352 |
Miscellaneous and debugging events<br /> |
Miscellaneous and debugging events<br /> |
353 |
<a href="#anchor14">9.</a> |
<a href="#anchor15">9.</a> |
354 |
Security Considerations<br /> |
Security Considerations<br /> |
355 |
<a href="#anchor15">10.</a> |
<a href="#anchor16">10.</a> |
356 |
Acknowledgments<br /> |
Acknowledgments<br /> |
357 |
<a href="#rfc.references1">11.</a> |
<a href="#rfc.references1">11.</a> |
358 |
References<br /> |
References<br /> |
5152 |
<p>The mentioned fields above don't have to be in particular order. |
<p>The mentioned fields above don't have to be in particular order. |
5153 |
Other fields might be added in future. |
Other fields might be added in future. |
5154 |
</p> |
</p> |
5155 |
|
<a name="anchor14"></a><br /><hr /> |
5156 |
|
<table summary="layout" cellpadding="0" cellspacing="2" class="bug" align="right"><tr><td class="bug"><a href="#toc" class="link2"> TOC </a></td></tr></table> |
5157 |
|
<a name="rfc.section.6.7"></a><h3>6.7. MIDI Instrument Mapping</h3> |
5158 |
|
|
5159 |
|
<p>The MIDI protocol provides a way to switch between instruments |
5160 |
|
by sending so called MIDI bank select and MIDI program change |
5161 |
|
messages which are essentially just numbers. The following commands |
5162 |
|
allow to actually map arbitrary MIDI bank select / program change |
5163 |
|
numbers with real instruments. |
5164 |
|
</p> |
5165 |
|
<p>By default, that is when the sampler is launched, this map will |
5166 |
|
be empty, thus the sampler will simply ignore all program change |
5167 |
|
messages. The front-end has to explicitly add entries to the map |
5168 |
|
so the sampler knows how to react on a given program change |
5169 |
|
message, that is by switching to the respectively defined engine |
5170 |
|
type and loading the respective instrument. |
5171 |
|
</p> |
5172 |
|
<p>Also note per MIDI specification a bank select message does not |
5173 |
|
cause to switch to another instrument. Instead when receiving a |
5174 |
|
bank select message the bank value will be stored and a subsequent |
5175 |
|
program change message (which may occur at any time) will finally |
5176 |
|
cause the sampler to switch to the respective instrument as |
5177 |
|
reflected by the current MIDI instrument map. |
5178 |
|
</p> |
5179 |
|
<a name="MAP MIDI_INSTRUMENT"></a><br /><hr /> |
5180 |
|
<table summary="layout" cellpadding="0" cellspacing="2" class="bug" align="right"><tr><td class="bug"><a href="#toc" class="link2"> TOC </a></td></tr></table> |
5181 |
|
<a name="rfc.section.6.7.1"></a><h3>6.7.1. Create or replace a MIDI instrument map entry</h3> |
5182 |
|
|
5183 |
|
<p>The front-end can create a new or replace an existing entry |
5184 |
|
in the sampler's MIDI instrument map by sending the following |
5185 |
|
command: |
5186 |
|
</p> |
5187 |
|
<p> |
5188 |
|
</p> |
5189 |
|
<blockquote class="text"> |
5190 |
|
<p>MAP MIDI_INSTRUMENT <midi_bank_msb> |
5191 |
|
<midi_bank_lsb> <midi_prog> <engine_name> |
5192 |
|
<filename> <instrument_index> <volume_value> |
5193 |
|
[<instr_load_mode>] [<name>] |
5194 |
|
</p> |
5195 |
|
</blockquote><p> |
5196 |
|
|
5197 |
|
</p> |
5198 |
|
<p>Where <midi_bank_msb> is an integer value between |
5199 |
|
0..127 reflecting the MIDI bank select MSB (coarse) index, |
5200 |
|
<midi_bank_lsb> an integer value between 0..127 reflecting |
5201 |
|
the MIDI bank select LSB (fine) index, <midi_prog> an |
5202 |
|
integer value between 0..127 reflecting the MIDI program change |
5203 |
|
index, <engine_name> a sampler engine name as returned by |
5204 |
|
the <a class="info" href="#LIST AVAILABLE_ENGINES">"LIST AVAILABLE_ENGINES"<span> (</span><span class="info">Getting all available engines</span><span>)</span></a> |
5205 |
|
command (not encapsulated into apostrophes), <filename> the name |
5206 |
|
of the instrument's file to be deployed (encapsulated into apostrophes), <instrument_index> the index (integer value) of the instrument |
5207 |
|
within the given file, <volume_value> reflects the master |
5208 |
|
volume of the instrument as optionally dotted number (where a |
5209 |
|
value < 1.0 means attenuation and a value > 1.0 means |
5210 |
|
amplification). This parameter easily allows to adjust the |
5211 |
|
volume of all intruments within a custom instrument map |
5212 |
|
without having to adjust their instrument files. The |
5213 |
|
OPTIONAL <instr_load_mode> argument defines the life |
5214 |
|
time of the instrument, that is when the instrument should |
5215 |
|
be loaded, when freed and has exactly the following |
5216 |
|
possibilities: |
5217 |
|
</p> |
5218 |
|
<p> |
5219 |
|
</p> |
5220 |
|
<blockquote class="text"> |
5221 |
|
<p>"ON_DEMAND" - |
5222 |
|
</p> |
5223 |
|
<blockquote class="text"> |
5224 |
|
<p>The instrument will be loaded when needed, |
5225 |
|
that is when demanded by at least one sampler |
5226 |
|
channel. It will immediately be freed from memory |
5227 |
|
when not needed by any sampler channel anymore. |
5228 |
|
</p> |
5229 |
|
</blockquote> |
5230 |
|
|
5231 |
|
|
5232 |
|
<p>"ON_DEMAND_HOLD" - |
5233 |
|
</p> |
5234 |
|
<blockquote class="text"> |
5235 |
|
<p>The instrument will be loaded when needed, |
5236 |
|
that is when demanded by at least one sampler |
5237 |
|
channel. It will be kept in memory even when |
5238 |
|
not needed by any sampler channel anymore. |
5239 |
|
Instruments with this mode are only freed |
5240 |
|
when the sampler is reset or all mapping |
5241 |
|
entries with this mode (and respective |
5242 |
|
instrument) are explicitly changed to |
5243 |
|
"ON_DEMAND" and no sampler channel is using |
5244 |
|
the instrument anymore. |
5245 |
|
</p> |
5246 |
|
</blockquote> |
5247 |
|
|
5248 |
|
|
5249 |
|
<p>"PERSISTENT" - |
5250 |
|
</p> |
5251 |
|
<blockquote class="text"> |
5252 |
|
<p>The instrument will immediately be loaded |
5253 |
|
into memory in the background when this mapping |
5254 |
|
command is sent and the instrument is kept all |
5255 |
|
the time. Instruments with this mode are |
5256 |
|
only freed when the sampler is reset or all |
5257 |
|
mapping entries with this mode (and |
5258 |
|
respective instrument) are explicitly |
5259 |
|
changed to "ON_DEMAND" and no sampler |
5260 |
|
channel is using the instrument anymore. |
5261 |
|
</p> |
5262 |
|
</blockquote> |
5263 |
|
|
5264 |
|
|
5265 |
|
<p>not supplied - |
5266 |
|
</p> |
5267 |
|
<blockquote class="text"> |
5268 |
|
<p>In case there is no <instr_load_mode> |
5269 |
|
argument given, it will be up to the |
5270 |
|
InstrumentManager to decide which mode to use. |
5271 |
|
Usually it will use "ON_DEMAND" if an entry |
5272 |
|
for the given instrument does not exist in |
5273 |
|
the InstrumentManager's list yet, otherwise |
5274 |
|
if an entry already exists, it will simply |
5275 |
|
stick with the mode currently reflected by |
5276 |
|
the already existing entry, that is it will |
5277 |
|
not change the mode. |
5278 |
|
</p> |
5279 |
|
</blockquote> |
5280 |
|
|
5281 |
|
|
5282 |
|
</blockquote><p> |
5283 |
|
|
5284 |
|
</p> |
5285 |
|
<p> |
5286 |
|
The <instr_load_mode> argument thus allows to define an |
5287 |
|
appropriate strategy (low memory consumption vs. fast |
5288 |
|
instrument switching) for each instrument individually. Note, the |
5289 |
|
following restrictions apply to this argument: "ON_DEMAND_HOLD" and |
5290 |
|
"PERSISTENT" have to be supported by the respective sampler engine |
5291 |
|
(which is technically the case when the engine provides an |
5292 |
|
InstrumentManager for its format). If this is not the case the |
5293 |
|
argument will automatically fall back to the default value |
5294 |
|
"ON_DEMAND". Also the load mode of one instrument may |
5295 |
|
automatically change the laod mode of other instrument(s), i.e. |
5296 |
|
because the instruments are part of the same file and the |
5297 |
|
engine does not allow a way to manage load modes for them |
5298 |
|
individually. Due to this, in case the frontend shows the |
5299 |
|
load modes of entries, the frontend should retrieve the actual |
5300 |
|
mode by i.e. sending |
5301 |
|
<a class="info" href="#GET MIDI_INSTRUMENT INFO">"GET MIDI_INSTRUMENT INFO"<span> (</span><span class="info">Get current settings of MIDI instrument map entry</span><span>)</span></a> |
5302 |
|
command(s). Finally the OPTIONAL <name> argument allows to |
5303 |
|
set a custom name (encapsulated into apostrophes) for the mapping |
5304 |
|
entry, useful for frontends for displaying an appropriate name for |
5305 |
|
mapped instruments (using |
5306 |
|
<a class="info" href="#GET MIDI_INSTRUMENT INFO">"GET MIDI_INSTRUMENT INFO"<span> (</span><span class="info">Get current settings of MIDI instrument map entry</span><span>)</span></a>). |
5307 |
|
|
5308 |
|
</p> |
5309 |
|
<p> |
5310 |
|
The "MAP MIDI_INSTRUMENT" command |
5311 |
|
will immediately return, thus it will not block when an |
5312 |
|
instrument is to be loaded due to a "PERSISTENT" type |
5313 |
|
entry as instruments are loaded in the background. As a |
5314 |
|
consequence this command may not necessarily return an error |
5315 |
|
i.e. when the given instrument file does not exist or may |
5316 |
|
turn out to be corrupt. |
5317 |
|
|
5318 |
|
</p> |
5319 |
|
<p>Possible Answers: |
5320 |
|
</p> |
5321 |
|
<p> |
5322 |
|
</p> |
5323 |
|
<blockquote class="text"> |
5324 |
|
<p>"OK" - |
5325 |
|
</p> |
5326 |
|
<blockquote class="text"> |
5327 |
|
<p>usually |
5328 |
|
</p> |
5329 |
|
</blockquote> |
5330 |
|
|
5331 |
|
|
5332 |
|
<p>"ERR:<error-code>:<error-message>" - |
5333 |
|
</p> |
5334 |
|
<blockquote class="text"> |
5335 |
|
<p>when the given engine does not exist or a value |
5336 |
|
is out of range |
5337 |
|
</p> |
5338 |
|
</blockquote> |
5339 |
|
|
5340 |
|
|
5341 |
|
</blockquote><p> |
5342 |
|
|
5343 |
|
</p> |
5344 |
|
<p>Examples: |
5345 |
|
</p> |
5346 |
|
<p> |
5347 |
|
</p> |
5348 |
|
<blockquote class="text"> |
5349 |
|
<p>C: "MAP MIDI_INSTRUMENT 3 0 0 gig '/usr/share/Steinway D.gig' 0 0.8 PERSISTENT" |
5350 |
|
</p> |
5351 |
|
<p>S: "OK" |
5352 |
|
</p> |
5353 |
|
</blockquote><p> |
5354 |
|
|
5355 |
|
</p> |
5356 |
|
<p> |
5357 |
|
</p> |
5358 |
|
<blockquote class="text"> |
5359 |
|
<p>C: "MAP MIDI_INSTRUMENT 127 4 50 gig '/home/john/foostrings.gig' 7 1.0" |
5360 |
|
</p> |
5361 |
|
<p>S: "OK" |
5362 |
|
</p> |
5363 |
|
</blockquote><p> |
5364 |
|
|
5365 |
|
</p> |
5366 |
|
<p> |
5367 |
|
</p> |
5368 |
|
<blockquote class="text"> |
5369 |
|
<p>C: "MAP MIDI_INSTRUMENT 0 0 0 gig '/usr/share/piano.gig' 0 1.0 'Normal Piano'" |
5370 |
|
</p> |
5371 |
|
<p>S: "OK" |
5372 |
|
</p> |
5373 |
|
<p>C: "MAP MIDI_INSTRUMENT 1 0 0 gig '/usr/share/piano.gig' 0 0.25 'Silent Piano'" |
5374 |
|
</p> |
5375 |
|
<p>S: "OK" |
5376 |
|
</p> |
5377 |
|
</blockquote><p> |
5378 |
|
|
5379 |
|
</p> |
5380 |
|
<p> |
5381 |
|
</p> |
5382 |
|
<blockquote class="text"> |
5383 |
|
<p>C: "MAP MIDI_INSTRUMENT 99 8 120 gig '/home/joe/foodrums.gig' 0 1.0 PERSISTENT 'Foo Drumkit'" |
5384 |
|
</p> |
5385 |
|
<p>S: "OK" |
5386 |
|
</p> |
5387 |
|
</blockquote><p> |
5388 |
|
|
5389 |
|
</p> |
5390 |
|
<a name="GET MIDI_INSTRUMENTS"></a><br /><hr /> |
5391 |
|
<table summary="layout" cellpadding="0" cellspacing="2" class="bug" align="right"><tr><td class="bug"><a href="#toc" class="link2"> TOC </a></td></tr></table> |
5392 |
|
<a name="rfc.section.6.7.2"></a><h3>6.7.2. Getting ammount of MIDI instrument map entries</h3> |
5393 |
|
|
5394 |
|
<p>The front-end can query the amount of currently existing MIDI |
5395 |
|
instrument map entries by sending the following |
5396 |
|
command: |
5397 |
|
</p> |
5398 |
|
<p> |
5399 |
|
</p> |
5400 |
|
<blockquote class="text"> |
5401 |
|
<p>GET MIDI_INSTRUMENTS |
5402 |
|
</p> |
5403 |
|
</blockquote><p> |
5404 |
|
|
5405 |
|
</p> |
5406 |
|
<p>Possible Answers: |
5407 |
|
</p> |
5408 |
|
<p> |
5409 |
|
</p> |
5410 |
|
<blockquote class="text"> |
5411 |
|
<p>LinuxSampler will answer by sending the current number of |
5412 |
|
entries in the sampler's MIDI instrument map. |
5413 |
|
</p> |
5414 |
|
</blockquote><p> |
5415 |
|
|
5416 |
|
</p> |
5417 |
|
<p>Example: |
5418 |
|
</p> |
5419 |
|
<p> |
5420 |
|
</p> |
5421 |
|
<blockquote class="text"> |
5422 |
|
<p>C: "GET MIDI_INSTRUMENTS" |
5423 |
|
</p> |
5424 |
|
<p>S: "634" |
5425 |
|
</p> |
5426 |
|
</blockquote><p> |
5427 |
|
|
5428 |
|
</p> |
5429 |
|
<a name="LIST MIDI_INSTRUMENTS"></a><br /><hr /> |
5430 |
|
<table summary="layout" cellpadding="0" cellspacing="2" class="bug" align="right"><tr><td class="bug"><a href="#toc" class="link2"> TOC </a></td></tr></table> |
5431 |
|
<a name="rfc.section.6.7.3"></a><h3>6.7.3. Getting indeces of all MIDI instrument map entries</h3> |
5432 |
|
|
5433 |
|
<p>The front-end can query a list of all currently existing MIDI |
5434 |
|
instrument map entries by sending the following command: |
5435 |
|
</p> |
5436 |
|
<p> |
5437 |
|
</p> |
5438 |
|
<blockquote class="text"> |
5439 |
|
<p>LIST MIDI_INSTRUMENTS |
5440 |
|
</p> |
5441 |
|
</blockquote><p> |
5442 |
|
|
5443 |
|
</p> |
5444 |
|
<p>Possible Answers: |
5445 |
|
</p> |
5446 |
|
<p> |
5447 |
|
</p> |
5448 |
|
<blockquote class="text"> |
5449 |
|
<p>LinuxSampler will answer by sending a comma separated |
5450 |
|
list of MIDI bank MSB (coarse) - MIDI bank LSB (fine) - |
5451 |
|
MIDI program triples, where each triple is encapsulated |
5452 |
|
into curly braces. The list is returned in one single |
5453 |
|
line. Each triple just reflects the key of the respective |
5454 |
|
map entry, thus subsequent |
5455 |
|
<a class="info" href="#GET MIDI_INSTRUMENT INFO">"GET MIDI_INSTRUMENT INFO"<span> (</span><span class="info">Get current settings of MIDI instrument map entry</span><span>)</span></a> |
5456 |
|
command(s) are necessary to retrieve detailed informations |
5457 |
|
about each entry. |
5458 |
|
</p> |
5459 |
|
</blockquote><p> |
5460 |
|
|
5461 |
|
</p> |
5462 |
|
<p>Example: |
5463 |
|
</p> |
5464 |
|
<p> |
5465 |
|
</p> |
5466 |
|
<blockquote class="text"> |
5467 |
|
<p>C: "LIST MIDI_INSTRUMENTS" |
5468 |
|
</p> |
5469 |
|
<p>S: "{0,0,0},{0,0,1},{120,0,3},{120,0,4},{23,127,127}" |
5470 |
|
</p> |
5471 |
|
</blockquote><p> |
5472 |
|
|
5473 |
|
</p> |
5474 |
|
<a name="UNMAP MIDI_INSTRUMENT"></a><br /><hr /> |
5475 |
|
<table summary="layout" cellpadding="0" cellspacing="2" class="bug" align="right"><tr><td class="bug"><a href="#toc" class="link2"> TOC </a></td></tr></table> |
5476 |
|
<a name="rfc.section.6.7.4"></a><h3>6.7.4. Remove an entry from the MIDI instrument map</h3> |
5477 |
|
|
5478 |
|
<p>The front-end can delete an entry from the MIDI instrument |
5479 |
|
map by sending the following command: |
5480 |
|
</p> |
5481 |
|
<p> |
5482 |
|
</p> |
5483 |
|
<blockquote class="text"> |
5484 |
|
<p>UNMAP MIDI_INSTRUMENT <midi_bank_msb> <midi_bank_lsb> <midi_prog> |
5485 |
|
</p> |
5486 |
|
</blockquote><p> |
5487 |
|
|
5488 |
|
</p> |
5489 |
|
<p> |
5490 |
|
Where <midi_bank_msb> is an integer value between 0..127 |
5491 |
|
reflecting the MIDI bank MSB (coarse) value, <midi_bank_lsb> |
5492 |
|
an integer value between 0..127 reflecting the MIDI bank LSB |
5493 |
|
(fine) value and <midi_prog> an integer value between |
5494 |
|
0..127 reflecting the MIDI program value of the map entrie's key |
5495 |
|
index triple. |
5496 |
|
|
5497 |
|
</p> |
5498 |
|
<p>Possible Answers: |
5499 |
|
</p> |
5500 |
|
<p> |
5501 |
|
</p> |
5502 |
|
<blockquote class="text"> |
5503 |
|
<p>"OK" - |
5504 |
|
</p> |
5505 |
|
<blockquote class="text"> |
5506 |
|
<p>usually |
5507 |
|
</p> |
5508 |
|
</blockquote> |
5509 |
|
|
5510 |
|
|
5511 |
|
<p>"ERR:<error-code>:<error-message>" - |
5512 |
|
</p> |
5513 |
|
<blockquote class="text"> |
5514 |
|
<p>when index out of bounds |
5515 |
|
</p> |
5516 |
|
</blockquote> |
5517 |
|
|
5518 |
|
|
5519 |
|
</blockquote><p> |
5520 |
|
|
5521 |
|
</p> |
5522 |
|
<p>Example: |
5523 |
|
</p> |
5524 |
|
<p> |
5525 |
|
</p> |
5526 |
|
<blockquote class="text"> |
5527 |
|
<p>C: "UNMAP MIDI_INSTRUMENT 2 40 127" |
5528 |
|
</p> |
5529 |
|
<p>S: "OK" |
5530 |
|
</p> |
5531 |
|
</blockquote><p> |
5532 |
|
|
5533 |
|
</p> |
5534 |
|
<a name="GET MIDI_INSTRUMENT INFO"></a><br /><hr /> |
5535 |
|
<table summary="layout" cellpadding="0" cellspacing="2" class="bug" align="right"><tr><td class="bug"><a href="#toc" class="link2"> TOC </a></td></tr></table> |
5536 |
|
<a name="rfc.section.6.7.5"></a><h3>6.7.5. Get current settings of MIDI instrument map entry</h3> |
5537 |
|
|
5538 |
|
<p>The front-end can retrieve the current settings of a certain |
5539 |
|
instrument map entry by sending the following command: |
5540 |
|
</p> |
5541 |
|
<p> |
5542 |
|
</p> |
5543 |
|
<blockquote class="text"> |
5544 |
|
<p>GET MIDI_INSTRUMENT INFO <midi_bank_msb> <midi_bank_lsb> <midi_prog> |
5545 |
|
</p> |
5546 |
|
</blockquote><p> |
5547 |
|
|
5548 |
|
</p> |
5549 |
|
<p> |
5550 |
|
Where <midi_bank_msb> is an integer value between 0..127 |
5551 |
|
reflecting the MIDI bank MSB (coarse) value, <midi_bank_lsb> |
5552 |
|
an integer value between 0..127 reflecting the MIDI bank LSB |
5553 |
|
(fine) value and <midi_prog> an integer value between |
5554 |
|
0..127 reflecting the MIDI program value of the map entrie's key |
5555 |
|
index triple. |
5556 |
|
|
5557 |
|
</p> |
5558 |
|
<p>Possible Answers: |
5559 |
|
</p> |
5560 |
|
<p> |
5561 |
|
</p> |
5562 |
|
<blockquote class="text"> |
5563 |
|
<p>LinuxSampler will answer by sending a <CRLF> |
5564 |
|
separated list. Each answer line begins with the |
5565 |
|
information category name followed by a colon and then |
5566 |
|
a space character <SP> and finally the info |
5567 |
|
character string to that info category. At the moment |
5568 |
|
the following categories are defined: |
5569 |
|
</p> |
5570 |
|
<p>"NAME" - |
5571 |
|
</p> |
5572 |
|
<blockquote class="text"> |
5573 |
|
<p>Name for this MIDI instrument map entry (if defined). |
5574 |
|
This name shall be used by frontends for displaying a |
5575 |
|
name for this mapped instrument. It can be set and |
5576 |
|
changed with the |
5577 |
|
<a class="info" href="#MAP MIDI_INSTRUMENT">"MAP MIDI_INSTRUMENT"<span> (</span><span class="info">Create or replace a MIDI instrument map entry</span><span>)</span></a> |
5578 |
|
command and does not have to be unique. |
5579 |
|
</p> |
5580 |
|
</blockquote> |
5581 |
|
|
5582 |
|
|
5583 |
|
<p>"ENGINE_NAME" - |
5584 |
|
</p> |
5585 |
|
<blockquote class="text"> |
5586 |
|
<p>Name of the engine to be deployed for this |
5587 |
|
instrument. |
5588 |
|
</p> |
5589 |
|
</blockquote> |
5590 |
|
|
5591 |
|
|
5592 |
|
<p>"INSTRUMENT_FILE" - |
5593 |
|
</p> |
5594 |
|
<blockquote class="text"> |
5595 |
|
<p>File name of the instrument. |
5596 |
|
</p> |
5597 |
|
</blockquote> |
5598 |
|
|
5599 |
|
|
5600 |
|
<p>"INSTRUMENT_NR" - |
5601 |
|
</p> |
5602 |
|
<blockquote class="text"> |
5603 |
|
<p>Index of the instrument within the file. |
5604 |
|
</p> |
5605 |
|
</blockquote> |
5606 |
|
|
5607 |
|
|
5608 |
|
<p>"INSTRUMENT_NAME" - |
5609 |
|
</p> |
5610 |
|
<blockquote class="text"> |
5611 |
|
<p>Name of the loaded instrument as reflected by its file. |
5612 |
|
In contrast to the "NAME" field, the "INSTRUMENT_NAME" field |
5613 |
|
cannot be changed. |
5614 |
|
</p> |
5615 |
|
</blockquote> |
5616 |
|
|
5617 |
|
|
5618 |
|
<p>"LOAD_MODE" - |
5619 |
|
</p> |
5620 |
|
<blockquote class="text"> |
5621 |
|
<p>Life time of instrument |
5622 |
|
(see <a class="info" href="#MAP MIDI_INSTRUMENT">"MAP MIDI_INSTRUMENT"<span> (</span><span class="info">Create or replace a MIDI instrument map entry</span><span>)</span></a> for details about this setting). |
5623 |
|
</p> |
5624 |
|
</blockquote> |
5625 |
|
|
5626 |
|
|
5627 |
|
<p>"VOLUME" - |
5628 |
|
</p> |
5629 |
|
<blockquote class="text"> |
5630 |
|
<p>master volume of the instrument as optionally |
5631 |
|
dotted number (where a value < 1.0 means attenuation |
5632 |
|
and a value > 1.0 means amplification) |
5633 |
|
</p> |
5634 |
|
</blockquote> |
5635 |
|
|
5636 |
|
|
5637 |
|
<p>The mentioned fields above don't have to be in particular order. |
5638 |
|
</p> |
5639 |
|
</blockquote><p> |
5640 |
|
|
5641 |
|
</p> |
5642 |
|
<p>Example: |
5643 |
|
</p> |
5644 |
|
<p> |
5645 |
|
</p> |
5646 |
|
<blockquote class="text"> |
5647 |
|
<p>C: "GET MIDI_INSTRUMENT INFO 3 45 120" |
5648 |
|
</p> |
5649 |
|
<p>S: "NAME: Drums for Foo Song" |
5650 |
|
</p> |
5651 |
|
<p> "ENGINE_NAME: GigEngine" |
5652 |
|
</p> |
5653 |
|
<p> "INSTRUMENT_FILE: /usr/share/joesdrumkit.gig" |
5654 |
|
</p> |
5655 |
|
<p> "INSTRUMENT_NR: 0" |
5656 |
|
</p> |
5657 |
|
<p> "INSTRUMENT_NAME: Joe's Drumkit" |
5658 |
|
</p> |
5659 |
|
<p> "LOAD_MODE: PERSISTENT" |
5660 |
|
</p> |
5661 |
|
<p> "VOLUME: 1.0" |
5662 |
|
</p> |
5663 |
|
<p> "." |
5664 |
|
</p> |
5665 |
|
</blockquote><p> |
5666 |
|
|
5667 |
|
</p> |
5668 |
|
<a name="CLEAR MIDI_INSTRUMENTS"></a><br /><hr /> |
5669 |
|
<table summary="layout" cellpadding="0" cellspacing="2" class="bug" align="right"><tr><td class="bug"><a href="#toc" class="link2"> TOC </a></td></tr></table> |
5670 |
|
<a name="rfc.section.6.7.6"></a><h3>6.7.6. Clear MIDI instrument map</h3> |
5671 |
|
|
5672 |
|
<p>The front-end can clear the whole MIDI instrument map, that |
5673 |
|
is delete all entries by sending the following command: |
5674 |
|
</p> |
5675 |
|
<p> |
5676 |
|
</p> |
5677 |
|
<blockquote class="text"> |
5678 |
|
<p>CLEAR MIDI_INSTRUMENTS |
5679 |
|
</p> |
5680 |
|
</blockquote><p> |
5681 |
|
|
5682 |
|
</p> |
5683 |
|
<p>Possible Answers: |
5684 |
|
</p> |
5685 |
|
<p> |
5686 |
|
</p> |
5687 |
|
<blockquote class="text"> |
5688 |
|
<p>"OK" - |
5689 |
|
</p> |
5690 |
|
<blockquote class="text"> |
5691 |
|
<p>always |
5692 |
|
</p> |
5693 |
|
</blockquote> |
5694 |
|
|
5695 |
|
|
5696 |
|
</blockquote><p> |
5697 |
|
|
5698 |
|
</p> |
5699 |
|
<p>Example: |
5700 |
|
</p> |
5701 |
|
<p> |
5702 |
|
</p> |
5703 |
|
<blockquote class="text"> |
5704 |
|
<p>C: "CLEAR MIDI_INSTRUMENTS" |
5705 |
|
</p> |
5706 |
|
<p>S: "OK" |
5707 |
|
</p> |
5708 |
|
</blockquote><p> |
5709 |
|
|
5710 |
|
</p> |
5711 |
<a name="command_syntax"></a><br /><hr /> |
<a name="command_syntax"></a><br /><hr /> |
5712 |
<table summary="layout" cellpadding="0" cellspacing="2" class="bug" align="right"><tr><td class="bug"><a href="#toc" class="link2"> TOC </a></td></tr></table> |
<table summary="layout" cellpadding="0" cellspacing="2" class="bug" align="right"><tr><td class="bug"><a href="#toc" class="link2"> TOC </a></td></tr></table> |
5713 |
<a name="rfc.section.7"></a><h3>7. Command Syntax</h3> |
<a name="rfc.section.7"></a><h3>7. Command Syntax</h3> |
5774 |
<p>ADD SP CHANNEL |
<p>ADD SP CHANNEL |
5775 |
|
|
5776 |
</p> |
</p> |
5777 |
|
<p>/ MAP SP map_instruction |
5778 |
|
|
5779 |
|
</p> |
5780 |
|
<p>/ UNMAP SP unmap_instruction |
5781 |
|
|
5782 |
|
</p> |
5783 |
<p>/ GET SP get_instruction |
<p>/ GET SP get_instruction |
5784 |
|
|
5785 |
</p> |
</p> |
5795 |
<p>/ LOAD SP load_instruction |
<p>/ LOAD SP load_instruction |
5796 |
|
|
5797 |
</p> |
</p> |
5798 |
<p>/ REMOVE SP CHANNEL SP sampler_channel |
<p>/ REMOVE SP remove_instruction |
5799 |
|
|
5800 |
|
|
5801 |
</p> |
</p> |
5802 |
<p>/ SET SP set_instruction |
<p>/ SET SP set_instruction |
5811 |
<p>/ SELECT SP text |
<p>/ SELECT SP text |
5812 |
|
|
5813 |
</p> |
</p> |
5814 |
<p>/ RESET SP CHANNEL SP sampler_channel |
<p>/ RESET SP reset_instruction |
5815 |
|
|
5816 |
|
</p> |
5817 |
|
<p>/ CLEAR SP clear_instruction |
5818 |
|
|
5819 |
</p> |
</p> |
5820 |
<p>/ RESET |
<p>/ RESET |
5880 |
</blockquote><p> |
</blockquote><p> |
5881 |
|
|
5882 |
</p> |
</p> |
5883 |
|
<p>map_instruction = |
5884 |
|
</p> |
5885 |
|
<blockquote class="text"> |
5886 |
|
<p>MIDI_INSTRUMENT SP midi_bank_msb SP midi_bank_lsb SP midi_prog SP engine_name SP filename SP instrument_index SP volume_value |
5887 |
|
|
5888 |
|
</p> |
5889 |
|
<p>/ MIDI_INSTRUMENT SP midi_bank_msb SP midi_bank_lsb SP midi_prog SP engine_name SP filename SP instrument_index SP volume_value SP instr_load_mode |
5890 |
|
|
5891 |
|
</p> |
5892 |
|
<p>/ MIDI_INSTRUMENT SP midi_bank_msb SP midi_bank_lsb SP midi_prog SP engine_name SP filename SP instrument_index SP volume_value SP entry_name |
5893 |
|
|
5894 |
|
</p> |
5895 |
|
<p>/ MIDI_INSTRUMENT SP midi_bank_msb SP midi_bank_lsb SP midi_prog SP engine_name SP filename SP instrument_index SP volume_value SP instr_load_mode SP entry_name |
5896 |
|
|
5897 |
|
</p> |
5898 |
|
</blockquote><p> |
5899 |
|
|
5900 |
|
</p> |
5901 |
|
<p>unmap_instruction = |
5902 |
|
</p> |
5903 |
|
<blockquote class="text"> |
5904 |
|
<p>MIDI_INSTRUMENT SP midi_bank_msb SP midi_bank_lsb SP midi_prog |
5905 |
|
|
5906 |
|
</p> |
5907 |
|
</blockquote><p> |
5908 |
|
|
5909 |
|
</p> |
5910 |
|
<p>remove_instruction = |
5911 |
|
</p> |
5912 |
|
<blockquote class="text"> |
5913 |
|
<p>CHANNEL SP sampler_channel |
5914 |
|
|
5915 |
|
</p> |
5916 |
|
</blockquote><p> |
5917 |
|
|
5918 |
|
</p> |
5919 |
<p>get_instruction = |
<p>get_instruction = |
5920 |
</p> |
</p> |
5921 |
<blockquote class="text"> |
<blockquote class="text"> |
5997 |
<p>/ TOTAL_VOICE_COUNT_MAX |
<p>/ TOTAL_VOICE_COUNT_MAX |
5998 |
|
|
5999 |
</p> |
</p> |
6000 |
|
<p>/ MIDI_INSTRUMENTS |
6001 |
|
|
6002 |
|
</p> |
6003 |
|
<p>/ MIDI_INSTRUMENT SP INFO SP midi_bank_msb SP midi_bank_lsb SP midi_prog |
6004 |
|
|
6005 |
|
</p> |
6006 |
</blockquote><p> |
</blockquote><p> |
6007 |
|
|
6008 |
</p> |
</p> |
6048 |
</blockquote><p> |
</blockquote><p> |
6049 |
|
|
6050 |
</p> |
</p> |
6051 |
|
<p>reset_instruction = |
6052 |
|
</p> |
6053 |
|
<blockquote class="text"> |
6054 |
|
<p>CHANNEL SP sampler_channel |
6055 |
|
|
6056 |
|
</p> |
6057 |
|
</blockquote><p> |
6058 |
|
|
6059 |
|
</p> |
6060 |
|
<p>clear_instruction = |
6061 |
|
</p> |
6062 |
|
<blockquote class="text"> |
6063 |
|
<p>MIDI_INSTRUMENTS |
6064 |
|
|
6065 |
|
</p> |
6066 |
|
</blockquote><p> |
6067 |
|
|
6068 |
|
</p> |
6069 |
<p>destroy_instruction = |
<p>destroy_instruction = |
6070 |
</p> |
</p> |
6071 |
<blockquote class="text"> |
<blockquote class="text"> |
6174 |
<p>/ AVAILABLE_AUDIO_OUTPUT_DRIVERS |
<p>/ AVAILABLE_AUDIO_OUTPUT_DRIVERS |
6175 |
|
|
6176 |
</p> |
</p> |
6177 |
|
<p>/ MIDI_INSTRUMENTS |
6178 |
|
|
6179 |
|
</p> |
6180 |
</blockquote><p> |
</blockquote><p> |
6181 |
|
|
6182 |
</p> |
</p> |
6201 |
</blockquote><p> |
</blockquote><p> |
6202 |
|
|
6203 |
</p> |
</p> |
6204 |
|
<p>instr_load_mode = |
6205 |
|
</p> |
6206 |
|
<blockquote class="text"> |
6207 |
|
<p>ON_DEMAND |
6208 |
|
|
6209 |
|
</p> |
6210 |
|
<p>/ ON_DEMAND_HOLD |
6211 |
|
|
6212 |
|
</p> |
6213 |
|
<p>/ PERSISTENT |
6214 |
|
|
6215 |
|
</p> |
6216 |
|
</blockquote><p> |
6217 |
|
|
6218 |
|
</p> |
6219 |
<p>device_index = |
<p>device_index = |
6220 |
</p> |
</p> |
6221 |
<blockquote class="text"> |
<blockquote class="text"> |
6273 |
</blockquote><p> |
</blockquote><p> |
6274 |
|
|
6275 |
</p> |
</p> |
6276 |
|
<p>midi_bank_msb = |
6277 |
|
</p> |
6278 |
|
<blockquote class="text"> |
6279 |
|
<p>number |
6280 |
|
|
6281 |
|
</p> |
6282 |
|
</blockquote><p> |
6283 |
|
|
6284 |
|
</p> |
6285 |
|
<p>midi_bank_lsb = |
6286 |
|
</p> |
6287 |
|
<blockquote class="text"> |
6288 |
|
<p>number |
6289 |
|
|
6290 |
|
</p> |
6291 |
|
</blockquote><p> |
6292 |
|
|
6293 |
|
</p> |
6294 |
|
<p>midi_prog = |
6295 |
|
</p> |
6296 |
|
<blockquote class="text"> |
6297 |
|
<p>number |
6298 |
|
|
6299 |
|
</p> |
6300 |
|
</blockquote><p> |
6301 |
|
|
6302 |
|
</p> |
6303 |
<p>volume_value = |
<p>volume_value = |
6304 |
</p> |
</p> |
6305 |
<blockquote class="text"> |
<blockquote class="text"> |
6348 |
</blockquote><p> |
</blockquote><p> |
6349 |
|
|
6350 |
</p> |
</p> |
6351 |
|
<p>entry_name = |
6352 |
|
</p> |
6353 |
|
<blockquote class="text"> |
6354 |
|
<p>stringval |
6355 |
|
|
6356 |
|
</p> |
6357 |
|
</blockquote><p> |
6358 |
|
|
6359 |
|
</p> |
6360 |
<p>param_val_list = |
<p>param_val_list = |
6361 |
</p> |
</p> |
6362 |
<blockquote class="text"> |
<blockquote class="text"> |
6598 |
wants to send to the client. Client MAY display this data to the |
wants to send to the client. Client MAY display this data to the |
6599 |
user AS IS to facilitate debugging. |
user AS IS to facilitate debugging. |
6600 |
</p> |
</p> |
6601 |
<a name="anchor14"></a><br /><hr /> |
<a name="anchor15"></a><br /><hr /> |
6602 |
<table summary="layout" cellpadding="0" cellspacing="2" class="bug" align="right"><tr><td class="bug"><a href="#toc" class="link2"> TOC </a></td></tr></table> |
<table summary="layout" cellpadding="0" cellspacing="2" class="bug" align="right"><tr><td class="bug"><a href="#toc" class="link2"> TOC </a></td></tr></table> |
6603 |
<a name="rfc.section.9"></a><h3>9. Security Considerations</h3> |
<a name="rfc.section.9"></a><h3>9. Security Considerations</h3> |
6604 |
|
|
6607 |
connect, running LinuxSampler might be a security risk for the host |
connect, running LinuxSampler might be a security risk for the host |
6608 |
system the LinuxSampler instance is running on. |
system the LinuxSampler instance is running on. |
6609 |
</p> |
</p> |
6610 |
<a name="anchor15"></a><br /><hr /> |
<a name="anchor16"></a><br /><hr /> |
6611 |
<table summary="layout" cellpadding="0" cellspacing="2" class="bug" align="right"><tr><td class="bug"><a href="#toc" class="link2"> TOC </a></td></tr></table> |
<table summary="layout" cellpadding="0" cellspacing="2" class="bug" align="right"><tr><td class="bug"><a href="#toc" class="link2"> TOC </a></td></tr></table> |
6612 |
<a name="rfc.section.10"></a><h3>10. Acknowledgments</h3> |
<a name="rfc.section.10"></a><h3>10. Acknowledgments</h3> |
6613 |
|
|