From 0a13249831ff8439efcb1e5e9cbe00b6668f7851 Mon Sep 17 00:00:00 2001 From: Kentaro Sato Date: Wed, 21 Jan 2004 17:11:04 +0000 Subject: [PATCH] Removed GM2 default MSB support. Added new map 'gm2[drum]' and 'sc8850[drum]'. --- ChangeLog | 13 +++++++++++-- timidity/playmidi.c | 11 ++++++++--- timidity/readmidi.c | 21 ++++++++++++++------- 3 files changed, 33 insertions(+), 12 deletions(-) diff --git a/ChangeLog b/ChangeLog index 30605688..36e186dc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2004-01-21 Kentaro Sato + + * timidity/instrum.h, timidity/playmidi.c, + timidity/readmidi.c, timidity/timidity.c: + Removed GM2 default MSB support. + Added new map 'gm2[drum]' (GM2) and 'sc8850[drum]' (GS LSB=4). + Note that although GS LSB=4 indicates both SC-8820 and SC-8850 + and they're mapped identically, waveforms in the actual hardwares differ. + 2004-01-21 mput * doc/ja_JP.ujis/timidity.cfg.5: sorry, I was confusing. revert. @@ -24,7 +33,7 @@ 2004-01-20 Kentaro Sato - * interface/dumb_c.c, timidity/playmidi.c, sndfont.c: + * interface/dumb_c.c, timidity/playmidi.c, timidity/sndfont.c: Added playnote calculation for cfgforsf (finished). 2004-01-20 Saito @@ -57,7 +66,7 @@ 2004-01-15 Kentaro Sato - * timidity/common.[ch], sndfont.c, timidity.c: + * timidity/common.[ch], timidity/sndfont.c, timidity/timidity.c: Changed #extension ...send, playnote option's argument format. 2004-01-15 Saito diff --git a/timidity/playmidi.c b/timidity/playmidi.c index 7f2847d3..24b20f4d 100644 --- a/timidity/playmidi.c +++ b/timidity/playmidi.c @@ -658,9 +658,7 @@ static void reset_midi(int playing) } channel[i].bank_lsb = channel[i].bank_msb = channel[i].tone_map0_number = 0; - if (play_system_mode == GM2_SYSTEM_MODE) - channel[i].bank_msb = (i % 16 == 9) ? 0x78 : 0x79; - else if (play_system_mode == XG_SYSTEM_MODE && i % 16 == 9) + if (play_system_mode == XG_SYSTEM_MODE && i % 16 == 9) channel[i].bank_msb = 127; /* Use MSB=127 for XG */ update_rpn_map(i, RPN_ADDR_FFFF, 0); channel[i].special_sample = 0; @@ -3453,6 +3451,9 @@ void midi_program_change(int ch, int prog) case 3: channel[ch].mapID = (dr) ? SC_88PRO_DRUM_MAP : SC_88PRO_TONE_MAP; break; + case 4: + channel[ch].mapID = (dr) ? SC_8850_DRUM_MAP : SC_8850_TONE_MAP; + break; default: break; } @@ -3485,6 +3486,10 @@ void midi_program_change(int ch, int prog) } newbank = channel[ch].bank_lsb; break; + case GM2_SYSTEM_MODE: /* GM2 */ + channel[ch].mapID = (dr) ? GM2_DRUM_MAP : GM2_TONE_MAP; + newbank = channel[ch].bank_lsb; + break; default: newbank = channel[ch].bank_msb; break; diff --git a/timidity/readmidi.c b/timidity/readmidi.c index 3a7e0c0c..bedaa74c 100644 --- a/timidity/readmidi.c +++ b/timidity/readmidi.c @@ -4603,9 +4603,7 @@ static MidiEvent *groom_list(int32 divisions, int32 *eventsp, int32 *samplesp) current_set[j] = newbank; } bank_lsb[j] = bank_msb[j] = 0; - if(play_system_mode == GM2_SYSTEM_MODE) - bank_msb[j] = (j % 16 == 9) ? 0x78 : 0x79; - else if(play_system_mode == XG_SYSTEM_MODE && j % 16 == 9) + if(play_system_mode == XG_SYSTEM_MODE && j % 16 == 9) bank_msb[j] = 127; /* Use MSB=127 for XG */ current_program[j] = default_program[j]; } @@ -4665,9 +4663,7 @@ static MidiEvent *groom_list(int32 divisions, int32 *eventsp, int32 *samplesp) current_set[j] = 0; } bank_lsb[j] = bank_msb[j] = 0; - if(play_system_mode == GM2_SYSTEM_MODE) - bank_msb[j] = (j % 16 == 9) ? 0x78 : 0x79; - else if(play_system_mode == XG_SYSTEM_MODE && j % 16 == 9) + if(play_system_mode == XG_SYSTEM_MODE && j % 16 == 9) bank_msb[j] = 127; /* Use MSB=127 for XG */ current_program[j] = default_program[j]; } @@ -4704,6 +4700,12 @@ static MidiEvent *groom_list(int32 divisions, int32 *eventsp, int32 *samplesp) mapID[ch] = (!ISDRUMCHANNEL(ch) ? SC_88PRO_TONE_MAP : SC_88PRO_DRUM_MAP); break; + case 4: + ctl->cmsg(CMSG_INFO, VERB_DEBUG, + "(GS ch=%d SC-8820/SC-8850 MAP)", ch); + mapID[ch] = (!ISDRUMCHANNEL(ch) ? SC_8850_TONE_MAP + : SC_8850_DRUM_MAP); + break; default: ctl->cmsg(CMSG_INFO, VERB_DEBUG, "(GS: ch=%d Strange bank LSB %d)", @@ -4755,6 +4757,12 @@ static MidiEvent *groom_list(int32 divisions, int32 *eventsp, int32 *samplesp) newbank = bank_lsb[ch]; break; + case GM2_SYSTEM_MODE: + ctl->cmsg(CMSG_INFO, VERB_DEBUG, "(GM2 ch=%d)", ch); + mapID[ch] = (!ISDRUMCHANNEL(ch) ? GM2_TONE_MAP : GM2_DRUM_MAP); + newbank = bank_lsb[ch]; + break; + default: newbank = bank_msb[ch]; break; @@ -6723,4 +6731,3 @@ void remove_channel_layer(int ch) UNSET_CHANNELMASK(channel[i].channel_layer, ch); SET_CHANNELMASK(channel[ch].channel_layer, ch); } - -- 2.11.0