Files
reaper-control/.sdd/changes/transitions-fx/tasks.md
renato97 014e636889 feat: professional reggaeton production engine — 7 SDD changes, 302 tests
- section-energy: track activity matrix + volume/velocity multipliers per section
- smart-chords: ChordEngine with voice leading, inversions, 4 emotion modes
- hook-melody: melody engine with hook/stabs/smooth styles, call-and-response
- mix-calibration: Calibrator module (LUFS volumes, HPF/LPF, stereo, sends, master)
- transitions-fx: FX track with risers/impacts/sweeps at section boundaries
- sidechain: MIDI CC11 bass ducking on kick hits via DrumLoopAnalyzer
- presets-pack: role-aware plugin presets (Serum/Decapitator/Omnisphere per role)

Full SDD pipeline (propose→spec→design→tasks→apply→verify) for all 7 changes.
302/302 tests passing.
2026-05-03 23:54:29 -03:00

1.5 KiB

Tasks: Transitions FX

Phase 1: FX Transition Map

  • 1.1 Add FX_TRANSITIONS dict to scripts/compose.py: {boundary_index: (type, start_offset, length, fade_in, fade_out)} with 8 entries matching design boundary map
  • 1.2 Add FX_ROLE = "fx" constant referencing ATONAL_ROLES membership

Phase 2: Build FX Track

  • 2.1 Implement build_fx_track(sections, offsets, selector, seed=0) — iterates FX_TRANSITIONS, computes clip positions from offsets, selects FX samples
  • 2.2 For each boundary: call selector.select_one(role="fx", seed=seed + idx) to pick sample
  • 2.3 Create ClipDef(position, length, name, audio_path, fade_in, fade_out) per boundary
  • 2.4 Build TrackDef("Transition FX", volume=0.72, clips=[...], send_level={reverb: 0.08, delay: 0.05})
  • 2.5 Add docstring explaining boundary map and FX types (riser/impact/sweep/transition)

Phase 3: Integration

  • 3.1 Call build_fx_track() in main() after clap track, before pad track
  • 3.2 Verify send wiring loop handles new track (existing code; confirm no regression)

Phase 4: Testing & Verification

  • 4.1 Write unit test: build_fx_track returns TrackDef with exactly 8 clips
  • 4.2 Write unit test: clip positions and fade values match design's boundary map
  • 4.3 Write unit test: all clips have audio_path set (not None)
  • 4.4 Write integration test: compose.py --bpm 99 --key Am --output /tmp/test.rpp produces valid .rpp with "Transition FX" track
  • 4.5 Run full pytest suite — all 110 existing tests pass