diff options
| author | Craig Jennings <c@cjennings.net> | 2026-04-05 06:36:20 -0500 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-04-05 06:36:20 -0500 |
| commit | 5380177359cdc3094fffab6e7b16544face1ee25 (patch) | |
| tree | ef0c9f7e587203506759126042654855edae1a04 | |
| parent | 193b9ab0dfd07dfd188681b6a6a3171cb470d907 (diff) | |
refactor(recording): extract shared test-device helper from test-mic/test-monitor
Both functions had identical record-5-seconds-and-playback logic. Extracted to
cj/recording--test-device with device, prefix, and prompt-action parameters.
| -rw-r--r-- | modules/video-audio-recording.el | 37 |
1 files changed, 16 insertions, 21 deletions
diff --git a/modules/video-audio-recording.el b/modules/video-audio-recording.el index 6664ded1..385a2864 100644 --- a/modules/video-audio-recording.el +++ b/modules/video-audio-recording.el @@ -620,23 +620,29 @@ needed." ;; These functions record short clips and play them back so you can ;; verify hardware works BEFORE an important recording. -(defun cj/recording-test-mic () - "Test microphone by recording 5 seconds and playing it back." - (interactive) - (unless cj/recording-mic-device - (user-error "No microphone configured. Run C-; r s first")) - (let* ((temp-file (make-temp-file "mic-test-" nil ".wav")) +(defun cj/recording--test-device (device prefix prompt-action) + "Record 5 seconds from DEVICE and play it back. +PREFIX is the temp file name prefix (e.g. \"mic-test-\"). +PROMPT-ACTION is the action text shown to the user (e.g. \"SPEAK NOW!\")." + (let* ((temp-file (make-temp-file prefix nil ".wav")) (duration 5)) - (message "Recording from mic for %d seconds... SPEAK NOW!" duration) + (message "Recording for %d seconds... %s" duration prompt-action) (shell-command (format "ffmpeg -f pulse -i %s -t %d -y %s 2>/dev/null" - (shell-quote-argument cj/recording-mic-device) + (shell-quote-argument device) duration (shell-quote-argument temp-file))) (message "Playing back recording...") (shell-command (format "ffplay -autoexit -nodisp %s 2>/dev/null &" (shell-quote-argument temp-file))) - (message "Mic test complete. Temp file: %s" temp-file))) + (message "Test complete. Temp file: %s" temp-file))) + +(defun cj/recording-test-mic () + "Test microphone by recording 5 seconds and playing it back." + (interactive) + (unless cj/recording-mic-device + (user-error "No microphone configured. Run C-; r s first")) + (cj/recording--test-device cj/recording-mic-device "mic-test-" "SPEAK NOW!")) (defun cj/recording-test-monitor () "Test system audio monitor by recording 5 seconds and playing it back. @@ -644,18 +650,7 @@ Play some audio/video during the test so there's something to capture." (interactive) (unless cj/recording-system-device (user-error "No system monitor configured. Run C-; r s first")) - (let* ((temp-file (make-temp-file "monitor-test-" nil ".wav")) - (duration 5)) - (message "Recording system audio for %d seconds... PLAY SOMETHING NOW!" duration) - (shell-command - (format "ffmpeg -f pulse -i %s -t %d -y %s 2>/dev/null" - (shell-quote-argument cj/recording-system-device) - duration - (shell-quote-argument temp-file))) - (message "Playing back recording...") - (shell-command (format "ffplay -autoexit -nodisp %s 2>/dev/null &" - (shell-quote-argument temp-file))) - (message "Monitor test complete. Temp file: %s" temp-file))) + (cj/recording--test-device cj/recording-system-device "monitor-test-" "PLAY SOMETHING NOW!")) (defun cj/recording-test-both () "Guided test of both mic and monitor together. |
