From 2de9253b6c1e67281c4c4ef2a5e89d54a61d8e34 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Wed, 2 Aug 2023 12:13:35 -0400 Subject: [PATCH] test: Added testaudio --- test/CMakeLists.txt | 1 + test/audiofile.bmp | Bin 0 -> 65674 bytes test/logaudiodev.bmp | Bin 0 -> 65674 bytes test/physaudiodev.bmp | Bin 0 -> 65674 bytes test/soundboard.bmp | Bin 0 -> 65674 bytes test/soundboard_levels.bmp | Bin 0 -> 2698 bytes test/speaker.bmp | Bin 0 -> 65674 bytes test/testaudio-art.txt | 8 + test/testaudio.c | 1064 ++++++++++++++++++++++++++++++++++++ test/trashcan.bmp | Bin 0 -> 65674 bytes 10 files changed, 1073 insertions(+) create mode 100644 test/audiofile.bmp create mode 100644 test/logaudiodev.bmp create mode 100644 test/physaudiodev.bmp create mode 100644 test/soundboard.bmp create mode 100644 test/soundboard_levels.bmp create mode 100644 test/speaker.bmp create mode 100644 test/testaudio-art.txt create mode 100644 test/testaudio.c create mode 100644 test/trashcan.bmp diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index ee8b871692..d207a9afd2 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -202,6 +202,7 @@ if(Python3_FOUND AND Python3_VERSION VERSION_GREATER_EQUAL "3.2") endforeach() endif() +add_sdl_test_executable(testaudio NEEDS_RESOURCES TESTUTILS SOURCES testaudio.c) add_sdl_test_executable(testfile NONINTERACTIVE SOURCES testfile.c) add_sdl_test_executable(testcontroller TESTUTILS SOURCES testcontroller.c gamepadutils.c ${gamepad_image_headers}) add_sdl_test_executable(testgeometry TESTUTILS SOURCES testgeometry.c) diff --git a/test/audiofile.bmp b/test/audiofile.bmp new file mode 100644 index 0000000000000000000000000000000000000000..f8b8106d6ecf70326ee677a9b3896cdfd8b59723 GIT binary patch literal 65674 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 literal 0 HcmV?d00001 diff --git a/test/logaudiodev.bmp b/test/logaudiodev.bmp new file mode 100644 index 0000000000000000000000000000000000000000..ef231d75a7c48057abc019ad1027575e6ada1f4b GIT binary patch literal 65674 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 literal 0 HcmV?d00001 diff --git a/test/soundboard.bmp b/test/soundboard.bmp new file mode 100644 index 0000000000000000000000000000000000000000..032b8984366d87ad2eb09096807af0226c3d369f GIT binary patch literal 65674 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 literal 0 HcmV?d00001 diff --git a/test/soundboard_levels.bmp b/test/soundboard_levels.bmp new file mode 100644 index 0000000000000000000000000000000000000000..ce4cd5ba77342a16d7feaf17ed34f93d77294ed9 GIT binary patch literal 2698 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 E0FX|5a{vGU literal 0 HcmV?d00001 diff --git a/test/testaudio-art.txt b/test/testaudio-art.txt new file mode 100644 index 0000000000..f30a3d24ee --- /dev/null +++ b/test/testaudio-art.txt @@ -0,0 +1,8 @@ +The .bmp files used by testaudio.c were made by AlDraw: + +https://linktr.ee/AlexDraw + +They may be distributed as public domain files! + + + diff --git a/test/testaudio.c b/test/testaudio.c new file mode 100644 index 0000000000..d8ca140567 --- /dev/null +++ b/test/testaudio.c @@ -0,0 +1,1064 @@ +#include + +#ifdef __EMSCRIPTEN__ +#include +#endif + +#include +#include +#include +#include "testutils.h" + +#define POOF_LIFETIME 250 + +typedef struct Texture +{ + SDL_Texture *texture; + float w; + float h; +} Texture; + +typedef enum ThingType +{ + THING_NULL, + THING_PHYSDEV, + THING_PHYSDEV_CAPTURE, + THING_LOGDEV, + THING_LOGDEV_CAPTURE, + THING_TRASHCAN, + THING_STREAM, + THING_POOF, + THING_WAV +} ThingType; + + +typedef struct Thing Thing; + +struct Thing +{ + ThingType what; + + union { + struct { + SDL_AudioDeviceID devid; + SDL_bool iscapture; + SDL_AudioSpec spec; + char *name; + } physdev; + struct { + SDL_AudioDeviceID devid; + SDL_bool iscapture; + SDL_AudioSpec spec; + Thing *physdev; + } logdev; + struct { + SDL_AudioSpec spec; + Uint8 *buf; + Uint32 buflen; + } wav; + struct { + float startw; + float starth; + float centerx; + float centery; + } poof; + struct { + SDL_AudioStream *stream; + int total_ticks; + Uint64 next_level_update; + Uint8 levels[5]; + } stream; + } data; + + Thing *line_connected_to; + char *titlebar; + SDL_FRect rect; + float z; + Uint8 r, g, b, a; + float progress; + float scale; + Uint64 createticks; + Texture *texture; + const ThingType *can_be_dropped_onto; + + void (*ontick)(Thing *thing, Uint64 now); + void (*ondrag)(Thing *thing, int button, float x, float y); + void (*ondrop)(Thing *thing, int button, float x, float y); + void (*ondraw)(Thing *thing, SDL_Renderer *renderer); + + Thing *prev; + Thing *next; +}; + + +static Uint64 app_ready_ticks = 0; +static int done = 0; +static SDLTest_CommonState *state = NULL; + +static Thing *things = NULL; +static char *current_titlebar = NULL; + +static Thing *droppable_highlighted_thing = NULL; +static Thing *dragging_thing = NULL; +static int dragging_button = -1; + +static Texture *physdev_texture = NULL; +static Texture *logdev_texture = NULL; +static Texture *audio_texture = NULL; +static Texture *trashcan_texture = NULL; +static Texture *soundboard_texture = NULL; +static Texture *soundboard_levels_texture = NULL; + +static void DestroyTexture(Texture *tex); + +/* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */ +static void Quit(int rc) +{ + DestroyTexture(physdev_texture); + DestroyTexture(logdev_texture); + DestroyTexture(audio_texture); + DestroyTexture(trashcan_texture); + DestroyTexture(soundboard_texture); + DestroyTexture(soundboard_levels_texture); + SDLTest_CommonQuit(state); + /* Let 'main()' return normally */ + if (rc != 0) { + exit(rc); + } +} + +static char *xstrdup(const char *str) +{ + char *ptr = SDL_strdup(str); + if (!ptr) { + SDL_Log("Out of memory!"); + Quit(1); + } + return ptr; +} + +static void *xalloc(const size_t len) +{ + void *ptr = SDL_calloc(1, len); + if (!ptr) { + SDL_Log("Out of memory!"); + Quit(1); + } + return ptr; +} + + +static void SetTitleBar(const char *fmt, ...) +{ + char *newstr = NULL; + va_list ap; + va_start(ap, fmt); + SDL_vasprintf(&newstr, fmt, ap); + va_end(ap); + + if (newstr && (!current_titlebar || (SDL_strcmp(current_titlebar, newstr) != 0))) { + SDL_SetWindowTitle(state->windows[0], newstr); + SDL_free(current_titlebar); + current_titlebar = newstr; + } else { + SDL_free(newstr); + } +} + +static void SetDefaultTitleBar(void) +{ + SetTitleBar("testaudio: %s", SDL_GetCurrentAudioDriver()); +} + +static Thing *FindThingAtPoint(const float x, const float y) +{ + const SDL_FPoint pt = { x, y }; + Thing *retval = NULL; + Thing *i; + for (i = things; i != NULL; i = i->next) { + if ((i != dragging_thing) && SDL_PointInRectFloat(&pt, &i->rect)) { + retval = i; /* keep going, though, because things drawn on top are later in the list. */ + } + } + return retval; +} + +static Thing *UpdateMouseOver(const float x, const float y) +{ + Thing *thing; + + if (dragging_thing) { + thing = dragging_thing; + } else { + thing = FindThingAtPoint(x, y); + } + + if (!thing) { + SetDefaultTitleBar(); + } else if (thing->titlebar) { + SetTitleBar("%s", thing->titlebar); + } + + return thing; +} + +static Thing *CreateThing(ThingType what, float x, float y, float z, float w, float h, Texture *texture, char *titlebar) +{ + Thing *last = NULL; + Thing *i; + Thing *thing; + + thing = (Thing *) xalloc(sizeof (Thing)); + if ((w < 0) || (h < 0)) { + SDL_assert(texture != NULL); + if (w < 0) { + w = texture->w; + } + if (h < 0) { + h = texture->h; + } + } + + thing->what = what; + thing->rect.x = x; + thing->rect.y = y; + thing->rect.w = w; + thing->rect.h = h; + thing->z = z; + thing->r = 255; + thing->g = 255; + thing->b = 255; + thing->a = 255; + thing->scale = 1.0f; + thing->createticks = SDL_GetTicks(); + thing->texture = texture; + thing->titlebar = titlebar; + + /* insert in list by Z order (furthest from the "camera" first, so they get drawn over; negative Z is not drawn at all). */ + if (things == NULL) { + things = thing; + return thing; + } + + for (i = things; i != NULL; i = i->next) { + if (z > i->z) { /* insert here. */ + thing->next = i; + thing->prev = i->prev; + + SDL_assert(i->prev == last); + + if (i->prev) { + i->prev->next = thing; + } else { + SDL_assert(i == things); + things = thing; + } + i->prev = thing; + return thing; + } + last = i; + } + + if (last) { + last->next = thing; + thing->prev = last; + } + return thing; +} + +static void DestroyThing(Thing *thing) +{ + if (!thing) { + return; + } + + switch (thing->what) { + case THING_POOF: break; + case THING_NULL: break; + case THING_TRASHCAN: break; + case THING_LOGDEV: + case THING_LOGDEV_CAPTURE: + SDL_CloseAudioDevice(thing->data.logdev.devid); + break; + case THING_PHYSDEV: + case THING_PHYSDEV_CAPTURE: + SDL_free(thing->data.physdev.name); + break; + case THING_WAV: + SDL_free(thing->data.wav.buf); + break; + case THING_STREAM: + SDL_DestroyAudioStream(thing->data.stream.stream); + break; + } + + if (thing->prev) { + thing->prev->next = thing->next; + } else { + SDL_assert(thing == things); + things = thing->next; + } + + if (thing->next) { + thing->next->prev = thing->prev; + } + + SDL_free(thing->titlebar); + SDL_free(thing); +} + +static void DrawOneThing(SDL_Renderer *renderer, Thing *thing) +{ + SDL_FRect dst; + SDL_memcpy(&dst, &thing->rect, sizeof (SDL_FRect)); + if (thing->scale != 1.0f) { + const float centerx = thing->rect.x + (thing->rect.w / 2); + const float centery = thing->rect.y + (thing->rect.h / 2); + SDL_assert(thing->texture != NULL); + dst.w = thing->texture->w * thing->scale; + dst.h = thing->texture->h * thing->scale; + dst.x = centerx - (dst.w / 2); + dst.y = centery - (dst.h / 2); + } + + if (thing->texture) { + if (droppable_highlighted_thing == thing) { + SDL_SetRenderDrawColor(renderer, 255, 0, 255, 100); + SDL_RenderFillRect(renderer, &dst); + } + SDL_SetRenderDrawColor(renderer, thing->r, thing->g, thing->b, thing->a); + SDL_RenderTexture(renderer, thing->texture->texture, NULL, &dst); + } else { + SDL_SetRenderDrawColor(renderer, thing->r, thing->g, thing->b, thing->a); + SDL_RenderFillRect(renderer, &dst); + } + + if (thing->ondraw) { + thing->ondraw(thing, renderer); + } + + if (thing->progress > 0.0f) { + SDL_FRect r = { thing->rect.x, thing->rect.y + (thing->rect.h + 2.0f), 0.0f, 10.0f }; + r.w = thing->rect.w * ((thing->progress > 1.0f) ? 1.0f : thing->progress); + SDL_SetRenderDrawColor(renderer, 255, 255, 255, 128); + SDL_RenderFillRect(renderer, &r); + } +} + +static void DrawThings(SDL_Renderer *renderer) +{ + Thing *i; + + /* draw connecting lines first, so they're behind everything else. */ + for (i = things; i && (i->z >= 0.0f); i = i->next) { + Thing *dst = i->line_connected_to; + if (dst) { + SDL_SetRenderDrawColor(renderer, 255, 0, 0, 255); + SDL_RenderLine(renderer, i->rect.x + (i->rect.w / 2), i->rect.y + (i->rect.h / 2), dst->rect.x + (dst->rect.w / 2), dst->rect.y + (dst->rect.h / 2)); + } + } + + /* Draw the actual things. */ + for (i = things; i && (i->z >= 0.0f); i = i->next) { + if (i != dragging_thing) { + DrawOneThing(renderer, i); + } + } + + if (dragging_thing) { + DrawOneThing(renderer, dragging_thing); /* draw last so it's always on top. */ + } +} + +static void Draw(void) +{ + SDL_Renderer *renderer = state->renderers[0]; + SDL_SetRenderDrawBlendMode(renderer, SDL_BLENDMODE_BLEND); + SDL_SetRenderDrawColor(renderer, 64, 0, 64, 255); + SDL_RenderClear(renderer); + DrawThings(renderer); + SDL_RenderPresent(renderer); +} + +static void RepositionRowOfThings(const ThingType what, const float y) +{ + int total_things = 0; + float texw = 0.0f; + float texh = 0.0f; + Thing *i; + + for (i = things; i != NULL; i = i->next) { + if (i->what == what) { + texw = i->rect.w; + texh = i->rect.h; + total_things++; + } + } + + if (total_things > 0) { + int w, h; + SDL_GetWindowSize(state->windows[0], &w, &h); + const float spacing = w / ((float) total_things); + float x = (spacing - texw) / 2.0f; + for (i = things; i != NULL; i = i->next) { + if (i->what == what) { + i->rect.x = x; + i->rect.y = (y >= 0.0f) ? y : ((h + y) - texh); + x += spacing; + } + } + } +} + +static const char *AudioFmtToString(const SDL_AudioFormat fmt) +{ + switch (fmt) { + #define FMTCASE(x) case SDL_AUDIO_##x: return #x + FMTCASE(U8); + FMTCASE(S8); + FMTCASE(S16LSB); + FMTCASE(S16MSB); + FMTCASE(S32LSB); + FMTCASE(S32MSB); + FMTCASE(F32LSB); + FMTCASE(F32MSB); + #undef FMTCASE + } + return "?"; +} + +static const char *AudioChansToStr(const int channels) +{ + switch (channels) { + case 1: return "mono"; + case 2: return "stereo"; + case 3: return "2.1"; + case 4: return "quad"; + case 5: return "4.1"; + case 6: return "5.1"; + case 7: return "6.1"; + case 8: return "7.1"; + default: break; + } + return "?"; +} + +static void PoofThing_ondrag(Thing *thing, int button, float x, float y) +{ + dragging_thing = NULL; /* refuse to be dragged. */ +} + +static void PoofThing_ontick(Thing *thing, Uint64 now) +{ + const int lifetime = POOF_LIFETIME; + const int elasped = (int) (now - thing->createticks); + if (elasped > lifetime) { + DestroyThing(thing); + } else { + const float pct = ((float) elasped) / ((float) lifetime); + thing->a = (Uint8) (int) (255.0f - (pct * 255.0f)); + thing->scale = 1.0f - pct; /* shrink to nothing! */ + } +} + +static Thing *CreatePoofThing(Thing *poofing_thing) +{ + const float centerx = poofing_thing->rect.x + (poofing_thing->rect.w / 2); + const float centery = poofing_thing->rect.y + (poofing_thing->rect.h / 2); + const float z = poofing_thing->z; + Thing *thing = CreateThing(THING_POOF, poofing_thing->rect.x, poofing_thing->rect.y, z, poofing_thing->rect.w, poofing_thing->rect.h, poofing_thing->texture, NULL); + thing->data.poof.startw = poofing_thing->rect.w; + thing->data.poof.starth = poofing_thing->rect.h; + thing->data.poof.centerx = centerx; + thing->data.poof.centery = centery; + thing->ontick = PoofThing_ontick; + thing->ondrag = PoofThing_ondrag; + return thing; +} + +static void DestroyThingInPoof(Thing *thing) +{ + if (thing) { + if (thing->what != THING_POOF) { + CreatePoofThing(thing); + } + DestroyThing(thing); + } +} + +/* this poofs a thing and additionally poofs all things connected to the thing. */ +static void TrashThing(Thing *thing) +{ + Thing *i, *next; + for (i = things; i != NULL; i = next) { + next = i->next; + if (i->line_connected_to == thing) { + TrashThing(i); + next = things; /* start over in case this blew up the list. */ + } + } + DestroyThingInPoof(thing); +} + +static void StreamThing_ontick(Thing *thing, Uint64 now) +{ + if (!thing->line_connected_to) { + return; + } + + /* are we playing? See if we're done, or update state. */ + if (thing->line_connected_to->what == THING_LOGDEV) { + const int available = SDL_GetAudioStreamAvailable(thing->data.stream.stream); + SDL_AudioSpec spec; + if (!available || (SDL_GetAudioStreamFormat(thing->data.stream.stream, NULL, &spec) < 0)) { + DestroyThingInPoof(thing); + } else { + const int ticksleft = (int) ((((Uint64) ((available / (SDL_AUDIO_BITSIZE(spec.format) / 8)) / spec.channels)) * 1000) / spec.freq); + const float pct = thing->data.stream.total_ticks ? (((float) (ticksleft)) / ((float) thing->data.stream.total_ticks)) : 0.0f; + thing->progress = 1.0f - pct; + } + } + + if (thing->data.stream.next_level_update <= now) { + Uint64 perf = SDL_GetPerformanceCounter(); + int i; + for (i = 0; i < SDL_arraysize(thing->data.stream.levels); i++) { + thing->data.stream.levels[i] = (Uint8) (perf % 6); + perf >>= 3; + } + thing->data.stream.next_level_update += 150; + } +} + +static void StreamThing_ondrag(Thing *thing, int button, float x, float y) +{ + if (button == SDL_BUTTON_RIGHT) { /* this is kinda hacky, but use this to disconnect from a playing source. */ + if (thing->line_connected_to) { + SDL_UnbindAudioStream(thing->data.stream.stream); /* unbind from current device */ + thing->line_connected_to = NULL; + } + } +} + +static void StreamThing_ondrop(Thing *thing, int button, float x, float y) +{ + if (droppable_highlighted_thing) { + if (droppable_highlighted_thing->what == THING_TRASHCAN) { + TrashThing(thing); + } else if (((droppable_highlighted_thing->what == THING_LOGDEV) || (droppable_highlighted_thing->what == THING_LOGDEV_CAPTURE)) && (droppable_highlighted_thing != thing->line_connected_to)) { + /* connect to a logical device! */ + SDL_Log("Binding audio stream ('%s') to logical device %u", thing->titlebar, droppable_highlighted_thing->data.logdev.devid); + if (thing->line_connected_to) { + const SDL_AudioSpec *spec = &droppable_highlighted_thing->data.logdev.spec; + SDL_UnbindAudioStream(thing->data.stream.stream); /* unbind from current device */ + if (thing->line_connected_to->what == THING_LOGDEV_CAPTURE) { + SDL_FlushAudioStream(thing->data.stream.stream); + thing->data.stream.total_ticks = (int) (((((Uint64) (SDL_GetAudioStreamAvailable(thing->data.stream.stream) / (SDL_AUDIO_BITSIZE(spec->format) / 8))) / spec->channels) * 1000) / spec->freq); + } + } + + SDL_BindAudioStream(droppable_highlighted_thing->data.logdev.devid, thing->data.stream.stream); /* bind to new device! */ + + thing->progress = 0.0f; /* ontick will adjust this if we're on an output device.*/ + thing->data.stream.next_level_update = SDL_GetTicks() + 100; + thing->line_connected_to = droppable_highlighted_thing; + } + } +} + +static void StreamThing_ondraw(Thing *thing, SDL_Renderer *renderer) +{ + if (thing->line_connected_to) { /* are we playing? Update progress bar, and bounce the levels a little. */ + static const float xlocs[5] = { 18, 39, 59, 79, 99 }; + static const float ylocs[5] = { 49, 39, 29, 19, 10 }; + const float blockw = soundboard_levels_texture->w; + const float blockh = soundboard_levels_texture->h / 5.0f; + int i, j; + SDL_SetRenderDrawColor(renderer, thing->r, thing->g, thing->b, thing->a); + for (i = 0; i < SDL_arraysize(thing->data.stream.levels); i++) { + const int level = (int) thing->data.stream.levels[i]; + const float x = xlocs[i]; + for (j = 0; j < level; j++) { + const SDL_FRect src = { 0, soundboard_levels_texture->h - ((j+1) * blockh), blockw, blockh }; + const SDL_FRect dst = { thing->rect.x + x, thing->rect.y + ylocs[j], blockw, blockh }; + SDL_RenderTexture(renderer, soundboard_levels_texture->texture, &src, &dst); + } + } + } +} + +static Thing *CreateStreamThing(const SDL_AudioSpec *spec, const Uint8 *buf, const Uint32 buflen, const char *fname, const float x, const float y) +{ + static const ThingType can_be_dropped_onto[] = { THING_TRASHCAN, THING_LOGDEV, THING_LOGDEV_CAPTURE, THING_NULL }; + Thing *thing = CreateThing(THING_STREAM, x, y, 0, -1, -1, soundboard_texture, fname ? xstrdup(fname) : NULL); + SDL_Log("Adding audio stream for %s", fname); + thing->data.stream.stream = SDL_CreateAudioStream(spec, spec); + if (buf && buflen) { + SDL_PutAudioStreamData(thing->data.stream.stream, buf, (int) buflen); + SDL_FlushAudioStream(thing->data.stream.stream); + thing->data.stream.total_ticks = (int) (((((Uint64) (SDL_GetAudioStreamAvailable(thing->data.stream.stream) / (SDL_AUDIO_BITSIZE(spec->format) / 8))) / spec->channels) * 1000) / spec->freq); + } + thing->ontick = StreamThing_ontick; + thing->ondrag = StreamThing_ondrag; + thing->ondrop = StreamThing_ondrop; + thing->ondraw = StreamThing_ondraw; + thing->can_be_dropped_onto = can_be_dropped_onto; + return thing; +} + +static void WavThing_ondrag(Thing *thing, int button, float x, float y) +{ + if (button == SDL_BUTTON_RIGHT) { /* drag out a new audio stream. */ + dragging_thing = CreateStreamThing(&thing->data.wav.spec, thing->data.wav.buf, thing->data.wav.buflen, thing->titlebar, x - (thing->rect.w / 2), y - (thing->rect.h / 2)); + } +} + +static void WavThing_ondrop(Thing *thing, int button, float x, float y) +{ + if (droppable_highlighted_thing) { + if (droppable_highlighted_thing->what == THING_TRASHCAN) { + TrashThing(thing); + } + } +} + +static Thing *LoadWavThing(const char *fname, float x, float y) +{ + Thing *thing = NULL; + char *path; + SDL_AudioSpec spec; + Uint8 *buf = NULL; + Uint32 buflen = 0; + + path = GetNearbyFilename(fname); + if (path) { + fname = path; + } + + if (SDL_LoadWAV(fname, &spec, &buf, &buflen) == 0) { + static const ThingType can_be_dropped_onto[] = { THING_TRASHCAN, THING_NULL }; + char *titlebar = NULL; + const char *nodirs = SDL_strrchr(fname, '/'); + #ifdef __WINDOWS__ + const char *nodirs2 = SDL_strrchr(nodirs ? nodirs : fname, '\\'); + if (nodirs2) { + nodirs = nodirs2; + } + #endif + + SDL_Log("Adding WAV file '%s'", fname); + + if (nodirs) { + nodirs++; + } else { + nodirs = fname; + } + + SDL_asprintf(&titlebar, "WAV file (\"%s\", %s, %s, %uHz)", nodirs, AudioFmtToString(spec.format), AudioChansToStr(spec.channels), (unsigned int) spec.freq); + thing = CreateThing(THING_WAV, x - (audio_texture->w / 2), y - (audio_texture->h / 2), 5, -1, -1, audio_texture, titlebar); + SDL_memcpy(&thing->data.wav.spec, &spec, sizeof (SDL_AudioSpec)); + thing->data.wav.buf = buf; + thing->data.wav.buflen = buflen; + thing->can_be_dropped_onto = can_be_dropped_onto; + thing->ondrag = WavThing_ondrag; + thing->ondrop = WavThing_ondrop; + } + + SDL_free(path); + + return thing; +} + +static Thing *LoadStockWavThing(const char *fname) +{ + char *path = GetNearbyFilename(fname); + Thing *thing = LoadWavThing(path ? path : fname, 0.0f, 0.0f); /* will reposition in a moment. */ + SDL_free(path); + return thing; +} + +static void LoadStockWavThings(void) +{ + LoadStockWavThing("sample.wav"); + RepositionRowOfThings(THING_WAV, -10.0f); +} + +static void DestroyTexture(Texture *tex) +{ + if (tex) { + SDL_DestroyTexture(tex->texture); + SDL_free(tex); + } +} + +static Texture *CreateTexture(const char *fname) +{ + Texture *tex = (Texture *) xalloc(sizeof (Texture)); + int texw, texh; + tex->texture = LoadTexture(state->renderers[0], fname, SDL_TRUE, &texw, &texh); + if (!tex->texture) { + SDL_Log("Failed to load '%s': %s", fname, SDL_GetError()); + SDL_free(tex); + Quit(1); + } + SDL_SetTextureBlendMode(tex->texture, SDL_BLENDMODE_BLEND); + tex->w = (float) texw; + tex->h = (float) texh; + return tex; +} + +static Thing *CreateLogicalDeviceThing(Thing *parent, const SDL_AudioDeviceID which, const float x, const float y); + +static void DeviceThing_ondrag(Thing *thing, int button, float x, float y) +{ + if ((button == SDL_BUTTON_MIDDLE) && (thing->what == THING_LOGDEV_CAPTURE)) { /* drag out a new stream. This is a UX mess. :/ */ + dragging_thing = CreateStreamThing(&thing->data.logdev.spec, NULL, 0, NULL, x, y); + dragging_thing->data.stream.next_level_update = SDL_GetTicks() + 100; + SDL_BindAudioStream(thing->data.logdev.devid, dragging_thing->data.stream.stream); /* bind to new device! */ + dragging_thing->line_connected_to = thing; + } else if (button == SDL_BUTTON_RIGHT) { /* drag out a new logical device. */ + const SDL_AudioDeviceID which = ((thing->what == THING_LOGDEV) || (thing->what == THING_LOGDEV_CAPTURE)) ? thing->data.logdev.devid : thing->data.physdev.devid; + const SDL_AudioDeviceID devid = SDL_OpenAudioDevice(which, NULL); + dragging_thing = devid ? CreateLogicalDeviceThing(thing, devid, x - (thing->rect.w / 2), y - (thing->rect.h / 2)) : NULL; + } +} + +static void SetLogicalDeviceTitlebar(Thing *thing) +{ + SDL_AudioSpec *spec = &thing->data.logdev.spec; + SDL_GetAudioDeviceFormat(thing->data.logdev.devid, spec); + SDL_asprintf(&thing->titlebar, "Logical device #%u (%s, %s, %s, %uHz)", (unsigned int) thing->data.logdev.devid, thing->data.logdev.iscapture ? "CAPTURE" : "OUTPUT", AudioFmtToString(spec->format), AudioChansToStr(spec->channels), (unsigned int) spec->freq); +} + +static void LogicalDeviceThing_ondrop(Thing *thing, int button, float x, float y) +{ + if (droppable_highlighted_thing) { + if (droppable_highlighted_thing->what == THING_TRASHCAN) { + TrashThing(thing); + } + } +} + +static Thing *CreateLogicalDeviceThing(Thing *parent, const SDL_AudioDeviceID which, const float x, const float y) +{ + static const ThingType can_be_dropped_onto[] = { THING_TRASHCAN, THING_NULL }; + Thing *physthing = ((parent->what == THING_LOGDEV) || (parent->what == THING_LOGDEV_CAPTURE)) ? parent->data.logdev.physdev : parent; + const SDL_bool iscapture = physthing->data.physdev.iscapture; + Thing *thing; + + SDL_Log("Adding logical audio device %u", (unsigned int) which); + thing = CreateThing(iscapture ? THING_LOGDEV_CAPTURE : THING_LOGDEV, x, y, 5, -1, -1, logdev_texture, NULL); + thing->data.logdev.devid = which; + thing->data.logdev.iscapture = iscapture; + thing->data.logdev.physdev = physthing; + thing->line_connected_to = physthing; + thing->ondrag = DeviceThing_ondrag; + thing->ondrop = LogicalDeviceThing_ondrop; + thing->can_be_dropped_onto = can_be_dropped_onto; + + SetLogicalDeviceTitlebar(thing); + return thing; +} + +static void SetPhysicalDeviceTitlebar(Thing *thing) +{ + SDL_AudioSpec *spec = &thing->data.physdev.spec; + SDL_GetAudioDeviceFormat(thing->data.physdev.devid, spec); + if (thing->data.physdev.devid == SDL_AUDIO_DEVICE_DEFAULT_CAPTURE) { + SDL_asprintf(&thing->titlebar, "Default system device (CAPTURE, %s, %s, %uHz)", AudioFmtToString(spec->format), AudioChansToStr(spec->channels), (unsigned int) spec->freq); + } else if (thing->data.physdev.devid == SDL_AUDIO_DEVICE_DEFAULT_OUTPUT) { + SDL_asprintf(&thing->titlebar, "Default system device (OUTPUT, %s, %s, %uHz)", AudioFmtToString(spec->format), AudioChansToStr(spec->channels), (unsigned int) spec->freq); + } else { + SDL_asprintf(&thing->titlebar, "Physical device #%u (%s, \"%s\", %s, %s, %uHz)", (unsigned int) thing->data.physdev.devid, thing->data.physdev.iscapture ? "CAPTURE" : "OUTPUT", thing->data.physdev.name, AudioFmtToString(spec->format), AudioChansToStr(spec->channels), (unsigned int) spec->freq); + } +} + +static void PhysicalDeviceThing_ondrop(Thing *thing, int button, float x, float y) +{ + if (droppable_highlighted_thing) { + if (droppable_highlighted_thing->what == THING_TRASHCAN) { + TrashThing(thing); + } + } +} + +static void PhysicalDeviceThing_ontick(Thing *thing, Uint64 now) +{ + const int lifetime = POOF_LIFETIME; + const int elasped = (int) (now - thing->createticks); + if (elasped > lifetime) { + thing->scale = 1.0f; + thing->a = 255; + thing->ontick = NULL; /* no more ticking. */ + } else { + const float pct = ((float) elasped) / ((float) lifetime); + thing->a = (Uint8) (int) (pct * 255.0f); + thing->scale = pct; /* grow to normal size */ + } +} + + +static Thing *CreatePhysicalDeviceThing(const SDL_AudioDeviceID which, const SDL_bool iscapture) +{ + static const ThingType can_be_dropped_onto[] = { THING_TRASHCAN, THING_NULL }; + static float next_physdev_x = 0; + Thing *thing; + int winw, winh; + + SDL_GetWindowSize(state->windows[0], &winw, &winh); + if (next_physdev_x > (winw-physdev_texture->w)) { + next_physdev_x = 0; + } + + SDL_Log("Adding physical audio device %u", (unsigned int) which); + thing = CreateThing(iscapture ? THING_PHYSDEV_CAPTURE : THING_PHYSDEV, next_physdev_x, 170, 5, -1, -1, physdev_texture, NULL); + thing->data.physdev.devid = which; + thing->data.physdev.iscapture = iscapture; + thing->data.physdev.name = SDL_GetAudioDeviceName(which); + thing->ondrag = DeviceThing_ondrag; + thing->ondrop = PhysicalDeviceThing_ondrop; + thing->ontick = PhysicalDeviceThing_ontick; + thing->can_be_dropped_onto = can_be_dropped_onto; + + SetPhysicalDeviceTitlebar(thing); + if (SDL_GetTicks() <= (app_ready_ticks + 2000)) { /* assume this is the initial batch if it happens in the first two seconds. */ + RepositionRowOfThings(THING_PHYSDEV, 10.0f); /* don't rearrange them after the initial add. */ + RepositionRowOfThings(THING_PHYSDEV_CAPTURE, 170.0f); /* don't rearrange them after the initial add. */ + next_physdev_x = 0.0f; + } else { + next_physdev_x += physdev_texture->w * 1.5f; + } + + return thing; +} + +static Thing *CreateTrashcanThing(void) +{ + int winw, winh; + SDL_GetWindowSize(state->windows[0], &winw, &winh); + return CreateThing(THING_TRASHCAN, winw - trashcan_texture->w, winh - trashcan_texture->h, 10, -1, -1, trashcan_texture, "Drag things here to remove them."); +} + +static Thing *CreateDefaultPhysicalDevice(const SDL_bool iscapture) +{ + return CreatePhysicalDeviceThing(iscapture ? SDL_AUDIO_DEVICE_DEFAULT_CAPTURE : SDL_AUDIO_DEVICE_DEFAULT_OUTPUT, iscapture); +} + +static void TickThings(void) +{ + Thing *i; + Thing *next; + const Uint64 now = SDL_GetTicks(); + for (i = things; i != NULL; i = next) { + next = i->next; /* in case this deletes itself. */ + if (i->ontick) { + i->ontick(i, now); + } + } +} + +static void WindowResized(const int newwinw, const int newwinh) +{ + Thing *i; + const float neww = (float) newwinw; + const float newh = (float) newwinh; + const float oldw = (float) state->window_w; + const float oldh = (float) state->window_h; + for (i = things; i != NULL; i = i->next) { + const float halfw = i->rect.w / 2.0f; + const float halfh = i->rect.h / 2.0f; + const float x = (i->rect.x + halfw) / oldw; + const float y = (i->rect.y + halfh) / oldh; + i->rect.x = (x * neww) - halfw; + i->rect.y = (y * newh) - halfh; + } + state->window_w = newwinw; + state->window_h = newwinh; +} + + +static void Loop(void) +{ + SDL_Event event; + SDL_bool saw_event = SDL_FALSE; + + if (app_ready_ticks == 0) { + app_ready_ticks = SDL_GetTicks(); + } + + while (SDL_PollEvent(&event)) { + Thing *thing = NULL; + + saw_event = SDL_TRUE; + + switch (event.type) { + case SDL_EVENT_MOUSE_MOTION: + thing = UpdateMouseOver(event.motion.x, event.motion.y); + if ((dragging_button == -1) && event.motion.state) { + if (event.motion.state & SDL_BUTTON_LMASK) { + dragging_button = SDL_BUTTON_LEFT; + } else if (event.motion.state & SDL_BUTTON_RMASK) { + dragging_button = SDL_BUTTON_RIGHT; + } else if (event.motion.state & SDL_BUTTON_MMASK) { + dragging_button = SDL_BUTTON_MIDDLE; + } + + + if (dragging_button != -1) { + dragging_thing = thing; + if (thing && thing->ondrag) { + thing->ondrag(thing, dragging_button, event.motion.x, event.motion.y); + } + } + } + + droppable_highlighted_thing = NULL; + if (dragging_thing) { + dragging_thing->rect.x = event.motion.x - (dragging_thing->rect.w / 2); + dragging_thing->rect.y = event.motion.y - (dragging_thing->rect.h / 2); + if (dragging_thing->can_be_dropped_onto) { + thing = FindThingAtPoint(event.motion.x, event.motion.y); + if (thing) { + int i; + for (i = 0; dragging_thing->can_be_dropped_onto[i]; i++) { + if (dragging_thing->can_be_dropped_onto[i] == thing->what) { + droppable_highlighted_thing = thing; + break; + } + } + } + } + } + break; + + case SDL_EVENT_MOUSE_BUTTON_DOWN: + thing = UpdateMouseOver(event.button.x, event.button.y); + break; + + case SDL_EVENT_MOUSE_BUTTON_UP: + if (dragging_button == event.button.button) { + Thing *dropped_thing = dragging_thing; + dragging_thing = NULL; + dragging_button = -1; + if (dropped_thing && dropped_thing->ondrop) { + dropped_thing->ondrop(dropped_thing, event.button.button, event.button.x, event.button.y); + } + droppable_highlighted_thing = NULL; + } + thing = UpdateMouseOver(event.button.x, event.button.y); + break; + + case SDL_EVENT_MOUSE_WHEEL: + UpdateMouseOver(event.wheel.mouseX, event.wheel.mouseY); + break; + + case SDL_EVENT_DROP_FILE: + SDL_Log("Drop file! '%s'", event.drop.file); + LoadWavThing(event.drop.file, event.drop.x, event.drop.y); + /* SDLTest_CommonEvent will free the string, below. */ + break; + + case SDL_EVENT_WINDOW_RESIZED: + WindowResized(event.window.data1, event.window.data2); + break; + + case SDL_EVENT_AUDIO_DEVICE_ADDED: + CreatePhysicalDeviceThing(event.adevice.which, event.adevice.iscapture); + break; + + case SDL_EVENT_AUDIO_DEVICE_REMOVED: { + const SDL_AudioDeviceID which = event.adevice.which; + Thing *i, *next; + SDL_Log("Removing audio device %u", (unsigned int) which); + for (i = things; i != NULL; i = next) { + next = i->next; + if (((i->what == THING_PHYSDEV) || (i->what == THING_PHYSDEV_CAPTURE)) && (i->data.physdev.devid == which)) { + TrashThing(i); + next = things; /* in case we mangled the list. */ + } else if (((i->what == THING_LOGDEV) || (i->what == THING_LOGDEV_CAPTURE)) && (i->data.logdev.devid == which)) { + TrashThing(i); + next = things; /* in case we mangled the list. */ + } + } + break; + } + + default: break; + } + + SDLTest_CommonEvent(state, &event, &done); + } + + TickThings(); + Draw(); + + if (!saw_event) { + SDL_Delay(10); + } + + #ifdef __EMSCRIPTEN__ + if (done) { + emscripten_cancel_main_loop(); + } + #endif +} + +int main(int argc, char *argv[]) +{ + int i; + + state = SDLTest_CommonCreateState(argv, SDL_INIT_VIDEO | SDL_INIT_AUDIO); + if (state == NULL) { + Quit(1); + } + + state->window_flags |= SDL_WINDOW_RESIZABLE; + + for (i = 1; i < argc;) { + int consumed = SDLTest_CommonArg(state, i); + if (consumed == 0) { + consumed = -1; + /* add our own command lines here. */ + } + if (consumed < 0) { + static const char *options[] = { + /* add our own command lines here. */ + /*"[--blend none|blend|add|mod|mul|sub]",*/ + NULL + }; + SDLTest_CommonLogUsage(state, argv[0], options); + Quit(1); + } + i += consumed; + } + + if (!SDLTest_CommonInit(state)) { + Quit(2); + } + + SetDefaultTitleBar(); + + physdev_texture = CreateTexture("physaudiodev.bmp"); + logdev_texture = CreateTexture("logaudiodev.bmp"); + audio_texture = CreateTexture("audiofile.bmp"); + trashcan_texture = CreateTexture("trashcan.bmp"); + soundboard_texture = CreateTexture("soundboard.bmp"); + soundboard_levels_texture = CreateTexture("soundboard_levels.bmp"); + + LoadStockWavThings(); + CreateTrashcanThing(); + CreateDefaultPhysicalDevice(SDL_FALSE); + CreateDefaultPhysicalDevice(SDL_TRUE); + +#ifdef __EMSCRIPTEN__ + emscripten_set_main_loop(Loop, 0, 1); +#else + while (!done) { + Loop(); + } +#endif + + Quit(0); + return 0; +} + diff --git a/test/trashcan.bmp b/test/trashcan.bmp new file mode 100644 index 0000000000000000000000000000000000000000..64a60b22ebcc0da79d0922fe468fe920cfd15cf6 GIT binary patch literal 65674 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 w#v|S^fT