ラズパイでATEMスイッチャーのコントローラーを自作する!
まえがき
ATEMスイッチャーのコントロールには様々な方法があります。
本体の物理ボタンから操作 / ATEM Software Control / Advanced Panel のような、いわゆる純正のコントロール方法や 、
Live Command PROX / SKAARHOJ / Stream Deck のような、サードパーティ製のコントロール方法まで様々です。
それぞれにおいて操作性や価格、安定性、可搬性など利点の違いはありますが、今回はRaspberry Piを用いたコントローラー自作方法を紹介します。
なぜ、ラズパイで自作?
わざわざ自作しなくても良いじゃん… と思われるかもしれませんが、GPIO&USBが同時に使えるシングルボードコンピュータは、案外メリットが多いように思います。
例えば、DSK操作のような"ATEM Software Control上でキーボードから操作できないようなもの"も、これを使用すれば実現できます。非常に便利です。
メリット
そこそこ安い
設定・運用に別途PCが要らない
自分好みに・簡単に操作コマンドを指定できる
コントロールだけでなく、ATEMの情報を受信できる(データロガー的な)
USBキーボード・GPIOの両方使用で高いカスタム性
デメリット
安いと言ってもArduino等よりは高い
設定には別途モニタが必要
メディアプールの中身変更は今のところ出来ない
OSの上に制御ソフトが乗っかるので、他の組み込みマイコンよりは安定性が劣る(とはいえどそこそこ安定してます)
簡単な仕組み
詳細は多分後述しますが、とりあえず大まかな動作原理を説明
使用するソフトは、Node-REDです。
SKAARHOJ & 有志の方が、Node-RED上でATEMスイッチャーを操作できるライブラリを公開してくれています。今回はこのライブラリを用いて、ラズパイからイーサネット経由で制御信号のやり取りを行います。
必要なもの
Raspberry Pi 本体
ラズパイ駆動に必要なSDカード・電源・ケーブル類
テンキー
設定時:マウス・キーボード・モニタ
たったこれだけです。ラズパイ以外は既にお持ちの方も多いかと思います。気軽に始められるのは良いですね。
あると更に便利なもの
プログラマブルキーボード
テンキーと違ってボタンの大きさがすべて同じなので見た目が良い!
青軸なのでカチカチ押せて、ボタン感がある!
LED・抵抗など
GPIOピンからタリーランプを作ったりも出来ます。
USBとGPIOの両方が使えるラズパイならではの利点です!
作り方
ラズパイのセットアップまでは軽く紹介します。
ネットでも様々紹介があるのでそちらも参照してください。
① ラズパイOSをSDカードにコピー
こちらのサイト(ラズパイ公式)にアクセス。ラズパイ起動用のメディアが作成できます。
ダウンロードしたファイルを開き、画面に沿ってインストールをする
ソフトを起動するとこんな感じ
OSは32bit (or RAM8GB版なら64bit)を選択
ストレージは32GB程度のMicroSDカードを用意。
(OS書き込み時、中身はフォーマットされるので注意)
OS・ストレージを正しく選択したら書き込み開始!
5分程度で終わるかと思います。
② ラズパイ本体のセットアップ
OSを書き込んだSDカードを本体にセット。
モニタ・キーボード・マウス類を接続した状態で、最後に電源を接続。
※モニタを繋がず先に電源を入れると、映像が映らないトラブルが起きる場合があります。
HDMI接続が認識できないと、コンポジット出力になるため? だそうです。
その場合の解決策↓
③ Node-REDのインストール
公式のインストールマニュアル
端末で下記のコードを実行するだけです
bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)
本当にインストールしますか? と聞かれるので "Y"(Yes)と入力
Are you really sure you want to do this ? [y/N] ?
ラズパイで使えるノードを追加するか聞かれるので "Y"(Yes)と入力
Noを選択すると、GPIOが多分使えません。
Would you like to install the Pi-specific nodes ? [y/N] ?
最後に、色々な設定を今しますか?と聞かれるので、とりあえずNoを選択
これでインストールは終了です。
Node-REDが自動起動するようにする
このままでは、ラズパイの電源を入れるためにNode-REDを起動する必要があります。
現場ですぐに使えないので、自動起動の設定を行います。
端末で下記のコードを実行するだけです
sudo systemctl enable nodered.service
設定が終わったら、一度再起動しましょう。
④ Node-REDを起動・ATEM用のライブラリを入手
インターネットブラウザで下記のアドレスを開きます
Node-REDが正しく起動していると、こんな画面が出るはずです。
まずはATEMスイッチャーのライブラリを入れます。
右上の 三 から、パレットの管理をクリック
ノードを追加 から、 「ATEM」と検索し、
下記のノードを追加します。
画面左のパレットに BlackMagic というノードが追加されました。
ノードをドラッグアンドドロップし、ダブルクリックすると設定が開きます。
下記のように設定してください。
Networkの鉛筆マークをクリックし、接続したいスイッチャーのIPアドレスを設定 & 更新
⑤ ラズパイのIPアドレスを設定する
ラズパイのイーサネット設定から、IPアドレスを固定にしてください。
この際、ATEM本体と同じネットワークになるように適切な値への設定が必要です。
設定は以上です!
⑤ 動作テスト
まずはこちらをダウンロードしてください。
このファイルは、下記のようなノード構成が保存されています。
スイッチャーのIPアドレスは192.168.10.240です。
読込は、左上の 三 から読み込みをクリック
読み込むファイルを選択 から、ダウンロードした.jsonを開きます。
読み込んだら、右上のデプロイを押します。
これにより、自分で作ったノードが実行可能な状態に変換されます。
デプロイが終わったら、いよいよ動作確認です。
ラズパイとATEMをLANケーブルで接続してください。
10秒ほどで、Connected となるはずです。
この状態で、"クリックで動作"の■をクリックしてみます。
"CUT"動作が確認できれば、成功です。
おめでとうございます。
自分好みの操作方法・内容に変更する
このままではマウスのクリックでCUTができるだけです。
これでは使いにくいので、まずは
①いろんな動作を
②キーボードで
③ATEMからの情報取得
までできるように変更していきます。
① いろんな動作
このライブラリでは、次のような操作が出来ます。
PGMソースを変更
PRVソースを変更
Inputのプロパティを取得・変更
CUT
AUTO
DSKの情報を取得・変更
USKの情報を取得・変更
AUXソースの変更
ATEMのタイムコードを取得
AUTOのトランジション状態を取得
SuperSourceのコントロール
カメラ制御
オーディオの設定
MVの情報取得
マクロの実行
警告情報の取得
ATEM本体の性能を取得
見て分かる通り、大体なんでもできそうです。
ここでは、よく使いそうなものだけ紹介します。
詳しくは↓のサイトに詳細の説明があります。
https://github.com/haydendonald/blackmagic-atem-nodered/blob/master/howToUse.md
PGMソースを変更
var msg = {
"payload": {
"cmd": "programInput",
"data": {
"ME": 0,
"videoSource": {
id: 1,
}
}
}
}
return msg;
"ME": 0 ・・・ ME0のPGMSourceを変更 (ATEM Mini等では0で良い。)
id: 1 ・・・ 変更するソース
$$
\begin{array}{|c|c|} \hline
id & ソース内容 \\ \hline
0 & Black \\ \hline
1 & IN1 \\ \hline
2 & IN2 \\ \hline
3 & IN3 \\ \hline
4 & IN4 \\ \hline
5 & IN5 \\ \hline
6 & IN6 \\ \hline
7 & IN7 \\ \hline
8 & IN8 \\ \hline
9 & IN9 \\ \hline
10 & IN10 \\ \hline
11 & IN11 \\ \hline
\end{array}
$$
他にも数値飛んで1000番台~10000番台でMPやColor, Barsなど、それぞれにidが割り当てられています。時間があれば追記します。
PRVソースを変更
var msg = {
"payload": {
"cmd": "previewInput",
"data": {
"ME": 0,
"videoSource": {
id: 1,
}
}
}
}
return msg;
PGM変更ほぼ同じです
CUT & AUTO
var msg = {
"payload": {
"cmd": "performCut", //AUTOなら、"performAuto"
"data": {
"ME": 0
}
}
}
return msg;
DSK オンエア & オフエア
USK オンエア & オフエア
var msg = {
"payload": {
"cmd": "downstreamKeyer", //USKなら、"upstreamKeyer"
"data": {
"id": 0,
"state: true //オフエアなら、"false"
}
}
}
return msg;
AUXソース変更
var msg = {
"payload": {
"cmd": "auxSource",
"data": {
"id": 0,
"videoSource": {
"id": 0,
},
"mask": true
}
}
}
return msg;
data の id ・・・ Constellation等AUXが多い場合はこのidで出力先指定
videoSourve の id ・・・ PGM/PRVソースのid説明と同じ
マクロ実行
var msg = {
"payload": {
"cmd": "macroAction",
"data": {
"macroId": 0,
"action": "run"
}
}
}
return msg;
macroId ・・・ 何番目のマクロを実行するか
このあたり抑えておけばある程度の操作は行えると思います。
② キーボードで操作
ラズパイの専用ノードを使います。
キーボード入力は rpi - keyvoard
gpioで制御するなら rpi - gpio in
ATEMからの出力でタリーランプなどを作るには rpi - gpio out
を使います。
まず、下記のように配置しましょう。
Pi Keyboardでは、キーが押されたときに対応するキーコードが出力されます。
おおよそこんなキーコードです。一部違うかもしれません。
例えば、1! ~ 9) のキーコードは2~10になります。
1つ目のSwitchノードでは次のような処理をします。
Pi Keyboardから出力された値が2のときは… 3のときは… といように、受け取ったキーコードに応じて先の関数を分岐させるイメージです。
2個目のSwitchノードでは、キーを押したとき・離したときの分岐です。
これをしておかないと、長くキーを押したときにリピートが発生し、2回以上実行されてしまいます。
これを使って、
1! キーで PRVを1に変更
2" キーで PRVを2に変更
3# キーで PRVを3に変更
4$ キーで CUT
5%
6& キーで AUTO
7' キーでDSK1 ON
8(
9) キーでDSK1 OFF
するようにプログラムしたサンプルコードがこちらです。
③ ATEMから情報取得
このライブラリでは、ATEMを操作するだけでなく、
ATEMの情報を取得・記録することも出来ます。
timeのみ非出力(速度向上)
ATEMの出力をそのままデバッグに繋ぐと、毎秒60個のデバッグ分が飛んできます。(フレームごとに信号が来るため)
そのため、不要であればその情報を削ぎ落とす必要があります。
一部検証環境では、この処理をしないとNode-REDが落ちる不具合が落ちました。処理落ちでしょうか。
デバッグに表示するだけでなく、それをファイルに保存したい場合は、write file ノードを使用します。
おまけ
CUT, AUTO, AUX, DSK, USK をすぐに設定できるノードを作成しました。
これを参考に他のノードも作成してみてください。
実使用例
DSK操作ボードとして
実際に現場で使用した例です。
ATEM TelevisionStudio HDのDSK操作をラズパイ経由で行いました。
現地では、電源・LANケーブル・キーボードを接続し、電源を入れるだけですぐに使用可能になりました。
30秒も待たないと思います。
3日間使用しましたが、一度もトラブル起きず安定して動作してくれました。
比較的少ない・軽い処理だと、安定して動くように感じます。
使用したキーボード
9個のキー1つ1つに、独自のキーを設定出来ます。
1! ~ 9) を設定することで、サンプルコードが実行できるようになるはずです。
この用途以外にも、通常利用でショートカットキーボードとして使用できるので何かと便利です。
また、青軸のためカチッと押した感が伝わります。
配信のような押した感を求める環境では、青軸のキーボードがおすすめです。(少しうるさいので場所にもよりますが)
設定の様子
実際に設定をしていた様子です。
ノードをつなぐだけなので、グラフィカルに設定が可能です。
黒い画面を背景にちまちまコードを記述しなくて良いのは嬉しいですね。
手元にモニタさえあれば簡単にすぐ設定変更できます。
まとめ
比較的安価に始められ、簡単かつ自由に設定できるこのシステム
現在の配信オペレーションを少し楽にしたい!という方にはおすすめです。
ぜひお試しください。
この記事が気に入ったらサポートをしてみませんか?