summaryrefslogtreecommitdiff
path: root/src/audio/audio.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/audio/audio.cc')
-rw-r--r--src/audio/audio.cc18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/audio/audio.cc b/src/audio/audio.cc
index e4abbf8..ad324c0 100644
--- a/src/audio/audio.cc
+++ b/src/audio/audio.cc
@@ -3,6 +3,7 @@
// Implementation uses miniaudio for cross-platform support.
#include "audio.h"
+#include "util/asset_manager.h"
#if !defined(DEMO_BUILD_TOOLS)
#define MA_NO_FLAC
@@ -16,6 +17,23 @@
#include <stdio.h>
+int register_spec_asset(AssetId id) {
+ size_t size;
+ const uint8_t* data = GetAsset(id, &size);
+ if (!data || size < sizeof(SpecHeader))
+ return -1;
+
+ const SpecHeader* header = (const SpecHeader*)data;
+ const float* spectral_data = (const float*)(data + sizeof(SpecHeader));
+
+ Spectrogram spec;
+ spec.spectral_data_a = spectral_data;
+ spec.spectral_data_b = spectral_data; // No double-buffer for static assets
+ spec.num_frames = header->num_frames;
+
+ return synth_register_spectrogram(&spec);
+}
+
static ma_device g_device;
void audio_data_callback(ma_device* pDevice, void* pOutput, const void* pInput,