🗐 電装工芸日記 - 舞台照明機器の製作とか -

能登半島地震で被災された方々にお見舞い申し上げます。

or 管理画面へ

タグ「タイムコード」を含む投稿[52件](3ページ目)

Icon of admin
 LTC Generator は30fpsも他のfpsと同様の誤差でした。時間の勘定に期待値が出たので PIC のファームウェアは一応の完成とします。あとは、卓が認識するかです。
 今後はPC側のアプリケーションの製作です。Pythonベースでvlcライブラリを使い、LTCとVLCは同時スタートの疑似シンクです。VLCの現在時からLTCを生成することは難しいからです。途中スタートではLTCの現在時からVLCの開始時を補正して合わせる様にします。
 音声ファイルはプレイリストとしてまとめ、スタートタイム、エンドタイム、ボリューム、連続再生、曲間時間などを個別に設定出来る様にします。複数の音声ファイルを並列で再生する用途は想定しませんので、1トラックのわかりやすいモノを目指します。もちろん、LTCのタイムが被らない様にチェックする機能も大切です。

#タイムコード
Icon of admin
 LTC Generator は24fpsも他のfpsと同様の誤差に収まりました。現在稼働中の30fpsも確認出来れば LTC Generator はヒト段落です。
 本業もそこそこ忙しくなってきたので工作に使える時間は限られますが、LTC Player まで出来るだけ早く到達したいところです。

#PIC #タイムコード
Icon of admin
 LTC Generator は29.97fpsも25fpsと同等の誤差でした。30fpsと24fpsも同等に収まればPICのファームウェアは完成とします。
 比較に使っている時計はカタログスペックで月差±15秒。1日あたり0.5秒の誤差とみなせます。基準にするには十分でしょう。
 「卓がLTCとして認識するか」を早々に確認したいですね。これが一番重要です。

#タイムコード
Icon of admin
 LTC Generator のタイマーを修正してみました。
 8時間経過で約1秒ズレていますが、以前より良くなっていますし、SMPTEが求める精度には十分収まっています。何よりも比較に使っている時計の精度がどこまでなのかわかりませんからこんなもんでしょう。
 PICに与えている水晶発振子の精度は30ppmですから(ppmは100万分の1を表す単位なので比率だと0.00003)、1日(86,400秒)あたり±2.592秒の誤差がありえます。実測値は想定される誤差相当なのでソフトウェアは間違ってなさそうです。
 現在値以上を求めるなら、ソフトウェアの修正ではなく個体差に対する補正となりそうですし、もっと精度の高い発振子を使うべき話です。
 補正計算が無い25fpsでテストしていますが、補正計算が入る他のfpsも同等に収まればいいでしょう。

 秋月電子通商さんで手に入る高精度な発振子は最高で1ppmです。高精度に越したことはありませんが、ここまで必要か、これで十分か、30ppmに比べてメリットがあるかは別問題です。
 求めているのは数分間の音楽の時間座標を表す信号です。卓がエラーを出さない条件を満たし、目視でズレを感じない繰り返し精度があればいいのです。高精度の時計や放送用の基準を作っているワケではありませんから、無制限に高精度を求めても意味がありません。十分に使えて低価格も大切な精度です。

#PIC #タイムコード
Icon of admin
 LTC Generator は24時間カウントの関数をPythonで書いてみました。限りなく本チャンに近いモノです。
 期待通りの動作をします。卓への接続テストはまだですが、オシロスコープには波形が出ます。
 ただ、24時間で約40秒の遅れが出ます。1時間あたり約1.7秒ですから無視出来ません。
 時間のクリックカウントはPICで行っていますが、TMR1のコンペア値が1個多いと仮定すると辻褄が合います。そういえば、TMR2でコンペアと同様の機構と思われるPWMを作る場合は折り返しで1カウント余計にかかるハズ。データシートには記載が見受けられなかったけど、TMR1のコンペアモードでも同様なのかもしれません。
 コンペアの定数値を変更して改めてテストしましょう。

#PIC #タイムコード
Icon of admin
 LTC Generator は入荷した修正基板を用いてプリアンプが完成。+4dB(1.23Vp-p)の波形を出しています。
 まだPythonプロンプトのレベルですが、シリアルでデータを送ると波形が変化します。Pythonからデータを送る場合、バイト毎ではなく、配列にバイナリを格納してpyserialに渡すのが良さそうです。
 タイミングが正しいかは確認出来ませんが、PICからの送信要求も受信出来ています。これを受けてデータを送る段取りです。

 本業が詰まっていますのであまり長い時間は出来ませんが、1日0.5課題くらいの気持ちで少しずつ行きましょう。

 明晩は仮のLTCデータを送出するPythonプログラムを書いてみます。
 あらかじめ2-3秒分の配列データを作っておいて送信要求があれば1フレーム分送出する物ですが、卓に接続してLTCがカウントされれば最大の山場を越えます。

#PIC #タイムコード
Icon of admin
 今後はLTCをMTCに変換する方法も考えましょう。
 LTCをバイトデータとして受信し、MTCのパケットに書き直して31,250bpsのUARTで送出すればMTCになります。

 オレメモです。 

 PICには「変化割込み」と呼ばれるI/Oピンの入力が変化すると割込みが発生する機能があります。これとタイマーを組み合わせれば波長の計測が可能です。
 PICのクロックを32MHzにした場合、LTCの波長は命令ステップ(Fosc/4)換算でビットが1なら1,666から2,083、0なら倍の3,332から4,166です。誤差10%としても1の最大値(2,291)と0の最小値(3,029)は被りませんしグレーゾーンも広いので、波長の判別はfpsの種類に関係なく可能です。fpsやフォーマットの種類はLTCのデータに書かれているので計測した波長から判断する必要はありません。
 差動バイフェーズのビットは短い波長が2つ続けば1、長い波長が1つで0です。ビットデータが取れたら80bitのシフトレジスタに入れていきます。短い波長は必ず2回続きますから、長い波長の直前の短い波長が奇数回ならエラーとして仕切り直しです。80bitのシフトレジスタの末尾16bitにシンクワードが認められれば正常なLTCパケットが取得できたことになります。
 LTCパケットが取得出来ればMTCパケットを作り、入力されたLTCに基づいたタイミングで31,250bpsに設定したPICのUARTから送出します。後は電気的にMIDIにすればMTCです。
 必ず3フレーム遅れますが、欲しいのは絶対値ではなく相対値ですからいいかなと。

 プログラムが求めるメモリサイズ次第ですが、8pinの12F1822で作る予定です。

追記
 LTCにはfpsフォーマットを記載する領域はありません。訂正します。NDF/DFは記載されます。
 fpsフォーマットをデータに記載するのはMTCです。
 ですので、LTCの場合は波長からfpsフォーマットを推測します。

#PIC #タイムコード
Icon of admin
 困ったことに LTC Generator が一発で動いてしまいました。デバグのために本業を途中で切り上げ、午前様を覚悟していたのに実作業15分で終わってしまいました。ここまでデバグせずに進んだのは初めてかもしれません。
 何をしたかと言うと、Pythonからシリアルでデータを送り、それに則した波形を出し、コマンドコードで波長を切り替えるというもの。実験用に一部書き換えましたが、どうやっても想定の結果が出ます。
 予想より早いですが、実際にタイムコードを出してみる段階になってしまいました。プリアンプの改修基板は明日入荷なのでいいか。
 仕方ないのでPythonのプログラムの構想を始めましょう。まずは固定値のリストで2-3秒出すところからです。

 そりゃ嬉しいけど、機械たちにスルーされているみたいでなんだか寂しい。
 こんなにすんなりいくと何かありそうで怖い。

#PIC #タイムコード
Icon of admin
 LTC Generator の今の課題はPCのPythonからデータを送ってそれに則した差動バイフェーズの波形を出すことです。
 シリアル通信とコマンド処理を書き加えました。シュミレータでは思った通りの挙動をしたので次は実機テストです。
 ですが、この時間なので流石に寝ないといけません。デバグがすんなり終わればいいのですが、夜明けを迎えたら明日に差し障りそうです。
 いささか力尽きましたし、シュミレータでの確認が済んで気分的にも区切りが付いたので今夜は終わりにします。
 明晩、Pythonでシリアル通信して挙動を確認します。思った様に動けばPICのファームウェアは投了です。

#PIC #タイムコード
Icon of admin
 LTC Generator のPICはFIFOにデータを突っ込んで波形が出力するまでまとまりました。
 内部のテストルーチンによるものですが、データのリレーはシュミレーターで、波形はオシロスコープで確認出来たので、最も面倒な部分が成立した模様です。
 昨日一見動いたものの波形が安定せず悩みましたが、バグを手直しして今は期待した波形が出ています。0x00や0xFFはもちろん他の数値もOK。オシロスコープのトリガが引っかからず波形が読み取れない数値もありますが、この値が確認出来ればいいでしょうって値はいけたので、デバイスドライバ的なところが終わったと言えます。

 今後の課題はパソコンとの通信です。PIC側は過去実績、パソコン側はライブラリに頼れば左程難しくないハズ・・です。パソコンから受信した値をFIFOに突っ込んで期待した波形が出れば重要な機能は完了です。
 完成に至るには、PICからパソコン側にデータ送信の要求を送ったり、コマンドでfpsのモードを切り替えたりと課題は残っていますが、ハードウェアとデバイスドライバ的な部分がまとまればハードルは低くなります。

 ちなみに、今作っているのはシリアルで受信したバイトデータを差動バイフェーズで出力するだけの物ですから、TASCAMのプレーヤーのリモコンと組み合わせることも可能(正しくは不可能ではない)です。曲ごとのタイムコードをユニークする方法を考えなければなりませんが、これはこれで欲しい一品です。
 当然リモコンはフルスクラッチとなりますが、出来るだけ音響さんの環境を変えないためにこういった発想もありかなと。

#PIC #タイムコード

■当面の課題

桜のライトアップの季節です。花粉症の季節でもあります。
自分は平気ですが、花粉症の部下は死にそうな顔をしています。

編集

■全文検索:

複合検索窓に切り替える

■複合検索:

  • 投稿者名:
  • 投稿年月:
  • #タグ:
  • カテゴリ:
  • 出力順序:

■日付検索:

■カレンダー:

2023年6月
123
45678910
11121314151617
18192021222324
252627282930

■カテゴリ:

■最近の投稿:

最終更新日時:
2024年5月4日(土) 05時49分51秒