フェスに出演しました 3

イメージ
アイヌ文化フェスティバル2021に出演しました。 備忘録として。 前日仕込み とはいっても音響は自前の機材をほとんど使わないので、使いそうなモノ(ワイヤレス関連と卓まわり特にPC、インターフェイス関連)だけよりわけて荷揚げです。 スピーカー、卓、PCCなど場所を指定して置いてもらいました。 奥のモニター。いつもの場所にスタンドで立ててもらいました。 メイン&前モニター。 前モニターは場所が厳しくてこの位置に。同軸なので軸外の音の変化がすくないのが良い。 メインはラインアレーなんで、客席では明瞭度が高い。舞台上では、低音の回り込みは少なく客席からの跳ね返りは大きく感じられる。 卓廻り。手前がCL3。奥がCL5。 手元全貌。 PCはいつも通りの右側に戻しました。台本は箱馬を重ねた上にのっています。 緑のトレーは3Dプリンターで作ったもの。RIVAGEに合わせて作ったので、CLには収まりが悪く、ちょっと斜めになっています。 写ってませんがヘッドホンは自前のを引っ張り出してきました。 TBマイクは借りた58です。 案の定、照明、映像に時間がかかり、隙間で音出しして、あとはレイヤーやユーザーデファインドキーの設定に時間を費しました。 カスタムレイヤーの設定 CLのいやらしいところはMIX/MTXのレイヤーがインプットの側のブロックに出せないところ。 こんな風にNanoPadをCentraLogic上に置いちゃうと、MIXにアクセスしにくくなってしまう。 最初はNanoPadをどけながらいじっていたんだけど、かなり面倒。 カスタムレイヤーがみっつ設定できるので、A2に出力用のカスタムを設定したらとたんに便利になりました。LS9的な使い勝手が復活です。 ユーザーデファインドキーの設定 これはLS9にも設定してるんだけど、comp1/EQ/Home画面のbookmark、TB On/Off、TB画面を呼びだせるようにしておくと便利です。 何だか調子が悪い?..本番中に止まる 他団体のリハがお先で進んでいくんだけど、何だか調子が悪い感じ?繋がらないチャンネルがあったり、出音が変だったり… 曰くDanteを目一杯使っていて、かつDanteとMADI変換してるところがあって上手くいってないのではないか、あとCL5自体もおかしい、とのこと。まぢか。困る

Pythonでlambdaをいじる。俺switch使ってみたバカだなもっと単純だ編

実際に今書きかけのRasPi用のpythonスクリプトに使ってみました。
いいね!見違えるほどスッキリ!
でも、やっぱり条件が先がいいし、無駄なものがいっぱいついてる...

ながめているうちに気がついた。
もっと単純でよくね?

クイックソートの例でいうと前回はこうでした。

box=lambda *x:x
unbox=lambda x:x[-1]
    
do=box             
switch=unbox

qs=(lambda xs :
    (lambda
        le = [x for x in xs[1:] if x<=xs[0] ] ,
        gt = [x for x in xs[1:] if x>xs[0] ] :
        switch(
                do( [] ) if xs == [] else False
                or
                do( qs( le ) + [ xs[0] ] + qs( gt ) )
        )
    )()
)
そもそもelse False orいらない。

式1 if 条件1 else 式2 if 条件2 else ...最後の式
と続けても問題ないみたい。

box=lambda *x:x
unbox=lambda x:x[-1]
    
do=box             
switch=unbox

qs=(lambda xs :
    (lambda
        le = [x for x in xs[1:] if x<=xs[0] ] ,
        gt = [x for x in xs[1:] if x>xs[0] ] :
        switch(
                do( [] ) if xs == [] else
                do( qs( le ) + [ xs[0] ] + qs( gt ) )
        )
    )()
)

でも、これがいいんじゃね?


box=lambda *x:x
unbox=lambda x:x[-1]
    
do=box             
switch=unbox

qs=(lambda xs :
    (lambda 
        le = [x for x in xs[1:] if x<=xs[0] ] , 
        gt = [x for x in xs[1:] if x>xs[0] ] :
        switch(
            xs == [] and do( [] )  
            or
            do( qs( le ) + [ xs[0] ] + qs( gt ) )
        )
    )()
)
理屈はほとんど同じです。
switch()の中に、

条件式 and do(式1,式2,...)
をorでいくつもつなげていくことができます。
最後にすべての 条件式 and do(式1,式2,...) が偽になった時の処理をdo(式1,式2,...)で書きます。
do(式1,式2,...)の中味は順番に評価されます。
その結果がタプルとしてswitch()に渡され、タプルの最後の値が返ります。

あるいは、

見た目気にしなければこれでいいんじゃね?

qs=(lambda xs :
    (lambda 
        le = [x for x in xs[1:] if x<=xs[0] ] , 
        gt = [x for x in xs[1:] if x>xs[0] ] :
        (
            xs == [] and ( [], )  
            or
            ( qs( le ) + [ xs[0] ] + qs( gt ) ,)
        )[-1]
    )()
)
何してるかよくわからないけど、すっきりしていてむしろ漢気を感じる。
書くとき[-1]とかコンマとか忘れそう。いや絶対忘れる...

コメント

このブログの人気の投稿

カフボックス作った。andなぜノイズが出る?

シーンでフェードアウト on LIVE

AudioToolsを使ってみた