aboutsummaryrefslogtreecommitdiff
path: root/sky/music
diff options
context:
space:
mode:
authorRobert Göffringmann2003-07-12 06:20:40 +0000
committerRobert Göffringmann2003-07-12 06:20:40 +0000
commit8e776dea077d974181e6dff7e296a3a065a83274 (patch)
tree956134d071398d1f0d5117c9aade9224c4aff54b /sky/music
parent3e578daa0144f40fe78e7f6baf90842be9c5b788 (diff)
downloadscummvm-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.cpp32
-rw-r--r--sky/music/gmchannel.h4
-rw-r--r--sky/music/gmmusic.cpp17
-rw-r--r--sky/music/gmmusic.h1
-rw-r--r--sky/music/mt32music.cpp2
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);
}
}