From audio-production
Use when Daniel wants to import call recordings from Cube Call Recorder (CCR) on his Android phone via ADB. Triggers on phrases like "import from cube", "grab the CCR recording", "pull yesterday's call from my phone", "import call recorder file", or any request to fetch an audio file produced by Cube Call Recorder from a connected Android device.
npx claudepluginhub danielrosehill/claude-code-plugins --plugin audio-productionThis skill uses the workspace's default tool permissions.
Cube Call Recorder ACR (`com.catalinagroup.callrecorder`) is Daniel's default Android call recorder. Both regular phone calls and VoIP/WhatsApp calls are captured.
Conducts multi-round deep research on GitHub repos via API and web searches, generating markdown reports with executive summaries, timelines, metrics, and Mermaid diagrams.
Share bugs, ideas, or general feedback.
Cube Call Recorder ACR (com.catalinagroup.callrecorder) is Daniel's default Android call recorder. Both regular phone calls and VoIP/WhatsApp calls are captured.
/sdcard/Calls/CCR/CubeCallRecorder/All/
Important: Do not confuse with /sdcard/Recordings/Calls/, which is the Android system call recorder and contains a different filename format (YYYYMMDD_HHMMSS.SS+TZ_{IN|OUT}_simN_+PHONENUMBER.oga). CCR's own recordings are under /sdcard/Calls/CCR/CubeCallRecorder/All/.
To confirm path at any time:
adb shell 'find /sdcard/Calls -maxdepth 5 -type d' | tr -d '\r'
{source}_{YYYYMMDD}-{HHMMSS}_{contact}.amr
Examples:
mic_20260327-052816.amr
whatsapp_20260421-221612_Claire Rosehill.amr
Fields:
| Field | Example | Meaning |
|---|---|---|
| Source | mic / whatsapp / voip | Capture channel. mic = phone microphone (regular call or fallback). whatsapp = WhatsApp accessibility-stream capture (VoIP). Other VoIP apps may show as their own prefix. |
| Date | 20260421 | Local date, YYYYMMDD |
| Time | 221612 | Local start time, HHMMSS |
| Contact | Claire Rosehill | CCR's resolved contact name (may contain spaces). Absent for unknown/unresolved numbers. |
File extension is .amr (Adaptive Multi-Rate, narrow-band). ffmpeg, AssemblyAI, and Whisper all handle it directly. Bit rate is low (~12 kbps) — fine for speech transcription, marginal for music or tonal analysis.
mic_ vs whatsapp_ (or other VoIP) for the same time windowWhen CCR has both capture modes active for a VoIP call, you may see overlapping mic_ and whatsapp_ files for the same interval. Prefer the whatsapp_ (or app-specific) file for transcription — it captures the VoIP stream via accessibility service, bypassing speaker-to-mic loss and ambient noise. mic_ is useful as fallback if the app-stream capture is corrupted or missing.
Never transcribe both streams concatenated — they're the same audio captured twice, and concatenating produces a garbled transcript.
adb devices
# All, newest last (alphabetic sort happens to be chronological thanks to the filename format)
adb shell 'ls "/sdcard/Calls/CCR/CubeCallRecorder/All/"' | tr -d '\r' | tail -30
# By date
adb shell 'ls "/sdcard/Calls/CCR/CubeCallRecorder/All/" | grep 20260421' | tr -d '\r'
# By contact
adb shell 'ls "/sdcard/Calls/CCR/CubeCallRecorder/All/" | grep "Claire Rosehill"' | tr -d '\r'
adb pull doesn't accept globs — loop over filenames. Quote paths, since CCR filenames contain spaces.
DEST=recordings/inbox
while IFS= read -r f; do
adb pull "/sdcard/Calls/CCR/CubeCallRecorder/All/$f" "$DEST/" 2>&1 | tail -1
done < <(adb shell 'ls "/sdcard/Calls/CCR/CubeCallRecorder/All/" | grep 20260421' | tr -d '\r')
CCR often splits a single conversation into multiple files (call drops, reconnections, mode switches). To stitch back into one file for transcription:
cd recordings/inbox
ls whatsapp_20260421-*_Claire\ Rosehill.amr | sort > /tmp/concat_list.txt
# ffmpeg concat demuxer needs a file listing with `file '...'` per line
awk '{ printf "file %s\n", "\x27"$0"\x27" }' /tmp/concat_list.txt > /tmp/concat.ffmpeg
ffmpeg -y -f concat -safe 0 -i /tmp/concat.ffmpeg -c copy 2026-04-21-ac-concatenated.amr
For cross-codec safety (if files have differing codec params), re-encode rather than stream-copy:
ffmpeg -y -f concat -safe 0 -i /tmp/concat.ffmpeg -c:a libopus -b:a 24k 2026-04-21-ac-concatenated.opus
/sdcard/Recordings/Calls/ (system recorder, .oga) is NOT the CCR path. CCR lives at /sdcard/Calls/CCR/CubeCallRecorder/All/ (.amr).ls output with tr -d '\r' and a while read -r loop is safer than for f in $(...).mic_ + {app}_ files from the same time window are the same audio. Don't concatenate across sources.grep by date or contact over ls full-listing.adb-ops:pull-folder — generic pull utility~/repos/github/my-repos/Maternal-Conversation-Analysis/.claude/commands/import-from-phone.md — workspace-specific CCR import