From 3ebed4e4f7cda7da2af3a63a80aeecbec45514db Mon Sep 17 00:00:00 2001
From: dvs1
Date: Thu, 17 Oct 2024 20:46:35 +1000
Subject: Delete excess files, now I've combined them.
---
jackoffall | 146 ---------------------------
jackonall | 237 -------------------------------------------
jackscanall | 326 ------------------------------------------------------------
3 files changed, 709 deletions(-)
delete mode 100755 jackoffall
delete mode 100755 jackonall
delete mode 100755 jackscanall
diff --git a/jackoffall b/jackoffall
deleted file mode 100755
index 6c7cec2..0000000
--- a/jackoffall
+++ /dev/null
@@ -1,146 +0,0 @@
-#!/usr/bin/env luajit
-
-
-local APT = {}
-
-
-APT.readCmd = function(cmd)
- local result = {}
- local output = io.popen(cmd)
- if nil ~= output then
- for l in output:lines() do
- table.insert(result, l)
- end
- end
- return result
-end
-
-
-APT.exe = function(c)
- local exe = {status = 0, result = '', log = true, cmd = c .. ' ', command = c}
-
- function exe:log()
- self.log = true
- return self
- end
- function exe:Nice(c)
- if nil == c then
- self.cmd = 'ionice -c3 nice -n 19 ' .. self.cmd
- else
- self.cmd = self.cmd .. 'ionice -c3 nice -n 19 ' .. c .. ' '
- end
- return self
- end
- function exe:timeout(c)
- -- timeout returns a status of - command status if --preserve-status; "128+9" (actually 137) if --kill-after ends up being done; 124 if it had to TERM; command status if all went well.
- -- --kill-after means "send KILL after TERM fails.
- if nil == c then
- self.cmd = 'timeout --kill-after=10.0 --foreground 42.0s ' .. self.cmd
- else
- self.cmd = 'timeout --kill-after=10.0 --foreground ' .. c .. ' ' .. self.cmd
- end
- return self
- end
- function exe:also(c)
- if nil == c then c = '' else c = ' ' .. c end
- self.cmd = self.cmd .. ';' .. c .. ' '
- return self
- end
- function exe:And(c)
- if nil == c then c = '' else c = ' ' .. c end
- self.cmd = self.cmd .. '&&' .. c .. ' '
- return self
- end
- function exe:Or(c)
- if nil == c then c = '' end
- self.cmd = self.cmd .. '|| ' .. c .. ' '
- return self
- end
- function exe:noErr()
- self.cmd = self.cmd .. '2>/dev/null '
- return self
- end
- function exe:wait(w)
- self.cmd = self.cmd .. '&& touch ' .. w .. ' '
- return self
- end
- function exe:Do()
- --[[ "The condition expression of a control structure can return any
- value. Both false and nil are considered false. All values different
- from nil and false are considered true (in particular, the number 0
- and the empty string are also true)."
- says the docs, I beg to differ.]]
- if true == self.log then D(" executing - " .. self.cmd .. "
") end
- --[[ Damn os.execute()
- Lua 5.1 says it returns "a status code, which is system-dependent"
- Lua 5.2 says it returns true/nil, "exit"/"signal", the status code.
- I'm getting 7168 or 0. No idea what the fuck that is.
- local ok, rslt, status = os.execute(s)
- ]]
- local f = APT.readCmd(self.cmd, 'r')
- -- The last line will be the command's returned status, collect everything else in result.
- self.status = '' -- Otherwise the result starts with 0.
- self.result = '\n'
- for i,l in ipairs(f) do
- self.result = self.result .. l .. "\n"
- end
- f = APT.readCmd('echo "$?"', 'r')
- for i,l in ipairs(f) do
- self.status = tonumber(l)
- if (137 == self.status) or (124 == self.status) then
- print("timeout killed " .. self.status .. ' ' .. self.command)
- E("timeout killed " .. self.status .. ' ' .. self.command)
- elseif (0 ~= self.status) then
- print("status |" .. self.status .. '| ' .. self.command)
- E("status |" .. self.status .. '| ' .. self.command)
- end
- end
- return self
- end
- function exe:fork(host)
- if nil ~= host then self.cmd = self.cmd .. '; r=$?; if [ $r -ge 124 ]; then echo "$r ' .. host .. ' failed forked command ' .. string.gsub(self.cmd, '"', "'") .. '"; fi' end
- self.cmd = '{ ' .. self.cmd .. '; } &'
- if true == self.log then D(" forking - " .. self.cmd .. "
") end
- os.execute(self.cmd)
- return self
- end
- return exe
-end
-
-
-APT.exe("a2j_control --stop"):Do()
-APT.exe("sleep 2"):Do()
-APT.exe("a2j_control --exit"):Do()
-APT.exe("sleep 2"):Do()
-APT.exe("killall -TERM alsa_out"):Do()
-APT.exe("killall -TERM alsa_in"):Do()
-APT.exe("killall -TERM zita-a2j"):Do()
-APT.exe("killall -TERM zita-j2a"):Do()
-APT.exe("killall -TERM aseqjoy"):Do()
-APT.exe("killall -TERM jack-plumbing"):Do()
-APT.exe("sleep 2"):Do()
-APT.exe("jack_control stop"):Do()
-APT.exe("sleep 2"):Do()
-APT.exe("jack_control exit"):Do()
-APT.exe("sleep 2"):Do()
---APT.exe("a2j_control --stop; a2j_control --exit"):Do()
---APT.exe("sleep 2"):Do()
-APT.exe("killall -TERM jmcore"):Do()
-APT.exe("pkill -TERM jackdbus; pkill -TERM a2jmidid"):Do()
-APT.exe("killall -TERM a2jmidid"):Do()
-APT.exe("killall -KILL jackdbus"):Do()
-APT.exe("sleep 2"):Do()
-APT.exe("killall -KILL a2jmidid"):Do()
-APT.exe("pkill -KILL jackdbus; pkill -KILL a2jmidid"):Do()
-APT.exe("sleep 2"):Do()
-APT.exe("killall -KILL a2jmidid"):Do()
-APT.exe("killall -KILL jackdbus"):Do()
-APT.exe("sleep 2"):Do()
-APT.exe("killall -KILL a2jmidid"):Do()
-APT.exe("killall -KILL jackdbus"):Do()
-APT.exe("sleep 2"):Do()
-APT.exe("pkill -KILL jackdbus; pkill -KILL a2jmidid"):Do()
-APT.exe("killall -TERM qjackctl"):Do()
-
--- Catia is python, and no easy way to kill it.
-APT.exe("ps auxw | grep python"):Do()
diff --git a/jackonall b/jackonall
deleted file mode 100755
index e786188..0000000
--- a/jackonall
+++ /dev/null
@@ -1,237 +0,0 @@
-#!/usr/bin/env luajit
-
---[[
-This is part of the JackOnAllDevices project, JOAD for short.
-
-NOTE - Seems both ALSA and JACK are per user.
-
-]]
-
-
--- CHANGE these to suit.
---local GUI = 'qjackctl'
-local GUI = 'catia'
-local alias = {
- {name='Screen', dev='HDMI9'},
- }
-
-
--- This APT stuff was copied from apt-panopticon.
-local APT = {}
-
-APT.readCmd = function(cmd)
- local result = {}
- local output = io.popen(cmd)
- if nil ~= output then
- for l in output:lines() do
- table.insert(result, l)
- end
- end
- return result
-end
-
-
-APT.exe = function(c)
- local exe = {status = 0, result = '', lines = {}, log = true, cmd = c .. ' ', command = c}
-
- function exe:log()
- self.log = true
- return self
- end
- function exe:Nice(c)
- if nil == c then
- self.cmd = 'ionice -c3 nice -n 19 ' .. self.cmd
- else
- self.cmd = self.cmd .. 'ionice -c3 nice -n 19 ' .. c .. ' '
- end
- return self
- end
- function exe:timeout(c)
- -- timeout returns a status of - command status if --preserve-status; "128+9" (actually 137) if --kill-after ends up being done; 124 if it had to TERM; command status if all went well.
- -- --kill-after means "send KILL after TERM fails.
- if nil == c then
- self.cmd = 'timeout --kill-after=10.0 --foreground 42.0s ' .. self.cmd
- else
- self.cmd = 'timeout --kill-after=10.0 --foreground ' .. c .. ' ' .. self.cmd
- end
- return self
- end
- function exe:also(c)
- if nil == c then c = '' else c = ' ' .. c end
- self.cmd = self.cmd .. ';' .. c .. ' '
- return self
- end
- function exe:And(c)
- if nil == c then c = '' else c = ' ' .. c end
- self.cmd = self.cmd .. '&&' .. c .. ' '
- return self
- end
- function exe:Or(c)
- if nil == c then c = '' end
- self.cmd = self.cmd .. '|| ' .. c .. ' '
- return self
- end
- function exe:noErr()
- self.cmd = self.cmd .. '2>/dev/null '
- return self
- end
- function exe:wait(w)
- self.cmd = self.cmd .. '&& touch ' .. w .. ' '
- return self
- end
- function exe:Do()
- --[[ "The condition expression of a control structure can return any
- value. Both false and nil are considered false. All values different
- from nil and false are considered true (in particular, the number 0
- and the empty string are also true)."
- says the docs, I beg to differ.]]
- if true == self.log then D(" executing - " .. self.cmd .. "
") end
- --[[ Damn os.execute()
- Lua 5.1 says it returns "a status code, which is system-dependent"
- Lua 5.2 says it returns true/nil, "exit"/"signal", the status code.
- I'm getting 7168 or 0. No idea what the fuck that is.
- local ok, rslt, status = os.execute(s)
- ]]
- local f = APT.readCmd(self.cmd, 'r')
- -- The last line will be the command's returned status, collect everything else in result.
- self.status = '' -- Otherwise the result starts with 0.
- self.result = '\n'
- self.lines = f
- for i,l in ipairs(f) do
- self.result = self.result .. l .. "\n"
- end
- f = APT.readCmd('echo "$?"', 'r')
- for i,l in ipairs(f) do
- self.status = tonumber(l)
- if (137 == self.status) or (124 == self.status) then
- print("timeout killed " .. self.status .. ' ' .. self.command)
- E("timeout killed " .. self.status .. ' ' .. self.command)
- elseif (0 ~= self.status) then
- print("status |" .. self.status .. '| ' .. self.command)
- E("status |" .. self.status .. '| ' .. self.command)
- end
- end
- return self
- end
- function exe:fork(host)
- if nil ~= host then self.cmd = self.cmd .. '; r=$?; if [ $r -ge 124 ]; then echo "$r ' .. host .. ' failed forked command ' .. string.gsub(self.cmd, '"', "'") .. '"; fi' end
- self.cmd = '{ ' .. self.cmd .. '; } &'
- if true == self.log then D(" forking - " .. self.cmd .. "
") end
- os.execute(self.cmd)
- return self
- end
- return exe
-end
-
-
-
-local Cards = {}
-
-print('Scanning for audio devices.')
-local cards = APT.exe('ls -d1 /proc/asound/card[0-9]*'):noErr():Do()
-for i,l in ipairs(cards.lines) do
- local f, e = io.open(l .. '/id', "r")
- if nil == f then print("Could not open " .. l .. '/id') else
- Cards[l] = {path = l, name = f:read("*a"):sub(1, -2), devs = {}, captureDevs = {}, playbackDevs = {}}
- if "Loopback" ~= Cards[l]['name'] then
- Cards[l]['capture'] = APT.exe('ls -d1 ' .. l .. '/pcm[0-9]*c*'):noErr():Do()
- for j,c in ipairs(Cards[l]['capture'].lines) do
- local n = c:match(".*pcm(%d+).*")
- Cards[l]['captureDevs'][j] = n
- Cards[l]['devs'][n] = n
- print("\tFound capture device: " .. Cards[l]['name'] .. "\tDEVICE: " .. Cards[l]['captureDevs'][j] .. ' ' .. n)
- end
- Cards[l]['playback'] = APT.exe('ls -d1 ' .. l .. '/pcm[0-9]*p*'):noErr():Do()
- for j,p in ipairs(Cards[l]['playback'].lines) do
- local n = p:match(".*pcm(%d+).*")
- Cards[l]['playbackDevs'][j] = n
- Cards[l]['devs'][n] = n
- print("\tFound playback device: " .. Cards[l]['name'] .. "\tDEVICE: " .. Cards[l]['playbackDevs'][j] .. ' ' .. n)
- end
- end
- end
-end
-
-
-print('')
-print("Start up JACK and friends.")
-print("jack_control")
-APT.exe('jack_control start'):Do()
-APT.exe('jack_control ds alsa'):Do()
---jack_control dps device hw:RIG,0
-print("sleep 5")
-APT.exe('sleep 5'):Do()
-if nil ~= GUI then
- print(GUI)
- APT.exe(GUI):fork()
-end
-print("jack-plumbing")
-APT.exe('jack-plumbing -q 2>/dev/null'):fork()
--- Bridge ALSA ports to JACK ports. Only handles MIDI.
--- MIDI via a2jmidid. The --ehw enables hardware ports as well, equal to using the seq MIDI drivare according to https://freeshell.de/~murks/posts/ALSA_and_JACK_MIDI_explained_(by_a_dummy_for_dummies)/
---a2j_control actually starts a2jmidid.
-----a2jmidid -e -u &
--- I think the jack_control start and my current alsa config means a2jmidid gets started anyway. But seem to need this bit to get the joystick covered.
-print("a2j_control")
-APT.exe('a2j_control --ehw && a2j_control --start'):Do()
-print("sleep 2")
-APT.exe('sleep 2'):Do()
-print("")
-
-
---local AIN = "alsa_in"
-local AIN = "zita-a2j"
---local AOUT = "alsa_out"
-local AOUT = "zita-j2a"
-
-print("Basic ALSA sound devices converted to JACK.")
-for i,C in pairs(alias) do
- print('HW playback: ' .. C['name'] .. '\tDEVICE: ' .. C['dev'])
- APT.exe('alsa_out -j ' .. C['name'] .. ' -d ' .. C['dev']):fork()
- APT.exe('sleep 1'):Do()
-end
-print("HW playback: cloop\tDEVICE: cloop")
--- No idea why, cloop wont work with zita-a2j.
-APT.exe('alsa_in -j cloop -d cloop'):fork()
-APT.exe('sleep 1'):Do()
-APT.exe('jack_connect cloop:capture_1 system:playback_1'):Do()
-APT.exe('jack_connect cloop:capture_2 system:playback_2'):Do()
-print("HW playback: ploop\tDEVICE: ploop")
-APT.exe('alsa_out -j ploop -d ploop'):fork()
-APT.exe('sleep 1'):Do()
-APT.exe('jack_connect system:capture_1 ploop:playback_1'):Do()
-APT.exe('jack_connect system:capture_2 ploop:playback_2'):Do()
-
-
-print("")
-
-print("Rest of ALSA sound devices converted to JACK.")
-for i,C in pairs(Cards) do
- for j,c in ipairs(C['playbackDevs']) do
- print("HW playback: " .. C['name'] .. "\tDEVICE: " .. C['playbackDevs'][j])
- APT.exe(AOUT .. ' -j ' .. C['name'] .. "_" .. C['playbackDevs'][j] .. '-in -d ' .. C['name'] .. C['playbackDevs'][j]):fork()
--- APT.exe('sleep 1'):Do()
- end
- for j,c in ipairs(C['captureDevs']) do
- print("HW capture: " .. C['name'] .. "\tDEVICE: " .. C['captureDevs'][j])
- APT.exe(AIN .. ' -j ' .. C['name'] .. "_" .. C['captureDevs'][j] .. '-out -d ' .. C['name'] .. C['captureDevs'][j]):fork()
--- APT.exe('sleep 1'):Do()
- end
-end
-print("")
-
-print("Scanning for joysticks.")
-local sticks = APT.exe('ls -1 /dev/input/js[0-9]*'):noErr():Do()
-for i,l in ipairs(sticks.lines) do
- print("aseqjoy " .. l)
- -- Buttons switch to that numbered MIDI channel, defaults to 1.
- -- Axis are mapped to MIDI controllers 10 - 15
- -- -r means to use high resolution MIDI values.
- APT.exe('aseqjoy -d ' .. l:sub(-1,-1) .. ' -r'):fork()
--- print("sleep 1")
--- APT.exe('sleep 1'):Do()
-end
-print("")
-
-
-
diff --git a/jackscanall b/jackscanall
deleted file mode 100755
index 24d87df..0000000
--- a/jackscanall
+++ /dev/null
@@ -1,326 +0,0 @@
-#!/usr/bin/env luajit
-
---[[
-This is part of the JackOnAllDevices project, JOAD for short.
-
-The purpose is to scan for all ALSA / asound audio devices, and hook them
-all up to JACK. Then it starts up JACK, and hooks up any joysticks it
-finds as MIDI controllers.
-
-
-Alas ~/.asoundrc doesn't understand ~ or $HOME, or even "try the current
-directory" it seems. So you have to hard cade the path. Make sure your
-~/.asoundrc or /etc/asoundrc includes something like this -
-
-
-
-
-Run this once as root to create that file, and each time you need to
-change your devices.
-
-
-TODO - Leave it running, and hotplug ALSA / asound audio devices.
- a2jmidid takes care of hotplugging MIDI devices.
- Though I think I still need to deal with hotplugged joysticks.
-
-NOTE - Seems both ALSA and JACK are per user.
-
-]]
-
-
--- CHANGE these to suit.
-local asoundrcPath = '/var/lib/JOAD'
-local asoundrc = 'asoundrc'
-
-
-
--- This APT stuff was copied from apt-panopticon.
-local APT = {}
-
-APT.readCmd = function(cmd)
- local result = {}
- local output = io.popen(cmd)
- if nil ~= output then
- for l in output:lines() do
- table.insert(result, l)
- end
- end
- return result
-end
-
-
-APT.exe = function(c)
- local exe = {status = 0, result = '', lines = {}, log = true, cmd = c .. ' ', command = c}
-
- function exe:log()
- self.log = true
- return self
- end
- function exe:Nice(c)
- if nil == c then
- self.cmd = 'ionice -c3 nice -n 19 ' .. self.cmd
- else
- self.cmd = self.cmd .. 'ionice -c3 nice -n 19 ' .. c .. ' '
- end
- return self
- end
- function exe:timeout(c)
- -- timeout returns a status of - command status if --preserve-status; "128+9" (actually 137) if --kill-after ends up being done; 124 if it had to TERM; command status if all went well.
- -- --kill-after means "send KILL after TERM fails.
- if nil == c then
- self.cmd = 'timeout --kill-after=10.0 --foreground 42.0s ' .. self.cmd
- else
- self.cmd = 'timeout --kill-after=10.0 --foreground ' .. c .. ' ' .. self.cmd
- end
- return self
- end
- function exe:also(c)
- if nil == c then c = '' else c = ' ' .. c end
- self.cmd = self.cmd .. ';' .. c .. ' '
- return self
- end
- function exe:And(c)
- if nil == c then c = '' else c = ' ' .. c end
- self.cmd = self.cmd .. '&&' .. c .. ' '
- return self
- end
- function exe:Or(c)
- if nil == c then c = '' end
- self.cmd = self.cmd .. '|| ' .. c .. ' '
- return self
- end
- function exe:noErr()
- self.cmd = self.cmd .. '2>/dev/null '
- return self
- end
- function exe:wait(w)
- self.cmd = self.cmd .. '&& touch ' .. w .. ' '
- return self
- end
- function exe:Do()
- --[[ "The condition expression of a control structure can return any
- value. Both false and nil are considered false. All values different
- from nil and false are considered true (in particular, the number 0
- and the empty string are also true)."
- says the docs, I beg to differ.]]
- if true == self.log then D(" executing - " .. self.cmd .. "
") end
- --[[ Damn os.execute()
- Lua 5.1 says it returns "a status code, which is system-dependent"
- Lua 5.2 says it returns true/nil, "exit"/"signal", the status code.
- I'm getting 7168 or 0. No idea what the fuck that is.
- local ok, rslt, status = os.execute(s)
- ]]
- local f = APT.readCmd(self.cmd, 'r')
- -- The last line will be the command's returned status, collect everything else in result.
- self.status = '' -- Otherwise the result starts with 0.
- self.result = '\n'
- self.lines = f
- for i,l in ipairs(f) do
- self.result = self.result .. l .. "\n"
- end
- f = APT.readCmd('echo "$?"', 'r')
- for i,l in ipairs(f) do
- self.status = tonumber(l)
- if (137 == self.status) or (124 == self.status) then
- print("timeout killed " .. self.status .. ' ' .. self.command)
- E("timeout killed " .. self.status .. ' ' .. self.command)
- elseif (0 ~= self.status) then
- print("status |" .. self.status .. '| ' .. self.command)
- E("status |" .. self.status .. '| ' .. self.command)
- end
- end
- return self
- end
- function exe:fork(host)
- if nil ~= host then self.cmd = self.cmd .. '; r=$?; if [ $r -ge 124 ]; then echo "$r ' .. host .. ' failed forked command ' .. string.gsub(self.cmd, '"', "'") .. '"; fi' end
- self.cmd = '{ ' .. self.cmd .. '; } &'
- if true == self.log then D(" forking - " .. self.cmd .. "
") end
- os.execute(self.cmd)
- return self
- end
- return exe
-end
-
-
-
-local Cards = {}
-
-print('Scanning for audio devices.')
-local cards = APT.exe('ls -d1 /proc/asound/card[0-9]*'):noErr():Do()
-for i,l in ipairs(cards.lines) do
- local f, e = io.open(l .. '/id', "r")
- if nil == f then print("Could not open " .. l .. '/id') else
- Cards[l] = {path = l, name = f:read("*a"):sub(1, -2), devs = {}, captureDevs = {}, playbackDevs = {}}
- if "Loopback" ~= Cards[l]['name'] then
- Cards[l]['capture'] = APT.exe('ls -d1 ' .. l .. '/pcm[0-9]*c*'):noErr():Do()
- for j,c in ipairs(Cards[l]['capture'].lines) do
- local n = c:match(".*pcm(%d+).*")
- Cards[l]['captureDevs'][j] = n
- Cards[l]['devs'][n] = n
- print("\tFound capture device: " .. Cards[l]['name'] .. "\tDEVICE: " .. Cards[l]['captureDevs'][j] .. ' ' .. n)
- end
- Cards[l]['playback'] = APT.exe('ls -d1 ' .. l .. '/pcm[0-9]*p*'):noErr():Do()
- for j,p in ipairs(Cards[l]['playback'].lines) do
- local n = p:match(".*pcm(%d+).*")
- Cards[l]['playbackDevs'][j] = n
- Cards[l]['devs'][n] = n
- print("\tFound playback device: " .. Cards[l]['name'] .. "\tDEVICE: " .. Cards[l]['playbackDevs'][j] .. ' ' .. n)
- end
- end
- end
-end
-
-APT.exe('mkdir -p ' .. asoundrcPath):Do()
-local a, e = io.open(asoundrcPath .. '/' .. asoundrc, "w")
-if nil == a then print("Could not open " .. asoundrcPath .. '/' .. asoundrc) else
- for i,C in pairs(Cards) do
- for j,c in pairs(C['devs']) do
- a:write("pcm." .. C['name'] .. j .. " {\n")
- a:write(" type hw\n")
- a:write(" card " .. C['name'] .. "\n")
- a:write(" device " .. C['devs'][j] .. "\n")
- a:write("}\n")
- a:write("ctl." .. C['name'] .. j .. " {\n")
- a:write(" type hw\n")
- a:write(" card " .. C['name'] .. "\n")
- a:write(" device " .. C['devs'][j] .. "\n")
- a:write("}\n\n")
- end
- end
- a:write([[
-#################################################################################################################################
-
-# The complex way - https://alsa.opensrc.org/Jack_and_Loopback_device_as_Alsa-to-Jack_bridge
-
-# More custom version, but it didn't work for me.
-# hardware 0,0 : used for ALSA playback
-#pcm.loophw00 {
-# type hw
-# card Loopback
-# device 0
-# subdevice 0
-# format S32_LE
-# rate 48000
-#}
-
-# playback PCM device: using loopback subdevice 0,0
-# Don't use a buffer size that is too small. Some apps
-# won't like it and it will sound crappy
-
-#pcm.amix {
-# type dmix
-# ipc_key 219345
-# slave {
-# pcm loophw00
-## period_size 4096
-## periods 2
-# }
-#}
-
-# software volume
-#pcm.asoftvol {
-# type softvol
-# slave.pcm "amix"
-
-# control { name PCM }
-
-# min_dB -51.0
-# max_dB 0.0
-#}
-
-
-# for jack alsa_in: looped-back signal at other ends
-#pcm.cloop {
-# type hw
-# card Loopback
-# device 1
-# subdevice 0
-# format S32_LE
-# rate 48000
-#}
-
-# hardware 0,1 : used for ALSA capture
-#pcm.loophw01 {
-# type hw
-# card Loopback
-# device 0
-# subdevice 1
-# format S32_LE
-# rate 48000
-#}
-
-# for jack alsa_out: looped-back signal at other end
-#pcm.ploop {
-# type hw
-# card Loopback
-# device 1
-# subdevice 1
-# format S32_LE
-# rate 48000
-#}
-
-# duplex device combining our PCM devices defined above
-#pcm.aduplex {
-# type asym
-# playback.pcm "asoftvol"
-# capture.pcm "loophw01"
-#}
-
-# default device
-#pcm.!default {
-# type plug
-# slave.pcm aduplex
-
-# hint {
-# show on
-# description "Duplex Loopback"
-# }
-#}
-
-
-
-# Generic method seems to work better.
-# playback PCM device: using loopback subdevice 0,0
-pcm.amix {
- type dmix
- ipc_key 219345
- slave.pcm "hw:Loopback,0,0"
-}
-
-# capture PCM device: using loopback subdevice 0,1
-pcm.asnoop {
- type dsnoop
- ipc_key 219346
- slave.pcm "hw:Loopback,0,1"
-}
-
-# duplex device combining our PCM devices defined above
-pcm.aduplex {
- type asym
- playback.pcm "amix"
- capture.pcm "asnoop"
-}
-
-# ------------------------------------------------------
-# for jack alsa_in and alsa_out: looped-back signal at other ends
-pcm.ploop {
- type plug
- slave.pcm "hw:Loopback,1,1"
-}
-
-pcm.cloop {
- type dsnoop
- ipc_key 219348
- slave.pcm "hw:Loopback,1,0"
-}
-
-# ------------------------------------------------------
-# default device
-
-pcm.!default {
- type plug
- slave.pcm "aduplex"
-}
- ]])
-a:close()
-end
--
cgit v1.1