From e777f3ccc46229e64c55625feb9a9157d8eca9e4 Mon Sep 17 00:00:00 2001 From: andreja6 Date: Thu, 26 Apr 2018 20:01:37 -0700 Subject: [PATCH] Added sound system Added delete sound --- AudioPlayer.cpp | 99 ++++++++++++++++++++++++++++++++++++ AudioPlayer.h | 10 ++++ G3DTest.vcproj | 8 +++ content/sounds/pageturn.wav | Bin 0 -> 25548 bytes main.cpp | 7 +++ 5 files changed, 124 insertions(+) create mode 100644 AudioPlayer.cpp create mode 100644 AudioPlayer.h create mode 100644 content/sounds/pageturn.wav diff --git a/AudioPlayer.cpp b/AudioPlayer.cpp new file mode 100644 index 0000000..47ac2d5 --- /dev/null +++ b/AudioPlayer.cpp @@ -0,0 +1,99 @@ +#include "AudioPlayer.h" +#include "SDL.h" +#include "SDL_audio.h" +#include +#include +#include +#define NUM_SOUNDS 2 +SDL_AudioSpec fmt; + +AudioPlayer::AudioPlayer(void) +{ + extern void mixaudio(void *unused, Uint8 *stream, int len); + fmt.freq = 22050; + fmt.format = AUDIO_S16; + fmt.channels = 2; + fmt.samples = 1024; /* A good value for games */ + fmt.callback = mixaudio; + fmt.userdata = NULL; + + /* Open the audio device and start playing sound! */ + if ( SDL_OpenAudio(&fmt, NULL) < 0 ) { + fprintf(stderr, "Unable to open audio: %s\n", SDL_GetError()); + exit(1); + } + SDL_PauseAudio(0); +} + +AudioPlayer::~AudioPlayer(void) +{ + SDL_CloseAudio(); +} + +struct sample { + Uint8 *data; + Uint32 dpos; + Uint32 dlen; +} sounds[NUM_SOUNDS]; + +void mixaudio(void *unused, Uint8 *stream, int len) +{ + int i; + Uint32 amount; + + for ( i=0; i (Uint32)len ) { + amount = len; + } + SDL_MixAudio(stream, &sounds[i].data[sounds[i].dpos], amount, SDL_MIX_MAXVOLUME); + sounds[i].dpos += amount; + } +} + +void AudioPlayer::PlaySound(std::string fileString) +{ + + char *file = new char[fileString.length() + 1]; + strcpy(file, fileString.c_str()); + + + int index; + SDL_AudioSpec wave; + Uint8 *data; + Uint32 dlen; + SDL_AudioCVT cvt; + + /* Look for an empty (or finished) sound slot */ + for ( index=0; index +#pragma once + +class AudioPlayer +{ +public: + AudioPlayer(void); + ~AudioPlayer(void); + void PlaySound(std::string); +}; diff --git a/G3DTest.vcproj b/G3DTest.vcproj index 79a70d6..3f6d76b 100644 --- a/G3DTest.vcproj +++ b/G3DTest.vcproj @@ -230,6 +230,10 @@ Name="Source Files" Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" > + + @@ -283,6 +287,10 @@ Name="Header Files" Filter="h;hpp;hxx;hm;inl" > + + diff --git a/content/sounds/pageturn.wav b/content/sounds/pageturn.wav new file mode 100644 index 0000000000000000000000000000000000000000..7070da531a528c072130e9697960915856bed7fd GIT binary patch literal 25548 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