りんご 小麦粉 バター

舞台照明とポストドラマ演劇とアップルパイとクィア障害学

【ETC Nomad入門ブログ vol.8】パレットの利用

前回までで明かりを作ってキューに記憶することができるようになりました。
ただ、新しいキューを作るたびにインテンシティを打ち込んでカラーピッカーを操作して色を選んで……という操作を繰り返すのは面倒です*1。他のキューで作った明かりの一部分(SSのLEDのカラーやバックサスに使うムービングのポジションなど)を使い回すことができれば便利だと思います。そういった場合に使うのがパレットの機能です。
パレットにはカラーパレット、ビームパレット、フォーカスパレット、インテンシティパレットの4種類があります。そういったパレットにパラメーターの状態を記憶し、それぞれのキューで呼び出すことでそのパレットの内容がキューに反映されるという仕組みです。キューを記憶してしまった後でも、パレットを上書きすることでそのパレットが含まれたすべてのキューに反映させることができます。

パレットの記憶/呼び出し

まずはカラーパレットに記憶してみます。チャンネル7から10のLED灯体のカラーをカラーパレット5番に記憶させる場合のコマンドは次のようになります。

7 スルー(T) 10 レコード(R) カラーパレット(alt + C) 5 (Enter)

記憶したカラーを呼び出すコマンドは次のようになります。いちどカラーピッカーでカラーを変えてから実行してみてください。

7 スルー(T) 10 カラーパレット(alt + C) 5 (Enter)

そうするとカラーが先ほど記憶したものに戻ります。
すべてのチャンネルのインテンシティをインテンシティパレット3に記憶するコマンドは次のようになります。

レコード(R) インテンシティパレット(alt + I) 3 (Enter)

記憶したパラメーターを、含まれているすべてのチャンネルに適用するコマンドは次のようになります。

読込 元(E) インテンシティパレット(alt + I) 3 (Enter)

ライブサマリータブで見てみると、パラメーターが適用されたチャンネルにはBP1やFP4のように適用されたパラメータの種類と番号が表示されます。IPがインテンシティパレット、CPがカラーパレット、FPがフォーカスパレット、BPがビームパレットです。コマンドのショートカットキーもalt + Bでビームパレットやalt + Fでフォーカスパレットといったようになっており、基本的に4種類とも使い方は一緒です。
f:id:appleflourbutter:20200331111704p:plain
また、カラーパレットやインテンシティパレットなど種類ごとのタブを開けばそれぞれのパレットに名前をつけることもできます。

パラメーターごとではなくチャンネルのインテンシティやパラメーターすべてを記憶したい場合もあると思います。そのような場合はプリセットが利用できます。またの機会にご紹介します。
今回はパレットの使い方をご紹介しました。次回は知っておくと便利ないくつかのコマンドについてご紹介します。

*1:もちろん毎回完全に違う明かりになるなら手で打ち込む必要があるわけですが

ArduinoとPythonでsACNノードを作ってみた

3万円くらい出せばELATIONの2ポートノードが買えてしまうらしいので自作するメリットはあまりないんだけど、とりあえず勉強も兼ねて作ってみました。MacArduinoをUSBでつないでArduinoからDMXを出力するので、イメージ的にはETC NomadDMX Gadgetのほうが近いかも。

f:id:appleflourbutter:20200329094505j:plain

PythonsACNライブラリArduinoDMXライブラリを単純に組み合わせただけのもので、スペック的な制約から使えるアドレスは96までになっています。工夫すればもっと使える気もする。

github.com

github.com

コードは以下の通りです。
まずはMac側。sACNの信号を受信してシリアル通信でひたすらArduinoに送り続けます。数値に変化があったところだけ送ったりもしてみたけど、全部送ったほうがよさそう。

import sacn
import serial

ser = serial.Serial('/dev/cu.usbmodem14111',230400, timeout=None, parity=serial.PARITY_EVEN)

receiver = sacn.sACNreceiver()
receiver.start()

@receiver.listen_on('universe', universe=1)
def callback(packet):
    for addr in range(96):
        ser.write(str.encode(str(addr + 1) + "c" + str(packet.dmxData[addr]) + "w"))

receiver.join_multicast(1)

Arduino側。こちらはDMX Simpleのサンプルコードとほとんど同じ。データを受け取ってDMXに反映するだけ。
ArduinoのUARTをLTC485につないで、その出力がDMXとなります。

#include <DmxSimple.h>

void setup() {
  Serial.begin(230400, SERIAL_8E1);
  DmxSimple.maxChannel(96);
}

int value = 0;
int channel;

void loop() {
  int c;

  while(!Serial.available());
  c = Serial.read();
  if ((c>='0') && (c<='9')) {
    value = 10*value + c - '0';
  } else {
    if (c=='c') channel = value;
    else if (c=='w') {
      DmxSimple.write(channel, value);
    }
    value = 0;
  }
}

マイク入力の音量に応じてsACNのDMXレベルを変化させる

マイクに入力された音量に応じてsACNのDMXレベルを変化させるスクリプトを書きました。

動いている様子はこんな感じ。

音声の入力にはsounddevice、sACNの出力にはsACNのライブラリを使っています。sounddeviceは昔のpyaudioに比べて格段に使いやすくなってます。作ってくれた人に感謝。波形のデータがnumpyのアレイとして返ってくるので加工が楽だし速い(気がする)。
github.com github.com

コードはこんな感じ。デフォルトのマイク入力から音声を入力して、その音量に応じてsACNのユニバース1のアドレス1を変化させています。
sd.recがけっこう時間かかって毎回やってると速度が出ないので10秒分まとめてやって、録音の進み具合に合わせて処理も進めています。録音が間に合ってるかどうかは値が0.0より大きいかどうかで判定してるので、ノイズが入ってること前提。
コード上では40fpsで動くはずだけどsACN Viewで見てみると28fpsくらい。

import sounddevice as sd
import numpy as np
import time
import sacn

fs = 48000

sender = sacn.sACNsender()
sender.bind_port = 5564
sender.start()
sender.activate_output(1)
sender[1].multicast = True

rms = 0

while 1==1:
    data = sd.rec(int(480000), samplerate=fs, channels=1)#10秒分一気に
    for cnt in range(400):
        while 0.0 == data[((cnt + 1) * 1200) - 1]:#録音が追いつくまで待つ
            time.sleep(0.0001)
        rms = np.abs(data[cnt*1200: (cnt+1)*1200]).mean()#RMSを計算
        if rms > 1:#クリップ対策
            rms = 1
        sender[1].dmx_data = (int(float(rms)*255), 0, 0)#送信
        print (rms)

【ETC Nomad入門ブログ vol.8】キューの再生とタイムの設定

前回はキューの記憶の仕方を紹介しました。今回はそのキューにタイムを設定して、実際に再生してみたいと思います。

スペースキーをGoボタンとして使う

NomadではスペースキーをGoボタンとして使い、あらかじめ設定したタイムでキューを再生することができます。ただ、インストール時には無効になっているので手動で有効にする必要があります。Altキー*1とGを同時に押すごとに有効/無効が切り替わります。有効にするとスペースキーを押すと次のキューが再生されるようになったと思います。

タイムの設定

キューにタイムを設定すると、Goボタンを押してキューのクロスフェードが始まってから完了するまでの時間を決めることができます。特に指定しない場合*2は5秒になっていると思います。つまり、5秒かけてそのキューにクロスフェードするということです。
例えばキュー16のタイムを7.5秒にしたい場合、コマンドは次のようになります。

キュー(Q) 16 タイム(I) 7.5 (Enter)

また、0秒にするとカットチェンジになります。

キュー(Q) 16 タイム(I) 0 (Enter)

カラーやフォーカス、ビームのタイムの設定

上で紹介したタイムの設定の仕方はインテンシティもカラーもフォーカスも全部含めたタイムの設定でした。キューリストインデックスで見ると、インテンシティだけでなくカラーやフォーカス*3、ビーム*4のタイムも変わっていることがわかると思います。
もちろん、カラーやフォーカス、ビームのタイムも個別で設定することができます。上で紹介したコマンドの途中でタイムのショートカットキーになっているIのキーを複数回押すと、フォーカスタイム、カラータイムなどのように表示が切り替わると思います。
例えばカラーのタイムだけを15秒に設定するコマンドは次のようになります。

キュー(Q) 21.5 カラータイム(I I I I) 15 (Enter)

フォーカスタイムを0秒にするとムービングが素早く次のポジションに飛んでいきます。

キュー(Q) 34 タイム(I I I) 0 (Enter)

チャンネルにディレイをかける

あるチャンネルだけ遅れて変化させたい場合もあると思います。そのような場合に使えるのがディレイです。
チャンネル14のフェードの開始を5秒遅らせたい場合のコマンドは次のようになります。

14 ディレイ(D) 5 (Enter)
レコード(R) (Enter) (Enter)

こうすると、そのキューでのみチャンネル14のフェードの開始が5秒遅れます。

そのチャンネルのみのタイムを設定する

ディレイだとフェードの開始が遅れるだけですが、そのチャンネルのフェードタイム自体を設定したい場合もあると思います。そのような場合、チャンネル個別にタイムを設定することもできます。
チャンネル36のフェードタイムのみ12秒にする場合のコマンドは次のようになります。

36 タイム(I) 12 (Enter)
レコード(R) (Enter) (Enter)

こうすると、フェードの始まるタイミングは一緒のまま違うタイムでフェードします。
今回はキューのタイムの設定の仕方についてご紹介しました。次回はパレットの使い方についてご紹介します。

*1:MacではOptionキー

*2:かつデフォルトのタイムも変えていない場合

*3:ムービングライトの向きのことです

*4:ムービングライトなどのゴボやズームのことです

【ETC Nomad入門ブログ vol.7】キューの記憶

前回までで灯体の操作の仕方を一通り紹介しました。インテンシティもLED灯体のカラーも操作できるようになったので、動きのない明かりであればここまでの内容で作れるはずです。今回は作った明かりをキューとして記憶させる方法を紹介します。
まず、F1を押してライブモードに入ります。ライブモードに入るとコマンドの入力欄にオレンジでライブと表示されると思います。
ライブモードに入った状態で各チャンネルのインテンシティやカラー、フォーカス*1を操作し、明かりを作ります。

キューの保存

そうして作った明かりをキュー1に記憶させる場合のコマンドは次のようになります。

レコード(R) キュー(Q) 1 (Enter)

そうすると、その時点の明かりがキュー1に記憶されます。キュー1の次は2、その次は3、などのように順番に記憶させてキューリストを作っていきます。*2
そうして保存したキューはキューリストインデックスのタブから見ることができます。
f:id:appleflourbutter:20200120235602p:plain キューをたくさん記憶したあとにキュー同士の間に別のキューを挟みたくなることもあると思います。例えばキュー12とキュー13の間にキューを挿入するコマンドは次のようになります。

レコード(R) キュー(Q) 12.5 (Enter)

このコマンドではキュー12と13の間に新しくキュー12.5が挿入されます。12.51、12.52などのようにさらに細かく分けていくことも可能です。

違うキューへの移動

現在のキュー以外の記憶したキューに移動*3し、編集を加えるには移行キューコマンドを使います。キュー6に移動する場合、コマンドは次のようになります。Controlキーを押してからキーボードのGを押してください。

移行キュー(control + G) 6 (Enter)

また、現在編集しているキュー*4を上書きしたい場合はキュー番号を入力する必要がありません。

レコード(R) (Enter) (Enter)

自動でキュー番号が入力され、確認が求められるのでもう一度Enterを押してください。すでに記憶してあるキューを編集する場合は移行キューで編集したいキューに移動し、明かりを編集して上書きをすることになります。

キューの削除

記憶したキューを削除したい場合のコマンドは次のようになります。

(Delete) キュー(Q) 21

このコマンドでキュー21が削除されます。もともと20、21、22と並んでいた場合、キュー21が抜けることで20の次が22になります。
今回はキューの記憶の仕方を紹介しました。次回は記憶したキューのタイムの設定の仕方を紹介します。

*1:EOSではパンやチルトのパラメーターをまとめてフォーカスと呼んでいます

*2:次のキューに記憶させたいときはレコードに続けてNextボタン(Page Down)を押すと次のキューの番号が自動で入力されます

*3:そうするとそのキューが実際の明かりとして出力されます

*4:コマンド入力欄にライブ:に続けて表示されている番号のキューです

【ETC Nomad入門ブログ vol.6】LED灯体やムービングライトの操作

前回はチャンネルのインテンシティの操作の仕方を紹介しました。今回はLED灯体やムービングライトの操作の仕方を紹介します。
LED灯体やムービングライトの場合でも、インテンシティの操作の方法はディマーと変わりません。例えばチャンネル11にパッチした灯体をフルで点灯する場合、コマンドは次のようになります。

11 @ フル(F) (Enter)

MLコントロールタブからパラメーターを操作

インテンシティ以外のパラメーターを操作するときはMLコントロールのタブを使います。ムービングライトの略でMLですが、LED灯体の色のコントロールなどもここから行うことができます。まだ開いていない場合は右端の+ボタンから新しく開いてください。
MLコントロールでパラメーターを操作するには先にチャンネルを選択しておく必要があります。ライブ サマリータブやライブ テーブルタブでチャンネルを直接クリックするか、チャンネル番号に続けてエンターを押してチャンネルを選択してください。

11 (Enter)

チャンネルを選択すると、MLコントロールタブにはこのように表示されます。
f:id:appleflourbutter:20200112120023p:plain
一番左がインテンシティ、その右にカラーピッカー、各LED素子個別のインテンシティ、ヒューとサチュレーションのホイールが並び、一番右にディマカーブの選択ボタンがあります。ホイールの上でマウスでスクロールすると、それに応じて値が変わるようになっています。
ムービングライトの場合はパンやチルトのホイールが加わります。例えばMartinのMac Viper Profileはこのように表示されます。
f:id:appleflourbutter:20200112121238p:plain
機能が多すぎてスクロールしないとすべてのパラメーターを見ることができません。

ホームボタンで元に戻す

たくさんのパラメーターを操作しているうちにどこを変えたのかわからなくなってしまうこともあると思います。そういった場合は家のマークのホームボタンでパラメーターをデフォルトの状態に戻すことができます。ホームボタンは各パラメーターごと、フォーカス、カラーなどの種類ごと、あるいはすべてのパラメーターに適用するもの*1など、適用範囲ごとに用意されています。

今回はLED灯体やムービングライトの操作の仕方を紹介しました。次回はキューの記憶の仕方を紹介します。

*1:MLコントロールタブの一番左にあります。

箱馬やパイプ椅子などの3Dモデルを作りました

年末年始、Vectorworksの勉強も兼ねていくつか3Dモデルを作ってみました。海外製のビジュアライザーには標準で入っていなさそうなものということで、箱馬、平台、パイプ椅子、長机の4つです。
f:id:appleflourbutter:20200103235448p:plain Captureに取り込むとこんな感じ。取り込んで配置したあとにグループ化しないと移動したときに板1枚だけ動いていったりして不便です。
f:id:appleflourbutter:20200103235714p:plain Cinema4D形式のファイルはこちら

https://adobe.ly/2szGoLG

からダウンロードできます。もし必要な方がいたらご自由にお使いください。