Skip to content

Commit 2dcdc87

Browse files
committed
introduce recording
1 parent add5b5b commit 2dcdc87

8 files changed

Lines changed: 787 additions & 437 deletions

File tree

Makefile

Lines changed: 48 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ CARGO ?= cargo
1818

1919
# Targets
2020

21-
.PHONY: run build test check fmt clippy doc lint clean ci clean_log list-devices followlog run-oxi run-bind run-direct-test deps play-wavs sample-wav umc1820-hw-params umc1820-record umc1820-record-stereo umc1820-mixer
21+
.PHONY: run build test check fmt clippy doc lint clean ci clean_log list-devices followlog user-shell run-oxi run-bind run-direct-test deps play-wavs sample-wav umc1820-hw-params umc1820-record umc1820-record-stereo umc1820-mixer arecord-app-capture arecord-umc1820 run-umc1820
2222

2323
UMC1820_DEV ?= hw:UMC1820,0
2424
UMC1820_PLUG_DEV ?= plughw:UMC1820,0
@@ -32,6 +32,26 @@ UMC1820_OUT ?= wav_files/umc1820_$(UMC1820_CHANNELS)ch_$(UMC1820_RATE)Hz.wav
3232
AUDIO_CAPTURE_DEV ?= default
3333
AUDIO_PLAYBACK_DEV ?= default
3434

35+
# User-facing ALSA capture knobs (mirrors app defaults; mapped to PHASOR_* envs internally)
36+
ALSA_CAPTURE_DEVICE ?= $(AUDIO_CAPTURE_DEV)
37+
ALSA_CAPTURE_STEREO_PAIR ?= 1
38+
ALSA_ARECORD_SECONDS ?= 15
39+
ALSA_ARECORD_SAMPLE_RATE ?= 48000
40+
ALSA_ARECORD_CHANNELS ?= 2
41+
ALSA_ARECORD_FORMAT ?= S32_LE
42+
ALSA_ARECORD_TEMPLATE ?= wav_files/take_%Y%m%d_%H%M%S_pair1.wav
43+
BPM ?= 120
44+
45+
# Map ALSA_* -> PHASOR_* so the runtime picks up the same settings
46+
export PHASOR_ALSA_CAPTURE_DEVICE=$(ALSA_CAPTURE_DEVICE)
47+
export PHASOR_ALSA_CAPTURE_STEREO_PAIR=$(ALSA_CAPTURE_STEREO_PAIR)
48+
export PHASOR_ARECORD_SECONDS=$(ALSA_ARECORD_SECONDS)
49+
export PHASOR_ARECORD_SAMPLE_RATE=$(ALSA_ARECORD_SAMPLE_RATE)
50+
export PHASOR_ARECORD_CHANNELS=$(ALSA_ARECORD_CHANNELS)
51+
export PHASOR_ARECORD_FORMAT=$(ALSA_ARECORD_FORMAT)
52+
export PHASOR_ARECORD_TEMPLATE=$(ALSA_ARECORD_TEMPLATE)
53+
export AUDIO_CAPTURE_DEV
54+
3555
deps:
3656
@if command -v pkg-config >/dev/null 2>&1 && pkg-config --exists alsa; then \
3757
echo "ALSA development libraries already installed"; \
@@ -51,7 +71,7 @@ deps:
5171

5272
# Main targets
5373
run: deps clean_log build
54-
PHASOR_ALSA_CAPTURE_DEVICE="$(AUDIO_CAPTURE_DEV)" PHASOR_ALSA_PLAYBACK_DEVICE="$(AUDIO_PLAYBACK_DEV)" $(CARGO) run
74+
PHASOR_ALSA_CAPTURE_DEVICE="$(ALSA_CAPTURE_DEVICE)" PHASOR_ALSA_CAPTURE_STEREO_PAIR="$(ALSA_CAPTURE_STEREO_PAIR)" PHASOR_ALSA_PLAYBACK_DEVICE="$(AUDIO_PLAYBACK_DEV)" $(CARGO) run -- --bpm "$(BPM)"
5575

5676
run-oxi: deps clean_log build
5777
$(CARGO) run -- --bind-to-device "OXI ONE:OXI ONE MIDI 1 20:0"
@@ -89,6 +109,29 @@ list-devices:
89109
@if command -v aconnect >/dev/null 2>&1; then aconnect -l || true; else echo "aconnect not available"; fi
90110
$(call success)
91111

112+
arecord-app-capture: deps
113+
@mkdir -p wav_files
114+
@pair="$${ALSA_CAPTURE_STEREO_PAIR:-$(ALSA_CAPTURE_STEREO_PAIR)}"; \
115+
device="$${ALSA_CAPTURE_DEVICE:-$(ALSA_CAPTURE_DEVICE)}"; \
116+
seconds="$${ALSA_ARECORD_SECONDS:-$(ALSA_ARECORD_SECONDS)}"; \
117+
if [ "$$pair" != "1" ]; then \
118+
echo "arecord backend currently supports only stereo pair 1/2; set ALSA_CAPTURE_STEREO_PAIR=1"; \
119+
exit 1; \
120+
fi; \
121+
if [ -z "$$device" ]; then \
122+
echo "ALSA_CAPTURE_DEVICE is empty; set it to an ALSA device string (e.g. default, plughw:Card,Device)"; \
123+
exit 1; \
124+
fi; \
125+
echo "Recording $$device for $$seconds seconds to $(ALSA_ARECORD_TEMPLATE)"; \
126+
arecord -D "$$device" -f $(ALSA_ARECORD_FORMAT) -r $(ALSA_ARECORD_SAMPLE_RATE) -c $(ALSA_ARECORD_CHANNELS) -t wav -N --use-strftime -d "$$seconds" "$(ALSA_ARECORD_TEMPLATE)"
127+
$(call success)
128+
129+
arecord-umc1820:
130+
ALSA_CAPTURE_DEVICE=plughw:UMC1820,0 ALSA_CAPTURE_STEREO_PAIR=1 $(MAKE) arecord-app-capture
131+
132+
run-umc1820:
133+
ALSA_CAPTURE_DEVICE=plughw:UMC1820,0 AUDIO_PLAYBACK_DEV=plughw:UMC1820,0 BPM=$(BPM) $(MAKE) run
134+
92135
umc1820-hw-params: deps
93136
arecord -D $(UMC1820_DEV) --dump-hw-params -f $(UMC1820_FORMAT) -r $(UMC1820_RATE) -c $(UMC1820_CHANNELS) /dev/null
94137
$(call success)
@@ -169,3 +212,6 @@ clean_log:
169212

170213
followlog:
171214
tail -n 200 -f app.log
215+
216+
user-shell:
217+
@bash

common.mk

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ digest:
2727
$(call success)
2828

2929
ingest:
30-
$(MAKE) digest | pbcopy
30+
$(MAKE) digest | wl-copy
3131
$(call success)
3232

3333
clean::

0 commit comments

Comments
 (0)