Skip to content

curriculum: bridge lesson, mod-matrix rewrite, waveform ear training

jedmund requested to merge jedmund/sd-bridge-refine into main

Created by: jedmund

Summary

Tightens what's already authored in Music Theory and Sound Design before scaling to the rest of the curriculum. Six logical commits on top of main.

Prereq coherence:

  • Music Theory 2-5 (Modes) now lists 2.3 and 2.4 as prerequisites (modal rotation lands better after all three minor variants).
  • Music Theory 2-6 (Pentatonic and Blues) now lists 2.4 and 2.5 (the blue note's raised 7th mirrors harmonic minor).

New cross-track bridge lesson (Sound Design 1-5): "The Major Chord Hiding in Every Note." Overtone series reinterpreted as music-theory intervals: 2nd harmonic is an octave, 3rd is a perfect fifth above that, 5th is a major third above the next octave. Collapse the first five harmonics into one octave and you have a C-E-G major triad, the chord already inside every note. Proves the vocabulary-sharing claim from docs/curriculum/overview.md. Uses the existing harmonic_series_builder tool with presets that walk the learner through building the chord one sine at a time. Existing Module 1 lessons 1-5 (Phase) and 1-6 (Review) renumbered to 1-6 and 1-7; all path refs, lesson IDs, and internal exercise/check IDs updated in the same commit.

Sound Design 3 split:

  • New 3-7 "Multiple Modulation Routings" teaches stacking: one source to many destinations, many sources to one, reading presets. Uses the existing mod_matrix tool with five-routing suggested preset.
  • 3-4 rewritten as "Mod Matrix Basics" with the gold-standard rhythm restored (text hook, note_sequence revealing static vs modulated filter, then teach). Trimmed the "Multiple Routings" and "Reading a Preset's Mod Matrix" blocks that now live in 3-7. Objectives updated to match the basics-only scope. 3-6 (capstone) gets 3-7 added to its prereqs.

New ear-training skill: waveform_recognition bank at ear-training/timbre/waveform-recognition.json. 8 items weighted so each of sine, square, sawtooth, triangle, noise appears at least once; sine/square/sawtooth get 2 each because they're the hardest to distinguish. Wired into Sound Design 1-2's ear_training_contributions. Proves a second skill beyond the existing interval_identification can slot into the spaced-rep pool. timbre_recognition (bright/dark, hollow/rich) stays deferred; it needs more author-heavy stimulus design.

Docs: Module 1 and Module 3 concept lists in docs/curriculum/sound-design.md updated to reflect the new lessons.

Test plan

  • Validator passes after every commit (uv run --project scripts scripts/validate_curriculum.py).
  • Swift build passes (iPad Pro sim).
  • Walk through Sound Design Module 1 in-app: confirm 7 lessons in order, with the new 1-5 bridge sitting between timbre (1-4) and phase (1-6).
  • Open the new 1-5 bridge lesson. Confirm each block renders (two note_sequences, one keyboard_diagram highlighting C2/C3/G3/C4/E4, one callout, three text blocks, one exercise_ref, one check).
  • Try the harmonic series builder exercise; step through the 6 presets; confirm the revelation lands (adding H5 makes a major third audible; the final preset is a major triad).
  • Walk through Sound Design Module 3: confirm 7 lessons, 3-4 renders with the new hook block, 3-7 appears as the final lesson before the capstone review.
  • Open Sound Design 1-2 and confirm the waveform-recognition ear-training contribution surfaces in whatever UI exposes it (or at minimum, confirm it appears in the spaced-rep pool when exercised).
  • Confirm runtime handles identify_waveform item type in the ear-training bank. If not supported yet, the item schema is in place; runtime hookup can follow in a separate PR.
  • Read the 1-5 bridge lesson aloud end to end. Does the revelation ("the major chord is inside every note") land? If not, iterate before merge.

Merge request reports

Loading