aboutsummaryrefslogtreecommitdiff
path: root/sound
diff options
context:
space:
mode:
authorMax Horn2002-07-23 10:29:11 +0000
committerMax Horn2002-07-23 10:29:11 +0000
commit07966f6ccca7c3e944d1010eb6eb681c913dc281 (patch)
tree3b699708a1b48ab34e717f5d816c38ea19723345 /sound
parenta0be9ffde37c5f461046ce3ff00118ae741ad8e6 (diff)
downloadscummvm-rg350-07966f6ccca7c3e944d1010eb6eb681c913dc281.tar.gz
scummvm-rg350-07966f6ccca7c3e944d1010eb6eb681c913dc281.tar.bz2
scummvm-rg350-07966f6ccca7c3e944d1010eb6eb681c913dc281.zip
renamed SPECIAL_CHANNEL to PERCUSSION_CHANNEL; don't apply MT32->GM conversion on percussion channel; some indention fixes
svn-id: r4621
Diffstat (limited to 'sound')
-rw-r--r--sound/imuse.cpp56
1 files changed, 22 insertions, 34 deletions
diff --git a/sound/imuse.cpp b/sound/imuse.cpp
index 9cc0cfc5e1..677a5c79f2 100644
--- a/sound/imuse.cpp
+++ b/sound/imuse.cpp
@@ -32,7 +32,7 @@
#define TICKS_PER_BEAT 480
#define SYSEX_ID 0x7D
-#define SPECIAL_CHANNEL 9
+#define PERCUSSION_CHANNEL 9
#define TRIGGER_ID 0
#define COMMAND_ID 1
@@ -210,15 +210,12 @@ struct IsNoteCmdData {
struct MidiChannel {
Part *_part;
- MidiChannelAdl *adl() {
- return (MidiChannelAdl *)this;
- } MidiChannelGM *gm() {
- return (MidiChannelGM *) this;
- }
+ MidiChannelAdl *adl() { return (MidiChannelAdl *)this; }
+ MidiChannelGM *gm() { return (MidiChannelGM *)this; }
};
-struct MidiChannelGM:MidiChannel {
+struct MidiChannelGM : MidiChannel {
byte _chan;
uint16 _actives[8];
};
@@ -488,7 +485,7 @@ struct Instrument {
byte duration;
};
-struct MidiChannelAdl:MidiChannel {
+struct MidiChannelAdl : MidiChannel {
MidiChannelAdl *_next, *_prev;
byte _waitforpedal;
byte _note;
@@ -588,7 +585,7 @@ public:
/* IMuseGM classes */
-class IMuseGM:public IMuseDriver {
+class IMuseGM : public IMuseDriver {
IMuseInternal *_se;
OSystem *_system;
MidiDriver *_md;
@@ -618,34 +615,25 @@ class IMuseGM:public IMuseDriver {
void midiInit();
public:
- IMuseGM(MidiDriver *midi) {
- _md = midi;
- } void uninit();
+ IMuseGM(MidiDriver *midi) { _md = midi; }
+ void uninit();
void init(IMuseInternal *eng, OSystem *os);
void update_pris();
void part_off(Part *part);
int part_update_active(Part *part, uint16 *active);
- void on_timer() {
- }
- void set_instrument(uint slot, byte *instr) {
- }
- void part_set_instrument(Part *part, Instrument * instr) {
- }
- void part_set_param(Part *part, byte param, int value) {
- }
+ void on_timer() {}
+ void set_instrument(uint slot, byte *instr) {}
+ void part_set_instrument(Part *part, Instrument * instr) {}
+ void part_set_param(Part *part, byte param, int value) {}
void part_key_on(Part *part, byte note, byte velocity);
void part_key_off(Part *part, byte note);
void part_changed(Part *part, byte what);
static int midi_driver_thread(void *param);
- uint32 get_base_tempo() {
- return 0x460000;
- }
- byte get_hardware_type() {
- return 5;
- }
+ uint32 get_base_tempo() { return 0x460000; }
+ byte get_hardware_type() { return 5; }
};
@@ -4202,12 +4190,12 @@ void IMuseGM::midiControl0(byte chan, byte value)
void IMuseGM::midiProgram(byte chan, byte program, bool mt32emulate)
{
-// if ((chan + 1) != 10) { /* Ignore percussion prededed by patch change */
- if (mt32emulate)
- program = mt32_to_gmidi[program];
+ if (mt32emulate) { /* Don't convert the percussion channel, it is the same in GM and MT32 */
+ if (chan != PERCUSSION_CHANNEL)
+ program = mt32_to_gmidi[program];
+ }
_md->send(program << 8 | 0xC0 | chan);
-// }
}
void IMuseGM::midiPan(byte chan, int8 pan)
@@ -4243,9 +4231,9 @@ void IMuseGM::part_key_on(Part *part, byte note, byte velocity)
mc->_actives[note >> 4] |= (1 << (note & 0xF));
midiNoteOn(mc->_chan, note, velocity);
} else if (part->_percussion) {
- midiVolume(SPECIAL_CHANNEL, part->_vol_eff);
- midiProgram(SPECIAL_CHANNEL, part->_bank, part->_player->_mt32emulate);
- midiNoteOn(SPECIAL_CHANNEL, note, velocity);
+ midiVolume(PERCUSSION_CHANNEL, part->_vol_eff);
+ midiProgram(PERCUSSION_CHANNEL, part->_bank, part->_player->_mt32emulate);
+ midiNoteOn(PERCUSSION_CHANNEL, note, velocity);
}
}
@@ -4257,7 +4245,7 @@ void IMuseGM::part_key_off(Part *part, byte note)
mc->_actives[note >> 4] &= ~(1 << (note & 0xF));
midiNoteOff(mc->_chan, note);
} else if (part->_percussion) {
- midiNoteOff(SPECIAL_CHANNEL, note);
+ midiNoteOff(PERCUSSION_CHANNEL, note);
}
}