diff options
Diffstat (limited to 'engines/sci/sfx/music.h')
-rw-r--r-- | engines/sci/sfx/music.h | 219 |
1 files changed, 0 insertions, 219 deletions
diff --git a/engines/sci/sfx/music.h b/engines/sci/sfx/music.h deleted file mode 100644 index 0b7d880112..0000000000 --- a/engines/sci/sfx/music.h +++ /dev/null @@ -1,219 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - * $URL$ - * $Id$ - * - */ - -#ifndef SCI_MUSIC_H -#define SCI_MUSIC_H - -#include "common/savefile.h" -#include "common/serializer.h" -#include "common/mutex.h" - -#include "sound/mixer.h" -#include "sound/audiostream.h" -#include "sound/mididrv.h" -#include "sound/midiparser.h" - -#include "sci/sci.h" -#include "sci/resource.h" -#include "sci/sfx/softseq/mididriver.h" - -namespace Sci { - -enum TrackType { - kTrackAdlib = 0, - kTrackGameBlaster = 9, - kTrackMT32 = 12, - kTrackSpeaker = 18, - kTrackTandy = 19 -}; - -enum SoundStatus { - kSoundStopped = 0, - kSoundInitialized = 1, - kSoundPaused = 2, - kSoundPlaying = 3 -}; - -#define MUSIC_VOLUME_DEFAULT 127 -#define MUSIC_VOLUME_MAX 127 - -class MidiParser_SCI; -class SegManager; - -class MusicEntry -#ifndef USE_OLD_MUSIC_FUNCTIONS - : public Common::Serializable -#endif -{ -public: - // Do not get these directly for the sound objects! - // It's a bad idea, as the sound code (i.e. the SciMusic - // class) should be as separate as possible from the rest - // of the engine - - reg_t soundObj; - - SoundResource *soundRes; - uint16 resnum; - - uint16 dataInc; - uint16 ticker; - uint16 signal; - byte prio; - uint16 loop; - byte volume; - byte hold; - - int16 pauseCounter; - uint sampleLoopCounter; - - byte fadeTo; - short fadeStep; - uint32 fadeTicker; - uint32 fadeTickerStep; - bool fadeSetVolume; - bool fadeCompleted; - - SoundStatus status; - - Audio::Mixer::SoundType soundType; - -#ifndef USE_OLD_MUSIC_FUNCTIONS -//protected: -#endif - MidiParser_SCI *pMidiParser; - Audio::AudioStream* pStreamAud; - Audio::SoundHandle hCurrentAud; - -public: - MusicEntry(); - ~MusicEntry(); - - void doFade(); - void onTimer(); - -#ifndef USE_OLD_MUSIC_FUNCTIONS - virtual void saveLoadWithSerializer(Common::Serializer &ser); -#endif -}; - -typedef Common::Array<MusicEntry *> MusicList; - -class SciMusic -#ifndef USE_OLD_MUSIC_FUNCTIONS - : public Common::Serializable -#endif -{ - -public: - SciMusic(SciVersion soundVersion); - ~SciMusic(); - - void init(); -#if 0 - void loadPatch(); -#endif - void onTimer(); - void clearPlayList(); - - // sound and midi functions - void soundInitSnd(MusicEntry *pSnd); - void soundPlay(MusicEntry *pSnd); - void soundStop(MusicEntry *pSnd); - void soundKill(MusicEntry *pSnd); - void soundPause(MusicEntry *pSnd); - void soundResume(MusicEntry *pSnd); - void soundSetVolume(MusicEntry *pSnd, byte volume); - void soundSetPriority(MusicEntry *pSnd, byte prio); - uint16 soundGetMasterVolume(); - void soundSetMasterVolume(uint16 vol); - uint16 soundGetSoundOn() const { return _soundOn; } - void soundSetSoundOn(bool soundOnFlag); - uint16 soundGetVoices(); - uint32 soundGetTempo() const { return _dwTempo; } - - MusicEntry *getSlot(reg_t obj); - - void pushBackSlot(MusicEntry *slotEntry) { - Common::StackLock lock(_mutex); - _playList.push_back(slotEntry); - } - - void printPlayList(Console *con); - - // The following two methods are NOT thread safe - make sure that - // the mutex is always locked before calling them - MusicList::iterator getPlayListStart() { return _playList.begin(); } - MusicList::iterator getPlayListEnd() { return _playList.end(); } - - void sendMidiCommand (uint32 cmd) { - Common::StackLock lock(_mutex); - _pMidiDrv->send(cmd); - } - - void setReverb(byte reverb); - - void resetDriver(); - -#ifndef USE_OLD_MUSIC_FUNCTIONS - virtual void saveLoadWithSerializer(Common::Serializer &ser); -#endif - - // Mutex for music code. Used to guard access to the song playlist, to the - // MIDI parser and to the MIDI driver/player. Note that guarded code must NOT - // include references to the mixer, otherwise there will probably be situations - // where a deadlock can occur - Common::Mutex _mutex; - -protected: - byte findAudEntry(uint16 nAud, byte&oVolume, uint32& oOffset, uint32&oSize); - void sortPlayList(); -#if 0 - void loadPatchMT32(); - void patchSysEx(byte * addr, byte *pdata, int len); - void patchUpdateAddr(byte *addr, int len); -#endif - - SciVersion _soundVersion; - - Audio::Mixer *_pMixer; - MidiPlayer *_pMidiDrv; - MidiDriverType _midiType; - - uint32 _dwTempo; - // Mixed Adlib/MIDI mode: when enabled from the ScummVM sound options screen, - // and a sound has a digital track, the sound from the Adlib track is played - bool _bMultiMidi; -private: - static void miditimerCallback(void *p); - - MusicList _playList; - bool _soundOn; - byte _reverb; -}; - -} // End of namespace Sci - -#endif |