フェスに出演しました 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自体もおかしい、とのこと。まぢか。困る

RaspberryPi2で再生機作ってみました。動きました。で、現状ボツってことで...

CDやらメモリーやらの再生機の調子が悪いので、もっとちゃんと音が出てお手軽でしかも安いのが出来ないか?というのが発端です。
結果としては、動くことは動くがあまりよろしくない部分が大きいので、現状ではボツです。
時々、カーネルエラーで動かなくなる。
起動してしばらくするとfsckエラーが出る。ノイズあり。その後普通に使える。
時々、エンコードエラーが出る。その後普通に再生できる。
起動が遅い。
で、資料として置いときます。色々改善されたらまた引っ張りだすかも。

raspberry pi2にVolumioを入れる。
USB DACから音を出す。
GPIOにつけたスイッチからコントロールする。
空いているSDの領域に/USBを作る。
Ramdiskを作る。
/USBをsambaで公開する。
ファイルを/USBに入れる。
ブラウザでアクセスして諸設定。

以下のコードをmy_btn_ctrl.pyとして自動起動するようにする。


#/usr/bin/python
#-*- coding: utf-8 -*-

import time
import subprocess as SP
import re

B_ON = 0
B_OFF = 1

DEB_TIME = 0.05
SHORT_TIME = 0.5
HALT_TIME = 2

RE_PLAY = re.compile(r'\[playing\]')
RE_TIME = re.compile(r'\d{1,3}:\d{2}')

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

is_debounced = (lambda last_push , now , deb_time = DEB_TIME : 
    now - last_push < deb_time
    ) 

is_short = (lambda last_push, now, short_time= SHORT_TIME:
    is_debounced(last_push, now, short_time)
    )

near_head=(lambda limit_second=5:
    (lambda s= SP.check_output("mpc", shell = True):
    (lambda a=RE_TIME.search(s):
    (lambda time_list=[int(x) for x in re.split(':',a.group()) ]:
        switch(
            a is not None and   do(time_list[0] is 0 and time_list[1] <= limit_second )
            or                  do(True)
        )
    )()
    )()
    )()
) 
is_head=(lambda :
        near_head( limit_second = 0 )
)

is_playing =( lambda :
    (lambda s= SP.check_output("mpc", shell = True):
    (lambda a=RE_PLAY.search(s): 
        (a is not None)
    )()
    )()
)

play_func =(lambda:
    switch(
        is_playing() and do(SP.call("mpc next" , shell = True )) 
        or              do(SP.call("mpc play" , shell = True ))
    )
)

pause_func=(lambda:
    SP.call('mpc pause',shell=True)
)

playpause_update =(lambda cur_state, new_state, last_push, now, func :
    switch(
        cur_state is B_OFF and new_state is B_ON and do( (func() , now ) )
        or                                              do(         last_push )
    )
)  
  
prev_func=(lambda :
    switch(
        is_head() and do(SP.call('mpc play;mpc prev;mpc pause',shell=True))
        or          do(SP.call('mpc seek 0;mpc pause',shell=True))
    )
)

rew_func=(lambda :
    switch(
        near_head() and do(SP.call('mpc seek 0;mpc pause',shell=True))
        is_head()   and do(True)
        or do(SP.call('mpc seek -00:00:05',shell=True))
    )
)

fwd_func=(lambda :
    SP.call('mpc next;mpc pause',shell=True)   
) 

ff_func=(lambda :
    SP.call('mpc seek +00:00:05',shell=True)
)

prevfwd_update=(lambda cur_state, new_state, last_push, now, skip_func, seek_func :
    (lambda short=is_short(last_push, now) :
        switch(
            cur_state is B_OFF and new_state is B_OFF and do(               last_push )
            or cur_state is B_OFF                       and do(             now )
            or      new_state is B_OFF and short        and do(skip_func() , last_push )
            or      new_state is B_OFF                  and do(             last_push )
            or          short                            and do(            last_push )
            or                                              do( seek_func(), last_push ) 
        )
   )()
)  

halt_func=(lambda:
    SP.call('halt',shell=True)
)

halt_update=(lambda cur_state, new_state, last_push, now :
    (lambda flag_halt = (now - last_push) > HALT_TIME :
        switch(
            new_state is B_OFF      and do( (last_push, False ) )  
            or cur_state is B_OFF   and do( (now, False ) ) 
            or      not flag_halt   and do( (last_push, False ) )
            or                      do( (last_push, True ) )
        )
    )()
)

if __name__ == '__main__':
    
    setup=(lambda :
        SP.call('cp -rp /mnt/USB /run/shm/;mpc update;mpc volume 100',shell=True)
    )
    
    def main() :
        import RPi.GPIO as GPIO
        setup()
        
        GPIO.setmode(GPIO.BOARD) 
        GPIO.setwarnings( False ) 
        
        PIN_PREV = 8 
        PIN_PLAY = 10 
        PIN_PAUSE = 7 
        PIN_FWD = 12 
        PIN_HALT = 11 
        
        GPIO.setup(PIN_PREV, GPIO.IN, pull_up_down=GPIO.PUD_UP) 
        GPIO.setup(PIN_PLAY, GPIO.IN, pull_up_down=GPIO.PUD_UP) 
        GPIO.setup(PIN_PAUSE, GPIO.IN, pull_up_down=GPIO.PUD_UP) 
        GPIO.setup(PIN_FWD, GPIO.IN, pull_up_down=GPIO.PUD_UP) 
        GPIO.setup(PIN_HALT, GPIO.IN, pull_up_down=GPIO.PUD_UP) 
        
        prev_cur=B_OFF 
        play_cur=B_OFF
        pause_cur=B_OFF
        fwd_cur=B_OFF
        halt_cur=B_OFF
        
        do_halt=False
        
        now=time.time()
        prev_last=now
        play_last=now
        pause_last=now
        fwd_last=now
        halt_last=now
        
        while not do_halt:
            now=time.time()
            prev_new = GPIO.input(PIN_PREV)
            fwd_new = GPIO.input(PIN_FWD )
            play_new = GPIO.input(PIN_PLAY)
            pause_new = GPIO.input(PIN_PAUSE)
            halt_new = GPIO.input(PIN_HALT)
            prev_last = prevfwd_update( prev_cur, prev_new, prev_last, now, prev_func, rew_func )
            fwd_last = prevfwd_update( fwd_cur, fwd_new, fwd_last,  now, fwd_func, ff_func )
            play_last = playpause_update( play_cur, play_new, play_last, now, play_func )
            pause_last= playpause_update( pause_cur, pause_new, pause_last, now, pause_func )
            halt_last, do_halt = halt_update( halt_cur, halt_new, halt_last,  now)
            prev_cur = prev_new
            fwd_cur = fwd_new 
            play_cur = play_new
            pause_cur = pause_new
            halt_cur =  halt_new
            time.sleep(DEB_TIME)
        
        GPIO.cleanup()
        halt_func()
        
    main()
        


コメント

このブログの人気の投稿

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

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

AudioToolsを使ってみた