You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
CPP v.9 has input/source role - we should allow mapping soundcard inputs to a source role, similarly an easy loopback to just output all audio to the source role.
Soundcard input is in: sendspin-cli --input <backend>:<device> streams a mic or line-in through the source role. Dedicated loopback is not built yet (see below).
Plan
From the approved sendspin-cpp v0.9 update plan:
Capturing must be easy.--input takes -o's <backend>:<device> syntax, -l lists capture devices separately from playback, and a bad or busy device fails with an error naming it.
Seam + ALSA. An AudioSource seam with one capture thread calling write_audio(); --input and an input config key, with the source role added only when given; capture devices in -l; ALSA plus null/tone sources; status shows whether input is streaming.
Other backends. PipeWire, PulseAudio and CoreAudio capture, one PR per backend.
Not planned: line-sense (set_signal), since we have no signal-detect hardware.
sendspin-cli -n den --input default
sendspin-cli -n den --input hw:1,0
sendspin-cli -n den --input coreaudio
sendspin-cli -n den --input pipewire
sendspin-cli -n den --input pulse:alsa_input.usb-mic.analog-stereo
There is no dedicated loopback option. Workaround on Linux with PulseAudio or pipewire-pulse: capture a sink's monitor source, which -l lists under "PulseAudio sources":
sendspin-cli -n den --input pulse:<sink>.monitor
--input pipewire:<node> only lists and targets source nodes, so it has no monitor path of its own; use the pulse: form. macOS has no loopback path.
Activity
chrisuthe commentedon Oct 14, 2026
Soundcard input is in:
sendspin-cli --input <backend>:<device>streams a mic or line-in through the source role. Dedicated loopback is not built yet (see below).Plan
From the approved sendspin-cpp v0.9 update plan:
--inputtakes-o's<backend>:<device>syntax,-llists capture devices separately from playback, and a bad or busy device fails with an error naming it.AudioSourceseam with one capture thread callingwrite_audio();--inputand aninputconfig key, with the source role added only when given; capture devices in-l; ALSA plusnull/tonesources;statusshows whether input is streaming.set_signal), since we have no signal-detect hardware.PRs (merged 2026-10-07)
--inputseam, ALSA capture,tone/nullsources, input devices in-l,statusline.-llists Pulse sources (monitors included) and PipeWire source nodes.Loopback — not built
There is no dedicated loopback option. Workaround on Linux with PulseAudio or pipewire-pulse: capture a sink's monitor source, which
-llists under "PulseAudio sources":--input pipewire:<node>only lists and targets source nodes, so it has no monitor path of its own; use thepulse:form. macOS has no loopback path.Still open / unverified
launchddaemon on macOS.