A browser-based production helper for the composition and orchestration stage, designed for exploring double-action pedal harp glissandi and finding the pedal settings that make a single sweep realise a chosen chord or scale.
Initial public release: June 21, 2026 (JST)
Current release: Concert Harp Glissando Generator v1.0 - June 21, 2026 (JST)
Official site: https://concert-harp-glissando-generator.pages.dev/
Created by Teruyuki Shiraiwa / 白岩晃行.
Creator website: https://teruyukishiraiwa.art/
- Pedals → Sound (forward): set the seven pedals (D C B | E F G A, each ♭/♮/♯) and see the resulting glissando, including the chord/scale it spells via enharmonic doublings. The sweep range is set with a two-handle string-range slider.
- Sound → Pedals (reverse): choose a root and a sonority (dominant 7th, diminished 7th, whole-tone, pentatonic, …) and get every pedal setting that plays it as one uninterrupted sweep, ranked tidiest-first. Impossible sonorities are reported as such, with playable alternatives that expand the target into harp-friendly pitch sets.
- Dynamics: velocity min/max, curve, and a direction-aware contour (natural rises on an ascending sweep, falls on a descending one, peaks at the turn for up-down / down-up; inverted mirrors it).
- Grand-staff notation (VexFlow): the glissando's anchor notes connected by a slanted gliss. line, the way harp glissandi are actually written.
- Standard MIDI File (Type 1, PPQ 960) export for DAWs such as Logic Pro.
- MusicXML export (notes spelled by harp string letter + pedal accidental) for MuseScore / Sibelius / Dorico, and a Print / Save-as-PDF sheet (pedal diagram + grand staff) with app, GitHub, and creator credits for clean copy.
- Tone.js preview with bundled CC0 concert-harp samples (FreePats / Versilian VCSL) and a switchable voice — Standard (12 notes @ 22 kHz, default) or High quality (22 notes @ 44.1 kHz), loaded on demand — with a plucked-synth fallback if samples are unavailable.
- English / Japanese UI, with a header Reset control for returning the musical state to defaults.
- Named presets saved locally (IndexedDB) and a self-contained share link that encodes the full state
in the URL hash (
#d=…) — no backend required. - Pedal-change analysis: capture one glissando's pedals, change to the next, and see whether the move
is playable in a single motion (≤ 1 pedal per foot) or needs
max(left, right)successive motions.
47 strings (C1–G7, one per diatonic letter). Seven pedals, one per letter, each with flat / natural / sharp detents (home tuning = all flat = C-flat major). A pedal sets every string of its letter, so a glissando's pitches are fully determined by the pedal state. See SPEC.md for the full specification and engine algorithms.
npm install
npm run devnpm testnpm run build # outputs to dist/Cloudflare Pages (Vite preset): build command npm run build, output directory dist, Node 20+.
Security headers are served from public/_headers. Optional harp samples go in
public/samples/harp/ (see the README there).
v1.0 is a stable foundation: complete pedal engine (forward + reverse), MIDI export, sampled audio preview, pedal-diagram UI, grand-staff gliss notation, MusicXML + Print/PDF export, local presets + share links, pedal-change analysis, and tests. Not yet included: Web MIDI output.


