Third-party licenses
This app bundles the following open-source libraries in lib/. All are
permissively licensed (MIT / BSD-3-Clause); its typefaces (below) are under the
SIL Open Font License. No code was copied from Midiano or
any non-open-source project.
| Library | Version | License | Use |
|---|---|---|---|
| OpenSheetMusicDisplay | 2.1.3 | BSD-3-Clause | Music notation rendering + cursor |
| Tone.js | 15.1.22 | MIT | Audio context, synth, scheduling primitives |
| @tonejs/midi | 2.0.28 | MIT | MIDI file parsing |
| soundfont-player | 0.2.1 | MIT | Optional sampled instruments |
| VexFlow | (bundled inside OSMD) | MIT | Notation engraving engine used by OSMD |
| Gonville glyph outlines | (VexFlow's copy, in OSMD) | "The Gonville font files themselves may be used without restriction" (Simon Tatham) | The clefs, sharp, flat, natural and whole note of the exercises' staff, copied into src/staff-view.js |
Typefaces (2.5.1)
Since 2.5.1 the three typefaces are served with the app (fonts.css, fonts/)
instead of from Google Fonts. The files are the Google Fonts builds as packaged
by Fontsource — latin and latin-ext subsets,
unchanged.
| Typeface | By | Licence | Files |
|---|---|---|---|
| Newsreader (with its optical-size axis) | Production Type — The Newsreader Project Authors | SIL Open Font License 1.1 | fonts/newsreader-*.woff2; licence: fonts/OFL-Newsreader.txt |
| IBM Plex Sans | IBM Corp. | SIL Open Font License 1.1 | fonts/ibm-plex-sans-*.woff2; licence: fonts/OFL-IBM-Plex-Sans.txt |
| IBM Plex Mono | IBM Corp. | SIL Open Font License 1.1 | fonts/ibm-plex-mono-*.woff2; licence: fonts/OFL-IBM-Plex-Mono.txt |
The licence asks that the copyright notice and the licence travel with the
fonts (the fonts/OFL-*.txt files), and that the fonts are not sold on their
own. None of the three declares a Reserved Font Name.
Statistics: the Firebase JavaScript SDK (2.5.1)
Not bundled. Only when a visitor chooses Accept in the statistics banner on
thegrind.quest does the app load Google's
Firebase JavaScript SDK 13.1.0
(Apache-2.0) from Google's own server (gstatic.com), and through it Google
Analytics. What that collects is on the privacy page (privacy.html).
Piano and instrument samples
Sampled instrument audio comes from
midi-js-soundfonts (gleitz's
MIDI.js renderings of General-MIDI soundfonts). The app uses the
MusyngKite set, "generated from Musyng Kite.sfpack", which that repository
releases under the
Creative Commons Attribution-ShareAlike 3.0
licence. The acoustic grand piano IS bundled, unchanged
(lib/acoustic_grand_piano-mp3.js), so the app sounds like a piano offline;
the other instruments (bright/electric piano, harpsichord, vibraphone, music
box) are fetched at runtime from the same set. What the licence asks: this
credit and the licence's name and link (here), and that the samples, if ever
changed, be shared under the same licence; it allows commercial use. (2.2: this
file used to call the samples "freely redistributable" without naming the
licence or crediting the set — corrected.)
Spoken metronome counts (2.2)
lib/voices/en-f.js, en-m.js, ro-f.js and ro-m.js hold the words the
metronome says ("one" … "eight", "and"; "unu" … "opt", "și"), in a woman's and
a man's voice, one file a voice. They were synthesised once, offline, by
tools/make-voices.py (which says how to make them again, with the model
files' checksums), with:
| Tool | Licence | Role |
|---|---|---|
| Kokoro-82M v1.0 (hexgrad), its ONNX fp16 export | Apache-2.0 (the weights) | The speech: a neural network that turns phonemes into sound. Its voices are style vectors; the two used are af_bella and am_michael. |
| kokoro-onnx 0.6.1 | MIT | Runs the model. |
| espeak-ng, through phonemizer | GPL-3.0 | Turns the English words into phonemes, and gave the Romanian phonemes written into the script. It makes none of the sound. |
None of these programs is in the app, only the sound they made. The output of a program is not covered by the program's licence unless it copies part of the program into it (GNU's GPL FAQ), and Kokoro's sound is computed by the network, not cut from recordings; Apache-2.0 places no condition on what the model produces. Kokoro's authors state that it was trained only on permissive or non-copyrighted audio (public-domain audio, audio under Apache, MIT and similar licences, and synthetic audio from large providers' closed text-to-speech models), and list the CC BY audio in its data, credited here as they credit it: Koniwa (CC BY 3.0) and SIWIS (CC BY 4.0). That statement is theirs; it could not be checked from here.
The Romanian counts are spoken by the same two voices, given Romanian phonemes: Kokoro has no Romanian voice of its own, so a native listener may hear an accent. Each clip carries its measured perceptual onset, used to start the word early so that it lands on the beat.
Up to 2.1 the counts came from eSpeak NG with the MBROLA voices us1 and
ro1. MBROLA's licence allows only "non-commercial, non-military purposes" and
forbids its use in "any product which is sold without prior permission from the
author": those clips were removed in 2.2.
OpenSheetMusicDisplay's built-in audio player is a sponsor-only feature and is not in the open-source build; this app drives playback and the cursor with its own transport instead.
The fingering algorithm in src/fingering.js (the ergonomic cost model of
Parncutt, Sloboda, Clarke, Raekallio & Desain, 1997, with Jacobs' 2001
refinements, extended as documented in the file), the key-estimation and
pitch-spelling code in src/theory.js (Krumhansl–Schmuckler profiles;
PS13-style line-of-fifths spelling), and both converters
(src/convert-midi-to-xml.js, src/convert-xml-to-midi.js) are original
implementations of published, non-proprietary algorithms; no third-party
conversion or fingering code is included.
BSD-3-Clause — OpenSheetMusicDisplay
Copyright 2019 PhonicScore
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
- Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DAMAGES ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE.
MIT — Tone.js, @tonejs/midi, soundfont-player, VexFlow
These components are released under the MIT License (full Tone.js and
soundfont-player notices are in lib/Tone.js.LICENSE.txt and
lib/soundfont-player.LICENSE.txt). The MIT License permits use, copying,
modification, and distribution provided the copyright and permission notice are
retained; the software is provided "as is", without warranty of any kind.