aboutsummaryrefslogtreecommitdiff
path: root/examples/sd2_audio
diff options
context:
space:
mode:
authorVitaly Novichkov <admin@wohlnet.ru>2018-12-13 02:28:57 +0300
committerVitaly Novichkov <admin@wohlnet.ru>2018-12-13 02:29:16 +0300
commit68c03edbb563983b6ac3e81a826871bfdf9e3bd4 (patch)
treec9bdcb2dfeaa60cececdd602b8a9f5fdb0b815fa /examples/sd2_audio
parentd89084d6eaf3bb65c134201f61449656226cbf80 (diff)
downloadlibADLMIDI-68c03edbb563983b6ac3e81a826871bfdf9e3bd4.tar.gz
libADLMIDI-68c03edbb563983b6ac3e81a826871bfdf9e3bd4.tar.bz2
libADLMIDI-68c03edbb563983b6ac3e81a826871bfdf9e3bd4.zip
Build: Splid the main CMake build script
Keep it have library code only but no utils and examples are will be built independently #196
Diffstat (limited to 'examples/sd2_audio')
-rw-r--r--examples/sd2_audio/sdl2_sample.c124
1 files changed, 0 insertions, 124 deletions
diff --git a/examples/sd2_audio/sdl2_sample.c b/examples/sd2_audio/sdl2_sample.c
deleted file mode 100644
index b6307d7..0000000
--- a/examples/sd2_audio/sdl2_sample.c
+++ /dev/null
@@ -1,124 +0,0 @@
-#include <SDL2/SDL.h>
-#include <adlmidi.h>
-
-/* prototype for our audio callback */
-/* see the implementation for more information */
-void my_audio_callback(void *midi_player, Uint8 *stream, int len);
-
-/* variable declarations */
-static Uint32 is_playing = 0; /* remaining length of the sample we have to play */
-static short buffer[4096]; /* Audio buffer */
-
-
-int main(int argc, char *argv[])
-{
- /* local variables */
- static SDL_AudioSpec spec; /* the specs of our piece of music */
- static struct ADL_MIDIPlayer *midi_player = NULL; /* Instance of ADLMIDI player */
- static const char *music_path = NULL; /* Path to music file */
-
- if (argc < 2)
- {
- fprintf(stderr, "\n"
- "\n"
- "No given files to play!\n"
- "\n"
- "Syntax: %s <path-to-MIDI-file>\n"
- "\n", argv[0]);
- return 2;
- }
-
- music_path = argv[1];
-
- /* Initialize SDL.*/
- if(SDL_Init(SDL_INIT_AUDIO) < 0)
- return 1;
-
- spec.freq = 44100;
- spec.format = AUDIO_S16SYS;
- spec.channels = 2;
- spec.samples = 2048;
-
- /* Initialize ADLMIDI */
- midi_player = adl_init(spec.freq);
- if (!midi_player)
- {
- fprintf(stderr, "Couldn't initialize ADLMIDI: %s\n", adl_errorString());
- return 1;
- }
-
- /* set the callback function */
- spec.callback = my_audio_callback;
- /* set ADLMIDI's descriptor as userdata to use it for sound generation */
- spec.userdata = midi_player;
-
- /* Open the audio device */
- if (SDL_OpenAudio(&spec, NULL) < 0)
- {
- fprintf(stderr, "Couldn't open audio: %s\n", SDL_GetError());
- return 1;
- }
-
- /* Optionally Setup ADLMIDI as you want */
-
- /* Set using of embedded bank by ID */
- /*adl_setBank(midi_player, 68);*/
-
- /* Set using of custom bank (WOPL format) loaded from a file */
- /*adl_openBankFile(midi_player, "/home/vitaly/Yandex.Disk/Музыка/Wolfinstein.wopl");*/
-
- /* Open the MIDI (or MUS, IMF or CMF) file to play */
- if (adl_openFile(midi_player, music_path) < 0)
- {
- fprintf(stderr, "Couldn't open music file: %s\n", adl_errorInfo(midi_player));
- SDL_CloseAudio();
- adl_close(midi_player);
- return 1;
- }
-
- is_playing = 1;
- /* Start playing */
- SDL_PauseAudio(0);
-
- printf("Playing... Hit Ctrl+C to quit!\n");
-
- /* wait until we're don't playing */
- while (is_playing)
- {
- SDL_Delay(100);
- }
-
- /* shut everything down */
- SDL_CloseAudio();
- adl_close(midi_player);
-
- return 0;
-}
-
-/*
- audio callback function
- here you have to copy the data of your audio buffer into the
- requesting audio buffer (stream)
- you should only copy as much as the requested length (len)
-*/
-void my_audio_callback(void *midi_player, Uint8 *stream, int len)
-{
- struct ADL_MIDIPlayer* p = (struct ADL_MIDIPlayer*)midi_player;
-
- /* Convert bytes length into total count of samples in all channels */
- int samples_count = len / 2;
-
- /* Take some samples from the ADLMIDI */
- samples_count = adl_play(p, samples_count, (short*)buffer);
-
- if(samples_count <= 0)
- {
- is_playing = 0;
- SDL_memset(stream, 0, len);
- return;
- }
-
- /* Send buffer to the audio device */
- SDL_memcpy(stream, (Uint8*)buffer, samples_count * 2);
-}
-