diff options
Diffstat (limited to '')
-rwxr-xr-x | PolygLua.lua | 38 | ||||
-rwxr-xr-x | aataaj.lua | 92 | ||||
-rwxr-xr-x | test_.lua | 12 |
3 files changed, 71 insertions, 71 deletions
diff --git a/PolygLua.lua b/PolygLua.lua index ed14fc5..ee775eb 100755 --- a/PolygLua.lua +++ b/PolygLua.lua | |||
@@ -2,7 +2,7 @@ | |||
2 | 2 | ||
3 | --[[ PolygLua. Gluing things onto Lua, making it a polyglot language. | 3 | --[[ PolygLua. Gluing things onto Lua, making it a polyglot language. |
4 | 4 | ||
5 | TODO - Make the parsing recursive. So the command "--fancy" could have it's own options table. | 5 | TODO - Make the parsing recursive. So the command '--fancy' could have it's own options table. |
6 | --fancy option0 opt1=foo 'Random string!' --somethingElse | 6 | --fancy option0 opt1=foo 'Random string!' --somethingElse |
7 | When to stop and hand back? First time we see a ' -bar' or ' --foo'? | 7 | When to stop and hand back? First time we see a ' -bar' or ' --foo'? |
8 | 8 | ||
@@ -23,8 +23,8 @@ _.version = '0.0 crap' | |||
23 | _.verbosity = 2 | 23 | _.verbosity = 2 |
24 | local log = function(v, t, s) | 24 | local log = function(v, t, s) |
25 | if v <= _.verbosity then | 25 | if v <= _.verbosity then |
26 | if 3 <= _.verbosity then t = os.date('!%F %T') .. " " .. t end | 26 | if 3 <= _.verbosity then t = os.date('!%F %T') .. ' ' .. t end |
27 | print(t .. ": " .. s) | 27 | print(t .. ': ' .. s) |
28 | end | 28 | end |
29 | io.flush() | 29 | io.flush() |
30 | end | 30 | end |
@@ -106,7 +106,7 @@ _.parse = function(args, options, confFile) | |||
106 | if nil ~= confFile then | 106 | if nil ~= confFile then |
107 | for i,v in ipairs{'/etc/', '~/.', './.'} do | 107 | for i,v in ipairs{'/etc/', '~/.', './.'} do |
108 | local p = v .. confFile .. '.conf.lua' | 108 | local p = v .. confFile .. '.conf.lua' |
109 | local h, e = io.open(p, "r") | 109 | local h, e = io.open(p, 'r') |
110 | if nil ~= h then | 110 | if nil ~= h then |
111 | D('Found configuration file '.. p) | 111 | D('Found configuration file '.. p) |
112 | h:close() | 112 | h:close() |
@@ -124,7 +124,7 @@ _.parse = function(args, options, confFile) | |||
124 | local ds = 0 | 124 | local ds = 0 |
125 | if ('-' == a:sub(1, 1)) and ('-' ~= a:sub(2, 2)) then ds = 1 end | 125 | if ('-' == a:sub(1, 1)) and ('-' ~= a:sub(2, 2)) then ds = 1 end |
126 | if '--' == a:sub(1, 2) then ds = 2; a = a:sub(3, -1) end | 126 | if '--' == a:sub(1, 2) then ds = 2; a = a:sub(3, -1) end |
127 | local s, e = a:find("=") | 127 | local s, e = a:find('=') |
128 | local k , v | 128 | local k , v |
129 | if nil == s then | 129 | if nil == s then |
130 | e = 0 | 130 | e = 0 |
@@ -154,11 +154,11 @@ _.runnable = function(c) | |||
154 | end | 154 | end |
155 | 155 | ||
156 | _.running = function(c) | 156 | _.running = function(c) |
157 | return ( 1 ~= tonumber(__("pgrep -u $USER -cf " .. c):Do().lines[1]) ) | 157 | return ( 1 ~= tonumber(__('pgrep -u $USER -cf ' .. c):Do().lines[1]) ) |
158 | end | 158 | end |
159 | 159 | ||
160 | _.exists = function(f) | 160 | _.exists = function(f) |
161 | local h, e = io.open(f, "r") | 161 | local h, e = io.open(f, 'r') |
162 | if nil == h then return false else h:close(); return true end | 162 | if nil == h then return false else h:close(); return true end |
163 | end | 163 | end |
164 | 164 | ||
@@ -166,10 +166,10 @@ end | |||
166 | _.killEmAll = function(all) | 166 | _.killEmAll = function(all) |
167 | for i,l in ipairs(all) do | 167 | for i,l in ipairs(all) do |
168 | local c = 0 | 168 | local c = 0 |
169 | while 0 ~= tonumber(__("pgrep -u $USER -xc " .. l):Do().lines[1]) do | 169 | while 0 ~= tonumber(__('pgrep -u $USER -xc ' .. l):Do().lines[1]) do |
170 | local s = 'TERM' | 170 | local s = 'TERM' |
171 | if c > 1 then s = 'KILL'; __("sleep " .. c):Do() end | 171 | if c > 1 then s = 'KILL'; __('sleep ' .. c):Do() end |
172 | __("pkill -" .. s .. " -u $USER -x " .. l):log():Do() | 172 | __('pkill -' .. s .. ' -u $USER -x ' .. l):log():Do() |
173 | c = c + 1 | 173 | c = c + 1 |
174 | end | 174 | end |
175 | end | 175 | end |
@@ -202,7 +202,7 @@ __ = function(c) | |||
202 | end | 202 | end |
203 | elseif 'string' == type(c) then | 203 | elseif 'string' == type(c) then |
204 | exe.isScript = ('#!' == c:sub(1,2)) and (n == 0) | 204 | exe.isScript = ('#!' == c:sub(1,2)) and (n == 0) |
205 | for l in string.gmatch(c, "\n*([^\n]+)\n*") do | 205 | for l in string.gmatch(c, '\n*([^\n]+)\n*') do |
206 | if '' ~= l then | 206 | if '' ~= l then |
207 | if exe.isScript then | 207 | if exe.isScript then |
208 | if '' == exe.script then | 208 | if '' == exe.script then |
@@ -219,8 +219,8 @@ __ = function(c) | |||
219 | end | 219 | end |
220 | end | 220 | end |
221 | if exe.isScript then | 221 | if exe.isScript then |
222 | local a, e = io.open(exe.scriptFile, "w") | 222 | local a, e = io.open(exe.scriptFile, 'w') |
223 | if nil == a then E("Could not open " .. exe.scriptFile) else | 223 | if nil == a then E('Could not open ' .. exe.scriptFile) else |
224 | a:write(exe.script) | 224 | a:write(exe.script) |
225 | a:close() | 225 | a:close() |
226 | end | 226 | end |
@@ -241,7 +241,7 @@ __ = function(c) | |||
241 | 241 | ||
242 | function exe:timeout(c) | 242 | function exe:timeout(c) |
243 | -- 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. | 243 | -- 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. |
244 | -- --kill-after means "send KILL after TERM fails. | 244 | -- --kill-after means "send KILL after TERM fails". |
245 | if nil == c then | 245 | if nil == c then |
246 | self.cmd = 'timeout --kill-after=10.0 --foreground 42.0s ' .. self.cmd | 246 | self.cmd = 'timeout --kill-after=10.0 --foreground 42.0s ' .. self.cmd |
247 | else | 247 | else |
@@ -266,7 +266,7 @@ __ = function(c) | |||
266 | from nil and false are considered true (in particular, the number 0 | 266 | from nil and false are considered true (in particular, the number 0 |
267 | and the empty string are also true)." | 267 | and the empty string are also true)." |
268 | says the docs, I beg to differ.]] | 268 | says the docs, I beg to differ.]] |
269 | if true == self.logging then D(" executing - " .. self.cmd) end | 269 | if true == self.logging then D(' executing - ' .. self.cmd) end |
270 | --[[ Damn os.execute() | 270 | --[[ Damn os.execute() |
271 | Lua 5.1 says it returns "a status code, which is system-dependent" | 271 | Lua 5.1 says it returns "a status code, which is system-dependent" |
272 | Lua 5.2 says it returns true/nil, "exit"/"signal", the status code. | 272 | Lua 5.2 says it returns true/nil, "exit"/"signal", the status code. |
@@ -279,9 +279,9 @@ __ = function(c) | |||
279 | self.lines[#self.lines] = nil | 279 | self.lines[#self.lines] = nil |
280 | if true == self.showing then for i, l in ipairs(self.lines) do I(l) end end | 280 | if true == self.showing then for i, l in ipairs(self.lines) do I(l) end end |
281 | 281 | ||
282 | if (nil == self.status) then D("STATUS |" .. "NIL" .. '| ' .. self.command) | 282 | if (nil == self.status) then D('STATUS |' .. 'NIL' .. '| ' .. self.command) |
283 | elseif (137 == self.status) or (124 == self.status) then T("timeout killed " .. self.status .. ' ' .. self.command) | 283 | elseif (137 == self.status) or (124 == self.status) then T('timeout killed ' .. self.status .. ' ' .. self.command) |
284 | elseif (0 ~= self.status) then D("STATUS |" .. self.status .. '| ' .. self.command) | 284 | elseif (0 ~= self.status) then D('STATUS |' .. self.status .. '| ' .. self.command) |
285 | end | 285 | end |
286 | 286 | ||
287 | return self | 287 | return self |
@@ -293,7 +293,7 @@ __ = function(c) | |||
293 | if nil == after then after = '' end | 293 | if nil == after then after = '' end |
294 | if '' ~= after then after = ' ; ' .. after end | 294 | if '' ~= after then after = ' ; ' .. after end |
295 | self.cmd = '{ ' .. self.cmd .. after .. ' ; } & ' | 295 | self.cmd = '{ ' .. self.cmd .. after .. ' ; } & ' |
296 | if true == self.logging then D(" forking - " .. self.cmd) end | 296 | if true == self.logging then D(' forking - ' .. self.cmd) end |
297 | os.execute(self.cmd) | 297 | os.execute(self.cmd) |
298 | return self | 298 | return self |
299 | end | 299 | end |
@@ -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 |
@@ -41,8 +41,8 @@ local options = | |||
41 | _.killEmAll{'jmcore', 'qjackctl'} | 41 | _.killEmAll{'jmcore', 'qjackctl'} |
42 | -- Catia is python, and no easy way to kill it. | 42 | -- Catia is python, and no easy way to kill it. |
43 | -- Also it keeps jackdbus alive, no matter how hard you kill it. | 43 | -- Also it keeps jackdbus alive, no matter how hard you kill it. |
44 | __"pkill -TERM -u $USER -f catia":Do() | 44 | __'pkill -TERM -u $USER -f catia':Do() |
45 | __"sleep 2":Do() | 45 | __'sleep 2':Do() |
46 | _.killEmAll{'jackdbus', 'a2jmidid'} | 46 | _.killEmAll{'jackdbus', 'a2jmidid'} |
47 | ]=] | 47 | ]=] |
48 | end | 48 | end |
@@ -51,10 +51,10 @@ local options = | |||
51 | options['restart'] = options['start'] | 51 | options['restart'] = options['start'] |
52 | options['force-reload'] = options['start'] | 52 | options['force-reload'] = options['start'] |
53 | 53 | ||
54 | print("start = " .. options.start.value) | 54 | print('start = ' .. options.start.value) |
55 | _.parse(arg, options, 'test_') | 55 | _.parse(arg, options, 'test_') |
56 | print("start = " .. options.start.value) | 56 | print('start = ' .. options.start.value) |
57 | print("stop = " .. options.stop.value) | 57 | print('stop = ' .. options.stop.value) |
58 | 58 | ||
59 | 59 | ||
60 | 60 | ||
@@ -112,7 +112,7 @@ print(__[[#!/usr/bin/tcc -run | |||
112 | print('') | 112 | print('') |
113 | 113 | ||
114 | __[[#!/usr/bin/env luajit | 114 | __[[#!/usr/bin/env luajit |
115 | print('Hello ' .. "world " .. [=[from]=] .. " Lua.") | 115 | print('Hello ' .. "world " .. [=[from]=] .. ' Lua.') |
116 | ]]:log():show():Do() | 116 | ]]:log():show():Do() |
117 | print('') | 117 | print('') |
118 | 118 | ||