| Software | Version | Source | Description |
|---|---|---|---|
| SDL_mixer-1.2.8-win32.zip | 1.2.8 | http://www.libsdl.org/projects/SDL_mixer/ | This is the corresponding dynamic link library file. |
| In my mind.ogg | - | here | A music file. "In my mind" by First. Of course you could also use any other music file you desire. |
| dial.wav | - | here | Public domain sounds: http://www.pdsounds.org. Of course you could also use any other sound file you desire. |
PROGRAM chap7;
USES CRT, SDL, SDL_MIXER;
CONST
AUDIO_FREQUENCY:INTEGER=22050;
AUDIO_FORMAT:WORD=AUDIO_S16;
AUDIO_CHANNELS:INTEGER=2;
AUDIO_CHUNKSIZE:INTEGER=4096;
VAR
userkey:CHAR;
music:pMIX_MUSIC=NIL;
sound:pMIX_CHUNK=NIL;
soundchannel:INTEGER;
BEGIN
SDL_INIT(SDL_INIT_AUDIO);
IF MIX_OPENAUDIO(AUDIO_FREQUENCY, AUDIO_FORMAT,
AUDIO_CHANNELS, AUDIO_CHUNKSIZE)<>0 THEN HALT;
music:=MIX_LOADMUS('In my mind.ogg');
MIX_VOLUMEMUSIC(20);
sound:=MIX_LOADWAV('dial.wav');
MIX_VOLUMECHUNK(sound,50);
writeln('Music is playing now...');
MIX_PLAYMUSIC(music,0); //-1 = infinite, 0 = once, 1 = twice,...
writeln('"s" - play sound effect');
writeln('"z" - pause sound effect');
writeln('"t" - resume sound effect');
writeln('"p" - pause music');
writeln('"o" - resume music');
writeln('"q" - quit');
REPEAT
REPEAT
SDL_DELAY(20);
UNTIL KEYPRESSED;
userkey:=READKEY;
CASE userkey OF
's': soundchannel:=MIX_PLAYCHANNEL(-1,sound,0);
'z','y': MIX_PAUSE(soundchannel);
't': MIX_RESUME(soundchannel);
'p': MIX_PAUSEMUSIC;
'o': MIX_RESUMEMUSIC;
END;
UNTIL userkey='q';
MIX_HALTMUSIC;
MIX_HALTCHANNEL(soundchannel);
MIX_FREEMUSIC(music);
MIX_FREECHUNK(sound);
MIX_CLOSEAUDIO;
SDL_QUIT;
END.
|
PROGRAM chap7; USES CRT, SDL, SDL_MIXER; |
CONST AUDIO_FREQUENCY:INTEGER=22050; AUDIO_FORMAT:WORD=AUDIO_S16; AUDIO_CHANNELS:INTEGER=2; AUDIO_CHUNKSIZE:INTEGER=4096; |
| audio format | Description |
|---|---|
| AUDIO_U8 | Unsigned 8-bit samples |
| AUDIO_S8 | Signed 8-bit samples |
| AUDIO_u16LSB | Unsigned 16-bit samples, in little-endian byte order |
| AUDIO_S16LSB | Signed 16-bit samples, in little-endian byte order |
| AUDIO_U16MSB | Unsigned 16-bit samples, in big-endian byte order |
| AUDIO_S16MSB | Signed 16-bit samples, in big-endian byte order |
| AUDIO_U16 | same as AUDIO_U16LSB |
| AUDIO_S16 | same as AUDIO_S16LSB |
| AUDIO_U16SYS | Unsigned 16-bit samples, in system byte order |
| AUDIO_S16SYS | Signed 16-bit samples, in system byte order |
VAR userkey:CHAR; music:pMIX_MUSIC=NIL; sound:pMIX_CHUNK=NIL; soundchannel:INTEGER; |
BEGIN
SDL_INIT(SDL_INIT_AUDIO);
IF MIX_OPENAUDIO(AUDIO_FREQUENCY, AUDIO_FORMAT,
AUDIO_CHANNELS, AUDIO_CHUNKSIZE)<>0 THEN HALT;
music:=MIX_LOADMUS('In my mind.ogg');
MIX_VOLUMEMUSIC(20);
sound:=MIX_LOADWAV('dial.wav');
MIX_VOLUMECHUNK(sound,50);
|
writeln('Music is playing now...');
MIX_PLAYMUSIC(music,0); //-1 = infinite, 0 = once, 1 = twice,...
writeln('"s" - play sound effect');
writeln('"z" - pause sound effect');
writeln('"t" - resume sound effect');
writeln('"p" - pause music');
writeln('"o" - resume music');
writeln('"q" - quit');
REPEAT
REPEAT
SDL_DELAY(20);
UNTIL KEYPRESSED;
userkey:=READKEY;
CASE userkey OF
's': soundchannel:=MIX_PLAYCHANNEL(-1,sound,0);
'z','y': MIX_PAUSE(soundchannel);
't': MIX_RESUME(soundchannel);
'p': MIX_PAUSEMUSIC;
'o': MIX_RESUMEMUSIC;
END;
UNTIL userkey='q';
|
MIX_HALTMUSIC; MIX_HALTCHANNEL(soundchannel); MIX_FREEMUSIC(music); MIX_FREECHUNK(sound); MIX_CLOSEAUDIO; SDL_QUIT; END. |