[Scummvm-cvs-logs] CVS: residual/imuse imuse.cpp,1.11,1.12 imuse.h,1.11,1.12 imuse_music.cpp,1.7,1.8 imuse_track.cpp,1.9,1.10
Pawel Kolodziejski
aquadran at users.sourceforge.net
Mon Jan 3 08:29:14 CET 2005
- Previous message: [Scummvm-cvs-logs] CVS: residual engine.cpp,1.53,1.54 engine.h,1.19,1.20 lua.cpp,1.93,1.94
- Next message: [Scummvm-cvs-logs] CVS: scummvm/saga animation.cpp,1.35,1.36 animation.h,1.18,1.19
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /cvsroot/scummvm/residual/imuse
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv22377/imuse
Modified Files:
imuse.cpp imuse.h imuse_music.cpp imuse_track.cpp
Log Message:
fixes to imuse
Index: imuse.cpp
===================================================================
RCS file: /cvsroot/scummvm/residual/imuse/imuse.cpp,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -d -r1.11 -r1.12
--- imuse.cpp 2 Jan 2005 19:08:44 -0000 1.11
+++ imuse.cpp 3 Jan 2005 16:27:57 -0000 1.12
@@ -120,7 +120,28 @@
}
}
- int pan = (track->pan != 64) ? 2 * track->pan - 127 : 0;
+ if (track->panFadeUsed) {
+ if (track->panFadeStep < 0) {
+ if (track->pan > track->panFadeDest) {
+ track->pan += track->panFadeStep;
+ if (track->pan < track->panFadeDest) {
+ track->pan = track->panFadeDest;
+ track->panFadeUsed = false;
+ }
+ }
+ } else if (track->panFadeStep > 0) {
+ if (track->pan < track->panFadeDest) {
+ track->pan += track->panFadeStep;
+ if (track->pan > track->panFadeDest) {
+ track->pan = track->panFadeDest;
+ track->panFadeUsed = false;
+ }
+ }
+ }
+ }
+
+ int pan = track->pan / 1000;
+ pan = (pan != 64) ? 2 * pan - 127 : 0;
int vol = track->vol / 1000;
if (track->volGroupId == 1)
Index: imuse.h
===================================================================
RCS file: /cvsroot/scummvm/residual/imuse/imuse.h,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -d -r1.11 -r1.12
--- imuse.h 2 Jan 2005 22:51:50 -0000 1.11
+++ imuse.h 3 Jan 2005 16:27:57 -0000 1.12
@@ -50,7 +50,11 @@
struct Track {
int trackId;
- int8 pan;
+ int32 pan;
+ int32 panFadeDest;
+ int32 panFadeStep;
+ int32 panFadeDelay;
+ bool panFadeUsed;
int32 vol;
int32 volFadeDest;
int32 volFadeStep;
@@ -132,7 +136,8 @@
void setVolume(const char *soundName, int volume);
int getVolume(const char *soundName);
void setPan(const char *soundName, int pan);
- void setFade(const char *soundName, int destVolume, int delay60HzTicks);
+ void setFadePan(const char *soundName, int destPan, int duration);
+ void setFadeVolume(const char *soundName, int destVolume, int duration);
void setHookId(const char *soundName, int hookId);
int getCountPlayedTracks();
void stopSound(const char *soundName);
@@ -143,6 +148,7 @@
void refreshScripts();
void flushTracks();
bool isVoicePlaying();
+ char *getCurMusicSoundName();
bool getSoundStatus(const char *soundName) const;
int32 getPosIn60HzTicks(const char *soundName);
};
Index: imuse_music.cpp
===================================================================
RCS file: /cvsroot/scummvm/residual/imuse/imuse_music.cpp,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- imuse_music.cpp 2 Jan 2005 23:01:54 -0000 1.7
+++ imuse_music.cpp 3 Jan 2005 16:27:57 -0000 1.8
@@ -80,12 +80,12 @@
atribPos = table->atribPos;
hookId = _attributes[atribPos];
if (table->hookId != 0) {
- if ((hookId != 0) && (table->hookId <= 1)) {
+ if ((hookId == 0) && (table->hookId > 1)) {
+ _attributes[atribPos] = 2;
+ } else {
_attributes[atribPos] = hookId + 1;
if (table->hookId < hookId + 1)
_attributes[atribPos] = 1;
- } else {
- _attributes[atribPos] = 2;
}
}
}
@@ -98,15 +98,21 @@
if (table->filename[0] == 0) {
fadeOutMusic(60);
} else {
- fadeOutMusic(table->fadeOut60TicksDelay);
- if ((table->opcode == 3) && (!sequence) &&
+ char *soundName = getCurMusicSoundName();
+ int pan;
+ if (table->pan == 0)
+ pan = 64;
+ else
+ pan = table->pan;
+ if ((table->opcode == 3) && (!sequence) && (strcmp(soundName, table->filename) == 0) &&
(table->atribPos != 0) && (table->atribPos == _stateMusicTable[_curMusicState].atribPos)) {
- if (hookId == 100)
- hookId = 0;
- else
- hookId = 100;
+ setFadeVolume(soundName, table->volume, table->fadeOut60TicksDelay);
+ setFadePan(soundName, pan, table->fadeOut60TicksDelay);
+ setHookId(soundName, hookId);
+ } else {
+ fadeOutMusic(table->fadeOut60TicksDelay);
+ startMusic(table->filename, hookId, table->volume, pan);
}
- startMusic(table->filename, hookId, table->volume, 64/*table->pan*/);
}
}
}
Index: imuse_track.cpp
===================================================================
RCS file: /cvsroot/scummvm/residual/imuse/imuse_track.cpp,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- imuse_track.cpp 2 Jan 2005 19:08:44 -0000 1.9
+++ imuse_track.cpp 3 Jan 2005 16:27:57 -0000 1.10
@@ -74,7 +74,11 @@
flushTracks();
}
- track->pan = pan;
+ track->pan = pan * 1000;
+ track->panFadeDest = 0;
+ track->panFadeStep = 0;
+ track->panFadeDelay = 0;
+ track->panFadeUsed = false;
track->vol = volume * 1000;
track->volFadeDest = 0;
track->volFadeStep = 0;
@@ -123,7 +127,8 @@
if (channels == 2)
track->mixerFlags |= SoundMixer::FLAG_STEREO | SoundMixer::FLAG_REVERSE_STEREO;
- pan = (track->pan != 64) ? 2 * track->pan - 127 : 0;
+ pan = track->pan / 1000;
+ pan = (pan != 64) ? 2 * pan - 127 : 0;
volume = track->vol / 1000;
if (track->volGroupId == 1)
@@ -223,25 +228,50 @@
}
}
-void Imuse::setFade(const char *soundName, int destVolume, int delay60HzTicks) {
+void Imuse::setFadeVolume(const char *soundName, int destVolume, int duration) {
StackLock lock(_mutex);
for (int l = 0; l < MAX_IMUSE_TRACKS; l++) {
Track *track = _track[l];
if (track->used && !track->toBeRemoved && (strcmp(track->soundName, soundName) == 0)) {
- track->volFadeDelay = delay60HzTicks;
+ track->volFadeDelay = duration;
track->volFadeDest = destVolume * 1000;
- track->volFadeStep = (track->volFadeDest - track->vol) * 60 * (1000 / _callbackFps) / (1000 * delay60HzTicks);
+ track->volFadeStep = (track->volFadeDest - track->vol) * 60 * (1000 / _callbackFps) / (1000 * duration);
track->volFadeUsed = true;
}
}
}
-void Imuse::fadeOutMusic(int fadeDelay) {
+void Imuse::setFadePan(const char *soundName, int destPan, int duration) {
+ StackLock lock(_mutex);
+
+ for (int l = 0; l < MAX_IMUSE_TRACKS; l++) {
+ Track *track = _track[l];
+ if (track->used && !track->toBeRemoved && (strcmp(track->soundName, soundName) == 0)) {
+ track->panFadeDelay = duration;
+ track->panFadeDest = destPan * 1000;
+ track->panFadeStep = (track->panFadeDest - track->pan) * 60 * (1000 / _callbackFps) / (1000 * duration);
+ track->panFadeUsed = true;
+ }
+ }
+}
+
+char *Imuse::getCurMusicSoundName() {
for (int l = 0; l < MAX_IMUSE_TRACKS; l++) {
Track *track = _track[l];
if (track->used && !track->toBeRemoved && (track->volGroupId == IMUSE_VOLGRP_MUSIC)) {
- cloneToFadeOutTrack(track, fadeDelay);
+ return track->soundName;
+ }
+ }
+
+ return "";
+}
+
+void Imuse::fadeOutMusic(int duration) {
+ for (int l = 0; l < MAX_IMUSE_TRACKS; l++) {
+ Track *track = _track[l];
+ if (track->used && !track->toBeRemoved && (track->volGroupId == IMUSE_VOLGRP_MUSIC)) {
+ cloneToFadeOutTrack(track, duration);
track->toBeRemoved = true;
}
}
@@ -284,6 +314,10 @@
fadeTrack->volFadeDest = 0;
fadeTrack->volFadeStep = (fadeTrack->volFadeDest - fadeTrack->vol) * 60 * (1000 / _callbackFps) / (1000 * fadeDelay);
fadeTrack->volFadeUsed = true;
+ fadeTrack->panFadeDelay = 0;
+ fadeTrack->panFadeDest = 0;
+ fadeTrack->panFadeStep = 0;
+ fadeTrack->panFadeUsed = false;
}
// setup 1 second stream wrapped buffer
- Previous message: [Scummvm-cvs-logs] CVS: residual engine.cpp,1.53,1.54 engine.h,1.19,1.20 lua.cpp,1.93,1.94
- Next message: [Scummvm-cvs-logs] CVS: scummvm/saga animation.cpp,1.35,1.36 animation.h,1.18,1.19
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the Scummvm-git-logs
mailing list