diff options
author | Robert Göffringmann | 2003-07-12 06:20:40 +0000 |
---|---|---|
committer | Robert Göffringmann | 2003-07-12 06:20:40 +0000 |
commit | 8e776dea077d974181e6dff7e296a3a065a83274 (patch) | |
tree | 956134d071398d1f0d5117c9aade9224c4aff54b /sky/music | |
parent | 3e578daa0144f40fe78e7f6baf90842be9c5b788 (diff) | |
download | scummvm-rg350-8e776dea077d974181e6dff7e296a3a065a83274.tar.gz scummvm-rg350-8e776dea077d974181e6dff7e296a3a065a83274.tar.bz2 scummvm-rg350-8e776dea077d974181e6dff7e296a3a065a83274.zip |
fixed mt32 key velocities
svn-id: r8931
Diffstat (limited to 'sky/music')
-rw-r--r-- | sky/music/gmchannel.cpp | 32 | ||||
-rw-r--r-- | sky/music/gmchannel.h | 4 | ||||
-rw-r--r-- | sky/music/gmmusic.cpp | 17 | ||||
-rw-r--r-- | sky/music/gmmusic.h | 1 | ||||
-rw-r--r-- | sky/music/mt32music.cpp | 2 |
5 files changed, 25 insertions, 31 deletions
diff --git a/sky/music/gmchannel.cpp b/sky/music/gmchannel.cpp index c47d07ba82..31c5e97847 100644 --- a/sky/music/gmchannel.cpp +++ b/sky/music/gmchannel.cpp @@ -23,33 +23,10 @@ // the MT32 is a lot more sensitive to velocities than most general midi devices, // so we need to boost them a little -/*uint8 SkyGmChannel::_veloTab[128] = { -0x00, 0x30, 0x31, 0x31, 0x32, 0x33, 0x33, 0x34, 0x34, 0x35, 0x36, 0x36, 0x37, -0x38, 0x38, 0x39, 0x39, 0x3A, 0x3B, 0x3B, 0x3C, 0x3D, 0x3D, 0x3E, 0x3E, 0x3F, -0x40, 0x40, 0x41, 0x42, 0x42, 0x43, 0x43, 0x44, 0x45, 0x45, 0x46, 0x47, 0x47, -0x48, 0x48, 0x49, 0x4A, 0x4A, 0x4B, 0x4C, 0x4C, 0x4D, 0x4D, 0x4E, 0x4F, 0x4F, -0x50, 0x50, 0x51, 0x52, 0x52, 0x53, 0x54, 0x54, 0x55, 0x55, 0x56, 0x57, 0x57, -0x58, 0x59, 0x59, 0x5A, 0x5A, 0x5B, 0x5C, 0x5C, 0x5D, 0x5E, 0x5E, 0x5F, 0x5F, -0x60, 0x61, 0x61, 0x62, 0x63, 0x63, 0x64, 0x64, 0x65, 0x66, 0x66, 0x67, 0x68, -0x68, 0x69, 0x69, 0x6A, 0x6B, 0x6B, 0x6C, 0x6C, 0x6D, 0x6E, 0x6E, 0x6F, 0x70, -0x70, 0x71, 0x71, 0x72, 0x73, 0x73, 0x74, 0x75, 0x75, 0x76, 0x76, 0x77, 0x78, -0x78, 0x79, 0x7A, 0x7A, 0x7B, 0x7B, 0x7C, 0x7D, 0x7D, 0x7E, 0x7F };*/ -uint8 SkyGmChannel::_veloTab[128] = { -0x00, 0x40, 0x41, 0x41, 0x42, 0x42, 0x43, 0x43, 0x44, 0x44, -0x45, 0x45, 0x46, 0x46, 0x47, 0x47, 0x48, 0x48, 0x49, 0x49, -0x4A, 0x4A, 0x4B, 0x4B, 0x4C, 0x4C, 0x4D, 0x4D, 0x4E, 0x4E, -0x4F, 0x4F, 0x50, 0x50, 0x51, 0x51, 0x52, 0x52, 0x53, 0x53, -0x54, 0x54, 0x55, 0x55, 0x56, 0x56, 0x57, 0x57, 0x58, 0x58, -0x59, 0x59, 0x5A, 0x5A, 0x5B, 0x5B, 0x5C, 0x5C, 0x5D, 0x5D, -0x5E, 0x5E, 0x5F, 0x5F, 0x60, 0x60, 0x61, 0x61, 0x62, 0x62, -0x63, 0x63, 0x64, 0x64, 0x65, 0x65, 0x66, 0x66, 0x67, 0x67, -0x68, 0x68, 0x69, 0x69, 0x6A, 0x6A, 0x6B, 0x6B, 0x6C, 0x6C, -0x6D, 0x6D, 0x6E, 0x6E, 0x6F, 0x6F, 0x70, 0x70, 0x71, 0x71, -0x72, 0x72, 0x73, 0x73, 0x74, 0x74, 0x75, 0x75, 0x76, 0x76, -0x77, 0x77, 0x78, 0x78, 0x79, 0x79, 0x7A, 0x7A, 0x7B, 0x7B, -0x7C, 0x7C, 0x7D, 0x7D, 0x7E, 0x7E, 0x7F, 0x7F }; - -SkyGmChannel::SkyGmChannel(uint8 *pMusicData, uint16 startOfData, MidiDriver *pMidiDrv, byte *pInstMap) + + + +SkyGmChannel::SkyGmChannel(uint8 *pMusicData, uint16 startOfData, MidiDriver *pMidiDrv, byte *pInstMap, uint8 *veloTab) { _musicData = pMusicData; _midiDrv = pMidiDrv; @@ -59,6 +36,7 @@ SkyGmChannel::SkyGmChannel(uint8 *pMusicData, uint16 startOfData, MidiDriver *pM _channelData.channelActive = 1; _channelData.nextEventTime = getNextEventTime(); _mt32_to_gm = pInstMap; + _veloTab = veloTab; _musicVolume = 0x100; } diff --git a/sky/music/gmchannel.h b/sky/music/gmchannel.h index 0ec0ed6a7c..4684678c45 100644 --- a/sky/music/gmchannel.h +++ b/sky/music/gmchannel.h @@ -38,14 +38,14 @@ typedef struct { class SkyGmChannel : public SkyChannelBase { public: - SkyGmChannel(uint8 *pMusicData, uint16 startOfData, MidiDriver *pMidiDrv, byte *pInstMap); + SkyGmChannel(uint8 *pMusicData, uint16 startOfData, MidiDriver *pMidiDrv, byte *pInstMap, uint8 *veloTab); virtual void stopNote(void); virtual uint8 process(uint16 aktTime); virtual void updateVolume(uint16 pVolume); virtual bool isActive(void); private: byte *_mt32_to_gm; - static uint8 _veloTab[128]; + uint8 *_veloTab; MidiDriver *_midiDrv; uint8 *_musicData; uint16 _musicVolume; diff --git a/sky/music/gmmusic.cpp b/sky/music/gmmusic.cpp index 31e9d2e87f..2d596598ba 100644 --- a/sky/music/gmmusic.cpp +++ b/sky/music/gmmusic.cpp @@ -79,7 +79,7 @@ void SkyGmMusic::setupChannels(uint8 *channelData) { channelData++; for (uint8 cnt = 0; cnt < _numberOfChannels; cnt++) { uint16 chDataStart = ((channelData[(cnt << 1) | 1] << 8) | channelData[cnt << 1]) + _musicDataLoc; - _channels[cnt] = new SkyGmChannel(_musicData, chDataStart, _midiDrv, _mt32_to_gm); + _channels[cnt] = new SkyGmChannel(_musicData, chDataStart, _midiDrv, _mt32_to_gm, _veloTab); } } @@ -100,3 +100,18 @@ byte SkyGmMusic::_mt32_to_gm[128] = { 61, 11, 11, 98, 14, 9, 14, 13, 12, 107, 107, 77, 78, 78, 76, 76, // 6x 47, 117, 127, 118, 118, 116, 115, 119, 115, 112, 55, 124, 123, 0, 14, 117, // 7x }; + +uint8 SkyGmMusic::_veloTab[128] = { +0x00, 0x40, 0x41, 0x41, 0x42, 0x42, 0x43, 0x43, 0x44, 0x44, +0x45, 0x45, 0x46, 0x46, 0x47, 0x47, 0x48, 0x48, 0x49, 0x49, +0x4A, 0x4A, 0x4B, 0x4B, 0x4C, 0x4C, 0x4D, 0x4D, 0x4E, 0x4E, +0x4F, 0x4F, 0x50, 0x50, 0x51, 0x51, 0x52, 0x52, 0x53, 0x53, +0x54, 0x54, 0x55, 0x55, 0x56, 0x56, 0x57, 0x57, 0x58, 0x58, +0x59, 0x59, 0x5A, 0x5A, 0x5B, 0x5B, 0x5C, 0x5C, 0x5D, 0x5D, +0x5E, 0x5E, 0x5F, 0x5F, 0x60, 0x60, 0x61, 0x61, 0x62, 0x62, +0x63, 0x63, 0x64, 0x64, 0x65, 0x65, 0x66, 0x66, 0x67, 0x67, +0x68, 0x68, 0x69, 0x69, 0x6A, 0x6A, 0x6B, 0x6B, 0x6C, 0x6C, +0x6D, 0x6D, 0x6E, 0x6E, 0x6F, 0x6F, 0x70, 0x70, 0x71, 0x71, +0x72, 0x72, 0x73, 0x73, 0x74, 0x74, 0x75, 0x75, 0x76, 0x76, +0x77, 0x77, 0x78, 0x78, 0x79, 0x79, 0x7A, 0x7A, 0x7B, 0x7B, +0x7C, 0x7C, 0x7D, 0x7D, 0x7E, 0x7E, 0x7F, 0x7F };
\ No newline at end of file diff --git a/sky/music/gmmusic.h b/sky/music/gmmusic.h index fa3208395b..925e60d1a3 100644 --- a/sky/music/gmmusic.h +++ b/sky/music/gmmusic.h @@ -41,6 +41,7 @@ private: uint8 *_sysExSequence; MidiDriver *_midiDrv; static byte _mt32_to_gm[128]; + static uint8 _veloTab[128]; virtual void setupPointers(void); virtual void setupChannels(uint8 *channelData); diff --git a/sky/music/mt32music.cpp b/sky/music/mt32music.cpp index 482721af19..93d594de2d 100644 --- a/sky/music/mt32music.cpp +++ b/sky/music/mt32music.cpp @@ -79,7 +79,7 @@ void SkyMT32Music::setupChannels(uint8 *channelData) { channelData++; for (uint8 cnt = 0; cnt < _numberOfChannels; cnt++) { uint16 chDataStart = ((channelData[(cnt << 1) | 1] << 8) | channelData[cnt << 1]) + _musicDataLoc; - _channels[cnt] = new SkyGmChannel(_musicData, chDataStart, _midiDrv, _dummyMap); + _channels[cnt] = new SkyGmChannel(_musicData, chDataStart, _midiDrv, _dummyMap, _dummyMap); } } |