diff options
author | James Cowgill <jcowgill@debian.org> | 2017-12-18 14:42:13 +0000 |
---|---|---|
committer | James Cowgill <jcowgill@debian.org> | 2017-12-18 14:42:13 +0000 |
commit | 521dfbf1745f9d1a698d61268546d43465e56d43 (patch) | |
tree | 4dbaabf48b8ad7c9d4267041a75833e1fa4928f1 /soundlib/ITTools.cpp | |
parent | 3b3e8a946b9409674a3b5b7f23a92b9e0c947120 (diff) |
New upstream version 0.3.4
Diffstat (limited to 'soundlib/ITTools.cpp')
-rw-r--r-- | soundlib/ITTools.cpp | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/soundlib/ITTools.cpp b/soundlib/ITTools.cpp index 2e8b7c2..8c9823a 100644 --- a/soundlib/ITTools.cpp +++ b/soundlib/ITTools.cpp @@ -42,16 +42,15 @@ void ITEnvelope::ConvertToIT(const InstrumentEnvelope &mptEnv, uint8 envOffset, // Attention: Full MPTM envelope is stored in extended instrument properties for(uint32 ev = 0; ev < num; ev++) { - data[ev * 3] = mptEnv[ev].value - envOffset; - data[ev * 3 + 1] = mptEnv[ev].tick & 0xFF; - data[ev * 3 + 2] = mptEnv[ev].tick >> 8; + data[ev].value = static_cast<int8>(mptEnv[ev].value) - envOffset; + data[ev].tick = mptEnv[ev].tick; } } else { // Fix non-existing envelopes so that they can still be edited in Impulse Tracker. num = 2; - data[0] = data[3] = envDefault - envOffset; - data[4] = 10; + data[0].value = data[1].value = envDefault - envOffset; + data[1].tick = 10; } } @@ -76,8 +75,8 @@ void ITEnvelope::ConvertToMPT(InstrumentEnvelope &mptEnv, uint8 envOffset, uint8 // Attention: Full MPTM envelope is stored in extended instrument properties for(uint32 ev = 0; ev < std::min<uint32>(25, num); ev++) { - mptEnv[ev].value = data[ev * 3] + envOffset; - mptEnv[ev].tick = (data[ev * 3 + 2] << 8) | (data[ev * 3 + 1]); + mptEnv[ev].value = Clamp<int8, int8>(data[ev].value + envOffset, 0, 64); + mptEnv[ev].tick = data[ev].tick; if(ev > 0 && ev < num && mptEnv[ev].tick < mptEnv[ev - 1].tick) { // Fix broken envelopes... Instruments 2 and 3 in NoGap.it by Werewolf have envelope points where the high byte of envelope nodes is missing. |