Audio out to preview channel/device (hardware/windows/OS query )


I wanted to demo code played from one buffer, to a different output - currently (permanently -technical limitation) I’m unable to use both internal speakers AND headphones.

If I have a soundcard with multiple outputs, is that what the sound_out output option can be used for?

Trying to understand what’s possible, and how - maybe something like IAA is possible with Jack on Linux, maybe some external windows app is required to “map” audio endpoints and virtual audio devices (if at all possible to map 1:many for audio output, and input)

As I type I am reminded of the mapping panel in reaper which may achieve this, may depend on the technology being used (eg asio or wasapi etc)…

Alternative hack workarounds welcome,. including (if needed) multiple instances, or something similar… Maybe I just need to find and configure a decent separate sample-manager with auditioning


I’ve just been playing with Sonic Pi (nearing version 4.5) which I have built on the latest just released Raspberry Pi 64bit OS based on debian Bookworm. This system is designed to work with pipewire, and I have jigged it to run there, Basically you end up with a whole range of ports from your devices which you can wire together in various configurations.
Sonic Pi, by default, enables two out and two in ports, but these can both be configured up to 16 max in the ~/.sonic-pi/config/audio-settings.toml file. Of course it depends on your hardware being beefy enough to able to support these. On my PI4 (awaiting a Pi5 :slight_smile: )I am currently running 2 in and 4 out. I have wired the first two out (the default used by Sonic Pi) to the hdmi sound on my monitor, and wired ports 3 and 4 to a usb adapter with headphones on it.

I ran the program below and it split the sound output accordingly

live_loop :testa do
  use_synth :saw
  play scale(:c3,:major).choose,release: 0.2,amp: 1
  sleep 0.2

with_fx :sound_out_stereo,output: 3 do
  live_loop :testb do
    use_synth :tb303
    play scale(:c3,:major).choose,release: 0.2,amp: 0.1
    sleep 0.2
1 Like