English version is here
タイムコードリーダーソフトウェア
PCTimecodev1.1
ウィンドウズ版(XP以降)
![]() PCTimecode インストールパッケージ |
☆インストール ダウンロードしたZIPファイルを解凍すると左のインストールパッケージが出来ますので、これをダブルクリックしてインストールを開始してください。 その後、指示に従ってインストールを進めてください。 インストーラーは英語版になりました。 インストール途中で発行元不明の警告が出る場合がありますが問題はありません。 |
![]() |
☆開始 左のアイコンがデスクトップに出来ますので、これをダブルクリックして開始してください。 スタート→すべてのプログラムからも開始できます。 タイムコードのデコードは単体で機能しますが、スクリプトをする場合はMicrosoft Excelを同時に起動させます。 PCTimecodeはタスクトレーに最小化されていても機能します。 |
☆Timecode Script for Excelの動作原理![]() Excelはマクロを使ってPCで起動している他のアプリケーションのフォーム上の文字、数字などテキストを取得することができます。 それには他アプリケーションのフォームのクラス名とテキストのクラス名が特定されていることが重要です。 PCTimecodeには特定のクラス名が与えられていますので、APIのFindWindowEXを使って簡単に読み取ることが可能です。 スクリプトシートのサンプルが付属していますので、マクロに詳しくなくてもご使用になれます。 |
|
![]() |
|
☆Q&A(実際にあった質問を元にしています。) Q:APIとは何ですか? A:application programming interfacesと言ってmicrosoftがあらかじめ用意した関数のこと。 コンピュータ上でおおよそ使われそうな動作をあらかじめ関数として用意しておくことでプログラミングの効率化をはかる。 C++、C#、VBのほかVBAが使えるExcelからも呼び出せる。 ここで使われるFindWindowEXはウィンドウのハンドルを見つける関数。 PCTimecodeのハンドルは?->そのハンドルの子のEditのハンドルは?->そのハンドルのテキストを送れ。と言う感じで使われています。 Q:なぜクラス名が必要なのですか? A:前記APIを使ってハンドルを取得する際に必要になるのがクラス名です。 多くの場合アプリケーション名では取得できません。 たとえばMicrosoft(R)電卓のクラス名はSciCalcです。 |
![]() |
☆アプリケーションフォームの説明 @タイムコード表示 ・デコードされたタイムコードを表示するテキストボックス Aユーザービット表示 ・デコードされたユーザービットを表示するラベル B波形モニター表示 ・入力された信号の波形を表示するピクチャーボックス Cクラス名 ・マクロで呼び出すためのアプリケーションのクラス名 Dデコードボタン ・デコードを開始するボタン Eストップボタン ・デコードを停止するボタン Fステータスバー ・アプリケーションの状態 Gオペレーター ・タイムコード君 *2 Hコピーボタン ・タイムコードをクリップボードにコピーします。 アプリケーションを起動すると左のフォームが表示されます。 デコードを開始するにはデコードボタンをクリックします。 |
![]() |
☆デコード時 LTC信号が無い場合。 考えられる原因 @PCのラインインにタイムコードを入力していないか、信号が来ていない。 APCのオーディオデバイスの録音でデバイスが設定されていない。 BPCのオーディオデバイスの録音でマスターかラインインがミュートされているか、録音ボリュームが下げられている。 (ミュートのチェックをはずし、ボリュームを最大にしてください。) Cマイクなどの入力のあるUSBオーディオデバイスが接続されている。 (一般的にUSBオーディオデバイスが優先されますのではずしてください。 特にUSBの外付けWebカメラは接続すると自動で録音デバイスを専有するように設定されています。*1) *操作すべきオーディオデバイスは録音(Input)です。音量(Output)ではありません。 オーディオデバイスの設定方法は、パソコンやオーディオデバイスの種類によって異なりますので、マニュアル、ヘルプ等で確認してください。 参考外部リンク(富士通Q&A:マイクやライン入力から録音する方法を教えてください。) |
![]() |
☆デコード時 LTC信号があり、必要なレベルに達していればデコードが行われ、タイムコードが表示されます。 信号はあるがデコードされない場合考えられる原因 @レベルが低い (波形モニターの上下に届くぐらいに録音ボリュームを上げてください。) ASMPTEリニアタイムコードではない。 B24〜30fpsではないか、変速再生などされている。 タイムコードが乱れる場合考えられる原因 @サイズを大きく表示すると、PCの性能が低い場合録音自体を失敗します。 その場合タイムコードが乱れます。 正常に表示されるサイズでご使用ください。 *操作すべきオーディオデバイスは録音(Input)です。音量(Output)ではありません。 |
![]() |
☆ストップ時 ストップボタンを押すとデコードが停止し、タイムコードの表示も停止します。 デコードが停止したのであって、タイムコード自体の進行が停止した訳ではありません。 |
![]() v1.02から |
☆タスクバーに格納 最小化してもタイムコードが確認できるようになりました。 この状態でもマクロによるタイムコード取得はできます。 |
*1たとえカメラを起動していなくても専有されてしまいます。 *2外国人には顔に見えないらしい。「文字化けしてるよ」って言われる。 米国ではこうらしい→ :-) 横倒しじゃん。 |
警告:この項目を必ず読んでください、PCを破損する可能性があります。 アルベルトガーデンは責任を負いません。 カメラやVTRから出力される一般的なタイムコード信号は2Vp-pの矩形波(1V rms)です。 一般的なPCのライン入力は0dBV程度の入力に対応していますが、正しくはご使用になるPCの仕様書を確認してくだくか、メーカーに問い合わせてください。*1 このレベルの信号ならばPCに直接入力しても構わないとおもいますが、厳密にいえば-30dB程度(最低-12.5dB)の減衰器(アッテネータ)をつけるべきだと考えられます。 簡単にいえば「音のレベルとしては大きすぎる。」ということです。 PCTimecodeは音声信号を矩形波として扱っていますので、必ずしもダイナミックレンジ内に収める必要はありません。 あくまでもPCの最大入力レベルを超えないことが重要です。 信号入力に関する注意 @PCのライン入力に入力してください。 Aノートパソコンでは、ライン入力とマイク入力端子が兼用端子となっている場合があります。 その場合はラインインに切り替えてください。 切り替え方法は、パソコンやオーディオデバイスの種類によって異なりますので、マニュアル、ヘルプ等で確認してください。 参考外部リンク(富士通Q&A:マイク端子とヘッドホン端子を、ライン端子に変更する方法を教えてください。) Windows 7 Windows Vista Windows XP Bマイク入力は使用しないでください。 PCを破損する可能性があります。*2 |
-30dBアッテネータ付き入力ケーブル [BNC-φ3.5mmステレオミニプラグ]変換ケーブルの自作用回路図 抵抗はオーディオ用が良いとされていますが、録音をする訳ではないのでカーボン抵抗で構いません。 ![]() |
アッテネータなし入力ケーブル(入力2Vp-p以下) [φ3.5mmステレオミニプラグ−RCAx2]変換ケーブル0.5m(左)と同軸変換アダプタ BNCJ-RCAJ(右)を利用する例 秋葉原近辺で入手可能、またはせんごくネット通販では800円(送料込)ほど。 同軸変換アダプタはL、R(白、赤)波形が出る方に接続してください。(ほとんどの場合白です。) ![]() |
*1実際のところほとんどの仕様書には記載されていませんし、経験上問い合わせても正確な解答を得られたことはありません。 PCのオンボードサウンドデバイスはほとんど社外製なので、詳しくは把握していないようです。 そこで以下のように推測します。 PCは民生器機ですが、PCのライン入力に業務用音響機器を接続することは当然予想されるケースです。 業務用音響機器のラインレベルは4dBu(1.23V rms)が基準です。 矩形波に換算すると2.46Vp-pになります。 オーディオ信号の場合、さらにピーク電圧は高いはずです。 したがって、PCの取扱説明書に「ラインインに業務用音響機器を接続してはならない。」と記載されていない限り2Vp-pのタイムコード信号を入力しても問題はないと推測します。 ただし念のため、アッテネータなしでの2Vp-pを超えるのタイムコードのPCへの入力はしないでください。 *2マイク入力は小信号を入力するための端子です。 また、端子にマイク用の電源として電圧(DC3〜48V)がかけられている場合があります。 まったく不可能ではありませんが、高度な専門的知識が必要になりますので使用しないでください。 ☆Q&A(実際にあった質問を元にしています。) Q:インピーダンスが違うのでは? A:違います。 TCのインピーダンスは75Ωです。 PCは機種によって違いはありますが、数百Ω以上ありますのでそのまま接続してもまったく問題ありません。 いわゆる(ロー出し→ハイ受け)になります。 Q:75Ω-30dBのアッテネータが高価すぎるのですが? A:はい、7000円以上します。 カーボン抵抗で構いませんので自作してください。 30円(抵抗のみ)で出来ます。 |
![]() マクロを含む エクセルファイル |
左のサンプルファイルにはPCTimecodeからタイムコードを読み込むマクロを含んでいます。 PCTimecodeとExcelを起動し、サンプルファイルを開いてください。 INまたはOUTセルをダブルクリックすればタイムコードが表示されるはずです。 セキュリティ警告が出て、マクロが無効になった場合はマクロを実行(コンテンツを有効)してください。 マクロの内容は下記の通りですのでVBAで自作し、自己証明すれば警告は出ません。 |
☆マクロのサンプル 'Sheet1ここから '///////////////////////////////////////////// Private Sub PCTimecode() Columns("A:E").ColumnWidth = 6 Columns("E:F").ColumnWidth = 9 Columns("G:G").ColumnWidth = 37 With Range("A1", "G1") .HorizontalAlignment = xlCenter End With Range("A1") = "OK/NG" Range("B1") = "S#" Range("C1") = "Cut" Range("D1") = "Take" Range("E1") = "In" Range("F1") = "Out" Range("G1") = "Note" Range("A1:G1").Select With Selection.Interior .ColorIndex = 8 .Pattern = xlSolid .PatternColorIndex = xlAutomatic End With Range("A2").Select ActiveWindow.FreezePanes = True End Sub Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 'Output only "E:F"(Put out this line if you do not need.) If Target.Column = 5 Or Target.Column = 6 Then Exit Sub Call OutputTimecode(Target) End Sub '///////////////////////////////////////////// 'Sheet1ここまで 'Module1ここから '///////////////////////////////////////////// '###################################################### 'VBA source code to receive Timecode from "PCTimecode" 'Albert Garden '###################################################### Option Explicit Private Declare Function FindWindowEx Lib "user32.dll" Alias "FindWindowExA" ( _ ByVal hwndParent As Long, _ ByVal hwndChildAfter As Long, _ ByVal lpClassName As String, _ ByVal lpWindowName As String _ ) As Long Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" ( _ ByVal hWnd As Long, _ ByVal Msg As Long, _ ByVal wParam As Long, _ ByVal lParam As Any _ ) As Long Private Const WM_GETTEXT = &HD Public Sub OutputTimecode(ByVal Target As Range) 'The source below this should not renew it. Dim hWindow As Long Dim rl As Long Dim buf As String * 12 'get app window hwnd hWindow = FindWindowEx(0, 0, "PCTimecode", vbNullString) If hWindow <> 0 Then 'get app text box hwnd hWindow = FindWindowEx(hWindow, 0, "edit", vbNullString) If hWindow <> 0 Then rl = SendMessage(hWindow, WM_GETTEXT, Len(buf), ByVal buf) Target.Value = Left(buf, 11) 'xx:xx:xx:xx Else MsgBox "PCTimecode error. orz" End If Else MsgBox "PCTimecode is not found. orz" End If End Sub '///////////////////////////////////////////// 'Module1ここまで |
|
Module1はFindWindowEXを使ってPCTimecodeからタイムコードを呼び出すモジュールです。 Call OutputTimecode(Target)でタイムコードを呼び出します。 VBAに詳しい方でしたら色々と応用できるとおもいますので、必要に応じてアレンジしてお使いください。 ☆Q&A(実際にあった質問を元にしています。) Q:マクロをカスタマイズしてもいいですか? A:メールなどによる改変の許諾は一切必要ありません。 |