diff options
| author | skal <pascal.massimino@gmail.com> | 2026-02-04 22:08:56 +0100 |
|---|---|---|
| committer | skal <pascal.massimino@gmail.com> | 2026-02-04 22:08:56 +0100 |
| commit | dd9d3013d260f27f86b268c203a290f91431d8e5 (patch) | |
| tree | 7ca8bb5e4c2eb2bff3736992e899e6ce676c6234 /src/generated/music_data.cc | |
| parent | 91933ce05ba157dc549d52ed6c00c71c457fca05 (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.cc | 306 |
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 // ============================================================ |
