SMPTE-LTCリーダのAVRマイコンへの実装
http://cdn-ak.f.st-hatena.com/images/fotolife/C/Chuck/20140324/20140324132551.jpg
SMPTEというのは組織の名前の省略形です(Society of Motion Picture and Television Engineers, or SMPTE)。日本語では米国映画テレビ技術者協会ということになるようです。が、そこで制定された規格を指すこともあります。
(MIDI)シーケンサはハードウェア(アナログもデジタルも)であれDAWであれ、時間軸を大いに意識した動作をしています。シーケンサに限りません。音を録音する記録機もそうです。映像を記録するものも例外ではありません。時間軸が乱れないことを前提としています。
最近はひとつのDAWで完結してしまうので意識されませんが、以前は24トラック録音機と24トラック録音機を同時に走らせて48トラックの録音機として使うといったことをしていました。どうやって同時に走らせるか? 同じ型番の機材を用意しても個体ごとに時間軸基準となる動作クロックが微妙に異なります。よーいドンで走らせても1分もすると時間ズレが顕著になってしまいます。そこで出てくるのが同期という技術です。一台は自分の時間基準(internal clock)でマスターとして動いて、もう一台はそれに追随(スレーブ動作、synchronize to external clock)すれば良いのです。同期を考慮した機械はスレーブ動作可能になっていて、外部クロックに同期してモータサーボを制御するようなテープレコーダが存在していました。
同期用のクロック よりも情報量が多いのが タイムコード です。そのひとつが SMPTE-LTC というわけです。タイムコードにはほかにMIDI Timecode というのもあります。こちらはMIDIのインターフェースを使いますがエンコーディングはSMPTE-LTCに似せてあります(5pin DINのカレントループMIDIでもUSB MIDIでも同様)。
SMPTE-LTC はオーディオ信号としてオーディオトラックに記録できます。マルチトラックレコーダのひとつのトラックを潰してしまうことになりますが、手軽に同期マスターを担うことができます。
どんな音か、以下のサイトが参考になります。ぴーぎゃーうるさいので音量注意。
私の20年ぐらい前のDTM機材では、YAMAHA MT8X - Google 検索 のひとつのトラックにSMPTE-LTCを記録して、MIDIシーケンサやデジタルレコーダを同期して、MT8Xに記録されたオーディオともどもトラックダウンしていました。 昨今、DAWが音楽制作の中心です。マルチトラックレコーダも種類が少なくなり、メディアもSDカードが主流となりましたが、SMPTE-LTCの読み書きの技術を習得しておくと製作に利用できるかと考え、このプロジェクトを始めました。
作ってから以下の事実に気づき、どのようにシステムに組み入れていったものか頭を抱えてしまったのですが。
DAWでスレーブになれるものは一般的に高価(Cubaseとか。Logic ProはOK)
SDカードマルチでスレーブになれるものが存在しない
SDカードマルチをマスタに使おうとしてもトラックアウトが存在しない(MIXアウトのみとかたかだか2chとか)
動作の仕組み
SMPTE-LTCのバイフェーズをマイコン・タイマの Input Caputre 割り込みを利用してデコードする。
使用するマイコンは ATmega48/88/168/328 を想定し、処理の要となるタイマとしてTimer1を利用する。
Timer1 の Input Capture のトリガには回路で整形された入力信号を接続している
Input Capture はエッジで割り込み、割り込まれた際には、割り込み対象エッジを毎回反転する
Input Capture割り込みが発生し、GATE(後述)がLであるときは ICR を保存する(計測時間 period)。timer値 はクリアする。
上で測った period を元にゲート信号(GATE)を作る
ゲート信号(GATE)は period の 1/4 でセット、3/4 でクリアされる
波形生成に際しては OCR1A、OCR1B を利用している
Input Capture割り込みでハンドラに飛んだときに、GATE==H ならデコード値は "1" である
Input Capture割り込みでハンドラに飛んだときに、GATE==L なら デコード値は "0" である(正式にはRecovery Clockでラッチすべきではある)
生成されたゲート信号はバイフェーズから Recover した Clock になっている
https://gyazo.com/8fa4c27dec7660c4df7090e5e27bcee9
http://cdn-ak.f.st-hatena.com/images/fotolife/C/Chuck/20140324/20140324132550.jpg 実際のSMPTEバイフェーズ信号(青)から作られたゲート信号(GATE、黄)
製作情報
回路図
https://gyazo.com/32353e9bf27316dc0f89241c4f89a0aa
ソースコード
デコードしたSMPTE-LTCをSPI-7segに表示するサンプルプログラム。使用する表示デバイスに合わせて変更してください。
FAQ
参考文献
関口; 定率遅延回路によるVTR編集用タイムコードの簡易復調法, pp.489-494, テレビジョン学会誌 35(6) (1981)
(いまや古い論文なので?)テレビジョン学会で公開されています リンク 更新履歴
2017/10/21 記述開始
2014/03/13 当初検討時期