備忘録としてひとまず簡易的に。
今回実施したかったことは、"人が通り過ぎた時に特定の音声を流す"というコンテンツ。
映像はループ。
BGMもループ。
そのうえで、音声トラックを別に用意してイベント発生時に再生。
長期仮設において、わざわざPCをいれるのもなんだかなーと。またアテンド等は立ち会いなしなので、電源立ち上げ/立ち下げで管理できるもの&トラブルシューティングに力を入れるより、入れ替えるだけで復活できるものということを前提としている。
GPIOやSerial端子での接続方法でも制御できるのだが、今回はEthernetシールドを用意してUDPで制御することにした。
理由としては、GPIOやSerialを実現できるケーブル等を持ち合わせていたなかったことと、Lanケーブルでの引き回しのほうが効率が良いと考えたため。
※BrightSignはバックヤードにあるので。
まずやること
それぞれ"映像"、"音声①"、"音声②"のゾーンを準備。※音声ゾーンは名前違いで2つ準備ができて、どっちかは1秒以上でトランジション機能が備わっている。
"映像"と"音声①"ゾーンにループ素材の配置 ※映像のループはきれいにトランジションされないようなので、黒のF.I/F/Oとかで逃げる。
→のちに判明したことだが、適切なコーデックだとシームレスにループ再生が可能(ffmpegでエンコードしました。)
"音声②"に、"イベントハンドラー"を起動時に遷移するようにしておき、再生したい音声トラックを配置。今回の場合、3つを用意した。
イベントハンドラーから分岐するため、それぞれの音声トラックに"UDP"矢印?(正式名称がわからないが)でつなげておく。
音声トラック再生後は、"エンドイベント"によりイベントハンドラーに戻るようにしておく。
あとはネットワーク設定を見直しておく。(IP設定とか)
以上で、BrightAuthor上での設定は終了する。
次にArduinoの設定が必要。
かなり割愛するが、マイコン周りは、elegoo製arduino × keystudio(w5100)の構成。人が通り過ぎる部分は、SHARPのよくある赤外線センサーを利用。
あとは、ArduinoEditorでUDPライブラリを使ったプログラムを作成する。
音声トラックを流す際にはランダムで選択するようにしていた。Random関数はlong型で、UDPはchar型。
ここの変換でどういうやり方が効率が良いのか苦戦してしまった…
上記のフローでひとまず、BrightSignを利用したシンプルなインタラクティブコンテンツの再生機とすることができた。
デバッグ時にちゃんと受け取っているかどうかを確かめる方法がわからなかったので時間がかかってしまった。
おそらくライブテキストやログからチェックできる方法があるのだろうが、次回に持ち越し。
→たぶん、ブラウザからIPを叩いて、入力ログを見ればOKかも。
落ち着いたら、もう少し詳細に記載しようと思う。