123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- program BasicSound;
- {$L build/soundbank.bin.o}
- {$mode objfpc}
- uses
- ctypes, nds9, maxmod9;
- const
- SFX_AMBULANCE = 0;
- SFX_BOOM = 1;
- MOD_FLATOUTLIES = 0;
- MSL_NSONGS = 1;
- MSL_NSAMPS = 33;
- MSL_BANKSIZE = 34;
- var
- soundbank_bin_end: array [0..0] of cuint8; cvar; external;
- soundbank_bin: array [0..0] of cuint8; cvar; external;
- soundbank_bin_size: cuint32; cvar; external;
- ambulance, boom: mm_sound_effect;
- amb: mm_sfxhand;
- keys_pressed, keys_released: integer;
- begin
- consoleDemoInit();
- mmInitDefaultMem(mm_addr(@soundbank_bin));
-
- // load the module
- mmLoad(MOD_FLATOUTLIES);
-
- // load sound effects
- mmLoadEffect(SFX_AMBULANCE);
- mmLoadEffect(SFX_BOOM);
-
- // Start playing module
- mmStart(MOD_FLATOUTLIES, MM_PLAY_LOOP);
- with ambulance do
- begin
- id := SFX_AMBULANCE;
- rate := trunc(1.0 * (1 shl 10));
- handle := 0;
- volume := 255;
- panning := 0;
- end;
- with boom do
- begin
- id := SFX_BOOM;
- rate := trunc(1.0 * (1 shl 10));
- handle := 0;
- volume := 255;
- panning := 255;
- end;
- // ansi escape sequence to clear screen and home cursor
- // /x1b[line;columnH
- iprintf(#$1b'[2J');
- // ansi escape sequence to set print co-ordinates
- // /x1b[line;columnH
- iprintf(#$1b'[0;8HMaxMod Audio demo');
- iprintf(#$1b'[3;0HHold A for ambulance sound');
- iprintf(#$1b'[4;0HPress B for boom sound');
-
- // sound effect handle (for cancelling it later)
- amb := 0;
- while true do
- begin
- swiWaitForVBlank();
- scanKeys();
- keys_pressed := keysDown();
- keys_released := keysUp();
- // Play looping ambulance sound effect out of left speaker if A button is pressed
- if ( keys_pressed and KEY_A ) <> 0 then
- begin
- amb := mmEffectEx(@ambulance);
- end;
-
- // stop ambulance sound when A button is released
- if ( keys_released and KEY_A ) <> 0 then
- begin
- mmEffectCancel(amb);
- end;
- // Play explosion sound effect out of right speaker if B button is pressed
- if ( keys_pressed and KEY_B ) <> 0 then
- begin
- mmEffectEx(@boom);
- end;
- end;
- end.
|