个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证See how a rapper rides the beat: a free app for macOS and Windows that maps every syllable to the beat grid, with rhyme groups, pocket timing and flow metrics. Runs 100% locally.
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗noCap takes an audio file, isolates the vocals, transcribes every word with word-level timestamps, and aligns each syllable to a beat grid. The result is an interactive flow map — a piano-roll-style canvas where you can see and hear exactly how a rapper rides the beat.
It answers questions like:
You can also read the whole track as a lyric sheet, fix any word it misheard
(the flow map and metrics update with it), and export the lyrics as text or
synced .lrc.
Flow is the part of rap that is hardest to put into words. Producers, rappers and fans describe it by ear: "laid back", "on top of the beat", "double time". noCap makes it something you can point at, bar by bar.
Everything noCap needs is bundled, and analysis runs offline on your computer. The first time you open it, a short intro shows how to read the flow map; drop in an audio file, or press Try the demo to explore a sample verse first.
.dmg from Releases.Needs a Mac with Apple Silicon (M1 or later). The app is signed and notarized by Apple.
noCap-<version>-win-x64.7z.001 and .7z.002 from
Releases into the same folder
(the app is split in two because of GitHub's file size limit)..001 file with 7-Zip and extract it.noCap.exe from the extracted folder.Needs 64-bit Windows 10 or 11. An NVIDIA graphics card speeds up analysis; without one it runs on the processor, just slower. The Windows build isn't code-signed yet, so SmartScreen may warn you the first time: choose More info → Run anyway.
medium.en (MLX on Apple Silicon) with word-level timestamps.txt, synced .lrc or word-timed .lrcPress ? in the app to see this list at any time. Shortcuts are ignored while you are typing in a field or while a dialog is open.
| Group | Keys | Action |
|---|---|---|
| Playback | Space | Play / pause |
| Playback | Enter | Play selected bars |
| Playback | L | Loop selected bars |
| Playback | V | Switch mix / vocals |
| Navigation | ← → | Previous / next bar |
| Navigation | ⇧ + click | Extend selection |
| Navigation | ↑ ↓ | Scroll |
| Navigation | Esc | Clear rhyme focus, then selection |
| View | ⌘ + | Zoom in |
| View | ⌘ − | Zoom out |
| View | ⌘ 0 | Reset zoom |
| View | I | Show / hide inspector |
| View | 1 2 3 4 | Flow / Report / Lyrics / Library |
| View | ? | This list |
On Windows and Linux, use Ctrl in place of ⌘.
# 1. Clone
git clone https://github.com/fatihserhatturan/noCap.git
cd noCap
# 2. Python environment
python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev,separator]"
pip install openai-whisper
pip install -e ".[apple]" # Apple Silicon only: GPU transcription via MLX
# 3. Frontend dependencies
cd frontend && npm install && cd ..
# 4. Run (Flask API + Vite dev server + Electron window)
cd frontend && npm run desktop:dev
The first time you analyze a track, Whisper will download the medium.en
model (~1.5 GB) into ~/.cache/whisper/. Subsequent runs use the cache.
On Apple Silicon, analysis runs on the GPU: Demucs uses MPS and, with the
apple extra installed, Whisper runs through MLX from the same checkpoint (same
DTW word timestamps, beam search). Anything that fails on the GPU falls back
to the CPU. NOCAP_WHISPER_BACKEND=mlx|torch|cpp and NOCAP_DEMUCS_DEVICE=cpu
pin a backend or device.
# Terminal 1 — backend
source .venv/bin/activate && nocap serve
# Terminal 2 — frontend
cd frontend && npm run dev
Open http://localhost:8765.
Produces a self-contained .dmg that requires no Python or model installation
on the target machine.
./scripts/build-desktop.sh
# → frontend/dist-app/noCap-0.3.0-arm64.dmg (Apple Silicon)
First build takes ~15 minutes (PyInstaller bundles torch + whisper + demucs). Subsequent builds that skip the backend are much faster:
./scripts/build-desktop.sh --skip-backend
Signing. When the Keychain holds a Developer ID Application certificate and a
notarytool profile named nocap-notary
(xcrun notarytool store-credentials "nocap-notary" --apple-id … --team-id …),
the build signs, notarizes and staples the app, so Gatekeeper opens it without a
warning. Without them it falls back to an ad-hoc signature (users confirm the app
once in Privacy & Security); --ad-hoc forces that fallback.
The library is one SQLite database plus a folder of audio files, in the standard per-user app-data location:
| Run | Folder |
|---|---|
| Installed app | ~/Library/Application Support/noCap/ |
Development (nocap serve, npm run desktop:dev) | ~/Library/Application Support/noCap-dev/ |
library.db tracks, analyses (compressed flow maps), bars, sections
audio/<track_id>/ mix.<ext>, vocals.wav
Set NOCAP_DATA_DIR to use another folder. To back up the library, copy the whole
folder while the app is closed; to reset it, delete the folder.
Tracks saved by earlier versions (~/.nocap_library/tracks) are copied in
automatically on first start; the old folder is left untouched and can be deleted
afterwards.
| Layer | Technology |
|---|---|
| Desktop shell | Electron 33 |
| Frontend | React 19, TypeScript, Pixi.js 8, Vite 6 |
| Backend | Python / Flask 3 |
| Library storage | SQLite (stdlib sqlite3, WAL) |
| Beat detection | librosa 0.11 |
| Transcription | openai-whisper (medium.en), MLX on Apple Silicon |
| Vocal separation | Demucs 4 (htdemucs) |
| Syllable/stress | CMU Pronouncing Dictionary |
| Packaging | PyInstaller + electron-builder |
nocap/
├── frontend/src/ # React UI — components, hooks, Pixi rendering
├── nocap/audio/ # Beat detection, transcription, vocal separation
├── nocap/analysis/ # Flow metrics, alignment, rhyme detection
├── nocap/pipeline/ # Orchestration layer
├── nocap/web/ # Flask API + SSE streaming
├── nocap/text/ # Lyric parsing, syllable analysis
├── nocap/library/ # Track persistence
└── scripts/ # Build automation
All source files are kept under 200 lines — see CODE_QUALITY.md.
python3 -m unittest -q
python3 scripts/check_line_limits.py
cd frontend && npm run typecheck && npm run build
Bug reports, ideas and pull requests are welcome.
good first issue are a good place to start. See Development to run it locally, and CODE_QUALITY.md for the house rules.If noCap is useful to you, a star helps other people find it.