JupiterBroadcasting / CasterSoundboard

A soundboard for hot-keying and playing back sounds. (For podcasting)
GNU Lesser General Public License v3.0
144 stars 17 forks source link

Mix all samples to a single stream #77

Open changhaitravis opened 3 years ago

changhaitravis commented 3 years ago

Description of the Problem or Feature Request

One sink input is created within pulseaudio for each cell/sample. So if I load up 5 samples, there are 5 application (client) audio streams shown within the audio controls/mixers such as pavucontrol.

If there was one single sink input for the entire soundboard, I can pipe the entire soundboard into a null sink and loopback my microphone into that sink and then have applications listen to the combined output of my mic and the soundboard in null-sink.monitor.

However in the current state, for each new sample I add or each time I load the tab, I'd have to set the output the null sink manually for each.

I don't know any downsides of combining into 1 stream, since there are already volume controls present per sample. I guess if you had some certain samples mapped to play back on different devices than the default, then you can't really do that anymore?

Basic system details

CasterSoundboard version+commit: 1.0 beta 1a84315b3a3d4bdca1a4b784bd19460637f44438 Operating system: Fedora 33 Workstation Desktop environment: KDE Plasma

Steps to reproduce

  1. Open App and create new tab
  2. Populate two cells on the soundboard
  3. pactl list sink-inputs
cdgriffith commented 2 years ago

If there was one single sink input for the entire soundboard, I can pipe the entire soundboard into a null sink and loopback my microphone into that sink and then have applications listen to the combined output of my mic and the soundboard in null-sink.monitor. @changhaitravis

How would you do this in a way you don't hear yourself talking from the mic but do hear the noise the soundboard makes, as well as it being transmitted via the new sink?

(AKA end result is wanting to "inject" the sound into the mic line, and hear it myself)

CasterSoundboard looks to create a single "sink" for all instances currently (named 2 on my system):

pactl list short sink-inputs
19      2       31      protocol-native.c       float32le 2ch 44100Hz
25      2       33      protocol-native.c       float32le 2ch 44100Hz
28      2       35      protocol-native.c       float32le 2ch 44100Hz

So if I do something like:

  pactl load-module module-null-sink sink_name=combined
  pactl load-module module-loopback source=alsa_input.usb-SteelSeries_Arctis_Pro_Wireless-00.analog-mono sink=combined
  pactl load-module module-loopback source=2 sink=combined

It's all put together, but can hear myself talking, which needs to stop.

changhaitravis commented 2 years ago

If there was one single sink input for the entire soundboard, I can pipe the entire soundboard into a null sink and loopback my microphone into that sink and then have applications listen to the combined output of my mic and the soundboard in null-sink.monitor. @changhaitravis

How would you do this in a way you don't hear yourself talking from the mic but do hear the noise the soundboard makes, as well as it being transmitted via the new sink?

so it sounds like the monitor (listening to the "input"/sink as a source) of your combined null sink (mic input + caster soundboard) is being set to the default audio source. Can you just set the default audio source to just be source 2? Or just mute the monitor of the combined null sink?