Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/patwie/digitalmusicstand
web based music sheet viewer (go, pdfjs) as a single binary
https://github.com/patwie/digitalmusicstand
diy golang music music-library music-sheet-organizer pdf-viewer pdfjs rapsberrypi sheet-music sheet-music-viewer
Last synced: about 7 hours ago
JSON representation
web based music sheet viewer (go, pdfjs) as a single binary
- Host: GitHub
- URL: https://github.com/patwie/digitalmusicstand
- Owner: PatWie
- License: gpl-3.0
- Created: 2018-02-10T16:53:06.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2023-01-07T14:32:59.000Z (over 1 year ago)
- Last Synced: 2024-05-16T15:44:00.971Z (5 months ago)
- Topics: diy, golang, music, music-library, music-sheet-organizer, pdf-viewer, pdfjs, rapsberrypi, sheet-music, sheet-music-viewer
- Language: JavaScript
- Homepage: http://digitalmusicstand.org
- Size: 7.39 MB
- Stars: 31
- Watchers: 6
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Digital Music Stand
[![Build Status](https://ci.patwie.com/api/badges/PatWie/digitalmusicstand/status.svg)](https://ci.patwie.com/PatWie/digitalmusicstand)
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 `P` and perform a fuzzy search.
* Not database required
* Shortcuts `1,2` to 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## DEMO
See [http://demo-digitalmusicstand.patwie.com/](http://demo-digitalmusicstand.patwie.com/) for a subset of the [Mutopia Project](https://www.mutopiaproject.org/) which are released under Creative Commons Attribution-ShareAlike.
#### Handling
Press `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 `2`).#### Shortcuts
- h
- opens help dialog
- p
- opens prompt for a query
- u
- opens dialog to upload pdf (when enabled)
- enter
- loads select sheet
- esc
- 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 `1` and `2` are for a programmable foot pedal
## Get it
Download from the [release page](https://github.com/PatWie/digitalmusicstand/releases). The single binary contains all files.
## Or build it yourself
Or build it yourself:
```bash
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
## Usage
```bash
./digitalmusicstand --sheets /path/to/pdfs --listen :3000
```
The files in the sheet directoy need to follow the convention `interpret_title.pdf`.
Whitespaces should be replaced by '-'.
Point your browser to `http://localhost:3000`
#### Add Songbooks
Alternatively, the YAML format can be used to add songbooks or complex sheets.
Example 1 (Songbook):
```yaml
# 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):
```yaml
# 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 `path`.
To activate this functionality use the `--parse-yaml` flag:
```bash
./digitalmusicstand --parse-yaml --sheets /path/to/pdfs --listen :3000
```