1 /* ScummVM - Graphic Adventure Engine
2  *
3  * ScummVM is the legal property of its developers, whose names
4  * are too numerous to list here. Please refer to the COPYRIGHT
5  * file distributed with this source distribution.
6  *
7  * This program is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU General Public License
9  * as published by the Free Software Foundation; either version 2
10  * of the License, or (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program; if not, write to the Free Software
19  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
20  *
21  */
22 
23 #ifndef AGS_ENGINE_AC_GLOBAL_AUDIO_H
24 #define AGS_ENGINE_AC_GLOBAL_AUDIO_H
25 
26 namespace AGS3 {
27 
28 void    StopAmbientSound(int channel);
29 void    PlayAmbientSound(int channel, int sndnum, int vol, int x, int y);
30 int     IsChannelPlaying(int chan);
31 int     IsSoundPlaying();
32 // returns -1 on failure, channel number on success
33 int     PlaySoundEx(int val1, int channel);
34 void    StopAllSounds(int evenAmbient);
35 
36 void    PlayMusicResetQueue(int newmus);
37 void    SeekMIDIPosition(int position);
38 int     GetMIDIPosition();
39 int     IsMusicPlaying();
40 int     PlayMusicQueued(int musnum);
41 void    scr_StopMusic();
42 void    SeekMODPattern(int patnum);
43 void    SeekMP3PosMillis(int posn);
44 int     GetMP3PosMillis();
45 void    SetMusicVolume(int newvol);
46 void    SetMusicMasterVolume(int newvol);
47 void    SetSoundVolume(int newvol);
48 void    SetChannelVolume(int chan, int newvol);
49 void    SetDigitalMasterVolume(int newvol);
50 int     GetCurrentMusic();
51 void    SetMusicRepeat(int loopflag);
52 void    PlayMP3File(const char *filename);
53 void    PlaySilentMIDI(int mnum);
54 
55 void    SetSpeechVolume(int newvol);
56 void    SetVoiceMode(int newmod);
57 int     GetVoiceMode();
58 int     IsVoxAvailable();
59 int     IsMusicVoxAvailable();
60 
61 struct CharacterInfo;
62 struct ScriptAudioChannel;
63 // Starts voice-over playback and returns audio channel it is played on;
64 // as_speech flag determines whether engine should apply speech-related logic
65 // as well, such as temporary volume reduction.
66 ScriptAudioChannel *PlayVoiceClip(CharacterInfo *ch, int sndid, bool as_speech);
67 
68 //=============================================================================
69 // Play voice-over for the active blocking speech and initialize relevant data
70 bool    play_voice_speech(int charid, int sndid);
71 // Play voice-over clip in non-blocking manner
72 bool    play_voice_nonblocking(int charid, int sndid, bool as_speech);
73 // Stop voice-over for the active speech and reset relevant data
74 void    stop_voice_speech();
75 // Stop non-blocking voice-over and revert audio volumes if necessary
76 void    stop_voice_nonblocking();
77 
78 } // namespace AGS3
79 
80 #endif
81