[Scummvm-cvs-logs] SF.net SVN: scummvm:[33835] scummvm/branches/gsoc2008-tfmx/sound/mods
marwanhilmi at users.sourceforge.net
marwanhilmi at users.sourceforge.net
Wed Aug 13 20:14:53 CEST 2008
Revision: 33835
http://scummvm.svn.sourceforge.net/scummvm/?rev=33835&view=rev
Author: marwanhilmi
Date: 2008-08-13 18:14:51 +0000 (Wed, 13 Aug 2008)
Log Message:
-----------
Added statement to distinguish between note types.
Modified Paths:
--------------
scummvm/branches/gsoc2008-tfmx/sound/mods/tfmx.cpp
scummvm/branches/gsoc2008-tfmx/sound/mods/tfmx.h
Modified: scummvm/branches/gsoc2008-tfmx/sound/mods/tfmx.cpp
===================================================================
--- scummvm/branches/gsoc2008-tfmx/sound/mods/tfmx.cpp 2008-08-13 17:49:31 UTC (rev 33834)
+++ scummvm/branches/gsoc2008-tfmx/sound/mods/tfmx.cpp 2008-08-13 18:14:51 UTC (rev 33835)
@@ -379,11 +379,21 @@
if (!_tracks[trackNumber].macroOn) {
_tracks[trackNumber].macroNumber = byte2;
loadMacro( trackNumber, (_tracks[trackNumber].macroNumber) );
+ if (byte1 < 0x80) {
+ _tracks[trackNumber].activeMacro.noteType = 1; //byte4 = finetune
+ _tracks[trackNumber].activeMacro.noteFineTune = byte4;
+ }
+ else if (byte1 < 0xC0) {
+ _tracks[trackNumber].activeMacro.noteType = 2; //byte4 = wait
+ _tracks[trackNumber].activeMacro.noteWait = byte4;
+ }
+ else {
+ _tracks[trackNumber].activeMacro.noteType = 3; //byte4 = portamento rate
+ }
_tracks[trackNumber].macroOn = true; //set to false again when macro terminates
_tracks[trackNumber].activeMacro.noteNumber = byte1;
_tracks[trackNumber].activeMacro.noteVelocity = (byte3 & 0xF0) >> 4;
_tracks[trackNumber].activeMacro.noteChannel = (byte3 & 0x0F);
- // _tracks[trackNumber].activePattern.patternWait += byte4;
_tracks[trackNumber].activeMacro.notePeriod = periods[(_tracks[trackNumber].activeMacro.noteNumber + _tracks[trackNumber].activePattern.patternTranspose) & 0x3F];
}
@@ -392,7 +402,6 @@
doMacro(trackNumber);
}
}
-
if (_tracks[trackNumber].activeMacro.macroWait != 0) {
_tracks[trackNumber].activeMacro.macroWait--;
}
@@ -403,6 +412,9 @@
if (!_tracks[trackNumber].macroOn) {
_tracks[trackNumber].activePattern.data++;
_tracks[trackNumber].activePattern.patternCount++;
+ if (_tracks[trackNumber].activeMacro.noteType == 2) {
+ _tracks[trackNumber].activePattern.patternWait += _tracks[trackNumber].activeMacro.noteWait;
+ }
}
//IF THE END IS REACHED, TURN PATTERN OFF
if (_tracks[trackNumber].activePattern.patternCount == _tracks[trackNumber].activePattern.patternLength) {
@@ -419,7 +431,9 @@
_tracks[trackNumber].activeMacro.macroCount = 0;
_tracks[trackNumber].activeMacro.macroLength = numCommands;
-
+ _tracks[trackNumber].activeMacro.noteType = 0;
+ _tracks[trackNumber].activeMacro.noteFineTune = 0;
+
Common::MemoryReadStream dataStream(_data, _dataSize);
Common::SeekableSubReadStream macroSubStream(&dataStream, startPosition, endPosition);
@@ -494,7 +508,7 @@
case 0x8: //add note
tunedPeriod = (periods[(byte2 + currentPeriod) & (0x3F)]);
_tracks[trackNumber].activeMacro.fineTune = sbyte3 / 0x100;
- //_tracks[trackNumber].activeMacro.fineTune += (_tracks[trackNumber].activeMacro.noteFineTune / 0x100);
+ _tracks[trackNumber].activeMacro.fineTune += (_tracks[trackNumber].activeMacro.noteFineTune / 0x100);
_tracks[trackNumber].activeMacro.fineTune += 1;
_tracks[trackNumber].activeMacro.notePeriod = (int)(tunedPeriod * _tracks[trackNumber].activeMacro.fineTune);
_tracks[trackNumber].activeMacro.macroWait = 1;
@@ -502,7 +516,7 @@
case 0x9: //set note
tunedPeriod = (periods[(byte2) & (0x3F)]);
_tracks[trackNumber].activeMacro.fineTune = sbyte3 / 0x100;
- //_tracks[trackNumber].activeMacro.fineTune += (_tracks[trackNumber].activeMacro.noteFineTune / 0x100);
+ _tracks[trackNumber].activeMacro.fineTune += (_tracks[trackNumber].activeMacro.noteFineTune / 0x100);
_tracks[trackNumber].activeMacro.fineTune += 1;
_tracks[trackNumber].activeMacro.notePeriod = (int)(tunedPeriod * _tracks[trackNumber].activeMacro.fineTune);
_tracks[trackNumber].activeMacro.macroWait = 1;
Modified: scummvm/branches/gsoc2008-tfmx/sound/mods/tfmx.h
===================================================================
--- scummvm/branches/gsoc2008-tfmx/sound/mods/tfmx.h 2008-08-13 17:49:31 UTC (rev 33834)
+++ scummvm/branches/gsoc2008-tfmx/sound/mods/tfmx.h 2008-08-13 18:14:51 UTC (rev 33835)
@@ -121,6 +121,7 @@
uint8 noteChannel;
uint8 noteType;
uint8 noteWait; //external wait
+ int8 noteFineTune;
float fineTune;
};
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list