Ticket #1261: volume.diff
File volume.diff, 1.2 KB (added by , 20 years ago) |
---|
-
gmmusic.cpp
old new 55 55 56 56 uint8 sysEx[6]; 57 57 _musicVolume = volume; 58 if (volume > 0) volume = (volume * 2) / 3 + 43; // GM synths behave kinda logarithmic59 58 sysEx[0] = 0x7F; sysEx[1] = 0x7F; sysEx[2] = 0x04; sysEx[3] = 0x01; 60 sysEx[4] = 0; sysEx[5] = volume & 0x7F;59 sysEx[4] = 0; sysEx[5] = volume; 61 60 _midiDrv->sysEx(sysEx, 6); 62 61 } 63 62 -
mt32music.cpp
old new 61 61 62 62 void SkyMT32Music::setVolume(uint8 volume) { 63 63 64 uint8 sysEx[ 6];64 uint8 sysEx[9]; 65 65 _musicVolume = volume; 66 sysEx[0] = 0x7F; sysEx[1] = 0x7F; sysEx[2] = 0x04; sysEx[3] = 0x01; 67 sysEx[4] = 0; sysEx[5] = volume & 0x7F; 68 _midiDrv->sysEx(sysEx, 6); 66 volume = (volume * 100) >> 7; 67 memcpy(&sysEx[0], "\x41\x10\x16\x12\x10\x00\x16\x00\x00", 9); 68 sysEx[0] = 0x41; sysEx[1] = 0x10; sysEx[2] = 0x16; sysEx[3] = 0x12; 69 sysEx[4] = 0x10; sysEx[5] = 0x00; sysEx[6] = 0x16; sysEx[7] = volume; 70 sysEx[8] = 0x00; 71 for (uint8 cnt = 4; cnt < 8; cnt++) 72 sysEx[8] -= sysEx[cnt]; 73 sysEx[8] &= 0x7F; 74 _midiDrv->sysEx(sysEx, 9); 69 75 } 70 76 71 77 void SkyMT32Music::setupPointers(void) {