An Apple Silicon macOS application for turning sections of YouTube vocal lessons into reusable practice exercises.
This application was built using GPT-5.6-Sol.
Install the media tools:
brew install yt-dlp ffmpegThe application stores its library in
~/Library/Application Support/VocalTraining. Only download media you are
authorized to download.
Paste one or more YouTube URLs into the command field and press Execute.
URLs are normalized by video ID, while timestamps supplied through t,
start, or youtu.be URL forms become initial playhead hints. Import prefers
an English caption track and otherwise accepts YouTube's original-language
automatic captions.
Select a source, load its captions, and click a timed transcript row to seek. Mark the start and end of a useful section, then commit the range as an exercise. Saved exercises appear in the exercise bank and play as standalone clips when selected.
When no text field has focus, press Space to toggle playback or 1–8 to activate the matching numbered transport control.
Download and export diagnostics are stored as yt-dlp.log and ffmpeg.log in
the application-support directory. Use the Data control to open that
directory in Finder.
A thin AppKit shell creates the window and forwards input. Odin calculates
every visible control, while Metal renders the interface through one
CAMetalLayer. CoreText rasterizes the text overlay, AVFoundation decodes
video, and Core Video maps decoded frames into Metal textures.
The interface uses Berkeley Mono and a measured immediate-mode layout.
Typography uses 10.5 points throughout the interface and 21 points for the
VOCAL TRAINING / SIGNAL WORKBENCH title and EXECUTE action. Container text
is positioned from measured glyph-run advances and font ascent/descent metrics.
The command field uses a segmented-border heading. Its top border stops eight points before the heading and resumes eight points after the declared heading width; the text origin, width, and border gap remain paired.
Install Odin and ensure odin is on PATH, then build with:
./build.sh
open build/VocalTraining.appThe same binary supports scripted imports for diagnostics:
build/VocalTraining.app/Contents/MacOS/VocalTraining --import 'https://youtu.be/VIDEO_ID?t=SECONDS'Run the dependency-free watcher during development:
./dev.shIt fingerprints src/*.odin, build.sh, and Info.plist every half-second.
A successful change rebuilds and relaunches the app; a failed build leaves the
currently running app untouched. Press Ctrl-C to stop the watcher and app.
Library data remains in Application Support across relaunches.