diff --git a/C/BANK1/1.wav b/C/BANK1/1.wav new file mode 100644 index 0000000..dcb8553 Binary files /dev/null and b/C/BANK1/1.wav differ diff --git a/C/BANK1/2.wav b/C/BANK1/2.wav new file mode 100644 index 0000000..72a4822 Binary files /dev/null and b/C/BANK1/2.wav differ diff --git a/C/BANK1/3.wav b/C/BANK1/3.wav new file mode 100644 index 0000000..dcdf716 Binary files /dev/null and b/C/BANK1/3.wav differ diff --git a/C/BANK1/4.wav b/C/BANK1/4.wav new file mode 100644 index 0000000..88f21f3 Binary files /dev/null and b/C/BANK1/4.wav differ diff --git a/C/BANK1/5.wav b/C/BANK1/5.wav new file mode 100644 index 0000000..5ca2202 Binary files /dev/null and b/C/BANK1/5.wav differ diff --git a/C/BANK1/6.wav b/C/BANK1/6.wav new file mode 100644 index 0000000..2a93d79 Binary files /dev/null and b/C/BANK1/6.wav differ diff --git a/C/compile.sh b/C/compile.sh new file mode 100644 index 0000000..c9815d1 --- /dev/null +++ b/C/compile.sh @@ -0,0 +1 @@ +g++ -o main -I/usr/include/SDL2 main.cpp -lSDL2 -lSDL2_image -lSDL2_ttf -lSDL2_mixer diff --git a/C/main b/C/main new file mode 100755 index 0000000..48cb35d Binary files /dev/null and b/C/main differ diff --git a/C/main.cpp b/C/main.cpp new file mode 100644 index 0000000..7621c27 --- /dev/null +++ b/C/main.cpp @@ -0,0 +1,120 @@ +#include + +#include "SDL.h" +#include "SDL_mixer.h" +#include "SDL_image.h" +#include +#include +#include +#include + +#define NUM_WAVEFORMS 6 +const char* _waveFileNames[] = { + "BANK1/1.wav", + "BANK1/2.wav", + "BANK1/3.wav", + "BANK1/4.wav", + "BANK1/5.wav", + "BANK1/6.wav", +}; + +Mix_Chunk* _sample[6]; + +int Init(void) { + + memset(_sample, 0, sizeof(Mix_Chunk*) * 6); + + // Set up the audio stream + int result = Mix_OpenAudio(44100, AUDIO_S16SYS, 2, 512); + if( result < 0 ) { + fprintf(stderr, "Unable to open audio: %s\n", SDL_GetError()); + exit(-1); + } + + result = Mix_AllocateChannels(4); + if( result < 0 ) { + fprintf(stderr, "Unable to allocate mixing channels: %s\n", SDL_GetError()); + exit(-1); + } + + // Load waveforms + for( int i = 0; i < NUM_WAVEFORMS; i++ ) { + _sample[i] = Mix_LoadWAV(_waveFileNames[i]); + if( _sample[i] == NULL ) { + fprintf(stderr, "Unable to load wave file: %s\n", _waveFileNames[i]); + } + } + + return true; +} + +int main(int argc, char** argv) { + + SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO ); + atexit(SDL_Quit); + + SDL_Window* window = SDL_CreateWindow("Sonquencer", + SDL_WINDOWPOS_UNDEFINED, + SDL_WINDOWPOS_UNDEFINED, + 800, + 600, + SDL_WINDOW_RESIZABLE); + + if (Init() == false) { return -1;} + + SDL_Event Event; + + bool done = false; + while (!done) { + bool gotEvent = SDL_PollEvent(&Event); + + while (!done && gotEvent) { + switch (Event.type) { + case SDL_KEYDOWN: + + switch (Event.key.keysym.sym) { + case '1': + Mix_PlayChannel(-1, _sample[0], 0); + break; + case '2': + Mix_PlayChannel(-1, _sample[1], 0); + break; + case '3': + Mix_PlayChannel(-1, _sample[2], 0); + break; + case '4': + Mix_PlayChannel(-1, _sample[3], 0); + break; + case '5': + Mix_PlayChannel(-1, _sample[4], 0); + break; + case '6': + Mix_PlayChannel(-1, _sample[5], 0); + break; + default: + break; + } + break; + + case SDL_QUIT: + done = true; + break; + + default: + break; + } + if( !done ) { gotEvent = SDL_PollEvent(&Event); } + } + + usleep(1000); + + } + + for( int i = 0; i < NUM_WAVEFORMS; i++ ) { + Mix_FreeChunk(_sample[i]); + } + + Mix_CloseAudio(); + SDL_Quit(); + return 0; +}