summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorskal <pascal.massimino@gmail.com>2026-02-02 23:44:14 +0100
committerskal <pascal.massimino@gmail.com>2026-02-02 23:44:14 +0100
commit15a92927e7671a090199fb60f192de2298c22663 (patch)
treed1f11dd7dffd7a26c982ce9ab7f5ec1e2879b29c /src
parent45c3b49ff4be1cd0b3982a8d8b851227c7e9327f (diff)
update the melody a bit
Diffstat (limited to 'src')
-rw-r--r--src/generated/music_data.cc38
-rw-r--r--src/generated/timeline.cc1
-rw-r--r--src/main.cc65
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);
};