grid: JSON.parse(JSON.stringify(grid)),
rows: JSON.parse(JSON.stringify(rows)),
vols: JSON.parse(JSON.stringify(vols)),
tile_vols: JSON.parse(JSON.stringify(tileVols)),
shifts: JSON.parse(JSON.stringify(tileShifts)),
tile_sustain: JSON.parse(JSON.stringify(tileSustain)),
tile_offsets: JSON.parse(JSON.stringify(tileOffsets)),
bpm_map: bpmMap ? bpmMap.slice() : [],
num_steps: num_steps,
beats_per_bar: beatsPerBar,
beat_unit: beatUnit,
step_divisions: stepDivisions,
track_instruments: trackInstruments.slice(),
track_names: trackNames ? trackNames.slice() : [],
track_pans: trackPans.slice(),
track_mutes: trackMutes.slice(),
track_solos: trackSolos.slice(),
track_lowpass_enabled: trackLowpassEnabled.slice(),
track_lowpass_freqs: trackLowpassFreqs.slice(),
track_reverb_enabled: trackReverbEnabled.slice(),
track_reverb_amounts: trackReverbAmounts.slice(),
takt_map: taktMap ? taktMap.map(entry => ({ ...entry })) : []