summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEugenio Favalli <elvenprogrammer@gmail.com>2004-09-26 12:21:30 +0000
committerEugenio Favalli <elvenprogrammer@gmail.com>2004-09-26 12:21:30 +0000
commiteb178618066ef66f047d6f72c5c3d3accb09a0ce (patch)
tree0d50097f3ca7a56402e2371a42da4e58f6b31d0a
parent9183725462fb454834bf398f3d4d2e214c627821 (diff)
downloadclientdata-eb178618066ef66f047d6f72c5c3d3accb09a0ce.tar.gz
clientdata-eb178618066ef66f047d6f72c5c3d3accb09a0ce.tar.bz2
clientdata-eb178618066ef66f047d6f72c5c3d3accb09a0ce.tar.xz
clientdata-eb178618066ef66f047d6f72c5c3d3accb09a0ce.zip
*** empty log message ***
-rw-r--r--sound/sound.cpp269
-rw-r--r--sound/sound.h83
2 files changed, 0 insertions, 352 deletions
diff --git a/sound/sound.cpp b/sound/sound.cpp
deleted file mode 100644
index 105959ba..00000000
--- a/sound/sound.cpp
+++ /dev/null
@@ -1,269 +0,0 @@
-/**
-
- The Mana World
- Copyright 2004 The Mana World Development Team
-
- This file is part of The Mana World.
-
- The Mana World 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
- any later version.
-
- The Mana World 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 The Mana World; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-*/
-
-/**
- rewrite of non-existend sdl-soundengine using allegro
-
- Author: kth5 aka Alexander Baldeck
- pipe your question, suggestions and flames to: kth5@gawab.com
-*/
-
-#ifdef WIN32
- #pragma warning(disable:4312)
-#endif
-
-#include <allegro.h>
-
-
- #include <jgmod.h>
- #include "sound.h"
-
-/**
- install the sound engine
- int voices -> overall reserved voices
- int mod_voices -> voices dedicated for mod-playback
-
- NOTE:
- overall voices must not be less or equal to the
- specified amount of mod_voices!
- if mod-voices is too low some mods will not sound
- correctly since a couple of tracks are not going
- to be played along w/ the others. so missing ins-
- truments can be a result.
- 32/20 sounds realistic here.
-*/
-void TmwSound::Init(int voices, int mod_voices) {
- isOk = -1;
-
- if(mod_voices >= voices)
- throw("No voices left for SFX! Sound will be disabled!");
-
- install_timer();
- reserve_voices (voices, -1);
-
- #ifdef WIN32
- if (install_sound (DIGI_AUTODETECT, MIDI_AUTODETECT, NULL) < 0)
- #else
- if (install_sound (DIGI_AUTODETECT, MIDI_NONE, NULL) < 0)
- #endif
- throw("Could not initialize sound... :-(");
-
-
- if (install_mod (mod_voices) < 0)
- throw("Could not install MOD player... :-(");
-
- mod = NULL;
- mid = NULL;
- sfx = NULL;
-
- pan = 128;
- pitch=1000;
-
- isOk = 0;
-}
-
-/**
- set the volume value-range: 0-255
- int digi -> for digital playback
- int mid -> for midi playback
- int mod -> for... aw, you guess ^^
-
- NOTE:
- all values may only be between 0-255 where 0 means
- muted.
-*/
-void TmwSound::SetVol(int digi, int mid, int mod) {
- if(isOk==-1)
- return;
- set_volume(digi, mid);
- set_mod_volume(mod);
- set_hardware_volume(digi, mid);
-
- if(isMaxVol(vol_digi + digi)==false) vol_digi += digi;
- if(isMaxVol(vol_midi + mid) ==false) vol_midi += mid;
- if(isMaxVol(vol_mod + mod) ==false) vol_mod += mod;
-}
-
-/**
- adjusts current volume
- int digi -> for digital playback
- int mid -> for midi playback
- int mod -> for... aw, you guess ^^
-
- NOTE:
- all values may only be between 0-255 where 0 means
- muted.
-*/
-void TmwSound::SetAdjVol(int adigi, int amid, int amod) {
- if(isOk==-1)
- return;
- set_volume(vol_digi + adigi, vol_midi + amid);
- set_mod_volume(vol_mod + amod);
-
- if(isMaxVol(vol_digi + adigi)==false) vol_digi += adigi;
- if(isMaxVol(vol_midi + amid) ==false) vol_midi += amid;
- if(isMaxVol(vol_mod + amod) ==false) vol_mod += amod;
-}
-
-/**
- start BGM using a midi file
- char *in -> full path of midi file
- int loop -> how many times should the midi be looped? (-1 = infinite)
-
- NOTE:
- playing midi does not steal away any voices but
- does not work w/ most soundcards w/o software
- emulation. this means than linux-users will most
- probably be left out. do not use this unless we
- find a way to always get it to work. :-)
-
- at this point of time only standard RMI midi files
- can be played. so no m$ extensions like GS and stuff.
-*/
-void TmwSound::StartMIDI(char *in, int loop) {
- if(isOk==-1)
- return;
-
- mid = load_midi(in);
- if (!mid) {
- isOk=-1;
- throw("Could not load MIDI file!");
- }
-
- play_midi(mid, TRUE);
-}
-
-/**
- start BGM using a mod file
- char *in -> full path of mod file
- int loop -> how many times should the midi be looped? (-1 = infinite)
-
- NOTE:
- playing mod is a pretty good choice. most of the work
- is being done by the cpu so it's not dependend on the
- sound-card how things sound as long as it works. ;-)
-
- JGMOD supports several formats:
- MOD
- S3M
- XM
- Unreal
- and S3M (in UMX extension)
-*/
-void TmwSound::StartMOD(char * in, int loop) {
- if(isOk==-1)
- return;
-
- mod = load_mod(in);
- if(!mod) {
- isOk=-1;
- throw("Error reading MOD file...");
- }
- play_mod(mod, TRUE);
-}
-
-/**
- stop all currently running BGM tracks
-
- NOTE:
- you need to stop all playback when you want to
- switch from mod to midi. playing a new track is
- usually possibe simply by calling StartMIDI() ir
- SartMOD() again.
- passing NULL to the playing functions only means
- to make playback stop.
-*/
-void TmwSound::StopBGM() {
- if(isOk==-1)
- return;
-
- play_midi(NULL,-1);
- stop_mod();
-
- mod = NULL;
- mid = NULL;
-}
-
-/**
- play short sample usually for sfx
- char * in -> full path to the sample file
- (int wavid -> the id of the preloaded wav file (not implemented yet))
- int pan -> panning of the sound, values can be 0-255 where 128 is
- the middle
-
- NOTE:
- later on this will be a subsequent call to another
- function that preloads all wavs corresponding to
- the current area (e.g. monster screams) to memory.
- right now the function loads the file from hdd
- everytime you want it to be played. this is kind of
- resource intensive even though most OS'ses cache a
- already loaded file for some time.
-
- allegro supports different formats but this is not
- stated clear enough - these will work for sure:
- WAV
- VOC
-
- i don't know what kind of samples are necessary so we
- need to test this thoroughly.
-*/
-void TmwSound::StartWAV(char * in, int pan) {
- if(isOk==-1)
- return;
-
- sfx = load_sample(in);
- if (!sfx)
- throw("Error reading WAV file...");
-
- play_sample(sfx, vol_digi, pan, pitch, FALSE);
-}
-
-/**
- deinstall all sound functionality
-
- NOTE:
- normally you won't need to call this since this is
- done by allegro when shutting itself down. but if
- you find a reason to delete the sound-engine from
- memory (e.g. garbage-collection) feel free to use
- it. :-P
-*/
-int TmwSound::Close(void) {
- if(isOk==-1)
- return -1;
- mod = NULL;
- mid = NULL;
- sfx = NULL;
-
- remove_sound();
- isOk = -1;
- return 0;
-}
-
-/** PRIVATE */
-
-bool TmwSound::isMaxVol(int vol) {
- if( vol > 0 && vol < 255 ) return false;
- else return true;
-}
diff --git a/sound/sound.h b/sound/sound.h
deleted file mode 100644
index 12300e58..00000000
--- a/sound/sound.h
+++ /dev/null
@@ -1,83 +0,0 @@
-/**
-
- The Mana World
- Copyright 2004 The Mana World Development Team
-
- This file is part of The Mana World.
-
- The Mana World 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
- any later version.
-
- The Mana World 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 The Mana World; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-*/
-
-#ifndef __SOUND_H
-#define __SOUND_H
-
-#ifdef WIN32
- #pragma warning(disable:4312)
-#endif
-#include <allegro.h>
-#include <jgmod.h>
-#include <string>
-using namespace std;
-
-/**
- rewrite of non-existend sdl-soundengine using allegro
-
- Author: kth5 aka Alexander Baldeck
- pipe your question, suggestions and flames to: kth5@gawab.com
-
- NOTE:
- i documented all functions in their implementation. ;-)
-*/
-
-class TmwSound {
- public:
- void Init(int, int);
- int Close();
-
- void StartMIDI(char *, int);
- void StartMOD(char *, int);
- void StopBGM();
-
- void StartWAV(char *, int);
- void SetVol(int, int, int);
- void SetAdjVol(int adigi, int amid, int amod);
-
- TmwSound() {isOk=-1;}
- ~TmwSound() {StopBGM(); Close();}; // if allegros shuts down or object is deleted
- // any BGM is stopped and SFX runout
- private:
- int isOk; // initial value is -1 which means error.
- // you can only play sounds and bgm if this is 0.
- // should be the case after calling Init()
- // successfully
-
- MIDI * mid;
- JGMOD * mod;
- SAMPLE * sfx;
-
- int pan;
- int pitch;
-
- int ret;
- int vol_digi;
- int vol_midi;
- int vol_mod;
-
- bool isMaxVol(int);
-};
-
-
-#endif