Digital Music Stand
A simple cross-platform browser-based pdfjs-based viewer to display and search music sheets.
- A single binary including all assets.
- Usage is similar to SublimeText. Press
Pand perform a fuzzy search.
- Not database required
1,2to scroll to previous/next page using a programmable foot pedal.
- Unobtrusive design
- Upload PDF when enabled
- Add sheets via simple file naming
- Use a YAML format to add whole songbooks and complex sheets
p and then type
monlgiht3 (with typos).
You can use the arrow keys (up/down) to navigate. But for now select
Sonata No. 14 Moonlight (3rd Movement: Presto Agitato) and press the
enter key. To scroll to the next page use the right arrow key (or the key
- opens help dialog
- opens prompt for a query
- opens dialog to upload pdf (when enabled)
- loads select sheet
- closes all modal dialogs
- arrow key down
- selects next entry in result list
- arrow key up
- selects previous entry in result list
- arrow key right or key '2'
- scrolls to next page
- arrow key left or key '1'
- scrolls to previous page
The short cuts
2 are for a programmable foot pedal
Download from the release page. The single binary contains all files.
Or build it yourself
Or build it yourself:
git clone https://github.com/PatWie/digitalmusicstand.git cd digitalmusicstand # only run once: minify static assets wget https://github.com/tdewolff/minify/releases/download/v2.6.1/minify_2.6.1_linux_amd64.tar.gz tar -xvf minify_2.6.1_linux_amd64.tar.gz && rm -r cmd && rm LICENSE.md make # run multiple times go build
Instructions to install the required dependencies and their known-to-be-working versions are available at https://github.com/PatWie/digitalmusicstand/blob/master/.docker/dms-release.dockerfile
./digitalmusicstand --sheets /path/to/pdfs --listen :3000
The files in the sheet directoy need to follow the convention
Whitespaces should be replaced by '-'.
Point your browser to
Alternatively, the YAML format can be used to add songbooks or complex sheets.
Example 1 (Songbook):
# content of The_Big_Book_of_Jazz.yml path: The_Big_Book_of_Jazz.pdf artist: Various Artists title: The Big Book of Jazz songs: - artist: Artist 1 title: Song 1 pages: [2, 3] - artist: Artist 2 title: Song 2 pages: [4, 5, 6, 5, 6] - title: The Big Book of Jazz (Full book)
Example 2 (single sheet):
# content of Let_it_be.yml path: Let_it_be.pdf artist: The Beatles title: Let It Be
- Each song is added to the sheet list with its artist name and title. (see Example 1)
- The page numbers define the used pages of the PDF and their ordering. (see Song 1 and Song 2)
- If no page information for a song is provided, the complete pdf is used. (see Example 1)
- If no artist name for a song is provided, the artist name of the head is used. (useful for single artist songbooks)
- If no songs are provided, the head (artist anme and title) is used for a single sheet. (see Example 2)
- Subfolders are allowed in
To activate this functionality use the
./digitalmusicstand --parse-yaml --sheets /path/to/pdfs --listen :3000