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