From 7790472dabfa0ecd06f3408d847860ec6072866e Mon Sep 17 00:00:00 2001 From: skal Date: Mon, 9 Feb 2026 18:51:54 +0100 Subject: feat: Implement workspace system (Task #77) Self-contained workspaces for parallel demo development. Structure: - workspaces/main,test - Demo-specific resources - assets/common - Shared resources - workspace.cfg - Configuration per workspace CMake integration: - DEMO_WORKSPACE option (defaults to main) - cmake/ParseWorkspace.cmake - Config parser - Workspace-relative asset/timeline/music paths Migration: - Main demo: demo.seq to workspaces/main/timeline.seq - Test demo: test_demo.seq to workspaces/test/timeline.seq - Common shaders: assets/common/shaders - Workspace shaders: workspaces/*/shaders Build: cmake -B build -DDEMO_WORKSPACE=main cmake -B build_test -DDEMO_WORKSPACE=test All tests passing (36/36). handoff(Claude): Task #77 workspace system complete. Both main and test workspaces build and pass all tests. Co-Authored-By: Claude Sonnet 4.5 --- workspaces/main/music.track | 149 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 149 insertions(+) create mode 100644 workspaces/main/music.track (limited to 'workspaces/main/music.track') diff --git a/workspaces/main/music.track b/workspaces/main/music.track new file mode 100644 index 0000000..c5b953b --- /dev/null +++ b/workspaces/main/music.track @@ -0,0 +1,149 @@ +# Simple Demo Track - Steady beat with progressive variation +# Duration: 32 seconds (16 units at 120 BPM) +# +# Structure: +# - Steady kick + snare throughout +# - Snare sample varies every 4s +# - Kick sample varies every 8s +# - Ride added after 16s +# +# TIMING: Unit-less (1 unit = 4 beats at 120 BPM = 2 seconds) + +BPM 120 + +SAMPLE ASSET_KICK_1 +SAMPLE ASSET_KICK_2 +SAMPLE ASSET_SNARE_1 +SAMPLE ASSET_SNARE_2 +SAMPLE ASSET_SNARE_3 +SAMPLE ASSET_RIDE_1 + +# === KICK PATTERNS === +# Steady kick on beats 0 and 2 (quarter notes) +PATTERN kick_1 LENGTH 1.0 + 0.00, ASSET_KICK_1, 1.0, 0.0 + 0.50, ASSET_KICK_1, 1.0, 0.0 + +PATTERN kick_2 LENGTH 1.0 + 0.00, ASSET_KICK_2, 1.0, 0.0 + 0.50, ASSET_KICK_2, 1.0, 0.0 + +# === SNARE PATTERNS === +# Steady snare on beats 1 and 3 (backbeat) +PATTERN snare_1 LENGTH 1.0 + 0.25, ASSET_SNARE_1, 1.0, 0.0 + 0.75, ASSET_SNARE_1, 1.0, 0.0 + +PATTERN snare_2 LENGTH 1.0 + 0.25, ASSET_SNARE_2, 1.0, 0.0 + 0.75, ASSET_SNARE_2, 1.0, 0.0 + +PATTERN snare_3 LENGTH 1.0 + 0.25, ASSET_SNARE_3, 1.0, 0.0 + 0.75, ASSET_SNARE_3, 1.0, 0.0 + +# === RIDE PATTERN === +# Ride cymbal on every beat (quarter notes) +PATTERN ride LENGTH 1.0 + 0.00, ASSET_RIDE_1, 0.7, 0.2 + 0.25, ASSET_RIDE_1, 0.6, 0.2 + 0.50, ASSET_RIDE_1, 0.7, 0.2 + 0.75, ASSET_RIDE_1, 0.6, 0.2 + +# === SCORE === +SCORE +# 0-4s (0-2 units): KICK_1 + SNARE_1 + 0.00, kick_1 + 0.00, snare_1 + 0.50, kick_1 + 0.50, snare_1 + 1.00, kick_1 + 1.00, snare_1 + 1.50, kick_1 + 1.50, snare_1 + +# 4-8s (2-4 units): KICK_1 + SNARE_2 + 2.00, kick_1 + 2.00, snare_2 + 2.50, kick_1 + 2.50, snare_2 + 3.00, kick_1 + 3.00, snare_2 + 3.50, kick_1 + 3.50, snare_2 + +# 8-12s (4-6 units): KICK_2 + SNARE_3 + 4.00, kick_2 + 4.00, snare_3 + 4.50, kick_2 + 4.50, snare_3 + 5.00, kick_2 + 5.00, snare_3 + 5.50, kick_2 + 5.50, snare_3 + +# 12-16s (6-8 units): KICK_2 + SNARE_1 + 6.00, kick_2 + 6.00, snare_1 + 6.50, kick_2 + 6.50, snare_1 + 7.00, kick_2 + 7.00, snare_1 + 7.50, kick_2 + 7.50, snare_1 + +# 16-20s (8-10 units): KICK_1 + SNARE_2 + RIDE + 8.00, kick_1 + 8.00, snare_2 + 8.00, ride + 8.50, kick_1 + 8.50, snare_2 + 8.50, ride + 9.00, kick_1 + 9.00, snare_2 + 9.00, ride + 9.50, kick_1 + 9.50, snare_2 + 9.50, ride + +# 20-24s (10-12 units): KICK_2 + SNARE_3 + RIDE + 10.00, kick_2 + 10.00, snare_3 + 10.00, ride + 10.50, kick_2 + 10.50, snare_3 + 10.50, ride + 11.00, kick_2 + 11.00, snare_3 + 11.00, ride + 11.50, kick_2 + 11.50, snare_3 + 11.50, ride + +# 24-28s (12-14 units): KICK_1 + SNARE_1 + RIDE + 12.00, kick_1 + 12.00, snare_1 + 12.00, ride + 12.50, kick_1 + 12.50, snare_1 + 12.50, ride + 13.00, kick_1 + 13.00, snare_1 + 13.00, ride + 13.50, kick_1 + 13.50, snare_1 + 13.50, ride + +# 28-32s (14-16 units): KICK_2 + SNARE_2 + RIDE + 14.00, kick_2 + 14.00, snare_2 + 14.00, ride + 14.50, kick_2 + 14.50, snare_2 + 14.50, ride + 15.00, kick_2 + 15.00, snare_2 + 15.00, ride + 15.50, kick_2 + 15.50, snare_2 + 15.50, ride -- cgit v1.2.3