On 12 June 2012 16:17, silvioprog <silviop...@gmail.com> wrote: > > So, how to play audio (wav/mp3) with only SDL framework in Free Pascal?
Simply reading a SDL tutorial or two, will quickly let you understand the following code. TSoundEngine is just an convenience class we created to add extra sound events and possibly swap out sound library frameworks in future - without needing to change our application code. Simple design pattern practices to simply your application code and hide complexity. This is not the complete code, but is the gist of it. uses sdl_mixer, sdl; const // Global default extension for sound files. Set up as needed. SoundExt = '.wav'; type PSoundBlock = {$IFDEF UseMusic}PMIX_Music{$ELSE}PMIX_Chunk{$ENDIF}; ... { in our project, this code is in a TSoundPlayer class. Result is of type PSoundBlock } Result := {$IFDEF UseMusic}Mix_LoadMUS{$ELSE}Mix_LoadWAV{$ENDIF}(PChar(aFilename)); if not Assigned(Result) then SoundEngine.MixError; ... constructor TSoundEngine.Create; begin if SDL_Init(SDL_INIT_AUDIO or SDL_INIT_TIMER) = -1 then SDLError; if Mix_OpenAudio(MIX_DEFAULT_FREQUENCY, MIX_DEFAULT_FORMAT, MIX_DEFAULT_CHANNELS, 1024) = -1 then MixError; {$IFDEF UseMusic}Mix_HookMusicFinished{$ELSE}Mix_ChannelFinished{$ENDIF}(@MusicFinished); end; destructor TSoundEngine.Destroy; begin PlayingStop; MIX_CloseAudio; SDL_Quit; inherited Destroy; end; procedure TSoundEngine.PlayingStop; begin {$IFDEF UseMusic} Mix_HaltMusic; {$ELSE} Mix_HaltChannel(1); {$ENDIF} end; procedure TSoundEngine.PlayingStart(aMusic: PSoundBlock); begin {$IFDEF UseMusic} if Mix_PlayMusic(aMusic, 0) <> 0 then MixError; {$ELSE} Mix_PlayChannel(1,aMusic, 0) {$ENDIF} end; procedure TSoundEngine.PlayingPause; begin {$IFDEF UseMusic} Mix_PauseMusic; {$ELSE} Mix_Pause (1); {$ENDIF} end; procedure TSoundEngine.PlayingContinue; begin {$IFDEF UseMusic} Mix_ResumeMusic; {$ELSE} Mix_Resume (1); {$ENDIF} end; -- Regards, - Graeme - _______________________________________________ fpGUI - a cross-platform Free Pascal GUI toolkit http://fpgui.sourceforge.net _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal