| Both sides previous revision Previous revision Next revision | Previous revision |
| lwc:musescore [2026/09/17 11:31] – [Known Gotchas] John Harrison | lwc:musescore [2026/09/17 11:37] (current) – [Verifying a Merge Against Real Playback] John Harrison |
|---|
| |
| ^ Issue ^ Explanation ^ | ^ Issue ^ Explanation ^ |
| | Flatpak sandboxing hides real file paths | Writing to `/tmp` from the MuseScore flatpak actually lands in `~/.var/app/org.musescore.MuseScore/tmp`, not the real `/tmp`. Fix: `flatpak override --user org.musescore.MuseScore --filesystem=/tmp`, or just save to `~/Documents` instead. | | | Flatpak sandboxing hides real file paths | Writing to ''/tmp'' from the MuseScore flatpak actually lands in ''~/.var/app/org.musescore.MuseScore/tmp'', not the real ''/tmp''. Fix: ''flatpak override --user org.musescore.MuseScore --filesystem=/tmp'', or just save to ''~/Documents'' instead. | |
| | Flatpak popup/dialog windows not opening (KDE/Wayland) | Known Qt/Wayland bug affecting popup and dialog positioning in some MuseScore 4 builds. Fix: force X11 — `QT_QPA_PLATFORM=xcb musescore4` (edit the Exec line in the `.desktop` file to persist this). | | |
| | Dialogs still broken even on X11 | Can be a corrupted layout/preferences state rather than the Wayland bug above. Try View → Restore the Default Layout first; if that doesn't fix it, reset MuseScore's config: move `~/.config/MuseScore/MuseScore4.ini` and `~/.local/share/MuseScore4` aside and relaunch. | | |
| |
| ===== Merging Multiple Scores into One (Movements/Album) ===== | ===== Merging Multiple Scores into One (Movements/Album) ===== |
| MuseScore 4 has no built-in Album/Join feature (it existed in MS2/3, not restored as of testing). | MuseScore 4 has no built-in Album/Join feature (it existed in MS2/3, not restored as of testing). |
| |
| **Community PowerShell script** — combines full `.mscz` files sequentially (concatenates the raw staff XML from each score, inserting a barline + section/page break between each), rather than doing a manual copy/paste per instrument: | **Community PowerShell script** — combines full ''.mscz'' files sequentially (concatenates the raw staff XML from each score, inserting a barline + section/page break between each), rather than doing a manual copy/paste per instrument: |
| * Script + thread: https://musescore.org/en/node/305513 — look for the attached **MusescoreCombine.txt** in the thread (renamed from `.ps1` because the forum blocks script uploads directly — rename back to `.ps1` after downloading) | * Script + thread: https://musescore.org/en/node/305513 — look for the attached **MusescoreCombine.txt** in the thread (renamed from ''.ps1'' because the forum blocks script uploads directly — rename back to ''.ps1'' after downloading) |
| * Runs fine on Linux under PowerShell 7 (`pwsh`) unmodified — it's pure zip/XML text manipulation via built-in cmdlets, no Windows-only APIs and no dependency on the `mscore` binary itself | * Runs fine on Linux under PowerShell 7 (''pwsh'') unmodified — it's pure zip/XML text manipulation via built-in cmdlets, no Windows-only APIs and no dependency on the ''mscore'' binary itself |
| * Usage: `pwsh MusescoreCombine.ps1 file1.mscz file2.mscz file3.mscz ...` — order = argument order, not filename or directory order. First file's header/style/instrument list becomes the whole merged score's. Output is `MergedSore.mscz` (script's own naming) in whatever directory you ran the command from. | * Usage: ''pwsh MusescoreCombine.ps1 file1.mscz file2.mscz file3.mscz ...'' — order = argument order, not filename or directory order. First file's header/style/instrument list becomes the whole merged score's. Output is ''MergedSore.mscz'' (script's own naming) in whatever directory you ran the command from. |
| * Preserves tempo/key/time-sig changes and ties correctly (raw XML concatenation), unlike manual copy/paste in the MuseScore UI, which drops tempo and key/time-signature changes across the paste boundary. | * Preserves tempo/key/time-sig changes and ties correctly (raw XML concatenation), unlike manual copy/paste in the MuseScore UI, which drops tempo and key/time-signature changes across the paste boundary. |
| * Each inserted section break defaults to a **3-second pause** between movements (MuseScore's normal section-break default) — if you don't want a gap, select the break → Properties → set "Pause before new section starts" to 0. | * Each inserted section break defaults to a **3-second pause** between movements (MuseScore's normal section-break default) — if you don't want a gap, select the break → Properties → set "Pause before new section starts" to 0. |
| * Requires identical staff/instrument layout (same instruments, same order) across all input files. | * Requires identical staff/instrument layout (same instruments, same order) across all input files. |
| |
| **Installing PowerShell (`pwsh`) on Ubuntu 24.04** — standalone `.deb`, no need to add the Microsoft apt repo for a one-off task: | **Installing PowerShell (''pwsh'') on Ubuntu 24.04** — standalone ''.deb'', no need to add the Microsoft apt repo for a one-off task: |
| <code bash> | <code bash> |
| POWERSHELL_VERSION=$(curl -s "https://api.github.com/repos/PowerShell/PowerShell/releases/latest" | grep -Po '"tag_name": "v\K[0-9.]+') | POWERSHELL_VERSION=$(curl -s "https://api.github.com/repos/PowerShell/PowerShell/releases/latest" | grep -Po '"tag_name": "v\K[0-9.]+') |
| sudo apt install -y ./powershell.deb | sudo apt install -y ./powershell.deb |
| </code> | </code> |
| If apt complains about `_apt` sandbox permission denied on the local file, move the .deb somewhere `_apt` can read first: ``sudo cp powershell.deb /tmp/ && sudo apt install -y /tmp/powershell.deb``. This usually means your home directory's permissions are blocking the `_apt` user from traversing into it. | If apt complains about ''_apt'' sandbox permission denied on the local file, move the .deb somewhere ''_apt'' can read first: ''''sudo cp powershell.deb /tmp/ && sudo apt install -y /tmp/powershell.deb''''. This usually means your home directory's permissions are blocking the ''_apt'' user from traversing into it. |
| |
| ===== Verifying a Merge Against Real Playback ===== | |
| |
| Useful technique for confirming a merged/edited score's timing actually matches what MuseScore will play, without needing to reverse-engineer tempo/time-signature math by hand: | |
| |
| - Solo the Metronome channel in the Mixer and export just the click track as WAV (see Playback section above). | |
| - Detect click onsets from the waveform (short percussive transients — a simple amplitude-threshold peak search works well; MuseScore's metronome accents downbeats at a measurably louder amplitude than other beats, which lets you segment the clicks into per-measure groups automatically). | |
| - Compare the click count per measure against the beats-per-measure implied by each measure's time signature in the score's XML — mismatches pinpoint exactly which measure has a structural problem (missing section break, unexpected pickup/irregular measure, etc.) far faster than guessing from the notation alone. | |