16 |
to an annoying "missing Normative/Informative References" error message --> |
to an annoying "missing Normative/Informative References" error message --> |
17 |
<?rfc strict="no" ?> |
<?rfc strict="no" ?> |
18 |
|
|
19 |
<rfc category="std" ipr="full3978" docName="LSCP 1.2cvs"> |
<rfc category="std" ipr="full3978" docName="LSCP 1.2"> |
20 |
<front> |
<front> |
21 |
<title>LinuxSampler Control Protocol (draft)</title> |
<title>LinuxSampler Control Protocol</title> |
22 |
<author initials='C.S.' surname="Schoenebeck" fullname='C. |
<author initials='C.S.' surname="Schoenebeck" fullname='C. |
23 |
Schoenebeck'> |
Schoenebeck'> |
24 |
<organization> |
<organization> |
34 |
<email>schoenebeck at software minus engineering dot org</email> |
<email>schoenebeck at software minus engineering dot org</email> |
35 |
</address> |
</address> |
36 |
</author> |
</author> |
37 |
<date month="September" year="2007"/> |
<date month="October" year="2007"/> |
38 |
<workgroup>LinuxSampler Developers</workgroup> |
<workgroup>LinuxSampler Developers</workgroup> |
39 |
<keyword>LSCP</keyword> |
<keyword>LSCP</keyword> |
40 |
<abstract> |
<abstract> |
2443 |
<list> |
<list> |
2444 |
<t>DESCRIPTION - |
<t>DESCRIPTION - |
2445 |
<list> |
<list> |
2446 |
<t>arbitrary description text about the engine</t> |
<t>arbitrary description text about the engine |
2447 |
|
(note that the character string may contain |
2448 |
|
<xref target="character_set">escape sequences</xref>)</t> |
2449 |
</list> |
</list> |
2450 |
</t> |
</t> |
2451 |
<t>VERSION - |
<t>VERSION - |
2529 |
<list> |
<list> |
2530 |
<t>the file name of the loaded instrument, "NONE" if |
<t>the file name of the loaded instrument, "NONE" if |
2531 |
there's no instrument yet loaded for this sampler |
there's no instrument yet loaded for this sampler |
2532 |
channel</t> |
channel (note: since LSCP 1.2 this path may contain |
2533 |
|
<xref target="character_set">escape sequences</xref>)</t> |
2534 |
</list> |
</list> |
2535 |
</t> |
</t> |
2536 |
<t>INSTRUMENT_NR - |
<t>INSTRUMENT_NR - |
2540 |
</t> |
</t> |
2541 |
<t>INSTRUMENT_NAME - |
<t>INSTRUMENT_NAME - |
2542 |
<list> |
<list> |
2543 |
<t>the instrument name of the loaded instrument</t> |
<t>the instrument name of the loaded instrument |
2544 |
|
(note: since LSCP 1.2 this character string may contain |
2545 |
|
<xref target="character_set">escape sequences</xref>)</t> |
2546 |
</list> |
</list> |
2547 |
</t> |
</t> |
2548 |
<t>INSTRUMENT_STATUS - |
<t>INSTRUMENT_STATUS - |
3260 |
sampler channel on which the effect send should be created on, <midi-ctrl> |
sampler channel on which the effect send should be created on, <midi-ctrl> |
3261 |
is a number between 0..127 defining the MIDI controller which can alter the |
is a number between 0..127 defining the MIDI controller which can alter the |
3262 |
effect send level and <name> is an optional argument defining a name |
effect send level and <name> is an optional argument defining a name |
3263 |
for the effect send entity. The name does not have to be unique.</t> |
for the effect send entity. The name does not have to be unique, but MUST be |
3264 |
|
encapsulated into apostrophes and supports escape sequences as described in chapter |
3265 |
|
"<xref target="character_set">Character Set and Escape Sequences</xref>".</t> |
3266 |
|
|
3267 |
<t>By default, that is as initial routing, the effect send's audio channels |
<t>By default, that is as initial routing, the effect send's audio channels |
3268 |
are automatically routed to the last audio channels of the sampler channel's |
are automatically routed to the last audio channels of the sampler channel's |
3452 |
<list> |
<list> |
3453 |
<t>NAME - |
<t>NAME - |
3454 |
<list> |
<list> |
3455 |
<t>name of the effect send entity</t> |
<t>name of the effect send entity |
3456 |
|
(note that this character string may contain |
3457 |
|
<xref target="character_set">escape sequences</xref>)</t> |
3458 |
</list> |
</list> |
3459 |
</t> |
</t> |
3460 |
<t>MIDI_CONTROLLER - |
<t>MIDI_CONTROLLER - |
3517 |
as returned by the <xref target="CREATE FX_SEND">"CREATE FX_SEND"</xref> |
as returned by the <xref target="CREATE FX_SEND">"CREATE FX_SEND"</xref> |
3518 |
or <xref target="LIST FX_SENDS">"LIST FX_SENDS"</xref> command and |
or <xref target="LIST FX_SENDS">"LIST FX_SENDS"</xref> command and |
3519 |
<name> is the new name of the effect send entity, which |
<name> is the new name of the effect send entity, which |
3520 |
does not have to be unique.</t> |
does not have to be unique (name MUST be encapsulated into apostrophes |
3521 |
|
and supports escape sequences as described in chapter |
3522 |
|
"<xref target="character_set">Character Set and Escape Sequences</xref>"). |
3523 |
|
</t> |
3524 |
|
|
3525 |
<t>Possible Answers:</t> |
<t>Possible Answers:</t> |
3526 |
<t> |
<t> |
3924 |
</t> |
</t> |
3925 |
</section> |
</section> |
3926 |
|
|
3927 |
|
<section title="Current number of active disk streams" anchor="GET TOTAL_STREAM_COUNT"> |
3928 |
|
<t>The front-end can ask for the current number of active disk streams on |
3929 |
|
the sampler by sending the following command:</t> |
3930 |
|
<t> |
3931 |
|
<list> |
3932 |
|
<t>GET TOTAL_STREAM_COUNT</t> |
3933 |
|
</list> |
3934 |
|
</t> |
3935 |
|
|
3936 |
|
<t>Possible Answers:</t> |
3937 |
|
<t> |
3938 |
|
<list> |
3939 |
|
<t>LinuxSampler will answer by returning the number of all active |
3940 |
|
disk streams on the sampler.</t> |
3941 |
|
</list> |
3942 |
|
</t> |
3943 |
|
</section> |
3944 |
|
|
3945 |
<section title="Reset sampler" anchor="RESET"> |
<section title="Reset sampler" anchor="RESET"> |
3946 |
<t>The front-end can reset the whole sampler by sending the following command:</t> |
<t>The front-end can reset the whole sampler by sending the following command:</t> |
3947 |
<t> |
<t> |
3989 |
<list> |
<list> |
3990 |
<t>DESCRIPTION - |
<t>DESCRIPTION - |
3991 |
<list> |
<list> |
3992 |
<t>arbitrary textual description about the sampler</t> |
<t>arbitrary textual description about the sampler |
3993 |
|
(note that the character string may contain |
3994 |
|
<xref target="character_set">escape sequences</xref>)</t> |
3995 |
</list> |
</list> |
3996 |
</t> |
</t> |
3997 |
<t>VERSION - |
<t>VERSION - |
4107 |
cause the sampler to switch to the respective instrument as |
cause the sampler to switch to the respective instrument as |
4108 |
reflected by the current MIDI instrument map.</t> |
reflected by the current MIDI instrument map.</t> |
4109 |
|
|
4110 |
<section title="Create a new MIDI instrument map" anchor="ADD MIDI_INSTRUMENT MAP"> |
<section title="Create a new MIDI instrument map" anchor="ADD MIDI_INSTRUMENT_MAP"> |
4111 |
<t>The front-end can add a new MIDI instrument map by sending |
<t>The front-end can add a new MIDI instrument map by sending |
4112 |
the following command:</t> |
the following command:</t> |
4113 |
<t> |
<t> |
4117 |
</t> |
</t> |
4118 |
<t>Where <name> is an optional argument allowing to |
<t>Where <name> is an optional argument allowing to |
4119 |
assign a custom name to the new map. MIDI instrument Map |
assign a custom name to the new map. MIDI instrument Map |
4120 |
names do not have to be unique.</t> |
names do not have to be unique, but MUST be encapsulated |
4121 |
|
into apostrophes and support escape sequences as described |
4122 |
|
in chapter "<xref target="character_set">Character Set and Escape Sequences</xref>". |
4123 |
|
</t> |
4124 |
|
|
4125 |
<t>Possible Answers:</t> |
<t>Possible Answers:</t> |
4126 |
<t> |
<t> |
4291 |
<t>NAME - |
<t>NAME - |
4292 |
<list> |
<list> |
4293 |
<t>custom name of the given map, |
<t>custom name of the given map, |
4294 |
which does not have to be unique</t> |
which does not have to be unique |
4295 |
|
(note that this character string may contain |
4296 |
|
<xref target="character_set">escape sequences</xref>)</t> |
4297 |
</list> |
</list> |
4298 |
</t> |
</t> |
4299 |
<t>DEFAULT - |
<t>DEFAULT - |
4329 |
</t> |
</t> |
4330 |
<t>Where <map> is the numerical ID of the map and |
<t>Where <map> is the numerical ID of the map and |
4331 |
<name> the new custom name of the map, which does not |
<name> the new custom name of the map, which does not |
4332 |
have to be unique.</t> |
have to be unique (name MUST be encapsulated into apostrophes |
4333 |
|
and supports escape sequences as described in chapter |
4334 |
|
"<xref target="character_set">Character Set and Escape Sequences</xref>"). |
4335 |
|
</t> |
4336 |
|
|
4337 |
<t>Possible Answers:</t> |
<t>Possible Answers:</t> |
4338 |
<t> |
<t> |
4463 |
load modes of entries, the frontend should retrieve the actual |
load modes of entries, the frontend should retrieve the actual |
4464 |
mode by i.e. sending |
mode by i.e. sending |
4465 |
<xref target="GET MIDI_INSTRUMENT INFO">"GET MIDI_INSTRUMENT INFO"</xref> |
<xref target="GET MIDI_INSTRUMENT INFO">"GET MIDI_INSTRUMENT INFO"</xref> |
4466 |
command(s). Finally the OPTIONAL <name> argument allows to |
command(s). Finally the OPTIONAL <name> argument allows to set a custom name |
4467 |
set a custom name (encapsulated into apostrophes) for the mapping |
(encapsulated into apostrophes, supporting escape sequences as described in chapter |
4468 |
entry, useful for frontends for displaying an appropriate name for |
"<xref target="character_set">Character Set and Escape Sequences</xref>") for the |
4469 |
|
mapping entry, useful for frontends for displaying an appropriate name for |
4470 |
mapped instruments (using |
mapped instruments (using |
4471 |
<xref target="GET MIDI_INSTRUMENT INFO">"GET MIDI_INSTRUMENT INFO"</xref>). |
<xref target="GET MIDI_INSTRUMENT INFO">"GET MIDI_INSTRUMENT INFO"</xref>). |
4472 |
</t> |
</t> |
4690 |
name for this mapped instrument. It can be set and |
name for this mapped instrument. It can be set and |
4691 |
changed with the |
changed with the |
4692 |
<xref target="MAP MIDI_INSTRUMENT">"MAP MIDI_INSTRUMENT"</xref> |
<xref target="MAP MIDI_INSTRUMENT">"MAP MIDI_INSTRUMENT"</xref> |
4693 |
command and does not have to be unique.</t> |
command and does not have to be unique. |
4694 |
|
(note that this character string may contain |
4695 |
|
<xref target="character_set">escape sequences</xref>)</t> |
4696 |
</list> |
</list> |
4697 |
</t> |
</t> |
4698 |
<t>"ENGINE_NAME" - |
<t>"ENGINE_NAME" - |
4703 |
</t> |
</t> |
4704 |
<t>"INSTRUMENT_FILE" - |
<t>"INSTRUMENT_FILE" - |
4705 |
<list> |
<list> |
4706 |
<t>File name of the instrument.</t> |
<t>File name of the instrument |
4707 |
|
(note that this path may contain |
4708 |
|
<xref target="character_set">escape sequences</xref>).</t> |
4709 |
</list> |
</list> |
4710 |
</t> |
</t> |
4711 |
<t>"INSTRUMENT_NR" - |
<t>"INSTRUMENT_NR" - |
4717 |
<list> |
<list> |
4718 |
<t>Name of the loaded instrument as reflected by its file. |
<t>Name of the loaded instrument as reflected by its file. |
4719 |
In contrast to the "NAME" field, the "INSTRUMENT_NAME" field |
In contrast to the "NAME" field, the "INSTRUMENT_NAME" field |
4720 |
cannot be changed.</t> |
cannot be changed (note that this character string may contain |
4721 |
|
<xref target="character_set">escape sequences</xref>).</t> |
4722 |
</list> |
</list> |
4723 |
</t> |
</t> |
4724 |
<t>"LOAD_MODE" - |
<t>"LOAD_MODE" - |
6015 |
editor application by sending the following command:</t> |
editor application by sending the following command:</t> |
6016 |
<t> |
<t> |
6017 |
<list> |
<list> |
6018 |
<t>EDIT INSTRUMENT <sampler-channel></t> |
<t>EDIT CHANNEL INSTRUMENT <sampler-channel></t> |
6019 |
</list> |
</list> |
6020 |
</t> |
</t> |
6021 |
<t>Where <sampler-channel> should be replaced by the |
<t>Where <sampler-channel> should be replaced by the |
6067 |
<t>Examples:</t> |
<t>Examples:</t> |
6068 |
<t> |
<t> |
6069 |
<list> |
<list> |
6070 |
<t>C: "EDIT INSTRUMENT 0"</t> |
<t>C: "EDIT CHANNEL INSTRUMENT 0"</t> |
6071 |
<t>S: "OK"</t> |
<t>S: "OK"</t> |
6072 |
</list> |
</list> |
6073 |
</t> |
</t> |
6560 |
</t> |
</t> |
6561 |
<t>edit_instruction = |
<t>edit_instruction = |
6562 |
<list> |
<list> |
6563 |
<t>INSTRUMENT SP sampler_channel |
<t>CHANNEL SP INSTRUMENT SP sampler_channel |
6564 |
</t> |
</t> |
6565 |
</list> |
</list> |
6566 |
</t> |
</t> |
6758 |
</t> |
</t> |
6759 |
<t>map_name = |
<t>map_name = |
6760 |
<list> |
<list> |
6761 |
<t>stringval |
<t>stringval_escaped |
6762 |
</t> |
</t> |
6763 |
</list> |
</list> |
6764 |
</t> |
</t> |
6765 |
<t>entry_name = |
<t>entry_name = |
6766 |
<list> |
<list> |
6767 |
<t>stringval |
<t>stringval_escaped |
6768 |
</t> |
</t> |
6769 |
</list> |
</list> |
6770 |
</t> |
</t> |
6771 |
<t>fx_send_name = |
<t>fx_send_name = |
6772 |
<list> |
<list> |
6773 |
<t>stringval |
<t>stringval_escaped |
6774 |
</t> |
</t> |
6775 |
</list> |
</list> |
6776 |
</t> |
</t> |
6782 |
</t> |
</t> |
6783 |
</list> |
</list> |
6784 |
</t> |
</t> |
6785 |
|
|
6786 |
<t>param_val = |
<t>param_val = |
6787 |
<list> |
<list> |
6788 |
<t>string |
<t>string |
6805 |
</t> |
</t> |
6806 |
<t>query_val = |
<t>query_val = |
6807 |
<list> |
<list> |
6808 |
<t>textval_escaped |
<t>text_escaped |
6809 |
</t> |
</t> |
6810 |
<t>/ stringval_escaped |
<t>/ stringval_escaped |
6811 |
</t> |
</t> |
6854 |
where escape characters are now supported, a backslash characters |
where escape characters are now supported, a backslash characters |
6855 |
MUST be escaped as well (that is as double backslash), whereas |
MUST be escaped as well (that is as double backslash), whereas |
6856 |
in the old versions a single backslash was sufficient.</t> |
in the old versions a single backslash was sufficient.</t> |
6857 |
|
|
6858 |
|
<t>The following LSCP commands support escape sequences as part |
6859 |
|
of their filename / path based arguments and / or may contain |
6860 |
|
a filename / path with escape sequences in their response: |
6861 |
|
<list> |
6862 |
|
<t><xref target="LOAD INSTRUMENT">"LOAD INSTRUMENT"</xref></t> |
6863 |
|
<t><xref target="GET CHANNEL INFO">"GET CHANNEL INFO"</xref></t> |
6864 |
|
<t><xref target="MAP MIDI_INSTRUMENT">"MAP MIDI_INSTRUMENT"</xref></t> |
6865 |
|
<t><xref target="GET MIDI_INSTRUMENT INFO">"GET MIDI_INSTRUMENT INFO"</xref></t> |
6866 |
|
<t><xref target="ADD DB_INSTRUMENT_DIRECTORY">"ADD DB_INSTRUMENT_DIRECTORY"</xref></t> |
6867 |
|
<t><xref target="ADD DB_INSTRUMENTS">"ADD DB_INSTRUMENTS"</xref></t> |
6868 |
|
<t><xref target="REMOVE DB_INSTRUMENT_DIRECTORY">"REMOVE DB_INSTRUMENT_DIRECTORY"</xref></t> |
6869 |
|
<t><xref target="REMOVE DB_INSTRUMENT">"REMOVE DB_INSTRUMENT"</xref></t> |
6870 |
|
<t><xref target="GET DB_INSTRUMENT_DIRECTORIES">"GET DB_INSTRUMENT_DIRECTORIES"</xref></t> |
6871 |
|
<t><xref target="LIST DB_INSTRUMENT_DIRECTORIES">"LIST DB_INSTRUMENT_DIRECTORIES"</xref></t> |
6872 |
|
<t><xref target="GET DB_INSTRUMENT_DIRECTORY INFO">"GET DB_INSTRUMENT_DIRECTORY INFO"</xref></t> |
6873 |
|
<t><xref target="GET DB_INSTRUMENTS">"GET DB_INSTRUMENTS"</xref></t> |
6874 |
|
<t><xref target="LIST DB_INSTRUMENTS">"LIST DB_INSTRUMENTS"</xref></t> |
6875 |
|
<t><xref target="GET DB_INSTRUMENT INFO">"GET DB_INSTRUMENT INFO"</xref></t> |
6876 |
|
<t><xref target="SET DB_INSTRUMENT_DIRECTORY NAME">"SET DB_INSTRUMENT_DIRECTORY NAME"</xref></t> |
6877 |
|
<t><xref target="SET DB_INSTRUMENT_DIRECTORY DESCRIPTION">"SET DB_INSTRUMENT_DIRECTORY DESCRIPTION"</xref></t> |
6878 |
|
<t><xref target="SET DB_INSTRUMENT NAME">"SET DB_INSTRUMENT NAME"</xref></t> |
6879 |
|
<t><xref target="SET DB_INSTRUMENT DESCRIPTION">"SET DB_INSTRUMENT DESCRIPTION"</xref></t> |
6880 |
|
<t><xref target="FIND DB_INSTRUMENTS">"FIND DB_INSTRUMENTS"</xref></t> |
6881 |
|
<t><xref target="FIND DB_INSTRUMENT_DIRECTORIES">"FIND DB_INSTRUMENT_DIRECTORIES"</xref></t> |
6882 |
|
<t><xref target="MOVE DB_INSTRUMENT">"MOVE DB_INSTRUMENT"</xref></t> |
6883 |
|
<t><xref target="MOVE DB_INSTRUMENT_DIRECTORY">"MOVE DB_INSTRUMENT_DIRECTORY"</xref></t> |
6884 |
|
<t><xref target="COPY DB_INSTRUMENT">"COPY DB_INSTRUMENT"</xref></t> |
6885 |
|
<t><xref target="COPY DB_INSTRUMENT_DIRECTORY">"COPY DB_INSTRUMENT_DIRECTORY"</xref></t> |
6886 |
|
</list> |
6887 |
|
Note that the forward slash character ('/') has a special meaning in |
6888 |
|
filename / path based arguments: it acts as separator of the nodes in |
6889 |
|
the path, thus if a directory- or filename includes a forward slash |
6890 |
|
(not intended as path node separator), you MUST escape that slash |
6891 |
|
either with the respective hex escape sequence ("\x2f") or with the |
6892 |
|
respective octal escape sequence ("\057"). |
6893 |
|
</t> |
6894 |
|
|
6895 |
|
<t> |
6896 |
|
The following LSCP commands even support escape sequences as |
6897 |
|
part of at least one of their text-based arguments (i.e. entity name, |
6898 |
|
description) and / or may contain escape sequences in at least one of |
6899 |
|
their text-based fields in their response: |
6900 |
|
<list> |
6901 |
|
<t><xref target="GET SERVER INFO">"GET SERVER INFO"</xref></t> |
6902 |
|
<t><xref target="GET ENGINE INFO">"GET ENGINE INFO"</xref></t> |
6903 |
|
<t><xref target="GET CHANNEL INFO">"GET CHANNEL INFO"</xref></t> |
6904 |
|
<t><xref target="CREATE FX_SEND">"CREATE FX_SEND"</xref></t> |
6905 |
|
<t><xref target="GET FX_SEND INFO">"GET FX_SEND INFO"</xref></t> |
6906 |
|
<t><xref target="SET FX_SEND NAME">"SET FX_SEND NAME"</xref></t> |
6907 |
|
<t><xref target="GET MIDI_INSTRUMENT INFO">"GET MIDI_INSTRUMENT INFO"</xref></t> |
6908 |
|
<t><xref target="GET MIDI_INSTRUMENT_MAP INFO">"GET MIDI_INSTRUMENT_MAP INFO"</xref></t> |
6909 |
|
<t><xref target="ADD MIDI_INSTRUMENT_MAP">"ADD MIDI_INSTRUMENT_MAP"</xref></t> |
6910 |
|
<t><xref target="MAP MIDI_INSTRUMENT">"MAP MIDI_INSTRUMENT"</xref></t> |
6911 |
|
<t><xref target="SET MIDI_INSTRUMENT_MAP NAME">"SET MIDI_INSTRUMENT_MAP NAME"</xref></t> |
6912 |
|
<t><xref target="GET DB_INSTRUMENT_DIRECTORY INFO">"GET DB_INSTRUMENT_DIRECTORY INFO"</xref></t> |
6913 |
|
<t><xref target="SET DB_INSTRUMENT_DIRECTORY NAME">"SET DB_INSTRUMENT_DIRECTORY NAME"</xref></t> |
6914 |
|
<t><xref target="SET DB_INSTRUMENT_DIRECTORY DESCRIPTION">"SET DB_INSTRUMENT_DIRECTORY DESCRIPTION"</xref></t> |
6915 |
|
<t><xref target="FIND DB_INSTRUMENT_DIRECTORIES">"FIND DB_INSTRUMENT_DIRECTORIES"</xref></t> |
6916 |
|
<t><xref target="GET DB_INSTRUMENT INFO">"GET DB_INSTRUMENT INFO"</xref></t> |
6917 |
|
<t><xref target="SET DB_INSTRUMENT NAME">"SET DB_INSTRUMENT NAME"</xref></t> |
6918 |
|
<t><xref target="SET DB_INSTRUMENT DESCRIPTION">"SET DB_INSTRUMENT DESCRIPTION"</xref></t> |
6919 |
|
<t><xref target="FIND DB_INSTRUMENTS">"FIND DB_INSTRUMENTS"</xref></t> |
6920 |
|
</list> |
6921 |
|
Please note that these lists are manually maintained. If you |
6922 |
|
find a command that also supports escape sequences we forgot to |
6923 |
|
mention here, please report it! |
6924 |
|
</t> |
6925 |
</section> |
</section> |
6926 |
</section> |
</section> |
6927 |
|
|
7163 |
all currently active voices.</t> |
all currently active voices.</t> |
7164 |
</section> |
</section> |
7165 |
|
|
7166 |
|
<section title="Total number of active disk streams changed" anchor="SUBSCRIBE TOTAL_STREAM_COUNT"> |
7167 |
|
<t>Client may want to be notified when the total number of disk streams on the |
7168 |
|
back-end changes by issuing the following command:</t> |
7169 |
|
<t> |
7170 |
|
<list> |
7171 |
|
<t>SUBSCRIBE TOTAL_STREAM_COUNT</t> |
7172 |
|
</list> |
7173 |
|
</t> |
7174 |
|
<t>Server will start sending the following notification messages:</t> |
7175 |
|
<t> |
7176 |
|
<list> |
7177 |
|
<t>"NOTIFY:TOTAL_STREAM_COUNT:<streams>"</t> |
7178 |
|
</list> |
7179 |
|
</t> |
7180 |
|
<t>where <streams> will be replaced by the new number of |
7181 |
|
all currently active disk streams.</t> |
7182 |
|
</section> |
7183 |
|
|
7184 |
<section title="Number of MIDI instrument maps changed" anchor="SUBSCRIBE MIDI_INSTRUMENT_MAP_COUNT"> |
<section title="Number of MIDI instrument maps changed" anchor="SUBSCRIBE MIDI_INSTRUMENT_MAP_COUNT"> |
7185 |
<t>Client may want to be notified when the number of MIDI instrument maps on the |
<t>Client may want to be notified when the number of MIDI instrument maps on the |
7186 |
back-end changes by issuing the following command:</t> |
back-end changes by issuing the following command:</t> |