@hooks [{ func load; files [{ @func concat; strings [ { @func getenv; vars [ XDG_CONFIG_HOME ]; default "~/.config"; } "/alsa/asoundrc-" { @func getenv; vars [ HOSTNAME ]; default "default"; } ] }] errors true; }] pcm.unified { type asym; capture.pcm "PrimaryCapture"; playback.pcm "PrimaryPlayback"; #playback.pcm "plug:both"; } # OBS: capture aloop, mpv --audio-device=alsa/both or aloop pcm.both { type plug slave.pcm { type route; slave.pcm { type multi; slaves { a.pcm "PrimaryPlayback" #b.pcm "null" b.pcm "aloop" #c.pcm "null" #c.pcm "bthome" a.channels 2 b.channels 2 #c.channels 2 } bindings { 0 { slave a; channel 0 } 1 { slave a; channel 1 } 2 { slave b; channel 0 } 3 { slave b; channel 1 } #4 { slave c; channel 0 } #5 { slave c; channel 1 } } } ttable { 0 { 0 1; 2 1; #4 1; } 1 { 1 1; 3 1; #5 1; } } } } pcm.aloop { type asym; capture.pcm { # i don't know why i can't just plug:dsnoop:Loopback,1 here type plug; slave.pcm "dsnoop:Loopback,1"; } playback.pcm "plug:dmix:Loopback"; } # extraneous test of subdev syntax pcm.dsnoopaloop { type dsnoop ipc_key 98 slave { pcm "hw:Loopback,1,0"; rate 48000; period_size 1024; } } pcm.dmixaloop { type dmix ipc_key 99 slave { pcm "hw:Loopback,0,0"; rate 48000; period_size 1024; } } pcm.btcar { profile a2dp #type bluetooth # old 1.0 type bluealsa # new 1.1 device 00:00:00:66:6F:73 # killed by voltage regulator } # needs: bluetoothctl connect C8:84:47:03:B4:54 # Note: dmix only works with hw pcms, not bluealsa. If dmixing is desired: # alsaloop -C hw:Loopback,1,0 -P bthome # or 1,1 pcm.bthome { profile a2dp #type bluetooth # old 1.0 type bluealsa # new 1.1 device C8:84:47:03:B4:54 } defaults.bluealsa.profile a2dp #defaults.bluealsa.delay 10000