ESP32-S3 Bench Guide
ESP32‑S3 N16R8 벤치 가이드: 실시간 핀아웃, 강의, 시뮬레이터 및 벤치 로그
기타, 베이스, 우쿨렐레, 만돌린, 밴조, 활 현악기의 지판과 악보에서 음계와 코드를 보며 오프라인으로 됩니다
Scales, positions, chords and intervals on the fretboard and staff, for guitar, bass, ukulele, mandolin, banjo and bowed strings. Works offline.
교육JavaScript · CSSGitHub @juhyxx온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Scales and chords for stringed musical instruments.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗A client-only PWA for players of fretted and bowed string instruments. It shows scales, chords and intervals on the neck and in staff notation, and it works offline once loaded.
The name is a pun: scalare is the angelfish in the logo, and the app is about scales.
Instruments: guitar (6, 7 and 8-string), bass (4, 5 and 6-string), ukulele, baritone ukulele, mandolin, Irish bouzouki, 5-string banjo, tenor banjo, violin, viola, cello and double bass.
Instruments page: instrument and tuning are chosen once, so they have their own page next to the Catalog, with every tuning's notes and the custom tuning editor. Explore just shows what's in use; tap it to change.
Choosing what to show: scales, chords and intervals are picked in the Catalog. In Explore, the title opens the Catalog and ‹ › step through the list. The root, labels and instrument sit above the neck, which gets the full width.
Languages: English, Czech, German, Spanish, French, Italian, Brazilian Portuguese and Chinese, as in dots. The interface, catalogue and instrument names are all translated, and the language follows the browser unless you pick one.
Note names: C D E F G A B, C D E F G A H (German and Central European: H is B natural, B is B♭) or solfège (Do Re Mi…). Each language starts with its usual style.
Left-handed: one switch (on the Instruments page and in Settings) mirrors the neck, the chord diagrams and the tab labels, horizontally or vertically.
Fretboard: the whole neck, or one position at a time with the rest dimmed. Roots are drawn as squares, other notes as dots. Label notes by name, by interval, or not at all, and optionally colour them by degree. Tap any fret to hear it.
Positions (boxes):
Chords: every chord tone across the neck, plus playable voicings as chord diagrams. On linear tunings the root is in the bass; re-entrant tunings have no real bass string, so that rule is dropped there.
Intervals: every place an interval occurs, with semitones, inversion, quality and an ear-training song.
Note wheel: the twelve notes round a circle, chromatic or in fifths, lit like the fretboard.
Notation: treble, alto (viola) or bass clef, with the octave transposition of guitar, bass and banjo. Spelling is correct (B♯ in C♯ harmonic minor, double accidentals, courtesy naturals). The staff always shows what Play plays.
Catalog: 76 scales (including the modes of major, melodic minor, harmonic minor, harmonic major and double harmonic), 35 chords and 22 intervals, searchable, with notes spelled from the current root.
Cross-links: a scale lists its diatonic triads and 7ths with roman numerals, plus the modes that share its notes. A chord lists the scales that fit it.
Shareable state: the current view is kept in the URL hash, for example #/explore?k=scale&id=dorian&r=D&v=boxes&b=2.
Keyboard: ← → change position or voicing, [ ] change item, p plays.
Chord symbols: extensions are written as an index (Amin⁷, Cmaj⁷♯⁵). Settings switches between standard (Cmin⁷, Cmaj⁷, Cdim⁷) and jazz symbols (C−⁷, CΔ⁷, C°⁷, Cø⁷).
The look is shared with pitcher: a dark hardware panel, the Silkscreen pixel font, recessed screens and LEDs, here in the logo's orange. The font has no lowercase, so standard symbols spell minor as min and diminished as dim; the jazz glyphs are drawn in a serif face.
There are no dependencies and no build step: just ES modules, SVG and Web Audio.
Any static file server works. Modules and the service worker need http://, not file://.
python3 -m http.server 5173
# open http://localhost:5173
Locally the version is dev, and the service worker fetches from the network first, so edits show up on a normal reload.
Every push to master runs .github/workflows/pages.yml, which publishes to GitHub Pages like pitcher and dots do (they push a gh-pages branch; this one deploys the Pages artifact directly):
_site/.v* tag as git describe gives it: 2.0.0 on the tagged commit, 2.0.0-3-gdc8ed7e three commits later. It goes into src/version.js, and Settings shows it.src/ URLs in index.html and sw.js and on the modules' imports of each other as ?v=<hash>, and into VERSION in sw.js, which names the cache._site/.Because each deploy changes sw.js, browsers install the new worker, which caches that version's files in a fresh scalear-<hash> cache and deletes the old one (the other apps on juhyxx.github.io keep theirs). Open pages show a "new version" toast, and Reload switches to it.
To release, tag the commit and push the tag together with master:
git tag v2.1.0
git push --atomic origin master v2.1.0
If master is already pushed, push the tag and then run the workflow from the Actions tab (Run workflow), so the site picks up the new number.
When adding a file, list it in FILES in sw.js; the deploy fails otherwise.
| File | Purpose |
|---|---|
| src/theory.js | Spelled notes, intervals, enharmonic root choice |
| src/catalog.js | Scales, chords, intervals (data only) |
| src/instruments.js | Instruments, tunings, and the neck model (short strings, re-entrant shapes) |
| src/boxes.js | Position algorithms (N notes per string, CAGED) |
| src/voicings.js | Chord voicing search and ranking |
| src/fretboard.js, src/staff.js, src/diagram.js | SVG renderers |
| src/audio.js | Karplus–Strong plucked-string synth |
| src/store.js | State, localStorage, URL hash |
| src/explore.js, src/catalogView.js, src/instrumentsView.js, |
To add a scale or chord, add an entry to src/catalog.js. A formula is a list of interval ids such as 1 b3 4 #4 5 b7. Spelling, boxes, voicings, notation and catalog cards all derive from it.
To add a language, copy src/lang/cs.js, translate it, and list it in LANGS in src/i18n.js, in the imports of src/main.js and in FILES in sw.js. Missing strings fall back to English.
To add an instrument or tuning, add it to src/instruments.js. Strings are listed in physical order as note names (G4 C4 E4 A4). Append :5 to a string that starts at the 5th fret, like the banjo's drone (G4:5).
| Views |
| src/main.js | Shell, routing, service worker, install prompt |
| sw.js | Service worker: offline cache, one per deploy |
| src/version.js | Release shown in Settings (dev locally, stamped on deploy) |
logo.svg, icons/ | Logo and app icons (the icons use the logo's fish) |
screenshots/ | Shown in the install dialog (wide 1280×800, narrow 390×844 at 2×); published but not cached offline |
src/i18n.js, src/lang/ | Translations (same mechanism as dots); English UI strings in en.js, other languages also translate catalogue names by id |
fonts/ | Silkscreen, self-hosted for offline use, plus ScalearPixelCE.ttf with the Czech letters and arrows Silkscreen lacks (both SIL OFL, see fonts/OFL.txt) |
| tools/pixel-ce-font.py | Rebuilds ScalearPixelCE.ttf (Python, no dependencies) |