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