aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore2
-rw-r--r--Makefile4
-rw-r--r--README.md2
-rw-r--r--src/audio.c55
4 files changed, 52 insertions, 11 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..4732aa8
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+bin
+src/*.o
diff --git a/Makefile b/Makefile
index 4f6a822..ded495b 100644
--- a/Makefile
+++ b/Makefile
@@ -6,9 +6,7 @@ LDFLAGS=$(shell pkg-config --libs SDL2_mixer)
SRC=$(wildcard src/*.c)
OBJ=$(SRC:.c=.o)
-LIBS=$(wildcard $(LIB)/*.c)
-
-BIN=audio
+BIN=bin
$(BIN): $(OBJ)
$(CC) $(CFLAGS) $^ -o $@ $(LDFLAGS)
diff --git a/README.md b/README.md
index 8916e58..7096bae 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,5 @@
audio thing
only ogg and flac support (flip other filetypes)
+
+dependencies: sdl2 and sdl2_mixer
diff --git a/src/audio.c b/src/audio.c
index bc139a2..6a11bc4 100644
--- a/src/audio.c
+++ b/src/audio.c
@@ -1,33 +1,72 @@
-#include <SDL2/SDL_audio.h>
+#include <assert.h>
+#include <unistd.h>
#include <stdio.h>
+#include <stdlib.h>
+#include <stdbool.h>
#include <SDL2/SDL.h>
#include <SDL2/SDL_mixer.h>
#include "base.h"
-#define MIXER_FLAGS MIX_INIT_OGG | MIX_INIT_FLAC
-
-int main (int argc, char *argv[] ) {
+#define MIXER_FLAGS (MIX_INIT_FLAC | MIX_INIT_OGG)
+bool initSDL(void) {
// initialization of SDLs audio system and the mixer
if (SDL_Init(SDL_INIT_AUDIO) != 0) {
- fprintf(stderr, "error initializing sdl_mixer: %s\n", SDL_GetError());
+ fprintf(stderr, "error initializing SDL_audio: %s\n", SDL_GetError());
+ exit(EXIT_FAILURE);
}
s32 mixflags = Mix_Init(MIXER_FLAGS);
if ((mixflags & MIXER_FLAGS) != mixflags) {
- fprintf(stderr, "error initializing sdl_mixer: %s\n", Mix_GetError());
+ fprintf(stderr, "error initializing SDL_mixer: %s\n", Mix_GetError());
+ exit(EXIT_FAILURE);
}
// setting up the default audio device for playback (using common defaults)
- Mix_OpenAudio(48000, AUDIO_F32SYS, 2, 2048);
+ if (Mix_OpenAudio(MIX_DEFAULT_FREQUENCY, AUDIO_S16SYS, MIX_DEFAULT_CHANNELS, 2048) != 0) {
+ fprintf(stderr, "error opening audio device: %s\n", Mix_GetError());
+ exit(EXIT_FAILURE);
+ }
+ return true;
+}
+void cleanup(Mix_Music* musicfile) {
+ Mix_HaltMusic();
+ Mix_FreeMusic(musicfile);
Mix_CloseAudio();
Mix_Quit();
SDL_Quit();
- return 0;
}
+int main (int argc, char **argv) {
+
+ bool initialized = initSDL();
+ assert(initialized == true);
+
+ Mix_Music *musicfile = NULL;
+ musicfile = Mix_LoadMUS(argv[1]);
+ if (musicfile == NULL) {
+ fprintf(stderr, "error opening file: %s\n", Mix_GetError());
+ exit(EXIT_FAILURE);
+ }
+
+ if (Mix_PlayMusic(musicfile, 0) == -1) {
+ fprintf(stderr, "error playing music: '%s'\n", argv[1]);
+ }
+
+ fprintf(stderr, "currently playing: '%s'\n", argv[1]);
+
+ u8 key;
+
+ while (Mix_PlayingMusic() != 0) {
+ if (Mix_PlayingMusic() == 0) break;
+ if (read(STDIN_FILENO, &key, 1) != 1 || key == 'q') break;
+ }
+
+ cleanup(musicfile);
+ return 0;
+}