diff --git a/app/static/js/app.jsx b/app/static/js/app.jsx index d418238..237cb99 100644 --- a/app/static/js/app.jsx +++ b/app/static/js/app.jsx @@ -5483,9 +5483,8 @@ const PianoRollTabEditor = ({ st, zoom, bpm, viewportWidth, onClose, onUpdateNot const [selectedScale, setSelectedScale] = React.useState(null); const selectedScaleRef = React.useRef(null); selectedScaleRef.current = selectedScale; - const [snapToScale, setSnapToScale] = React.useState(true); const snapToScaleRef = React.useRef(true); - snapToScaleRef.current = snapToScale; + snapToScaleRef.current = st.snapToScale !== undefined ? st.snapToScale : true; const [scaleMenuPos, setScaleMenuPos] = React.useState(null); const scaleMenuOriginRef = React.useRef(null); const [showCC, setShowCC] = React.useState(true); @@ -5597,8 +5596,8 @@ const PianoRollTabEditor = ({ st, zoom, bpm, viewportWidth, onClose, onUpdateNot }, /*#__PURE__*/React.createElement("span", { className: "text-zinc-500 font-semibold" }, "Snap to Scale"), /*#__PURE__*/React.createElement("button", { - onClick: () => setSnapToScale(!snapToScale), - className: `w-7 h-4 rounded-full transition-colors relative ${snapToScale ? 'bg-yellow-600' : 'bg-zinc-700'}`, + onClick: () => setSubTabs(prev => prev.map(s => s.id === st.id ? { ...s, snapToScale: !(s.snapToScale !== undefined ? s.snapToScale : true) } : s)), + className: `w-7 h-4 rounded-full transition-colors relative ${(st.snapToScale !== undefined ? st.snapToScale : true) ? 'bg-yellow-600' : 'bg-zinc-700'}`, style: { padding: 0 } }, /*#__PURE__*/React.createElement("div", { className: `w-3 h-3 rounded-full bg-white absolute top-0.5 transition-transform ${snapToScale ? 'translate-x-3.5' : 'translate-x-0.5'}` @@ -9841,7 +9840,7 @@ const App = () => { midiRec.tempTabId = tab.id; pianoRollRecorderRef.current = midiRec; activeMIDIRecordersRef.current['piano_roll'] = midiRec; - if (selectedMidiInputId) midiRec.setSelectedMidiInputId(selectedMidiInputId); + if (selectedMidiInputId) midiRec.selectedMidiInputId = selectedMidiInputId; setRecStartTimelineTime(startTime); recordingStartTimeRef.current = startTime; setRecordingState('RECORDING'); diff --git a/app/storage/sonicforge.db b/app/storage/sonicforge.db index 6eff710..a7b6dc3 100644 Binary files a/app/storage/sonicforge.db and b/app/storage/sonicforge.db differ