Error processing request

Parameters

CONTENT_LENGTH0
REQUEST_METHODGET
REQUEST_URI/revision/Automatically+starting+up+a+chain+of+mastering+effects+with+tcl?V=10
QUERY_STRINGV=10
CONTENT_TYPE
DOCUMENT_URI/revision/Automatically+starting+up+a+chain+of+mastering+effects+with+tcl
DOCUMENT_ROOT/var/www/nikit/nikit/nginx/../docroot
SCGI1
SERVER_PROTOCOLHTTP/1.1
HTTPSon
REMOTE_ADDR172.71.254.203
REMOTE_PORT28122
SERVER_PORT4443
SERVER_NAMEwiki.tcl-lang.org
HTTP_HOSTwiki.tcl-lang.org
HTTP_CONNECTIONKeep-Alive
HTTP_ACCEPT_ENCODINGgzip, br
HTTP_X_FORWARDED_FOR3.17.174.239
HTTP_CF_RAY880676a25f5e230b-ORD
HTTP_X_FORWARDED_PROTOhttps
HTTP_CF_VISITOR{"scheme":"https"}
HTTP_ACCEPT*/*
HTTP_USER_AGENTMozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; [email protected])
HTTP_CF_CONNECTING_IP3.17.174.239
HTTP_CDN_LOOPcloudflare
HTTP_CF_IPCOUNTRYUS

Body


Error

Unknow state transition: LINE -> END

-code

1

-level

0

-errorstack

INNER {returnImm {Unknow state transition: LINE -> END} {}} CALL {my render_wikit {Automatically starting up a chain of mastering effects with tcl} {While trying out Linux mastering audio effect chains using jackrack and other programs, I had to start up 10 multiband compressor units and other programs and lay connections using the the Jack audio tools, without laying dozens of audio connections by hand, so I tried using a Tcl script to see if that would work and what the difficulties would be:
======
 set u onebandco

 for {set i 1} {$i<=10} {incr i} {
   after 2000
   exec jack-rack -c 2 -s $i /home/theo/Jackrack/${u}b$i &
 }

 catch {
 exec meterbridge -t dpm -n bridge -r 0  1 2 3 4 5 6 7 8 9 10  &
 exec jack-rack -c 2 -s aaa /home/theo/Jackrack/10bandinoutloudness2  &
 exec jack-rack -c 2 -s par /home/theo/Jackrack/10bandpar2  &
 }

 after 5000

 for {set i 1} {$i<=10} {incr i} {
   catch "exec jack_connect jack_rack_$i:out_1 bridge:meter_$i"
   catch "exec jack_connect jack_rack_$i:out_2 bridge:meter_$i"
 }

 for {set i 1} {$i<=10} {incr i} {
   catch "exec jack_connect jack_rack_$i:out_1 jack_rack_par:in_1"
   catch "exec jack_connect jack_rack_$i:out_2 jack_rack_par:in_2"
 }

 for {set i 1} {$i<=10} {incr i} {
   catch "exec jack_connect jack_rack_aaa:out_1 jack_rack_$i:in_1"
   catch "exec jack_connect jack_rack_aaa:out_2 jack_rack_$i:in_2"
 }
======
The above script works, but it doesn't check when the started programs are ready 
to lay connections to (the jack conenection part has have had to run) it simply 
delays an amount of time to make sure the processing programs and their UI's have started up with X windows.

An impression of the result:

[Image TV Kurz calforg135m.jpg]

Clearly, before I could use [BWise] for similar and more tasks like this I need
to check out jack-connections and communicate the results back to tcl (tk), maybe I'll try a hack to check the output of the programs (they report on stdout), and then make sure they continue to run after the startup script has terminated.

-------
Sep 1 '11 [TV] I made a more complicated reverse-mastering chain with this script which contains "waits" fro when jack-rack applications are execed which require the user to press "ok" for a non-realtime effect and it lists PIDs of some more Linux effects startedup  and connected:

======
set u ./


catch { 
 exec meterbridge -t dpm -n out -r 0  1 2    &
 exec meterbridge -t dpm -n om -r 0  1 2    &
 exec jack-rack -c 2 -s 4cdplay 4cdplay  &
}
gets stdin
after 1000
catch { 
 exec jack-rack -c 2 -s del2 del2  &
 exec jack-rack -c 2 -s del3 del3  &
 exec jack-rack -c 2 -s lexret lexret  &
}

after 1000


   catch "exec jack_connect jack_rack_4cdplay:out_1 jack_rack_del2:in_1"
   catch "exec jack_connect jack_rack_4cdplay:out_2 jack_rack_del2:in_2"
   append o [exec jack-rack -c 2 -s fb2 fb2 &] " "
gets stdin
   after 500

   catch "exec jack_connect jack_rack_4cdplay:out_1 jack_rack_fb2:in_1"
   catch "exec jack_connect jack_rack_4cdplay:out_2 jack_rack_fb2:in_2"

   after 500
   append o [exec jamin -c 2 -p -n jam -f default.jam &] " "
   after 1000

   catch "exec jack_connect jack_rack_fb2:out_1 jam:in_L"
   catch "exec jack_connect jack_rack_fb2:out_2 jam:in_R"
   after 500
   append o [exec jack-rack -c 2 -s ofb2 ofb2 &] " "
   after 1000
   catch "exec jack_connect jam:out_L jack_rack_ofb2:in_1"
   catch "exec jack_connect jam:out_R jack_rack_ofb2:in_2"
gets stdin

after 1000


for {set i 1} {$i<=4} {incr i} {
   after 500
   append o [exec jack-rack -c 2 -s dc$i ${u}dc${i}  &] " "
gets stdin
}

catch { 
 exec meterbridge -t dpm -n bridge4 -r 0  1 2 3 4   &
#exec jack-rack -c 2 -s cic ${u}cic  &
#exec jack-rack -c 2 -s cdplay2 ${u}cdplayc  &
exec jack-rack -c 2 -s cdplay2 cdplay2  &
exec jack-rack -c 2 -s louc ${u}louc  &
}

after 1000
   catch "exec jack_connect jack_rack_del2:out_1 jack_rack_cdplay2:in_1"
   catch "exec jack_connect jack_rack_del2:out_2 jack_rack_cdplay2:in_2"
after 1000
   catch "exec jack_connect jack_rack_ofb2:out_1 jack_rack_cdplay2:in_1"
   catch "exec jack_connect jack_rack_ofb2:out_2 jack_rack_cdplay2:in_2"

 for {set i 1} {$i<=4} {incr i} {
    catch "exec jack_connect jack_rack_dc$i:out_1 bridge4:meter_$i"
    catch "exec jack_connect jack_rack_dc$i:out_2 bridge4:meter_$i"
 }

for {set i 1} {$i<=4} {incr i} {
   catch "exec jack_connect jack_rack_dc$i:out_1 jack_rack_louc:in_1"
   catch "exec jack_connect jack_rack_dc$i:out_2 jack_rack_louc:in_2"
}

for {set i 1} {$i<=4} {incr i} {
   catch "exec jack_connect jack_rack_cdplay2:out_1 jack_rack_dc$i:in_1"
   catch "exec jack_connect jack_rack_cdplay2:out_2 jack_rack_dc$i:in_2"
#   catch "exec jack_connect jack_rack_vol1:out_1 jack_rack_dc$i:in_1"
#   catch "exec jack_connect jack_rack_vol1:out_2 jack_rack_dc$i:in_2"
}

    catch "exec jack_connect jack_rack_ofb2:out_1 om:meter_1"
    catch "exec jack_connect jack_rack_ofb2:out_2 om:meter_2"
    catch "exec jack_connect jack_rack_louc:out_1 jack_rack_del3:in_1"
    catch "exec jack_connect jack_rack_louc:out_2 jack_rack_del3:in_2"
    catch "exec jack_connect jack_rack_del3:out_1 out:meter_1"
    catch "exec jack_connect jack_rack_del3:out_2 out:meter_2"
    catch "exec jack_connect jack_rack_lexret:out_1 out:meter_1"
    catch "exec jack_connect jack_rack_lexret:out_2 out:meter_2"

puts $o

======

I know there should be a [BWise] connection but I didn't get to that (though jack_lsp should work) so if someone feels like it...

People interested in what I use this TCL script for, see here: http://www.theover.org/Prod/studiosound.html .

Dec 10 '16 [TV]
I've made the following a little more interesting startup script with an adapted version of jack-rack, which allows for using tcl for parameterizing the locations of the windows:
======
#
#
#

# Directory (possibly relative) with "current" instances of jack-racks
set u ./Current/

for {set i 1} {$i<=10} {incr i} {
   after 400
   append o [exec jack-rack -c 2 -s loudfilter$i ${u}filter$i -x [expr 500+$i*20] -y [expr 50+$i *30] -l 350 -w 450 &] " "
}

for {set i 1} {$i<=10} {incr i} {
   after 400
   append o [exec jack-rack -c 2 -s loudcosu$i ${u}comprsubtr$i -x [expr 900+$i*20] -y [expr 50+$i *30] -l 600 -w 450 &] " "
}

catch { 
exec meterbridge -t dpm -n loudbridge -r 0  1 2 3 4 5 6 7 8 9 10 &
##set i 0
exec jack-rack -c 2 -s loudin ${u}loudin  -x [expr 700+$i*20] -y [expr 50+[incr i] *30] -l 400 -w 450  &
exec jack-rack -c 2 -s loudout ${u}loudout  -x [expr 700+$i*20] -y [expr 50+[incr i] *30] -l 400 -w 450  &
exec jack-rack -c 2 -s passhalf ${u}pass_half  -x [expr 700+$i*20] -y [expr 50+[incr i] *30] -l 400 -w 450  &
}

after 1000

catch "exec jack_connect jack_rack_loudin:out_1 jack_rack_passhalf:in_1"
catch "exec jack_connect jack_rack_loudin:out_2 jack_rack_passhalf:in_2"
catch "exec jack_connect jack_rack_passhalf:out_1 jack_rack_loudout:in_1"
catch "exec jack_connect jack_rack_passhalf:out_2 jack_rack_loudout:in_2"

after 1000

for {set i 1} {$i<=10} {incr i} {
   catch "exec jack_connect jack_rack_loudfilter$i:out_1 loudbridge:meter_$i"
   catch "exec jack_connect jack_rack_loudfilter$i:out_2 loudbridge:meter_$i"
   catch "exec jack_connect jack_rack_loudcosu$i:out_1 loudbridge:meter_$i"
   catch "exec jack_connect jack_rack_loudcosu$i:out_2 loudbridge:meter_$i"
}


for {set i 1} {$i<=10} {incr i} {
   catch "exec jack_connect jack_rack_loudin:out_1 jack_rack_loudfilter$i:in_1"
   catch "exec jack_connect jack_rack_loudin:out_2 jack_rack_loudfilter$i:in_2"
}
for {set i 1} {$i<=10} {incr i} {
   catch "exec jack_connect jack_rack_loudfilter$i:out_1 jack_rack_loudcosu$i:in_1"
   catch "exec jack_connect jack_rack_loudfilter$i:out_2 jack_rack_loudcosu$i:in_2"
}
for {set i 1} {$i<=10} {incr i} {
   catch "exec jack_connect jack_rack_loudfilter$i:out_1 jack_rack_loudout:in_1"
   catch "exec jack_connect jack_rack_loudfilter$i:out_2 jack_rack_loudout:in_2"
}
for {set i 1} {$i<=10} {incr i} {
   catch "exec jack_connect jack_rack_loudcosu$i:out_1 jack_rack_loudout:in_1"
   catch "exec jack_connect jack_rack_loudcosu$i:out_2 jack_rack_loudout:in_2"
}

The script start up a Equal Loudness Curve related set of filters/dynamics processing.
Screenshot
======
[Image Loudness1]
======


<<categories>> Unix | Sound} regexp2} CALL {my render {Automatically starting up a chain of mastering effects with tcl} {While trying out Linux mastering audio effect chains using jackrack and other programs, I had to start up 10 multiband compressor units and other programs and lay connections using the the Jack audio tools, without laying dozens of audio connections by hand, so I tried using a Tcl script to see if that would work and what the difficulties would be:
======
 set u onebandco

 for {set i 1} {$i<=10} {incr i} {
   after 2000
   exec jack-rack -c 2 -s $i /home/theo/Jackrack/${u}b$i &
 }

 catch {
 exec meterbridge -t dpm -n bridge -r 0  1 2 3 4 5 6 7 8 9 10  &
 exec jack-rack -c 2 -s aaa /home/theo/Jackrack/10bandinoutloudness2  &
 exec jack-rack -c 2 -s par /home/theo/Jackrack/10bandpar2  &
 }

 after 5000

 for {set i 1} {$i<=10} {incr i} {
   catch "exec jack_connect jack_rack_$i:out_1 bridge:meter_$i"
   catch "exec jack_connect jack_rack_$i:out_2 bridge:meter_$i"
 }

 for {set i 1} {$i<=10} {incr i} {
   catch "exec jack_connect jack_rack_$i:out_1 jack_rack_par:in_1"
   catch "exec jack_connect jack_rack_$i:out_2 jack_rack_par:in_2"
 }

 for {set i 1} {$i<=10} {incr i} {
   catch "exec jack_connect jack_rack_aaa:out_1 jack_rack_$i:in_1"
   catch "exec jack_connect jack_rack_aaa:out_2 jack_rack_$i:in_2"
 }
======
The above script works, but it doesn't check when the started programs are ready 
to lay connections to (the jack conenection part has have had to run) it simply 
delays an amount of time to make sure the processing programs and their UI's have started up with X windows.

An impression of the result:

[Image TV Kurz calforg135m.jpg]

Clearly, before I could use [BWise] for similar and more tasks like this I need
to check out jack-connections and communicate the results back to tcl (tk), maybe I'll try a hack to check the output of the programs (they report on stdout), and then make sure they continue to run after the startup script has terminated.

-------
Sep 1 '11 [TV] I made a more complicated reverse-mastering chain with this script which contains "waits" fro when jack-rack applications are execed which require the user to press "ok" for a non-realtime effect and it lists PIDs of some more Linux effects startedup  and connected:

======
set u ./


catch { 
 exec meterbridge -t dpm -n out -r 0  1 2    &
 exec meterbridge -t dpm -n om -r 0  1 2    &
 exec jack-rack -c 2 -s 4cdplay 4cdplay  &
}
gets stdin
after 1000
catch { 
 exec jack-rack -c 2 -s del2 del2  &
 exec jack-rack -c 2 -s del3 del3  &
 exec jack-rack -c 2 -s lexret lexret  &
}

after 1000


   catch "exec jack_connect jack_rack_4cdplay:out_1 jack_rack_del2:in_1"
   catch "exec jack_connect jack_rack_4cdplay:out_2 jack_rack_del2:in_2"
   append o [exec jack-rack -c 2 -s fb2 fb2 &] " "
gets stdin
   after 500

   catch "exec jack_connect jack_rack_4cdplay:out_1 jack_rack_fb2:in_1"
   catch "exec jack_connect jack_rack_4cdplay:out_2 jack_rack_fb2:in_2"

   after 500
   append o [exec jamin -c 2 -p -n jam -f default.jam &] " "
   after 1000

   catch "exec jack_connect jack_rack_fb2:out_1 jam:in_L"
   catch "exec jack_connect jack_rack_fb2:out_2 jam:in_R"
   after 500
   append o [exec jack-rack -c 2 -s ofb2 ofb2 &] " "
   after 1000
   catch "exec jack_connect jam:out_L jack_rack_ofb2:in_1"
   catch "exec jack_connect jam:out_R jack_rack_ofb2:in_2"
gets stdin

after 1000


for {set i 1} {$i<=4} {incr i} {
   after 500
   append o [exec jack-rack -c 2 -s dc$i ${u}dc${i}  &] " "
gets stdin
}

catch { 
 exec meterbridge -t dpm -n bridge4 -r 0  1 2 3 4   &
#exec jack-rack -c 2 -s cic ${u}cic  &
#exec jack-rack -c 2 -s cdplay2 ${u}cdplayc  &
exec jack-rack -c 2 -s cdplay2 cdplay2  &
exec jack-rack -c 2 -s louc ${u}louc  &
}

after 1000
   catch "exec jack_connect jack_rack_del2:out_1 jack_rack_cdplay2:in_1"
   catch "exec jack_connect jack_rack_del2:out_2 jack_rack_cdplay2:in_2"
after 1000
   catch "exec jack_connect jack_rack_ofb2:out_1 jack_rack_cdplay2:in_1"
   catch "exec jack_connect jack_rack_ofb2:out_2 jack_rack_cdplay2:in_2"

 for {set i 1} {$i<=4} {incr i} {
    catch "exec jack_connect jack_rack_dc$i:out_1 bridge4:meter_$i"
    catch "exec jack_connect jack_rack_dc$i:out_2 bridge4:meter_$i"
 }

for {set i 1} {$i<=4} {incr i} {
   catch "exec jack_connect jack_rack_dc$i:out_1 jack_rack_louc:in_1"
   catch "exec jack_connect jack_rack_dc$i:out_2 jack_rack_louc:in_2"
}

for {set i 1} {$i<=4} {incr i} {
   catch "exec jack_connect jack_rack_cdplay2:out_1 jack_rack_dc$i:in_1"
   catch "exec jack_connect jack_rack_cdplay2:out_2 jack_rack_dc$i:in_2"
#   catch "exec jack_connect jack_rack_vol1:out_1 jack_rack_dc$i:in_1"
#   catch "exec jack_connect jack_rack_vol1:out_2 jack_rack_dc$i:in_2"
}

    catch "exec jack_connect jack_rack_ofb2:out_1 om:meter_1"
    catch "exec jack_connect jack_rack_ofb2:out_2 om:meter_2"
    catch "exec jack_connect jack_rack_louc:out_1 jack_rack_del3:in_1"
    catch "exec jack_connect jack_rack_louc:out_2 jack_rack_del3:in_2"
    catch "exec jack_connect jack_rack_del3:out_1 out:meter_1"
    catch "exec jack_connect jack_rack_del3:out_2 out:meter_2"
    catch "exec jack_connect jack_rack_lexret:out_1 out:meter_1"
    catch "exec jack_connect jack_rack_lexret:out_2 out:meter_2"

puts $o

======

I know there should be a [BWise] connection but I didn't get to that (though jack_lsp should work) so if someone feels like it...

People interested in what I use this TCL script for, see here: http://www.theover.org/Prod/studiosound.html .

Dec 10 '16 [TV]
I've made the following a little more interesting startup script with an adapted version of jack-rack, which allows for using tcl for parameterizing the locations of the windows:
======
#
#
#

# Directory (possibly relative) with "current" instances of jack-racks
set u ./Current/

for {set i 1} {$i<=10} {incr i} {
   after 400
   append o [exec jack-rack -c 2 -s loudfilter$i ${u}filter$i -x [expr 500+$i*20] -y [expr 50+$i *30] -l 350 -w 450 &] " "
}

for {set i 1} {$i<=10} {incr i} {
   after 400
   append o [exec jack-rack -c 2 -s loudcosu$i ${u}comprsubtr$i -x [expr 900+$i*20] -y [expr 50+$i *30] -l 600 -w 450 &] " "
}

catch { 
exec meterbridge -t dpm -n loudbridge -r 0  1 2 3 4 5 6 7 8 9 10 &
##set i 0
exec jack-rack -c 2 -s loudin ${u}loudin  -x [expr 700+$i*20] -y [expr 50+[incr i] *30] -l 400 -w 450  &
exec jack-rack -c 2 -s loudout ${u}loudout  -x [expr 700+$i*20] -y [expr 50+[incr i] *30] -l 400 -w 450  &
exec jack-rack -c 2 -s passhalf ${u}pass_half  -x [expr 700+$i*20] -y [expr 50+[incr i] *30] -l 400 -w 450  &
}

after 1000

catch "exec jack_connect jack_rack_loudin:out_1 jack_rack_passhalf:in_1"
catch "exec jack_connect jack_rack_loudin:out_2 jack_rack_passhalf:in_2"
catch "exec jack_connect jack_rack_passhalf:out_1 jack_rack_loudout:in_1"
catch "exec jack_connect jack_rack_passhalf:out_2 jack_rack_loudout:in_2"

after 1000

for {set i 1} {$i<=10} {incr i} {
   catch "exec jack_connect jack_rack_loudfilter$i:out_1 loudbridge:meter_$i"
   catch "exec jack_connect jack_rack_loudfilter$i:out_2 loudbridge:meter_$i"
   catch "exec jack_connect jack_rack_loudcosu$i:out_1 loudbridge:meter_$i"
   catch "exec jack_connect jack_rack_loudcosu$i:out_2 loudbridge:meter_$i"
}


for {set i 1} {$i<=10} {incr i} {
   catch "exec jack_connect jack_rack_loudin:out_1 jack_rack_loudfilter$i:in_1"
   catch "exec jack_connect jack_rack_loudin:out_2 jack_rack_loudfilter$i:in_2"
}
for {set i 1} {$i<=10} {incr i} {
   catch "exec jack_connect jack_rack_loudfilter$i:out_1 jack_rack_loudcosu$i:in_1"
   catch "exec jack_connect jack_rack_loudfilter$i:out_2 jack_rack_loudcosu$i:in_2"
}
for {set i 1} {$i<=10} {incr i} {
   catch "exec jack_connect jack_rack_loudfilter$i:out_1 jack_rack_loudout:in_1"
   catch "exec jack_connect jack_rack_loudfilter$i:out_2 jack_rack_loudout:in_2"
}
for {set i 1} {$i<=10} {incr i} {
   catch "exec jack_connect jack_rack_loudcosu$i:out_1 jack_rack_loudout:in_1"
   catch "exec jack_connect jack_rack_loudcosu$i:out_2 jack_rack_loudout:in_2"
}

The script start up a Equal Loudness Curve related set of filters/dynamics processing.
Screenshot
======
[Image Loudness1]
======


<<categories>> Unix | Sound}} CALL {my revision {Automatically starting up a chain of mastering effects with tcl}} CALL {::oo::Obj353 process revision/Automatically+starting+up+a+chain+of+mastering+effects+with+tcl} CALL {::oo::Obj351 process}

-errorcode

NONE

-errorinfo

Unknow state transition: LINE -> END
    while executing
"error $msg"
    (class "::Wiki" method "render_wikit" line 6)
    invoked from within
"my render_$default_markup $N $C $mkup_rendering_engine"
    (class "::Wiki" method "render" line 8)
    invoked from within
"my render $name $C"
    (class "::Wiki" method "revision" line 31)
    invoked from within
"my revision $page"
    (class "::Wiki" method "process" line 56)
    invoked from within
"$server process [string trim $uri /]"

-errorline

4