1891 |
if (exclusive_status != 0xF0) goto free_sysex_data; |
if (exclusive_status != 0xF0) goto free_sysex_data; |
1892 |
|
|
1893 |
switch (id) { |
switch (id) { |
1894 |
|
case 0x7f: { // (Realtime) Universal Sysex (GM Standard) |
1895 |
|
uint8_t sysex_channel, sub_id1, sub_id2, val_msb, val_lsb;; |
1896 |
|
if (!reader.pop(&sysex_channel)) goto free_sysex_data; |
1897 |
|
if (!reader.pop(&sub_id1)) goto free_sysex_data; |
1898 |
|
if (!reader.pop(&sub_id2)) goto free_sysex_data; |
1899 |
|
if (!reader.pop(&val_lsb)) goto free_sysex_data; |
1900 |
|
if (!reader.pop(&val_msb)) goto free_sysex_data; |
1901 |
|
//TODO: for now we simply ignore the sysex channel, seldom used anyway |
1902 |
|
switch (sub_id1) { |
1903 |
|
case 0x04: // Device Control |
1904 |
|
switch (sub_id2) { |
1905 |
|
case 0x01: // Master Volume |
1906 |
|
GLOBAL_VOLUME = |
1907 |
|
double((uint(val_msb)<<7) | uint(val_lsb)) / 16383.0; |
1908 |
|
break; |
1909 |
|
} |
1910 |
|
break; |
1911 |
|
} |
1912 |
|
break; |
1913 |
|
} |
1914 |
case 0x41: { // Roland |
case 0x41: { // Roland |
1915 |
dmsg(3,("Roland Sysex\n")); |
dmsg(3,("Roland Sysex\n")); |
1916 |
uint8_t device_id, model_id, cmd_id; |
uint8_t device_id, model_id, cmd_id; |
2089 |
} |
} |
2090 |
|
|
2091 |
String Engine::Version() { |
String Engine::Version() { |
2092 |
String s = "$Revision: 1.91 $"; |
String s = "$Revision: 1.92 $"; |
2093 |
return s.substr(11, s.size() - 13); // cut dollar signs, spaces and CVS macro keyword |
return s.substr(11, s.size() - 13); // cut dollar signs, spaces and CVS macro keyword |
2094 |
} |
} |
2095 |
|
|