個人 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.