# Classroom instrument audio The common General MIDI foundation is **MuseScore General HQ 0.2.1** (MIT), with dedicated CC0 and CC BY 4.0 recordings for classroom instruments. All 128 GM program numbers remain independent. Melody and backing use the same files for piano, metallophone, bells, xylophone, harmonica, guitar, recorder, ocarina, kalimba and poly synth. Other GM backing instruments retain the HQ bank. There is no unrelated oscillator fallback. ## Sources | Voice | Source and adaptation | | --- | --- | | Piano | MuseScore General HQ grand piano. Three rendered touch layers, roots every three semitones, natural decay up to 4.2 seconds. | | Metallophone | HQ vibraphone metal-bar timbre; not a recording of a specific pictured school instrument. | | Bells | HQ GM glockenspiel. | | Xylophone | HQ GM xylophone. | | Harmonica | Real Hohner Special 20 C Soft/Normal sustains, Versilian Community Sample Library (VCSL), CC0. Correct octave verified from frequency; upstream C3 means MIDI 60. | | Recorder | Real Baroque tenor recorder from VCSL, CC0. Low classroom register, stable-tone onset trim, noise reduction and crossfaded sustain loops. | | Ocarina | Xavimart (Javier), Gonzalo and Roberto / FreePats Ocarina 2024-10-02, CC0. Different 2019 recording session; twelve original roots and the supplied musical sustain loops retained, with onset trim and a short loop crossfade. | | Guitar | Meta Nylon Guitar, Meta Creative Audio Team / Meta Open Sound, CC0. Fingerstyle and two picked layers, dense roots, intonation corrections. Default melody touch favors the warmer finger layer. | | Ukulele | Iain McCurdy, Freesound pack 38906, CC BY 4.0. Twenty-two chromatic stereo recordings, Lewitt LCT 540S / Zoom F3. Creator-provided public HQ previews adapted with onset trim, final taper and conservative level matching; no aggressive spectral isolation. | | Boomwhackers | 29 real tube hits extracted from the CC0 Open Music Academy chromatic-scale recording, individually tuned. Intentionally sound two octaves below written pitch; lower notes extend the recorded range. | | Tongue drum | hollandm, Freesound pack 38732, CC0. Actual 10-inch, eleven-note steel tongue drum in F, played with rubber mallets and recorded with an AKG P220. Natural overtones retained; nearest-root resampling supplies notes outside the recorded scale. The stable internal handpan ID remains for old saved scores; this is a tongue drum, not a PANArt Hang. | | Kalimba | Dedicated real kalimba recorded by Xavimart (Javier), Gonzalo and Roberto / FreePats, CC0, version 2019-07-23. | | Synthesizer | Original layered derivative of HQ analogue saw, warm pad and bass fundamentals, gentle sample-based unison/chorus motion. MIT. Used for GM 90 poly synth pad as well as the melody choice. | VCSL: https://versilian-studios.com/vcsl/ and https://github.com/sgossner/VCSL/tree/c1ea7bcc3c7309650ab0da9d15c9cd1fbc4a4c7e . Meta Open Sound: https://github.com/facebookincubator/Meta-open-sound/tree/e2ff154845994fe4135becc4d5b857c19f172784 . FreePats: https://freepats.zenvoid.org/ . Boomwhackers source: https://openmusic.academy/docs/gk9FWWVPa3zDWD6m26uTpt/kollektion-boomwhakers . The three new recordings, their exact sources, licenses and modifications are documented in [CLASSROOM-RECORDINGS.txt](../../audio-libraries/CLASSROOM-RECORDINGS.txt). Iain McCurdy is credited under CC BY 4.0; the ocarina and tongue drum are CC0. Other CC0 licenses, source notices and modifications are in `../../classroom-audio/`; the HQ MIT license and original preset credits are in `../../soundfont-hq/`. Lossless HQ SF2 SHA-256: `985680908c60c082919abdb27708b36726567ddc200b2bb55a62471c37e4fa07`. Its Debian source tar checksum was checked against the official .dsc distribution metadata. See https://deb.debian.org/debian/pool/main/m/musescore-general-soundfont/ . ## Playback The five on-demand libraries are documented in [audio-libraries/README.md](../../audio-libraries/README.md). Classroom recordings use MP3 derivatives at the selected library density; dry HQ accompaniment also uses efficient Opus derivatives rendered directly from the lossless SF2. No raw WAV or entire SoundFont is a startup dependency. Only needed pitch roots and their touch layers load, four requests at a time, using SHA-256 cache keys. The full 490 MB lossless SoundFont is never downloaded by a pupil's browser. Acoustic attacks/decays, note lengths and performance dynamics are preserved; held winds and synths have crossfaded sustain loops. Separate melody/backing/master compression and restrained common room reverb provide headroom. Melody stays forward in the combined mode. Mode, tempo and loop changes reuse the clock and decoded cache. This is a browser sample player, not a complete Yamaha GS/XG engine. Specialized Yamaha DSP/articulations, pitch bend, pedal resonance and all original SoundFont modulators are not reproduced. Extreme notes farther from the recorded roots lose some timbral realism. The tongue drum chromatic extension is specifically documented above. ## Rebuild and verification Requires Python 3, numpy, FluidSynth, FFmpeg and, for the older baseline builders, macOS afconvert. Baseline source builders are `build-instrument-bank.py` and `upgrade-classroom-audio.py`. Apply these builders in order: 1. `build-hq-soundfont.py --source ` — exact source hash required. 2. `upgrade-real-classroom.py` — CC0 Hohner and real tube recordings. 3. `polish-instrument-recordings.py` — dedicated winds, guitar, kalimba, handpan, cleaned ukulele and layered synth. The current distribution is generated with `build-audio-libraries.py`, `finish-audio-libraries.py`, `install-new-classroom-sources.py`, `package-audio-efficiently.py` and `index-audio-libraries.py`. `scripts/classroom-source-catalog.json` records the original sound URLs and fingerprints. Original downloads remain in ignored `qa/`. `scripts/build-instrument-bank.py --audit` checks pitch, sample rate, non-silence, peaks, unique waveforms and loops. `scripts/test-instrument-audio.mjs` checks readiness, touch layers, caching, pitch/duration, cancellation, retry, live retiming and routing. Tests cover all 500 styles and every GM program. Native OfflineAudioContext renders compare multiple pitches, dense combined headroom and a complete fade to silence. The classroom recorder sounds one octave above its written pitch (`transpose: +12`), matching the requested soprano register; notation and the metallophone guide retain the written pitch.