diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/generated/music_data.cc | 38 | ||||
| -rw-r--r-- | src/generated/timeline.cc | 1 | ||||
| -rw-r--r-- | src/main.cc | 65 |
3 files changed, 68 insertions, 36 deletions
diff --git a/src/generated/music_data.cc b/src/generated/music_data.cc index 87c1f65..316d443 100644 --- a/src/generated/music_data.cc +++ b/src/generated/music_data.cc @@ -6,8 +6,13 @@ const NoteParams g_tracker_samples[] = { { 50.0f, 0.20f, 1.0f, 0.01f, 0.0f, 0.0f, 0.0f, 1, 0.5f, 0.0f, 0.0f }, // kick { 200.0f, 0.20f, 0.8f, 0.01f, 0.0f, 0.0f, 0.0f, 5, 0.7f, 0.0f, 0.0f }, // snare { 1000.0f, 0.05f, 0.3f, 0.00f, 0.0f, 0.0f, 0.0f, 10, 0.4f, 0.0f, 0.0f }, // hihat + { 293.7f, 0.50f, 0.6f, 0.02f, 0.0f, 0.0f, 0.0f, 4, 0.6f, 0.0f, 0.0f }, // E4 + { 349.2f, 0.50f, 0.6f, 0.02f, 0.0f, 0.0f, 0.0f, 4, 0.6f, 0.0f, 0.0f }, // G4 + { 440.0f, 0.50f, 0.6f, 0.02f, 0.0f, 0.0f, 0.0f, 4, 0.6f, 0.0f, 0.0f }, // B4 + { 587.3f, 0.50f, 0.6f, 0.02f, 0.0f, 0.0f, 0.0f, 4, 0.6f, 0.0f, 0.0f }, // D5 + { 587.3f, 0.50f, 0.6f, 0.02f, 0.0f, 0.0f, 0.0f, 4, 0.6f, 0.0f, 0.0f }, // E5 }; -const uint32_t g_tracker_samples_count = 3; +const uint32_t g_tracker_samples_count = 8; static const TrackerEvent PATTERN_EVENTS_drum_loop[] = { { 0.0f, 0, 1.0f, 0.0f }, @@ -26,22 +31,49 @@ static const TrackerEvent PATTERN_EVENTS_hihat_roll[] = { { 3.0f, 2, 0.5f, -0.5f }, { 3.5f, 2, 0.4f, 0.5f }, }; +static const TrackerEvent PATTERN_EVENTS_em_melody[] = { + { 0.0f, 3, 0.7f, 0.0f }, + { 0.5f, 4, 0.7f, 0.1f }, + { 1.0f, 5, 0.7f, -0.1f }, + { 1.5f, 6, 0.7f, 0.2f }, + { 2.0f, 7, 0.7f, -0.2f }, + { 2.5f, 6, 0.7f, 0.1f }, + { 3.0f, 5, 0.7f, 0.0f }, + { 3.5f, 4, 0.7f, -0.1f }, +}; const TrackerPattern g_tracker_patterns[] = { { PATTERN_EVENTS_drum_loop, 5, 4.0f }, // drum_loop { PATTERN_EVENTS_hihat_roll, 8, 4.0f }, // hihat_roll + { PATTERN_EVENTS_em_melody, 8, 4.0f }, // em_melody }; -const uint32_t g_tracker_patterns_count = 2; +const uint32_t g_tracker_patterns_count = 3; static const TrackerPatternTrigger SCORE_TRIGGERS[] = { { 0.0f, 0 }, { 0.0f, 1 }, + { 0.0f, 2 }, { 4.0f, 0 }, { 4.0f, 1 }, + { 4.0f, 2 }, { 8.0f, 0 }, + { 8.0f, 1 }, + { 8.0f, 2 }, { 12.0f, 0 }, + { 12.0f, 1 }, + { 12.0f, 2 }, + { 16.0f, 0 }, + { 16.0f, 2 }, + { 20.0f, 0 }, + { 20.0f, 1 }, + { 20.0f, 2 }, + { 24.0f, 0 }, + { 24.0f, 2 }, + { 28.0f, 0 }, + { 28.0f, 1 }, + { 28.0f, 2 }, }; const TrackerScore g_tracker_score = { - SCORE_TRIGGERS, 6, 120.0f + SCORE_TRIGGERS, 22, 120.0f }; diff --git a/src/generated/timeline.cc b/src/generated/timeline.cc index 376624b..f14ebd7 100644 --- a/src/generated/timeline.cc +++ b/src/generated/timeline.cc @@ -14,6 +14,7 @@ void LoadTimeline(MainSequence& main_seq, WGPUDevice device, WGPUQueue queue, WG auto seq = std::make_shared<Sequence>(); seq->add_effect(std::make_shared<GaussianBlurEffect>(device, queue, format), 0.0f, 60.0f, 0); seq->add_effect(std::make_shared<ChromaAberrationEffect>(device, queue, format), 0.0f, 60.0f, 1); + seq->add_effect(std::make_shared<SolarizeEffect>(device, queue, format), 0.0f, 60.0f, 2); main_seq.add_sequence(seq, 0.0f, 10); } } diff --git a/src/main.cc b/src/main.cc index 55bb4a0..97732da 100644 --- a/src/main.cc +++ b/src/main.cc @@ -107,10 +107,9 @@ int main(int argc, char** argv) { synth_init(); tracker_init(); - // Register drum assets (if still needed, can be moved to tracker samples) - // int kick_id = register_spec_asset(AssetId::ASSET_KICK_1); - // int snare_id = register_spec_asset(AssetId::ASSET_SNARE_1); - // int hihat_id = register_spec_asset(AssetId::ASSET_HIHAT_1); + int kick_id = register_spec_asset(AssetId::ASSET_KICK_1); + int snare_id = register_spec_asset(AssetId::ASSET_SNARE_1); + int hihat_id = register_spec_asset(AssetId::ASSET_HIHAT_1); // Still keep the dynamic tone for bass (can be integrated into tracker too) const float* g_spec_buffer_a = generate_tone(nullptr, 110.0f); // A2 @@ -122,43 +121,43 @@ int main(int argc, char** argv) { // int melody_id = generate_melody(); // synth_trigger_voice(melody_id, 0.6f, 0.0f); - // double last_beat_time = 0.0; - // int beat_count = 0; + double last_beat_time = 0.0; + int beat_count = 0; auto update_game_logic = [&](double t) { - // if (t - last_beat_time > SECONDS_PER_BEAT / 2.0) { // 8th notes - // last_beat_time = t; // Sync to t + if (t - last_beat_time > (60.0f / g_tracker_score.bpm) / 2.0) { // 8th notes + last_beat_time = t; // Sync to t - // const int step = beat_count % 16; + const int step = beat_count % 16; - // // Kick on 1, 9, 11, 14... - // if (step == 0 || step == 8 || step == 10 || step == 13) { - // synth_trigger_voice(kick_id, 1.0f, 0.0f); - // } + // Kick on 1, 9, 11, 14... + if (step == 0 || step == 8 || step == 10 || step == 13) { + synth_trigger_voice(kick_id, 0.6f, 0.0f); + } - // // Snare on 4, 12 - // if (step == 4 || step == 12) { - // synth_trigger_voice(snare_id, 0.8f, step & 8 ? -1.0f : 1.0f); - // } + // Snare on 4, 12 + if (step == 4 || step == 12) { + synth_trigger_voice(snare_id, 0.48f, step & 8 ? -1.0f : 1.0f); + } - // // Hihat on every offbeat - // if (step % 2 == 1) { - // synth_trigger_voice(hihat_id, 0.5f, 0.3f); - // } + // Hihat on every offbeat + if (step % 2 == 1) { + synth_trigger_voice(hihat_id, 0.3f, 0.3f); + } - // // Bass pattern - // if (step % 4 == 0) { - // float* back_buffer = synth_begin_update(bass_id); - // if (back_buffer) { - // float bass_freq = (step < 8) ? 110.0f : 164.82f; // A3 then E3 - // generate_tone(back_buffer, bass_freq); - // synth_commit_update(bass_id); - // } - // synth_trigger_voice(bass_id, 0.9f, 1.2f); - // } + // Bass pattern + if (step % 4 == 0) { + float* back_buffer = synth_begin_update(bass_id); + if (back_buffer) { + float bass_freq = (step < 8) ? 110.0f : 164.82f; // A3 then E3 + generate_tone(back_buffer, bass_freq); + synth_commit_update(bass_id); + } + synth_trigger_voice(bass_id, 0.9f, 1.2f); + } - // ++beat_count; - // } + ++beat_count; + } tracker_update((float)t); }; |
