diff --git a/PLAN.md b/PLAN.md index 38cfc9c..de4abcf 100644 --- a/PLAN.md +++ b/PLAN.md @@ -95,10 +95,16 @@ - ✅ Per-track gain and pan during playback - ✅ Solo/Mute handling during playback - ✅ Per-track effect chains with device rack -- ✅ Collapsible effects section below each track +- ✅ Collapsible effects section below each track (192px height) - ✅ Effect browser with categorized effects - ✅ Horizontal scrolling device rack (Ableton-style) -- ✅ Individual effect cards with expand/collapse +- ✅ Individual effect cards with side-folding design (40px collapsed, 384px+ expanded) +- ✅ Real-time parameter controls for all effects (filters, dynamics, time-based, advanced) +- ✅ Inline parameter editing with sliders and controls (multi-column grid layout) +- ✅ Real-time effect processing during playback with Web Audio API nodes +- ✅ Effect bypass functionality (disable/enable effects in real-time) +- ✅ Supported real-time effects: All filters, compressor, limiter, gate, delay +- 🔲 Advanced real-time effects: Reverb, chorus, flanger, phaser, distortion (TODO: Complex node graphs) - 🔲 Master channel effects (TODO: Implement master effect chain UI similar to per-track effects) ### Next Steps @@ -570,10 +576,14 @@ audio-ui/ - [ ] Send/Return effects - FUTURE - [ ] Sidechain support (advanced) - FUTURE -#### 7.4 Track Effects (Pending - Phase 8+) -- [ ] Per-track effect chain -- [ ] Effect rack UI -- [ ] Effect bypass per track +#### 7.4 Track Effects (Complete) +- [x] Per-track effect chain +- [x] Effect rack UI +- [x] Effect bypass per track +- [x] Real-time effect processing during playback +- [x] Add/remove effects during playback +- [x] Real-time parameter updates +- [x] Effect chain persistence (localStorage) ### Phase 8: Recording diff --git a/components/editor/AudioEditor.tsx b/components/editor/AudioEditor.tsx index c7aca0b..f295dd1 100644 --- a/components/editor/AudioEditor.tsx +++ b/components/editor/AudioEditor.tsx @@ -33,6 +33,15 @@ export function AudioEditor() { clearTracks, } = useMultiTrack(); + // Log tracks to see if they update + React.useEffect(() => { + console.log('[AudioEditor] Tracks updated:', tracks.map(t => ({ + name: t.name, + effectCount: t.effectChain.effects.length, + effects: t.effectChain.effects.map(e => e.name) + }))); + }, [tracks]); + const { isPlaying, currentTime, @@ -280,7 +289,7 @@ export function AudioEditor() { {/* Track Actions */}