diff options
| author | skal <pascal.massimino@gmail.com> | 2026-01-31 14:34:59 +0100 |
|---|---|---|
| committer | skal <pascal.massimino@gmail.com> | 2026-01-31 14:34:59 +0100 |
| commit | 815c4032813b5aafce09cf4e3731f4b7dfda106a (patch) | |
| tree | 438a9ecd17500f0dc7d53163a3fb0d3198ed48f7 /src | |
| parent | 2d760dee6751981db1eac1a22111e597f6bdbbee (diff) | |
update session with mix fixes
Diffstat (limited to 'src')
| -rw-r--r-- | src/main.cc | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/src/main.cc b/src/main.cc index 9d7c41b..4f99230 100644 --- a/src/main.cc +++ b/src/main.cc @@ -43,8 +43,8 @@ int register_spec_asset(AssetId id) { return synth_register_spectrogram(&spec); } -static float g_spec_buffer_a[SPEC_FRAMES * DCT_SIZE]; -static float g_spec_buffer_b[SPEC_FRAMES * DCT_SIZE]; +static float *g_spec_buffer_a[SPEC_FRAMES * DCT_SIZE] = { 0 }; +static float *g_spec_buffer_b[SPEC_FRAMES * DCT_SIZE] = { 0 }; // Global storage for the melody to ensure it persists std::vector<float> g_melody_data; @@ -110,8 +110,12 @@ int generate_melody() { return synth_register_spectrogram(&spec); } -void generate_tone(float *buffer, float freq) { - memset(buffer, 0, SPEC_FRAMES * DCT_SIZE * sizeof(float)); +float* generate_tone(float *buffer, float freq) { + if (buffer == nullptr) { + buffer = (float*)calloc(SPEC_FRAMES * DCT_SIZE, sizeof(float)); + } else { + memset(buffer, 0, SPEC_FRAMES * DCT_SIZE * sizeof(float)); + } for (int frame = 0; frame < SPEC_FRAMES; ++frame) { float *spec_frame = buffer + frame * DCT_SIZE; float amplitude = 1000. * powf(1.0f - (float)frame / SPEC_FRAMES, 2.0f); @@ -121,6 +125,7 @@ void generate_tone(float *buffer, float freq) { spec_frame[bin] = amplitude; } } + return buffer; } int main(int argc, char **argv) { @@ -149,8 +154,8 @@ int main(int argc, char **argv) { int hihat_id = register_spec_asset(AssetId::ASSET_HIHAT_1); // Still keep the dynamic tone for bass - generate_tone(g_spec_buffer_a, 110.0f); // A2 - generate_tone(g_spec_buffer_b, 110.0f); + const float* g_spec_buffer_a = generate_tone(nullptr, 110.0f); // A2 + const float* g_spec_buffer_b = generate_tone(nullptr, 110.0f); const Spectrogram bass_spec = {g_spec_buffer_a, g_spec_buffer_b, SPEC_FRAMES}; int bass_id = synth_register_spectrogram(&bass_spec); |
