diff --git a/lib/storage/projects.ts b/lib/storage/projects.ts index 60eecd2..aa16be1 100644 --- a/lib/storage/projects.ts +++ b/lib/storage/projects.ts @@ -27,6 +27,20 @@ export function generateProjectId(): string { return `project_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`; } +/** + * Serialize effects by removing any non-serializable data (functions, nodes, etc.) + */ +function serializeEffects(effects: any[]): any[] { + return effects.map(effect => ({ + id: effect.id, + type: effect.type, + name: effect.name, + enabled: effect.enabled, + expanded: effect.expanded, + parameters: effect.parameters ? JSON.parse(JSON.stringify(effect.parameters)) : undefined, + })); +} + /** * Convert tracks to serialized format */ @@ -42,7 +56,7 @@ function serializeTracks(tracks: Track[]): SerializedTrack[] { collapsed: track.collapsed, height: track.height, audioBuffer: track.audioBuffer ? serializeAudioBuffer(track.audioBuffer) : null, - effects: track.effectChain?.effects || [], + effects: serializeEffects(track.effectChain?.effects || []), automation: track.automation, recordEnabled: track.recordEnabled, }));