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

midi controllerを直す

ずっと使ってきたmidi controllerですが、トリガーしなかったり、逆に二度押しになっちゃったり、時々ちゃんと動かないことがあるようでした。

以前からプログラム的にもいまいちなところがあって、いれかえたいと思っていたので、時間のあるときに新しいものと入れ替えてみました。

そうしたら、取りこぼしがなくなっただけでなく、midi送信のタイミングが体感的にも早くなったような。
とりあえず新しいコードは以下。


#define pushVal 0  //for push-on switches.
//#define pushVal 1  //Otherwise,use this for push -off switches.
#define nd 4  //number of digital switches.
#define msg 176  //controll change. note-on:144 note-off:128

const int inPin[nd] = {4,6,8,10};  //input pins for switches.
const int gndPin[nd] = {5,7,9,11};  //input pins' ground.
const int val1[nd] = {70,71,72,73};  //controll No or note No
int val2[nd];  //controll value or velocity

long time[nd];  //the last time each switches was toggled.
const long debounce = 300;  //debounce time. Increase if the output flickers.

void setup(){
  for(int i=0 ; i < nd ; i++ ){
    pinMode(inPin[i] , INPUT);
    digitalWrite(inPin[i] , HIGH);
    pinMode(gndPin[i] , OUTPUT);
    digitalWrite(gndPin[i] , LOW);
    
    time[i] = millis();
    
    val2[i] = readPin(i);
  }  
    Serial.begin(31250);
}
void loop(){
  int reading;
  long now; 
  
  for(int i = 0 ; i < nd ; i++ ){
    reading = readPin(i);
    
    if(reading != val2[i]){
      now = millis();
      
      if(now-time[i] > debounce){
        val2[i] = reading;
        MIDI_TX(msg , val1[i] , val2[i] );
        time[i] = now;
      }
    }
  }
}

int readPin(int i){
  
  return digitalRead(inPin[i])  == pushVal ? 127 : 0 ;
}

void MIDI_TX(int MESSAGE, int VAL1, int VAL2) 
{
  Serial.print(MESSAGE,BYTE);
  Serial.print(VAL1,BYTE);
  Serial.print(VAL2,BYTE);
}

コードここまで。変更したのは
  1. グローバルで設定していた変数をloop( )内で完結するものはローカル変数にする
  2. 同じ手続を関数にまとめる
  3. 複雑な論理式を分割して単純なものにする
  4. 複雑な論理式を条件演算子で書き換える
それぞれ同じ色のところが対応箇所です。
デバッグ環境がないので本当のところはよく分からないのですが、反応が速くなったということであれば3の論理式の単純化が効いているのかなと思います。

条件演算子はarduinoのマニュアルには載ってなかったけど、同じCだし使えるんじゃね?と思ってやってみたら普通に使えました。こっちのほうが直感的なんで。


スイッチを押して左右にこじるような動きをするとたしかにスイッチが入ったり切れたりするのでそこはハードの問題かなと。なにせ安いスイッチなので。

秋葉原にいって良い(=高い)スイッチを買ってきて付け替えました。

一個650円也。一桁違います。クリック感があって押しやすい。

配線が太すぎて、箱を開けたらはんだづけしてる所が三カ所とれた。不良だったんだね。
とりあえず付け直してそっと閉じる。その内、配線し直します。



コメント

このブログの人気の投稿

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

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

AudioToolsを使ってみた