# Readme - List of changes 1. Define Offset Property Add this to the plugin’s global properties: property real timeOffset: 0.0 // Default: 0 2. Create the UI Input Insert this Rectangle block in the UI layout (between timestamp fields and sync controls): // Time Offset Configuration Rectangle { width: parent.width height: 35 border.width: 1; border.color: "gray" Row { anchors.fill: parent; anchors.margins: 5; spacing: 10 Text { text: "Video Offset (mm:ss):"; font.pixelSize:12 verticalAlignment: Text.AlignVCenter } TextField { id: offsetField width: 80; placeholderText: "00:00"; inputMask: "99:99" font.pixelSize:12; verticalAlignment: Text.AlignVCenter } Button { text: "Apply"; width:80; font.pixelSize:12 onClicked: { const offsetSec = parseTimestamp(offsetField.text) if (offsetSec >= 0) { timeOffset = offsetSec statusMessage = `Offset applied: ${offsetField.text} (${timeOffset} sec)` statusColor = "green" } else { statusMessage = "Invalid format. Example: 02:30" statusColor = "red" } } } } } 3. Add Timestamp Parsing Insert this utility function above existing code: function parseTimestamp(timeStr) { const parts = timeStr.split(':') if (parts.length != 2) return -1 const [minutes, seconds] = parts.map(Number) return Number.isFinite(minutes + seconds) ? (minutes * 60 + seconds) : -1 } 4. Update Core Functions to Use timeOffset In setVlcTimePosition function setVlcTimePosition(scoreSeconds) { const target = scoreSeconds + timeOffset sendVlcCommand("seek", "val=" + target.toFixed(3)) console.log("VLC Seeking: " + target + " sec") } In syncWithMuseScorePlayback Adjust the synchronization target: const targetPosition = Math.floor(nextEvenSecond + 1) + timeOffset sendVlcCommandDirect("seek", "val=" + targetPosition) // Offset-applied position 5. Final Adjustments Status Display: Show the active offset in the UI : Text { text: `Current Offset: ${timeOffset.toFixed(1)} sec` color: statusColor; font.pixelSize: 10 } Reset Function: Ensure offsets are respected on reset function resetPlayback() { setVlcTimePosition(0) // Score 0s → VLC's timeOffset start // [Existing reset logic...] }