diff options
Diffstat (limited to 'aataaj.lua')
-rwxr-xr-x | aataaj.lua | 92 |
1 files changed, 46 insertions, 46 deletions
@@ -116,8 +116,8 @@ local options = | |||
116 | _.killEmAll{'jmcore', 'qjackctl'} | 116 | _.killEmAll{'jmcore', 'qjackctl'} |
117 | -- Catia is python, and no easy way to kill it. | 117 | -- Catia is python, and no easy way to kill it. |
118 | -- Also it keeps jackdbus alive, no matter how hard you kill it. | 118 | -- Also it keeps jackdbus alive, no matter how hard you kill it. |
119 | __"pkill -TERM -u $USER -f catia":Do() | 119 | __'pkill -TERM -u $USER -f catia':Do() |
120 | __"sleep 2":Do() | 120 | __'sleep 2':Do() |
121 | _.killEmAll{'jackdbus', 'a2jmidid'} | 121 | _.killEmAll{'jackdbus', 'a2jmidid'} |
122 | os.exit(0) | 122 | os.exit(0) |
123 | end | 123 | end |
@@ -145,24 +145,24 @@ local Cards = {} | |||
145 | print('Scanning for audio devices.') | 145 | print('Scanning for audio devices.') |
146 | local cards = __'ls -d1 /proc/asound/card[0-9]*':noErr():Do() | 146 | local cards = __'ls -d1 /proc/asound/card[0-9]*':noErr():Do() |
147 | for i,l in ipairs(cards.lines) do | 147 | for i,l in ipairs(cards.lines) do |
148 | local f, e = io.open(l .. '/id', "r") | 148 | local f, e = io.open(l .. '/id', 'r') |
149 | if nil == f then print("Could not open " .. l .. '/id') else | 149 | if nil == f then print('Could not open ' .. l .. '/id') else |
150 | Cards[l] = {path = l, name = f:read("*a"):sub(1, -2), devs = {}, captureDevs = {}, playbackDevs = {}, card=i} | 150 | Cards[l] = {path = l, name = f:read('*a'):sub(1, -2), devs = {}, captureDevs = {}, playbackDevs = {}, card=i} |
151 | if "Loopback" ~= Cards[l]['name'] then | 151 | if 'Loopback' ~= Cards[l]['name'] then |
152 | Cards[l]['capture'] = __('ls -d1 ' .. l .. '/pcm[0-9]*c*'):noErr():Do() | 152 | Cards[l]['capture'] = __('ls -d1 ' .. l .. '/pcm[0-9]*c*'):noErr():Do() |
153 | for j,c in ipairs(Cards[l]['capture'].lines) do | 153 | for j,c in ipairs(Cards[l]['capture'].lines) do |
154 | local n = c:match(".*pcm(%d+).*") | 154 | local n = c:match('.*pcm(%d+).*') |
155 | Cards[l]['captureDevs'][j] = n | 155 | Cards[l]['captureDevs'][j] = n |
156 | Cards[l]['devs'][n] = n | 156 | Cards[l]['devs'][n] = n |
157 | print("\tFound capture device: " .. Cards[l]['name'] .. "\tDEVICE: " .. Cards[l]['captureDevs'][j] .. ' ' .. n) | 157 | print('\tFound capture device: ' .. Cards[l]['name'] .. '\tDEVICE: ' .. Cards[l]['captureDevs'][j] .. ' ' .. n) |
158 | io.flush() | 158 | io.flush() |
159 | end | 159 | end |
160 | Cards[l]['playback'] = __('ls -d1 ' .. l .. '/pcm[0-9]*p*'):noErr():Do() | 160 | Cards[l]['playback'] = __('ls -d1 ' .. l .. '/pcm[0-9]*p*'):noErr():Do() |
161 | for j,p in ipairs(Cards[l]['playback'].lines) do | 161 | for j,p in ipairs(Cards[l]['playback'].lines) do |
162 | local n = p:match(".*pcm(%d+).*") | 162 | local n = p:match('.*pcm(%d+).*') |
163 | Cards[l]['playbackDevs'][j] = n | 163 | Cards[l]['playbackDevs'][j] = n |
164 | Cards[l]['devs'][n] = n | 164 | Cards[l]['devs'][n] = n |
165 | print("\tFound playback device " .. Cards[l].card - 1 .. " : " .. Cards[l]['name'] .. "\tDEVICE: " .. Cards[l]['playbackDevs'][j] .. ' ' .. n) | 165 | print('\tFound playback device ' .. Cards[l].card - 1 .. ' : ' .. Cards[l]['name'] .. '\tDEVICE: ' .. Cards[l]['playbackDevs'][j] .. ' ' .. n) |
166 | io.flush() | 166 | io.flush() |
167 | if 'JACK' ~= arg[1] then | 167 | if 'JACK' ~= arg[1] then |
168 | print('\t\tALSA_CARD=' .. Cards[l].card - 1 .. ' ' .. speaker .. ' "Found playback device ' .. Cards[l].card - 1 .. ' : ' .. Cards[l]['name'] .. ' DEVICE: ' .. Cards[l]['playbackDevs'][j] .. ' ' .. n .. '"') | 168 | print('\t\tALSA_CARD=' .. Cards[l].card - 1 .. ' ' .. speaker .. ' "Found playback device ' .. Cards[l].card - 1 .. ' : ' .. Cards[l]['name'] .. ' DEVICE: ' .. Cards[l]['playbackDevs'][j] .. ' ' .. n .. '"') |
@@ -203,8 +203,8 @@ io.flush() | |||
203 | 203 | ||
204 | if 'start' == arg[1] then | 204 | if 'start' == arg[1] then |
205 | __('mkdir -p ' .. options.asoundrcPath.value):Do() | 205 | __('mkdir -p ' .. options.asoundrcPath.value):Do() |
206 | local a, e = io.open(options.asoundrcPath.value .. '/jack-plumbing', "w") | 206 | local a, e = io.open(options.asoundrcPath.value .. '/jack-plumbing', 'w') |
207 | if nil == a then print("Could not open " .. options.asoundrcPath.value .. '/jack-plumbing') else | 207 | if nil == a then print('Could not open ' .. options.asoundrcPath.value .. '/jack-plumbing') else |
208 | a:write([[ | 208 | a:write([[ |
209 | (connect "system:capture_1" "ploop:playback_1") | 209 | (connect "system:capture_1" "ploop:playback_1") |
210 | (connect "system:capture_2" "ploop:playback_2") | 210 | (connect "system:capture_2" "ploop:playback_2") |
@@ -218,20 +218,20 @@ if 'start' == arg[1] then | |||
218 | ]]) | 218 | ]]) |
219 | a:close() | 219 | a:close() |
220 | end | 220 | end |
221 | local a, e = io.open(options.asoundrcPath.value .. '/' .. options.asoundrc.value, "w") | 221 | local a, e = io.open(options.asoundrcPath.value .. '/' .. options.asoundrc.value, 'w') |
222 | if nil == a then print("Could not open " .. options.asoundrcPath.value .. '/' .. options.asoundrc.value) else | 222 | if nil == a then print('Could not open ' .. options.asoundrcPath.value .. '/' .. options.asoundrc.value) else |
223 | for i,C in pairs(Cards) do | 223 | for i,C in pairs(Cards) do |
224 | for j,c in pairs(C['devs']) do | 224 | for j,c in pairs(C['devs']) do |
225 | a:write("pcm." .. C['name'] .. j .. " {\n") | 225 | a:write('pcm.' .. C['name'] .. j .. ' {\n') |
226 | a:write(" type hw\n") | 226 | a:write(' type hw\n') |
227 | a:write(" card " .. C['name'] .. "\n") | 227 | a:write(' card ' .. C['name'] .. '\n') |
228 | a:write(" device " .. C['devs'][j] .. "\n") | 228 | a:write(' device ' .. C['devs'][j] .. '\n') |
229 | a:write("}\n") | 229 | a:write('}\n') |
230 | a:write("ctl." .. C['name'] .. j .. " {\n") | 230 | a:write('ctl.' .. C['name'] .. j .. ' {\n') |
231 | a:write(" type hw\n") | 231 | a:write(' type hw\n') |
232 | a:write(" card " .. C['name'] .. "\n") | 232 | a:write(' card ' .. C['name'] .. '\n') |
233 | a:write(" device " .. C['devs'][j] .. "\n") | 233 | a:write(' device ' .. C['devs'][j] .. '\n') |
234 | a:write("}\n\n") | 234 | a:write('}\n\n') |
235 | end | 235 | end |
236 | end | 236 | end |
237 | a:write([[ | 237 | a:write([[ |
@@ -373,13 +373,13 @@ pcm.!default { | |||
373 | end | 373 | end |
374 | elseif 'JACK' == arg[1] then | 374 | elseif 'JACK' == arg[1] then |
375 | print('') | 375 | print('') |
376 | print("Start up JACK and friends.") | 376 | print('Start up JACK and friends.') |
377 | print("jack_control") | 377 | print('jack_control') |
378 | __[[jack_control start | 378 | __[[jack_control start |
379 | jack_control ds alsa]]:Do() | 379 | jack_control ds alsa]]:Do() |
380 | --jack_control dps device hw:RIG,0 | 380 | --jack_control dps device hw:RIG,0 |
381 | while 0 ~= __'jack_control status':Do().status do | 381 | while 0 ~= __'jack_control status':Do().status do |
382 | print("Waiting for JACK") | 382 | print('Waiting for JACK') |
383 | __'sleep 1':Do() | 383 | __'sleep 1':Do() |
384 | end | 384 | end |
385 | if nil ~= GUI then | 385 | if nil ~= GUI then |
@@ -387,7 +387,7 @@ elseif 'JACK' == arg[1] then | |||
387 | __(GUI):forkOnce() | 387 | __(GUI):forkOnce() |
388 | end | 388 | end |
389 | if _.runnable'jack-plumbing' then | 389 | if _.runnable'jack-plumbing' then |
390 | print("jack-plumbing") | 390 | print('jack-plumbing') |
391 | __'jack-plumbing -o /var/lib/aataaj/jack-plumbing 2>/dev/null':fork() | 391 | __'jack-plumbing -o /var/lib/aataaj/jack-plumbing 2>/dev/null':fork() |
392 | end | 392 | end |
393 | if _.runnable'a2j_control' then | 393 | if _.runnable'a2j_control' then |
@@ -396,72 +396,72 @@ elseif 'JACK' == arg[1] then | |||
396 | --a2j_control actually starts a2jmidid. | 396 | --a2j_control actually starts a2jmidid. |
397 | ----a2jmidid -e -u & | 397 | ----a2jmidid -e -u & |
398 | -- 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. | 398 | -- 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. |
399 | print("a2j_control") | 399 | print('a2j_control') |
400 | __'a2j_control --ehw && a2j_control --start':Do() | 400 | __'a2j_control --ehw && a2j_control --start':Do() |
401 | -- print("sleep 2") | 401 | -- print('sleep 2') |
402 | -- __('sleep 2'):Do() | 402 | -- __('sleep 2'):Do() |
403 | print("") | 403 | print("") |
404 | end | 404 | end |
405 | 405 | ||
406 | 406 | ||
407 | local AIN = "alsa_in" | 407 | local AIN = 'alsa_in' |
408 | if _.runnable'zita-a2j' then AIN = 'zita-a2j' end | 408 | if _.runnable'zita-a2j' then AIN = 'zita-a2j' end |
409 | local AOUT = "alsa_out" | 409 | local AOUT = 'alsa_out' |
410 | if _.runnable'zita-j2a' then AOUT = 'zita-j2a' end | 410 | if _.runnable'zita-j2a' then AOUT = 'zita-j2a' end |
411 | 411 | ||
412 | print("Basic ALSA sound devices converted to JACK.") | 412 | print('Basic ALSA sound devices converted to JACK.') |
413 | for i,C in pairs(options.aliases.value) do | 413 | for i,C in pairs(options.aliases.value) do |
414 | print('HW playback: ' .. C['name'] .. '\tDEVICE: ' .. C['dev']) | 414 | print('HW playback: ' .. C['name'] .. '\tDEVICE: ' .. C['dev']) |
415 | __(AOUT .. ' -j ' .. C['name'] .. ' -d ' .. C['dev']):fork() | 415 | __(AOUT .. ' -j ' .. C['name'] .. ' -d ' .. C['dev']):fork() |
416 | end | 416 | end |
417 | print("HW playback: cloop\tDEVICE: cloop") | 417 | print('HW playback: cloop\tDEVICE: cloop') |
418 | -- No idea why, cloop wont work with zita-a2j. | 418 | -- No idea why, cloop wont work with zita-a2j. |
419 | __'alsa_in -j cloop -d cloop':fork() | 419 | __'alsa_in -j cloop -d cloop':fork() |
420 | --__[[sleep 1 | 420 | --__[[sleep 1 |
421 | -- jack_connect cloop:capture_1 system:playback_1o() | 421 | -- jack_connect cloop:capture_1 system:playback_1o() |
422 | -- jack_connect cloop:capture_2 system:playback_2]]:Do() | 422 | -- jack_connect cloop:capture_2 system:playback_2]]:Do() |
423 | print("HW playback: ploop\tDEVICE: ploop") | 423 | print('HW playback: ploop\tDEVICE: ploop') |
424 | __'alsa_out -j ploop -d ploop':fork() | 424 | __'alsa_out -j ploop -d ploop':fork() |
425 | --__[[sleep 1 | 425 | --__[[sleep 1 |
426 | -- jack_connect system:capture_1 ploop:playback_1 | 426 | -- jack_connect system:capture_1 ploop:playback_1 |
427 | -- jack_connect system:capture_2 ploop:playback_2]]:Do() | 427 | -- jack_connect system:capture_2 ploop:playback_2]]:Do() |
428 | 428 | ||
429 | 429 | ||
430 | print("") | 430 | print('') |
431 | 431 | ||
432 | print("Rest of ALSA sound devices converted to JACK.") | 432 | print('Rest of ALSA sound devices converted to JACK.') |
433 | for i,C in pairs(Cards) do | 433 | for i,C in pairs(Cards) do |
434 | for j,c in ipairs(C['playbackDevs']) do | 434 | for j,c in ipairs(C['playbackDevs']) do |
435 | print("HW playback: " .. C['name'] .. "\tDEVICE: " .. C['playbackDevs'][j]) | 435 | print('HW playback: ' .. C['name'] .. '\tDEVICE: ' .. C['playbackDevs'][j]) |
436 | __(AOUT .. ' -j ' .. C['name'] .. "_" .. C['playbackDevs'][j] .. '-in -d ' .. C['name'] .. C['playbackDevs'][j]):fork() | 436 | __(AOUT .. ' -j ' .. C['name'] .. '_' .. C['playbackDevs'][j] .. '-in -d ' .. C['name'] .. C['playbackDevs'][j]):fork() |
437 | -- __'sleep 1':Do() | 437 | -- __'sleep 1':Do() |
438 | -- __('jack_connect cloop:capture_1 ' .. C['name'] .. '_' .. C['playbackDevs'][j] .. '-in' .. ':playback_1'):Do() | 438 | -- __('jack_connect cloop:capture_1 ' .. C['name'] .. '_' .. C['playbackDevs'][j] .. '-in' .. ':playback_1'):Do() |
439 | -- __('jack_connect cloop:capture_2 ' .. C['name'] .. '_' .. C['playbackDevs'][j] .. '-in' .. ':playback_2'):Do() | 439 | -- __('jack_connect cloop:capture_2 ' .. C['name'] .. '_' .. C['playbackDevs'][j] .. '-in' .. ':playback_2'):Do() |
440 | end | 440 | end |
441 | for j,c in ipairs(C['captureDevs']) do | 441 | for j,c in ipairs(C['captureDevs']) do |
442 | print("HW capture: " .. C['name'] .. "\tDEVICE: " .. C['captureDevs'][j]) | 442 | print('HW capture: ' .. C['name'] .. '\tDEVICE: ' .. C['captureDevs'][j]) |
443 | __(AIN .. ' -j ' .. C['name'] .. "_" .. C['captureDevs'][j] .. '-out -d ' .. C['name'] .. C['captureDevs'][j]):fork() | 443 | __(AIN .. ' -j ' .. C['name'] .. '_' .. C['captureDevs'][j] .. '-out -d ' .. C['name'] .. C['captureDevs'][j]):fork() |
444 | end | 444 | end |
445 | end | 445 | end |
446 | print("") | 446 | print('') |
447 | 447 | ||
448 | if _.runnable('aseqjoy') then | 448 | if _.runnable('aseqjoy') then |
449 | print("Scanning for joysticks.") | 449 | print('Scanning for joysticks.') |
450 | local sticks = __'ls -1 /dev/input/js[0-9]*':noErr():Do() | 450 | local sticks = __'ls -1 /dev/input/js[0-9]*':noErr():Do() |
451 | for i,l in ipairs(sticks.lines) do | 451 | for i,l in ipairs(sticks.lines) do |
452 | print("aseqjoy " .. l) | 452 | print('aseqjoy ' .. l) |
453 | -- Buttons switch to that numbered MIDI channel, defaults to 1. | 453 | -- Buttons switch to that numbered MIDI channel, defaults to 1. |
454 | -- Axis are mapped to MIDI controllers 10 - 15 | 454 | -- Axis are mapped to MIDI controllers 10 - 15 |
455 | -- -r means to use high resolution MIDI values. | 455 | -- -r means to use high resolution MIDI values. |
456 | __('aseqjoy -d ' .. l:sub(-1,-1) .. ' -r'):fork() | 456 | __('aseqjoy -d ' .. l:sub(-1,-1) .. ' -r'):fork() |
457 | end | 457 | end |
458 | print("") | 458 | print('') |
459 | end | 459 | end |
460 | 460 | ||
461 | if _.runnable('jack-plumbing') then | 461 | if _.runnable('jack-plumbing') then |
462 | print('Stop our jack-plumbing, eventually.') | 462 | print('Stop our jack-plumbing, eventually.') |
463 | __'sleep 4':Do() | 463 | __'sleep 4':Do() |
464 | _.killEmAll{"jack-plumbing"} | 464 | _.killEmAll{'jack-plumbing'} |
465 | end | 465 | end |
466 | 466 | ||
467 | if _.runnable('~/.aataaj_JACK.lua') then | 467 | if _.runnable('~/.aataaj_JACK.lua') then |