Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save vaclavmuller/ee64de39d8c43d07d28293e849849277 to your computer and use it in GitHub Desktop.

Select an option

Save vaclavmuller/ee64de39d8c43d07d28293e849849277 to your computer and use it in GitHub Desktop.
SheetSage Windows Installation Feedback

Title

Windows local installation feedback: embedded Python 3.8 issues, broken dependency pins, missing runtime deps, asset download failures, and suggested installer improvements


Preamble

Hi! First of all, thank you for SheetSage — the project is very impressive and, after some work, I was able to get the full pipeline running locally on Windows (piano transcription, Demucs separation, lead sheet generation, Gradio UI).

Because the Windows setup took quite a bit of debugging, I wanted to share detailed installation feedback and concrete suggestions that may help improve the out-of-the-box experience for other Windows users.

This is not a complaint — just a consolidated report of issues encountered and fixes/workarounds that made the system work reliably on my machine.


Environment

  • OS: Windows 10 / Windows 11
  • Python: Embedded Python 3.8 (as currently used by setup scripts)
  • Hardware: CPU only
  • Installation method: setup_local.bat / run_local.bat

Summary of Issues Encountered

1. Embedded Python 3.8 missing pip / ensurepip

  • The embedded Python distribution did not include pip.
  • ensurepip was also missing, so pip had to be bootstrapped manually via get-pip.py (Python-3.8-specific version).

Suggestion

  • Consider switching to embedded Python 3.9+ / 3.10+, or
  • Automatically bootstrap pip depending on Python version.

2. requirements.txt pins incompatible with Python 3.8

Several pinned versions could not be installed on Python 3.8:

  • attrs==25.4.0 (not available for py38)
  • audioread==3.1.0 (does not exist)
  • cffi==2.0.0 (no py38 wheels)
  • click==8.3.1 (does not exist)

This required manually relaxing versions to get a working environment.

Suggestion

  • Use compatible version ranges instead of strict pins, or
  • Provide Python-version-specific constraints (e.g. constraints-win-py38.txt), or
  • Officially require Python ≥3.9 and align requirements accordingly.

3. Runtime dependencies missing (discovered only at launch time)

Several modules were required at runtime but not installed by default:

  • gradio
  • torch, torchaudio, torchvision
  • validators
  • demucs
  • piano_transcription_inference

These failures only appeared after launching the UI or starting inference.

Suggestion

  • Provide extras such as:

    pip install .[ui]
    pip install .[full]
  • Or add a pre-launch dependency check in run_local.bat.


4. FluidSynth hardcoded path on Windows

pretty_midi attempted to load FluidSynth from:

C:\tools\fluidsynth\bin

which did not exist. The project already ships FluidSynth DLLs locally, but the hardcoded path caused a crash.

Suggestion

  • Remove hardcoded path and instead:

    • Use the local bin/ directory, or
    • Respect an environment variable like FLUIDSYNTH_DIR.

5. ffprobe / ffmpeg not found → audio loading failure

Gradio failed to load non-WAV audio files because ffprobe was not in PATH:

RuntimeError: ffprobe not found

Suggestion

  • Ensure ffmpeg including ffprobe.exe is added to PATH during setup.
  • Alternatively, explicitly configure pydub’s ffmpeg paths.

6. Asset downloader issues (assets.py)

Several problems occurred when downloading model assets:

  1. Initial multiprocessing bug (args undefined / unexpected keyword argument).

  2. HTTP 403 errors from:

    • https://sheetsage.s3.amazonaws.com/...
  3. Fallback to yt-dlp also failed:

    • S3 URLs still returned 403
    • MEGA folder URLs are not supported by yt-dlp

Suggestion

  • Fix multiprocessing argument handling (already patched locally).

  • Avoid MEGA folder URLs as a primary distribution method.

  • Prefer:

    • GitHub Releases with direct file links, or
    • Stable presigned S3 URLs with proper headers (User-Agent).
  • If MEGA is required, use MEGAcmd rather than yt-dlp.


7. Gradio progress requires queue

Gradio crashed with:

ValueError: Progress tracking requires queuing to be enabled.

Fix

demo.queue()
demo.launch(...)

Suggestion

  • Enable queue by default when progress updates are used.

8. Lead sheet formatting too strict on downbeats

Lead sheet generation initially failed with:

ValueError: Change at onset X is not on a downbeat

Snapping chord changes to the nearest downbeat instead of crashing allowed successful output.

Suggestion

  • Default to snapping + warning rather than raising an exception.
  • This is especially important when fallback beat tracking is used.

Suggested High-Level Improvement: Windows Installer

A single robust Windows installer would help significantly:

  • Embedded Python ≥3.9

  • Automatic pip bootstrap

  • Grouped dependency installation (core, ui, optional)

  • ffmpeg + fluidsynth + lilypond PATH setup

  • Sanity checks before launch:

    python -c "import gradio, torch, validators"
    where ffprobe
    fluidsynth --version

Final Notes

After addressing the above points, SheetSage runs successfully end-to-end on Windows, including:

  • Demucs vocal separation
  • Piano transcription
  • Lead sheet generation
  • Gradio UI

I hope this feedback is useful. Thanks again for the project — it’s very promising, and a smoother Windows setup would make it much more accessible.

Happy to clarify or help test fixes if needed!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment