summaryrefslogtreecommitdiff
path: root/src/generated/music_data.cc
diff options
context:
space:
mode:
authorskal <pascal.massimino@gmail.com>2026-02-04 22:08:56 +0100
committerskal <pascal.massimino@gmail.com>2026-02-04 22:08:56 +0100
commitdd9d3013d260f27f86b268c203a290f91431d8e5 (patch)
tree7ca8bb5e4c2eb2bff3736992e899e6ce676c6234 /src/generated/music_data.cc
parent91933ce05ba157dc549d52ed6c00c71c457fca05 (diff)
feat: Optional sequence end times and comprehensive effect documentation
This milestone implements several key enhancements to the sequencing system and developer documentation: ## Optional Sequence End Times (New Feature) - Added support for explicit sequence termination via [time] syntax - Example: SEQUENCE 0 0 [30.0] forcefully ends all effects at 30 seconds - Updated seq_compiler.cc to parse optional [time] parameter with brackets - Added end_time_ field to Sequence class (default -1.0 = no explicit end) - Modified update_active_list() to check sequence end time and deactivate all effects when reached - Fully backward compatible - existing sequences work unchanged ## Comprehensive Effect Documentation (demo.seq) - Documented all effect constructor parameters (standard: device, queue, format) - Added runtime parameter documentation (time, beat, intensity, aspect_ratio) - Created detailed effect catalog with specific behaviors: * Scene effects: HeptagonEffect, ParticlesEffect, Hybrid3DEffect, FlashCubeEffect * Post-process effects: GaussianBlurEffect, SolarizeEffect, ChromaAberrationEffect, ThemeModulationEffect, FadeEffect, FlashEffect - Added examples section showing common usage patterns - Documented exact parameter behaviors (e.g., blur pulsates 0.5x-2.5x, flash triggers at intensity > 0.7, theme cycles every 8 seconds) ## Code Quality & Verification - Audited all hardcoded 1280x720 dimensions throughout codebase - Verified all shaders use uniforms.resolution and uniforms.aspect_ratio - Confirmed Effect::resize() properly updates width_/height_ members - No issues found - dimension handling is fully dynamic and robust ## Files Changed - tools/seq_compiler.cc: Parse [end_time], generate set_end_time() calls - src/gpu/effect.h: Added end_time_, set_end_time(), get_end_time() - src/gpu/effect.cc: Check sequence end time in update_active_list() - assets/demo.seq: Comprehensive syntax and effect documentation - Generated files updated (timeline.cc, assets_data.cc, music_data.cc) This work establishes a more flexible sequencing system and provides developers with clear documentation for authoring demo timelines. handoff(Claude): Optional sequence end times implemented, effect documentation complete, dimension handling verified. Ready for next phase of development.
Diffstat (limited to 'src/generated/music_data.cc')
-rw-r--r--src/generated/music_data.cc306
1 files changed, 196 insertions, 110 deletions
diff --git a/src/generated/music_data.cc b/src/generated/music_data.cc
index 6694a3c..bc054fe 100644
--- a/src/generated/music_data.cc
+++ b/src/generated/music_data.cc
@@ -7,36 +7,46 @@
const NoteParams g_tracker_samples[] = {
{ 0 }, // ASSET_KICK_1 (ASSET)
{ 0 }, // ASSET_KICK_2 (ASSET)
+ { 0 }, // ASSET_KICK_3 (ASSET)
{ 0 }, // ASSET_SNARE_1 (ASSET)
+ { 0 }, // ASSET_SNARE_2 (ASSET)
{ 0 }, // ASSET_SNARE_3 (ASSET)
+ { 0 }, // ASSET_SNARE_4 (ASSET)
{ 0 }, // ASSET_HIHAT_1 (ASSET)
{ 0 }, // ASSET_HIHAT_2 (ASSET)
+ { 0 }, // ASSET_HIHAT_3 (ASSET)
+ { 0 }, // ASSET_HIHAT_4 (ASSET)
{ 0 }, // ASSET_CRASH_1 (ASSET)
+ { 0 }, // ASSET_RIDE_1 (ASSET)
+ { 0 }, // ASSET_SPLASH_1 (ASSET)
{ 0 }, // ASSET_BASS_1 (ASSET)
{ 82.4f, 0.50f, 1.0f, 0.01f, 0.0f, 0.0f, 0.0f, 3, 0.6f, 0.0f, 0.0f }, // NOTE_E2
{ 98.0f, 0.50f, 1.0f, 0.01f, 0.0f, 0.0f, 0.0f, 3, 0.6f, 0.0f, 0.0f }, // NOTE_G2
- { 329.6f, 0.50f, 1.0f, 0.01f, 0.0f, 0.0f, 0.0f, 3, 0.6f, 0.0f, 0.0f }, // NOTE_E4
- { 392.0f, 0.50f, 1.0f, 0.01f, 0.0f, 0.0f, 0.0f, 3, 0.6f, 0.0f, 0.0f }, // NOTE_G4
- { 493.9f, 0.50f, 1.0f, 0.01f, 0.0f, 0.0f, 0.0f, 3, 0.6f, 0.0f, 0.0f }, // NOTE_B4
- { 440.0f, 0.50f, 1.0f, 0.01f, 0.0f, 0.0f, 0.0f, 3, 0.6f, 0.0f, 0.0f }, // NOTE_A4
+ { 73.4f, 0.50f, 1.0f, 0.01f, 0.0f, 0.0f, 0.0f, 3, 0.6f, 0.0f, 0.0f }, // NOTE_D2
+ { 65.4f, 0.50f, 1.0f, 0.01f, 0.0f, 0.0f, 0.0f, 3, 0.6f, 0.0f, 0.0f }, // NOTE_C2
};
-const uint32_t g_tracker_samples_count = 14;
+const uint32_t g_tracker_samples_count = 19;
const AssetId g_tracker_sample_assets[] = {
AssetId::ASSET_KICK_1,
AssetId::ASSET_KICK_2,
+ AssetId::ASSET_KICK_3,
AssetId::ASSET_SNARE_1,
+ AssetId::ASSET_SNARE_2,
AssetId::ASSET_SNARE_3,
+ AssetId::ASSET_SNARE_4,
AssetId::ASSET_HIHAT_1,
AssetId::ASSET_HIHAT_2,
+ AssetId::ASSET_HIHAT_3,
+ AssetId::ASSET_HIHAT_4,
AssetId::ASSET_CRASH_1,
+ AssetId::ASSET_RIDE_1,
+ AssetId::ASSET_SPLASH_1,
AssetId::ASSET_BASS_1,
AssetId::ASSET_LAST_ID,
AssetId::ASSET_LAST_ID,
AssetId::ASSET_LAST_ID,
AssetId::ASSET_LAST_ID,
- AssetId::ASSET_LAST_ID,
- AssetId::ASSET_LAST_ID,
};
static const TrackerEvent PATTERN_EVENTS_kick_basic[] = {
@@ -44,162 +54,238 @@ static const TrackerEvent PATTERN_EVENTS_kick_basic[] = {
{ 2.0f, 0, 1.0f, 0.0f },
{ 2.5f, 1, 0.7f, -0.2f },
};
-static const TrackerEvent PATTERN_EVENTS_snare_basic[] = {
- { 1.0f, 2, 0.9f, 0.1f },
- { 3.0f, 2, 0.9f, 0.1f },
-};
-static const TrackerEvent PATTERN_EVENTS_hihat_stressed[] = {
- { 0.0f, 5, 0.8f, -0.3f },
- { 0.5f, 4, 0.4f, 0.3f },
- { 1.0f, 5, 0.8f, -0.3f },
- { 1.5f, 4, 0.4f, 0.3f },
- { 2.0f, 5, 0.8f, -0.3f },
- { 2.5f, 4, 0.4f, 0.3f },
- { 3.0f, 5, 0.8f, -0.3f },
- { 3.5f, 4, 0.4f, 0.3f },
+static const TrackerEvent PATTERN_EVENTS_kick_varied[] = {
+ { 0.0f, 1, 1.0f, 0.0f },
+ { 2.0f, 2, 0.9f, 0.0f },
+ { 2.5f, 0, 0.7f, 0.2f },
};
static const TrackerEvent PATTERN_EVENTS_kick_dense[] = {
{ 0.0f, 0, 1.0f, 0.0f },
{ 0.5f, 1, 0.6f, -0.2f },
- { 1.0f, 0, 1.0f, 0.0f },
+ { 1.0f, 2, 0.9f, 0.0f },
{ 1.5f, 1, 0.6f, 0.2f },
{ 2.0f, 0, 1.0f, 0.0f },
{ 2.5f, 1, 0.6f, -0.2f },
- { 3.0f, 0, 1.0f, 0.0f },
+ { 3.0f, 2, 0.9f, 0.0f },
{ 3.5f, 1, 0.6f, 0.2f },
};
+static const TrackerEvent PATTERN_EVENTS_snare_basic[] = {
+ { 1.0f, 3, 1.1f, 0.1f },
+ { 3.0f, 3, 1.1f, 0.1f },
+};
+static const TrackerEvent PATTERN_EVENTS_snare_varied[] = {
+ { 1.0f, 4, 1.0f, -0.1f },
+ { 3.0f, 6, 1.1f, 0.1f },
+};
static const TrackerEvent PATTERN_EVENTS_snare_dense[] = {
- { 0.5f, 3, 0.7f, 0.0f },
- { 1.0f, 2, 0.9f, 0.1f },
- { 1.5f, 3, 0.7f, 0.0f },
- { 2.5f, 3, 0.7f, 0.0f },
- { 3.0f, 2, 0.9f, 0.1f },
- { 3.5f, 3, 0.7f, 0.0f },
+ { 0.5f, 5, 0.9f, 0.0f },
+ { 1.0f, 3, 1.1f, 0.1f },
+ { 1.5f, 6, 0.9f, 0.0f },
+ { 2.5f, 5, 0.9f, 0.0f },
+ { 3.0f, 4, 1.0f, 0.1f },
+ { 3.5f, 6, 0.9f, 0.0f },
+};
+static const TrackerEvent PATTERN_EVENTS_hihat_basic[] = {
+ { 0.0f, 8, 0.7f, -0.3f },
+ { 0.5f, 7, 0.3f, 0.3f },
+ { 1.0f, 8, 0.7f, -0.3f },
+ { 1.5f, 7, 0.3f, 0.3f },
+ { 2.0f, 8, 0.7f, -0.3f },
+ { 2.5f, 7, 0.3f, 0.3f },
+ { 3.0f, 8, 0.7f, -0.3f },
+ { 3.5f, 7, 0.3f, 0.3f },
+};
+static const TrackerEvent PATTERN_EVENTS_hihat_varied[] = {
+ { 0.0f, 9, 0.7f, -0.3f },
+ { 0.5f, 7, 0.3f, 0.3f },
+ { 1.0f, 10, 0.6f, -0.2f },
+ { 1.5f, 7, 0.3f, 0.3f },
+ { 2.0f, 9, 0.7f, -0.3f },
+ { 2.5f, 7, 0.3f, 0.3f },
+ { 3.0f, 10, 0.6f, -0.2f },
+ { 3.5f, 7, 0.3f, 0.3f },
};
static const TrackerEvent PATTERN_EVENTS_crash[] = {
- { 0.0f, 6, 0.9f, 0.0f },
+ { 0.0f, 11, 0.9f, 0.0f },
+};
+static const TrackerEvent PATTERN_EVENTS_ride[] = {
+ { 0.0f, 12, 0.8f, 0.2f },
+};
+static const TrackerEvent PATTERN_EVENTS_ride_fast[] = {
+ { 0.0f, 12, 0.8f, 0.2f },
+ { 0.5f, 12, 0.6f, 0.2f },
+ { 1.0f, 12, 0.8f, 0.2f },
+ { 1.5f, 12, 0.6f, 0.2f },
+ { 2.0f, 12, 0.8f, 0.2f },
+ { 2.5f, 12, 0.6f, 0.2f },
+ { 3.0f, 12, 0.8f, 0.2f },
+ { 3.5f, 12, 0.6f, 0.2f },
+};
+static const TrackerEvent PATTERN_EVENTS_splash[] = {
+ { 0.0f, 13, 0.7f, -0.2f },
+};
+static const TrackerEvent PATTERN_EVENTS_bass_e_soft[] = {
+ { 0.0f, 15, 0.4f, 0.0f },
+ { 2.0f, 15, 0.3f, 0.0f },
};
static const TrackerEvent PATTERN_EVENTS_bass_e[] = {
- { 0.0f, 8, 0.9f, 0.0f },
- { 1.0f, 8, 0.7f, 0.0f },
- { 2.0f, 8, 0.9f, 0.0f },
- { 2.5f, 8, 0.6f, 0.0f },
- { 3.0f, 8, 0.7f, 0.0f },
+ { 0.0f, 15, 0.5f, 0.0f },
+ { 1.0f, 15, 0.4f, 0.0f },
+ { 2.0f, 15, 0.5f, 0.0f },
+ { 2.5f, 15, 0.3f, 0.0f },
+ { 3.0f, 15, 0.4f, 0.0f },
};
static const TrackerEvent PATTERN_EVENTS_bass_eg[] = {
- { 0.0f, 8, 0.9f, 0.0f },
- { 1.0f, 8, 0.7f, 0.0f },
- { 2.0f, 9, 0.9f, 0.0f },
- { 3.0f, 9, 0.7f, 0.0f },
+ { 0.0f, 15, 0.5f, 0.0f },
+ { 1.0f, 15, 0.4f, 0.0f },
+ { 2.0f, 16, 0.5f, 0.0f },
+ { 3.0f, 16, 0.4f, 0.0f },
+};
+static const TrackerEvent PATTERN_EVENTS_bass_progression[] = {
+ { 0.0f, 15, 0.5f, 0.0f },
+ { 1.0f, 17, 0.4f, 0.0f },
+ { 2.0f, 18, 0.5f, 0.0f },
+ { 3.0f, 16, 0.4f, 0.0f },
};
-static const TrackerEvent PATTERN_EVENTS_melody_em[] = {
- { 0.0f, 10, 0.7f, 0.0f },
- { 0.5f, 11, 0.6f, 0.1f },
- { 1.0f, 12, 0.7f, -0.1f },
- { 2.0f, 13, 0.6f, 0.0f },
- { 2.5f, 11, 0.6f, 0.1f },
- { 3.0f, 10, 0.7f, 0.0f },
+static const TrackerEvent PATTERN_EVENTS_bass_synco_1[] = {
+ { 0.0f, 15, 0.6f, 0.0f },
+ { 0.2f, 15, 0.5f, 0.1f },
+ { 0.8f, 15, 0.6f, -0.1f },
+ { 1.5f, 15, 0.5f, 0.0f },
+ { 2.0f, 15, 0.6f, 0.0f },
+ { 2.8f, 16, 0.6f, 0.1f },
+ { 3.2f, 15, 0.5f, 0.0f },
+};
+static const TrackerEvent PATTERN_EVENTS_bass_synco_2[] = {
+ { 0.0f, 15, 0.6f, 0.0f },
+ { 0.5f, 17, 0.6f, -0.1f },
+ { 1.2f, 15, 0.5f, 0.1f },
+ { 1.8f, 17, 0.5f, 0.0f },
+ { 2.0f, 18, 0.6f, 0.0f },
+ { 2.5f, 15, 0.5f, 0.1f },
+ { 3.0f, 16, 0.6f, 0.0f },
+ { 3.5f, 15, 0.5f, -0.1f },
+};
+static const TrackerEvent PATTERN_EVENTS_bass_synco_3[] = {
+ { 0.0f, 15, 0.6f, 0.0f },
+ { 0.2f, 15, 0.5f, 0.0f },
+ { 0.5f, 15, 0.6f, 0.1f },
+ { 1.0f, 16, 0.6f, 0.0f },
+ { 1.5f, 15, 0.5f, -0.1f },
+ { 2.2f, 17, 0.6f, 0.0f },
+ { 2.8f, 15, 0.5f, 0.1f },
+ { 3.5f, 15, 0.6f, 0.0f },
};
const TrackerPattern g_tracker_patterns[] = {
{ PATTERN_EVENTS_kick_basic, 3, 4.0f }, // kick_basic
- { PATTERN_EVENTS_snare_basic, 2, 4.0f }, // snare_basic
- { PATTERN_EVENTS_hihat_stressed, 8, 4.0f }, // hihat_stressed
+ { PATTERN_EVENTS_kick_varied, 3, 4.0f }, // kick_varied
{ PATTERN_EVENTS_kick_dense, 8, 4.0f }, // kick_dense
+ { PATTERN_EVENTS_snare_basic, 2, 4.0f }, // snare_basic
+ { PATTERN_EVENTS_snare_varied, 2, 4.0f }, // snare_varied
{ PATTERN_EVENTS_snare_dense, 6, 4.0f }, // snare_dense
+ { PATTERN_EVENTS_hihat_basic, 8, 4.0f }, // hihat_basic
+ { PATTERN_EVENTS_hihat_varied, 8, 4.0f }, // hihat_varied
{ PATTERN_EVENTS_crash, 1, 4.0f }, // crash
+ { PATTERN_EVENTS_ride, 1, 4.0f }, // ride
+ { PATTERN_EVENTS_ride_fast, 8, 4.0f }, // ride_fast
+ { PATTERN_EVENTS_splash, 1, 4.0f }, // splash
+ { PATTERN_EVENTS_bass_e_soft, 2, 4.0f }, // bass_e_soft
{ PATTERN_EVENTS_bass_e, 5, 4.0f }, // bass_e
{ PATTERN_EVENTS_bass_eg, 4, 4.0f }, // bass_eg
- { PATTERN_EVENTS_melody_em, 6, 4.0f }, // melody_em
+ { PATTERN_EVENTS_bass_progression, 4, 4.0f }, // bass_progression
+ { PATTERN_EVENTS_bass_synco_1, 7, 4.0f }, // bass_synco_1
+ { PATTERN_EVENTS_bass_synco_2, 8, 4.0f }, // bass_synco_2
+ { PATTERN_EVENTS_bass_synco_3, 8, 4.0f }, // bass_synco_3
};
-const uint32_t g_tracker_patterns_count = 9;
+const uint32_t g_tracker_patterns_count = 19;
static const TrackerPatternTrigger SCORE_TRIGGERS[] = {
- { 0.0f, 5 },
+ { 0.0f, 8 },
{ 0.0f, 0 },
- { 0.0f, 1 },
- { 0.0f, 2 },
+ { 0.0f, 6 },
{ 2.0f, 0 },
- { 2.0f, 1 },
- { 2.0f, 2 },
- { 4.0f, 5 },
- { 4.0f, 0 },
+ { 2.0f, 3 },
+ { 2.0f, 6 },
+ { 4.0f, 9 },
{ 4.0f, 1 },
- { 4.0f, 2 },
- { 6.0f, 0 },
+ { 4.0f, 3 },
+ { 4.0f, 7 },
{ 6.0f, 1 },
- { 6.0f, 2 },
- { 8.0f, 5 },
+ { 6.0f, 4 },
+ { 6.0f, 7 },
+ { 8.0f, 11 },
{ 8.0f, 0 },
- { 8.0f, 1 },
- { 8.0f, 2 },
- { 10.0f, 5 },
- { 10.0f, 0 },
+ { 8.0f, 3 },
+ { 8.0f, 6 },
+ { 8.0f, 12 },
{ 10.0f, 1 },
- { 10.0f, 2 },
- { 10.0f, 6 },
+ { 10.0f, 4 },
+ { 10.0f, 7 },
+ { 10.0f, 12 },
+ { 12.0f, 9 },
{ 12.0f, 0 },
- { 12.0f, 1 },
- { 12.0f, 2 },
+ { 12.0f, 3 },
{ 12.0f, 6 },
- { 14.0f, 0 },
+ { 12.0f, 13 },
{ 14.0f, 1 },
- { 14.0f, 2 },
- { 14.0f, 6 },
- { 16.0f, 5 },
- { 16.0f, 3 },
- { 16.0f, 4 },
+ { 14.0f, 4 },
+ { 14.0f, 7 },
+ { 14.0f, 14 },
+ { 16.0f, 8 },
{ 16.0f, 2 },
- { 16.0f, 6 },
- { 18.0f, 3 },
- { 18.0f, 4 },
+ { 16.0f, 5 },
+ { 16.0f, 7 },
+ { 16.0f, 13 },
{ 18.0f, 2 },
- { 18.0f, 7 },
- { 20.0f, 5 },
- { 20.0f, 3 },
- { 20.0f, 4 },
+ { 18.0f, 5 },
+ { 18.0f, 6 },
+ { 18.0f, 15 },
+ { 20.0f, 9 },
{ 20.0f, 2 },
- { 20.0f, 6 },
- { 22.0f, 3 },
- { 22.0f, 4 },
+ { 20.0f, 5 },
+ { 20.0f, 7 },
+ { 20.0f, 13 },
{ 22.0f, 2 },
+ { 22.0f, 5 },
{ 22.0f, 6 },
- { 24.0f, 3 },
- { 24.0f, 4 },
+ { 22.0f, 14 },
+ { 24.0f, 11 },
{ 24.0f, 2 },
+ { 24.0f, 5 },
{ 24.0f, 7 },
- { 26.0f, 5 },
- { 26.0f, 0 },
- { 26.0f, 1 },
+ { 24.0f, 15 },
{ 26.0f, 2 },
+ { 26.0f, 5 },
{ 26.0f, 6 },
+ { 26.0f, 13 },
+ { 28.0f, 10 },
{ 28.0f, 0 },
- { 28.0f, 1 },
- { 28.0f, 2 },
+ { 28.0f, 4 },
{ 28.0f, 7 },
- { 30.0f, 5 },
- { 30.0f, 0 },
+ { 28.0f, 14 },
{ 30.0f, 1 },
- { 30.0f, 2 },
+ { 30.0f, 3 },
{ 30.0f, 6 },
- { 30.0f, 8 },
- { 32.0f, 0 },
- { 32.0f, 1 },
+ { 30.0f, 15 },
+ { 31.0f, 6 },
+ { 32.0f, 8 },
+ { 32.0f, 10 },
{ 32.0f, 2 },
+ { 32.0f, 5 },
{ 32.0f, 7 },
- { 32.0f, 8 },
- { 34.0f, 0 },
- { 34.0f, 1 },
+ { 32.0f, 16 },
+ { 34.0f, 10 },
{ 34.0f, 2 },
+ { 34.0f, 5 },
{ 34.0f, 6 },
- { 34.0f, 8 },
- { 36.0f, 5 },
- { 36.0f, 0 },
- { 36.0f, 1 },
+ { 34.0f, 17 },
+ { 36.0f, 10 },
{ 36.0f, 2 },
+ { 36.0f, 5 },
{ 36.0f, 7 },
- { 36.0f, 8 },
- { 38.0f, 5 },
+ { 36.0f, 18 },
+ { 38.0f, 8 },
};
const TrackerScore g_tracker_score = {
@@ -209,19 +295,19 @@ const TrackerScore g_tracker_score = {
// ============================================================
// RESOURCE USAGE ANALYSIS (for synth.h configuration)
// ============================================================
-// Total samples: 14 (8 assets + 6 generated notes)
+// Total samples: 19 (15 assets + 4 generated notes)
// Max simultaneous pattern triggers: 6
// Estimated max polyphony: 24 voices
//
// REQUIRED (minimum to avoid pool exhaustion):
// MAX_VOICES: 24
-// MAX_SPECTROGRAMS: 152 (no caching)
+// MAX_SPECTROGRAMS: 111 (no caching)
//
// RECOMMENDED (with 50% safety margin):
// MAX_VOICES: 48
-// MAX_SPECTROGRAMS: 228 (no caching)
+// MAX_SPECTROGRAMS: 166 (no caching)
//
// NOTE: With spectrogram caching by note parameters,
-// MAX_SPECTROGRAMS could be reduced to ~14
+// MAX_SPECTROGRAMS could be reduced to ~19
// ============================================================