TutorLoom
The learning platform for companies, colleges and training institutes. Free and open source, with an Enterprise edition.
A piano plays your vocal exercises and moves them up or down a half step at a time, from the note you start on to the note you end on. Build practice sets and share them as files. Free, no sign-up, wo
EducationHTML · JavaScriptGitHub @ktkwmrOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Vocal warm-up scales on the piano, moving up a half step at a time. 半音ずつ上がる発声練習のピアノ伴奏
Translation pending
Taken from the repository README
Loading the full README.
Read the full README ↗A piano accompanist for vocal warm-ups. Choose an exercise (Do-Re-Mi-Fa-Sol-Fa-Mi-Re-Do, arpeggios, scales, or your own), the key to start on, the key to end on, and the tempo. The piano plays it, then moves up or down a half step and plays it again until it reaches the end key. Line exercises up into practice sets that play straight through, and export / import them to share as a file.
発声練習のピアノ伴奏ツールです。練習パターン(ドレミファソファミレド・ドミソ・スケール・オリジナル)、開始のキーと終了のキー、テンポを選ぶと、ピアノが半音ずつ上げ下げしながら終了のキーまで繰り返し弾きます。練習を並べた「練習セット」は通しで再生でき、エクスポート・インポートでほかの人と共有できます。
▶ https://ktkwmr.com/vocalladder/ (日本語: https://ktkwmr.com/vocalladder/ja/)
/vocalladder/ja/, ?lang=en|ja)
ホーム画面に追加でき、オフラインでも動作。英語・日本語| Write | Meaning |
|---|---|
1–7 | Do Re Mi Fa Sol La Ti (major scale from the key) / ド〜シ |
8–15 | the next octave (8 = Do an octave up) / 1オクターブ上 |
b3, #4 | b before a number lowers it a half step, # raises it (b3 = Mi lowered a half step) / 数字の前の b で半音下がり、# で半音上がる |
5, / 1' | an octave lower / higher / 1オクターブ下・上 |
- | one beat longer (1-- = 3 beats) / 1拍のばす |
/ | half as long (1/ = half a beat) / 半分の長さ |
r | rest / 休み |
Example: 1 2 3 4 5 4 3 2 1- = Do-Re-Mi-Fa-Sol-Fa-Mi-Re-Do with a 2-beat last note. The built-in patterns plus the 2-beat chord fill whole bars of 4 beats, so the next key starts right on the beat. Patterns with a minor third (b3) and no major third get a minor chord.
Export saves all sets and My patterns in one file. Import adds every set and pattern in the file (patterns whose notes are already saved are skipped); a set with the same name and the same exercises as one already there is skipped, and a different set with a name that already exists gets “(2)”. Nothing saved is replaced. Version 3 files (no listenFirst; their melody is ignored, as the melody is always played), version 2 files (no patterns) and version 1 files (one set, "format": "vocalladder-set") can still be imported.
エクスポートはすべてのセットとマイパターンを 1 つのファイルに保存します。インポートはファイルのセットとマイパターンをすべて追加します(同じ音のマイパターンはすでにあれば追加しません)。名前も中身も同じセットがすでにあれば読み込まず、名前だけ同じなら「(2)」を付けます。既存のセットは置き換えません。listenFirst のない version 3(melody は無視し、メロディーはいつも弾く)、マイパターンのない version 2 と、1 セットだけの version 1 も読み込めます。
{
"format": "vocalladder-sets", "version": 4,
"patterns": [ { "name": "Do-Mi-Sol twice", "pattern": "1 3 5 3 1 3 5 3 1-" } ],
"sets": [
{ "name": "Soprano A",
"exercises": [
{ "name": "", "pattern": "1 2 3 4 5 4 3 2 1-", "start": "C4", "end": "G4", "step": 1,
"roundTrip": false, "bpm": 100, "rest": 0, "chord": true, "listenFirst": false }
] }
]
}
Full policy: /vocalladder/privacy/ (/vocalladder/ja/privacy/). Operator: /vocalladder/about/.
public/
_headers # security headers (CSP etc.)
404.html # page for unknown URLs under /vocalladder/ (status 404)
vocalladder/
index.html # the app (HTML / CSS / JS, English and Japanese text)
timer.js # worker that ticks the player's scheduler (keeps running in a background tab)
ja/index.html # Japanese page, generated from index.html (do not edit)
guide/ patterns/ warmup-scales/ faq/ about/ privacy/ ja/... # articles and info pages, generated from scripts/pages/ (do not edit)
images/guide/ # app screenshots for the guide (scripts/render-guide-images.mjs)
sitemap.xml # generated by scripts/build-pages.mjs (do not edit)
sw.js manifest.json icons/ og-image.png THIRD_PARTY_LICENSES.md
scripts/
build-ja.mjs build-pages.mjs pages/ update-third-party-licenses.mjs
pages/vocal.mjs # values for the articles, read from the app (patterns, note names, parser)
render-guide-images.mjs # takes the guide screenshots (Playwright)
og-image.html render-og-image.mjs render-icons.mjs
wrangler.jsonc # Cloudflare Workers (static assets, route ktkwmr.com/vocalladder*)
CLAUDE.md docs/baseline-status.md
This Worker only serves /vocalladder/*; the domain root belongs to the ktkwmr-home Worker (ktkwmr/ktkwmr.com).
When you load anything from a new external host, add it to the CSP in public/_headers and update the privacy text.
Serve public/ and open /vocalladder/. Opening index.html as a file:// URL does not work (Service Worker, worker timer).
file:// で直接開くと動きません。ローカルのサーバーで public/ を配信してください。
npx wrangler dev # http://localhost:8787/vocalladder/ (also runs the generators)
# or
npx serve public
If the app shows an old version, reload (or restart the installed app). 古い画面が出るときは再読み込みしてください。
Cloudflare Workers static assets. With Workers Builds connected, a push to main deploys; other branches get preview builds. By hand: npx wrangler deploy.
Edit only public/vocalladder/index.html, timer.js, sw.js, and scripts/. ja/index.html, the articles (guide, patterns, warmup-scales, faq), the info pages, and sitemap.xml are generated by wrangler deploy / wrangler dev and by the Build generated pages workflow on push to main:
node scripts/build-ja.mjs # regenerate ja/index.html
node scripts/build-pages.mjs # regenerate the articles, info pages, and sitemap.xml
node scripts/build-ja.mjs --check # exit 1 if out of date (same for build-pages.mjs)
編集するのは index.html・timer.js・sw.js と scripts/ だけです。生成ファイルは手で編集しません。
node scripts/build-preview.mjs writes .preview/ (not committed): index.html without the Service Worker, manifest, and analytics, plus the files it loads (timer.js, …). Claude publishes it as an Artifact to show a working version before deploying. Export uses the viewer's downloads capability there.
npm install --no-save playwright && npx playwright install chromium
node scripts/render-og-image.mjs # og-image.png from scripts/og-image.html
node scripts/render-icons.mjs # PNG icons from icons/icon.svg
node scripts/render-guide-images.mjs # screenshots for the guide (re-run when the app's look changes)
No third-party libraries. If a pinned CDN library is added under public/, the Update third-party licenses workflow adds it to THIRD_PARTY_LICENSES.md.
MIT © 2026 ktkwmr