94 lines
1.7 KiB
Plaintext
94 lines
1.7 KiB
Plaintext
pcm.snd_card { # my usual sound card
|
|
type hw
|
|
card 0
|
|
device 0
|
|
}
|
|
|
|
ctl.!default { # default control; alsamixer and such will use this
|
|
type hw
|
|
card 0
|
|
}
|
|
|
|
# software mixer for sound card
|
|
pcm.dmixer {
|
|
type dmix
|
|
ipc_key 1024
|
|
ipc_perm 0666 # allow other users
|
|
slave.pcm "snd_card"
|
|
slave {
|
|
period_time 0
|
|
period_size 1024
|
|
buffer_size 4096
|
|
channels 2 # must match bindings
|
|
}
|
|
bindings {
|
|
0 0
|
|
1 1
|
|
}
|
|
}
|
|
|
|
# software mixer for loopback device
|
|
pcm.dmixerloop {
|
|
type dmix
|
|
ipc_key 2048
|
|
ipc_perm 0666 # allow other users
|
|
slave.pcm "hw:Loopback,0,0"
|
|
slave {
|
|
period_time 0
|
|
period_size 1024
|
|
buffer_size 4096
|
|
channels 2 # must match bindings
|
|
}
|
|
bindings {
|
|
0 0
|
|
1 1
|
|
}
|
|
}
|
|
|
|
# allows multiple programs to capture simultaneously
|
|
pcm.dsnooper {
|
|
type dsnoop
|
|
ipc_key 2048
|
|
ipc_perm 0666
|
|
slave.pcm "snd_card"
|
|
slave
|
|
{
|
|
period_time 0
|
|
period_size 1024
|
|
buffer_size 4096
|
|
channels 2
|
|
}
|
|
bindings {
|
|
0 0
|
|
1 1
|
|
}
|
|
}
|
|
|
|
# Multi, splitting onto usual card and loopback
|
|
pcm.out {
|
|
type plug
|
|
slave.pcm {
|
|
type multi
|
|
slaves {
|
|
a { channels 2 pcm "dmixer" }
|
|
b { channels 2 pcm "dmixerloop" }
|
|
}
|
|
bindings {
|
|
0 { slave a channel 0 }
|
|
1 { slave a channel 1 }
|
|
2 { slave b channel 0 }
|
|
3 { slave b channel 1 }
|
|
}
|
|
}
|
|
ttable [
|
|
[ 1 0 1 0 ] # left -> a.left, b.left
|
|
[ 0 1 0 1 ] # right -> a.right, b.right
|
|
]
|
|
}
|
|
|
|
pcm.!default {
|
|
type asym
|
|
playback.pcm "out"
|
|
capture.pcm "dsnooper"
|
|
}
|