IRCを利用した同期表示端末の作成†
川俣吉広 / 45回EBUG会合 @銀座堂ネット(三条市)
2013年2月16日
aclkの開発†
現在、地上テレビ放送の運行はコンピュータシステムにより殆どが自動化されているが、
全くの無人運用が可能な訳ではなく、人手による業務もかなり残されている。
- 例
- 放送用素材の装填/調整の確認
- 不定期に入る回線運用、素材収録
- etc...(設備投資←→人件費のトレードオフ)
#ref(): File not found: "aclk.gif" at page "Manual/aclk"
TeNYでは、このような人手による業務を確実に実行するためにaclk (Alarm CLocK)と呼ばれるソフトウェアを自製した。
(2006年頃)
- 特徴
- スタンドアロンで動作
- 指定時刻に映像・音声などを出力し、オペレータに注意喚起
- 放送機器制御用の端末(APC)に似せたヒューマンインターフェース
- 制御データファイルのinclude機能
- 実装
- Tcl/Tkにて記述
- 映音の出力には、外部プログラムを起動
#img(): File not found:
機能追加 ... ネットワーク対応†
aclkの開発後数年間は当初の仕様で運用してきたが、
その後端末を複数台接続し、連携して動作させたいという要望が発生した(2009~2010年頃)。
運用イメージ
- 要望
- 表示専用端末と入力/編集用端末を分けたい
- 入力/編集用端末の操作が表示専用端末にも反映されるように
- 端末は任意の台数繋ぎたい
- 実装の検討 → 複数の端末に対して「同報メッセージ」を送る
- UDP
... Tcl/Tkに適当なライブラリが見つからない
... あったとしても、再送制御とか自前で実装するの面倒
- IRC
... 同様に適当なライブラリはないようだ(実はあった)
... が、クライアント~サーバ間のプロトコルは割りかし単純 → 基本的には行単位のコマンド+引数を送りつけるだけ → 書いてみっか
&ref(): File not found: "aclknet.gif" at page "Manual/aclk"; |
各クライアントは同一のIRCチャンネルにJOINし、同期メッセージを送りあう |
- 実装したもの
- Tclで記述した、IRCプロトコル
...RFC1549の部分実装 ... とりあえずは JOINとPRIVMSGくらいあればOK(あと、非同期にPING~PONG応答)。
...このライブラリを使用して、サンプルプログラム(IRCモニタ)を書いてみる。
- IRCプロトコル上で動作する、同期メッセージを送りあうための「俺プロトコル」を制定
...全端末が個々にデータを持っているが、それらは全て同じデータ
...操作を行った端末は「操作の種類+対象データ」を同報する
...同報を受け取った端末は、操作元端末と同じ操作を自分の持っているデータに対して行う
...あと、他端末と次端末のデータを強制的に同じにする機能
- スタンドアロン版のaclk端末に前々項、前項の機能を組込んで動作テスト。
- 実行
- ネットワーク接続情報は、初期設定ファイルに記述
- 実行後のネットワーク機能はGUIの設定パネルより操作
IRCネットワーク上の測定器制御†
ラウドネス規格への対応†
テレビ放送では、CMや番組の変り目で急激な音量の変化を感じることがあり、従来より議論されてきたが2011年、これを解消するための要件が勧告された;
- 規格
- 国際/海外規格 ... ITU-R BS.1770-2 / EBU R128, TECH3314 / ATSC A85など
- 日本国内
#ref(): File not found: "VU.gif" at page "Project/Loudness/手動測定"
#img(): File not found:
#ref(): File not found: "LM.gif" at page "Project/Loudness/手動測定"
- 測定方法
- 測定の尺度として「ラウドネス(単位: LKFS)」を用いる
- ラウドネスは「感覚量」であり、物理的な音声の大小に対し聴覚の特性を適用して算出 →「ラウドネスメータ」を使用
- 瞬時値ではなく、指定された期間内の音声信号から値を算出
- →ラウドネスメータに対し「測定開始」、「測定終了」を指示する必要がある。
- 問題点
- 番組単位での「測定開始」、「測定終了」をどうするか? ... 各局によってI/F, データフォーマットが異なり既成品が存在しない
- 測定結果の記録、表示をどうするか? ... 非技術部門も参照する
#img(): File not found:
測定ソリューション†
ラウドネスメータ自動測定のための制御指示を前項で説明したaclkネットワーク上に載せる。
&ref(): File not found: "LMCtrlDiagram.gif" at page "Project/Loudness/自動測定"; |
システム構成 |
- 以下のハードウェアを追加
- LMS (Loudness Meter Scheduler) - 番組情報を取得し、測定制御指示を生成。
- LMC (Loudness Meter Controller) - 測定制御指示に従い、ラウドネスメータを実際に制御
- 測定制御指示はaclk端末上ではテキストメッセージとして見えるので、端末からのモニタリングや修正作業などが可能
- LMS, LMCのスクリプト
- Perlで記述し、migw.pl のコードを流用 ... IRCプロトコル部分は Net::IRC を使用
- aclk端末ではTcl/Tkで実装したaclkプロトコルをPerlで再実装
- LMS, LMCそれぞれに固有な部分のコーディング
&ref(): File not found: "LMNetDiagram.gif" at page "Project/Loudness/自動測定"; |
ネットワーク構成 |
- ハードウェア的なもの
- LMC→ラウドネスメータへの接点制御
... 単に「スイッチをON/OFF」するためだけだが適当なものが意外とない
... OpenBSDでパラレルポート使ってLED点けてる人がYoutubeにいた
... →i386_set_ioperm(2) を使ってI/Oポート直叩き
試作回路 |
&ref(): File not found: "ifbox.gif" at page "Project/Loudness/自動測定"; |
インターフェース条件 ... PCからの制御出力 パラレルポート D0, D1 を使用 GNDに対し、Low=0.07V, High=3.4V (実測値) 出力電流規格値: Sink=20mA, Source=2mA max |
測定結果の取得と表示†
- ロギング生データ取得 ... ラウドネスメータのオプションソフトウェア(Windows上で動作)を使用
&ref(): File not found: "GenSummary.gif" at page "Project/Loudness/自動測定"; |