@@ -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
2323UMC1820_DEV ?= hw:UMC1820,0
2424UMC1820_PLUG_DEV ?= plughw:UMC1820,0
@@ -32,6 +32,26 @@ UMC1820_OUT ?= wav_files/umc1820_$(UMC1820_CHANNELS)ch_$(UMC1820_RATE)Hz.wav
3232AUDIO_CAPTURE_DEV ?= default
3333AUDIO_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+
3555deps :
3656 @if command -v pkg-config > /dev/null 2>&1 && pkg-config --exists alsa; then \
3757 echo " ALSA development libraries already installed" ; \
5171
5272# Main targets
5373run : 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
5676run-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+
92135umc1820-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
170213followlog :
171214 tail -n 200 -f app.log
215+
216+ user-shell :
217+ @bash
0 commit comments