+ {/* Track Waveform Row with bars stacked below */}
+
- {/* Effects Bar - Always visible at bottom */}
+ {/* Automation Bar - Collapsible */}
{!track.collapsed && (
-
- {/* Effects Header - Collapsible */}
-
{
- onUpdateTrack(track.id, { effectsExpanded: !track.effectsExpanded });
- }}
- >
- {track.effectsExpanded ? (
-
- ) : (
-
- )}
- Effects
-
- ({track.effectChain.effects.length})
-
-
-
- {/* Effects Content - Collapsible, no inner container */}
- {track.effectsExpanded && (
-
-
- {track.effectChain.effects.length === 0 ? (
-
- No effects. Click + to add an effect.
-
- ) : (
- track.effectChain.effects.map((effect) => (
-
{
- const updatedChain = {
- ...track.effectChain,
- effects: track.effectChain.effects.map((e) =>
- e.id === effect.id ? { ...e, enabled: !e.enabled } : e
- ),
- };
- onUpdateTrack(track.id, { effectChain: updatedChain });
- }}
- onRemove={() => {
- const updatedChain = {
- ...track.effectChain,
- effects: track.effectChain.effects.filter((e) => e.id !== effect.id),
- };
- onUpdateTrack(track.id, { effectChain: updatedChain });
- }}
- onUpdateParameters={(params) => {
- const updatedChain = {
- ...track.effectChain,
- effects: track.effectChain.effects.map((e) =>
- e.id === effect.id ? { ...e, parameters: params } : e
- ),
- };
- onUpdateTrack(track.id, { effectChain: updatedChain });
- }}
- onToggleExpanded={() => {
- const updatedEffects = track.effectChain.effects.map((e) =>
- e.id === effect.id ? { ...e, expanded: !e.expanded } : e
- );
- onUpdateTrack(track.id, {
- effectChain: { ...track.effectChain, effects: updatedEffects },
- });
- }}
- />
- ))
- )}
-
-
- )}
-
- )}
-
- {/* Automation Bar - Collapsible, above effects bar at bottom */}
- {!track.collapsed && (
-
+
{/* Automation Header - Clickable to toggle */}
)}
+
+ {/* Effects Bar - Collapsible */}
+ {!track.collapsed && (
+
+ {/* Effects Header - Collapsible */}
+
{
+ onUpdateTrack(track.id, { effectsExpanded: !track.effectsExpanded });
+ }}
+ >
+ {track.effectsExpanded ? (
+
+ ) : (
+
+ )}
+ Effects
+
+ ({track.effectChain.effects.length})
+
+
+
+ {/* Effects Content - Collapsible, no inner container */}
+ {track.effectsExpanded && (
+
+
+ {track.effectChain.effects.length === 0 ? (
+
+ No effects. Click + to add an effect.
+
+ ) : (
+ track.effectChain.effects.map((effect) => (
+
{
+ const updatedChain = {
+ ...track.effectChain,
+ effects: track.effectChain.effects.map((e) =>
+ e.id === effect.id ? { ...e, enabled: !e.enabled } : e
+ ),
+ };
+ onUpdateTrack(track.id, { effectChain: updatedChain });
+ }}
+ onRemove={() => {
+ const updatedChain = {
+ ...track.effectChain,
+ effects: track.effectChain.effects.filter((e) => e.id !== effect.id),
+ };
+ onUpdateTrack(track.id, { effectChain: updatedChain });
+ }}
+ onUpdateParameters={(params) => {
+ const updatedChain = {
+ ...track.effectChain,
+ effects: track.effectChain.effects.map((e) =>
+ e.id === effect.id ? { ...e, parameters: params } : e
+ ),
+ };
+ onUpdateTrack(track.id, { effectChain: updatedChain });
+ }}
+ onToggleExpanded={() => {
+ const updatedEffects = track.effectChain.effects.map((e) =>
+ e.id === effect.id ? { ...e, expanded: !e.expanded } : e
+ );
+ onUpdateTrack(track.id, {
+ effectChain: { ...track.effectChain, effects: updatedEffects },
+ });
+ }}
+ />
+ ))
+ )}
+
+
+ )}
+
+ )}
))}