Composite TV — Signal Path Reference
コンポジットTV 信号経路図
キャプチャから送出までの全経路。各段が模している仮想機器、段間を流れる信号の形式、
そしてすべてのノイズ/グリッチの注入点とその物理的正当性。v1.1.0 時点——フルラインの同期・バースト・VBI、信号出力と音声搬送波、
時間軸誤差の信号化、受像機側の同期・利得系(水平/垂直の発振器とキー付きAGC)まで反映。
物理的に正しい位置に注入
実装上の近似(理由を明記)
タップ(信号の取り出し点)
01全体トポロジー
02パイプライン詳細 — 仮想機器と注入点
CAPTURE入力キャプチャフィルタ対象のソースをそのまま写す
- 注入なし(レターボックス/アスペクト処理のみ次段で解決)
ENCODE送出側 — NTSCエンコーダ・VTRデッキ・音声送信機910サンプル×263行のフルライン信号を作る
- 同期骨格+カラーバースト — 等化・切り込み垂直同期・水平同期・バースト9サイクル(変調基準+147°) syncBaseAt / burstAt
- 帯域制限 Y 4.2 / I 1.3 / Q 0.4 MHz — 色にじみの正体 windowed-sinc FIR
- リンギング — 映像アンプの減衰共振。因果カーネルなのでエッジの右側だけに尾 peaking
- フラッギング/ヘッドスイッチの千切れ — デッキの時間軸誤差。ライン全体(同期ごと)が揺れる。カラーアンダー相当でクロマ位相は補正済み=色相は安定(実機どおり) tapeShiftOf → tpos
- 水平同期ジッタ — 伝送路の時間軸誤差。副搬送波位相ごと揺れる(バーストも一緒に動くので受像側は追従できる) rxJitterOf → offJ, phN
- 干渉ビート — 混信キャリアの加算。物理的には受信アンテナでの混信。検波前の加算なので効果は等価だが、実装位置の都合でタップ0にも乗る beat_gain
- 音声搬送波 4.5MHz FM — 指定音声を ±25kHz偏移・75µsプリエンファシスでCPU合成し全ライン(帰線中も)に加算 audio_tex
- 雑音の素材生成 — 複素ガウス雑音を空きチャンネルに書くだけ。この時点では信号に加算されない(注入は検波段) noiseIQ → .ba
RGBA32F / 910×263 — コンポジット信号。R=信号(±1.33→0..1格納) G=輝度(未使用) B,A=雑音素材(複素ガウスのI/Q)
B,A は Encode→Detect 間だけの内部受け渡し。検波の瞬間に消費されて信号の一部になり、Pack は R しか読まないため送出信号には含まれない(Pack出力の B は常に 0)
◧ タップ0「デッキ/送信側」 はここを取り出す
DETECT伝搬路 — アンテナ・チューナ・IF・包絡線検波器電波として受信する。砂嵐が生まれる場所
- ドロップアウト+補償 — 時間軸上の信号欠落(0.5µs〜、対数分布)。補償は なし(白飛び/ノイズ帯)・グレー・1H遅延線。物理的にはデッキ内の現象。1H遅延線が「直前ラインのテクスチャ」を必要とするため検波段に実装。色落ちは副搬送波消失から自動的に出る=効果は正確 dropoutAt
- ヘッドスイッチのRF途切れ(ノイズ帯) — 下端数ラインが復調不能に。これもデッキ内の現象だが実装は検波段。千切れ(Encode)と同じ帯形状で整列
- ゴースト — 遅延した反射波の加算。Y/C分離前なので色にじみを伴う本物の多重像。同期にもゴーストが乗る compositeAt(n−delay)
- 砂嵐(電界強度) — ライス包絡線検波: 搬送波+帯域制限雑音の包絡線。輝度は一様乱数ではなくレイリー分布。負変調なので大振幅ほど暗い env=|A+n|, IF帯域, 最小雑音
- 検波レベル — 砂嵐側の静的な正規化(=巻き上がりきったAGCの定常利得)。動的なAGCは次段の受像機側 snow_level
RGBA32F / 910×263 — 受信済みコンポジット(同期は −0.4 のまま格納符号化で生存)
◧ タップ1「受信後」・◧ デバッグ波形・◧ Pack(信号ソースへ常時公開) はここを取り出す
TRACK +3パス受像機の同期・利得系 — 同期分離器・AFC・バーストゲート・AGC受信信号を実測する。ここから下流は送出側を一切参照しない
- 同期分離器(整合フィルタ) — 67サンプル窓を±30の範囲で滑らせ、和が最小の位置=同期パルスとする。実機の積分型分離器と同じで、雑音に対し約8倍の余裕を稼ぐ。雑音が勝つと最小値がゲート内のランダムな位置に落ち、そこから水平の泳ぎ・引き裂きが創発する PSTrack → trk.r, trk.a
- バーストゲート相関+CFAR — 分離器が決めた位置を基準に9サイクルを相関検出。同期底部を雑音基準として引き、砂嵐で振幅が過大評価されるのを防ぐ trk.g(位相), trk.b(振幅−雑音)
- 垂直積分器 — VBI 9行それぞれで「ライン中どれだけが同期レベルに沈んでいるか」を測る。幅広の切り込みは充電し、幅狭の等化は充電しない trk.b(VBI行)
- 水平発振器(フライホイール) — 毎ライン自走分だけ位相が進み、同期がゲート内にある間だけ位相比較が引き戻す。H-HOLDのデチューンが引き込み範囲を超えると位相が滑り続ける PSFlywheel
- 垂直発振器(トリガ式・片側) — 同期パルスは発振器を早く発火させることしかできないので、設計上わずかに遅めに自走させランプ終盤で捕まえる。V-HOLDの±で外れ方が非対称になるのはこのため PSVFlywheel
- キー付きAGC — 自前の水平位相でキーを打ち、同期先端とバックポーチの差を規定値に保つ二次ループ(帯域8Hz)。ハンチングのツマミはこのループの減衰不足=リミットサイクル PSAgc
RGBA32F / 263×1 ×4本 — 絵ではなく測定値。同期誤差・バースト位相・バースト振幅・信頼度/発振器位相/垂直位相/AGC利得
フィールドを跨いで状態を持ち越す(ピンポン)ため、蛇行も回転もAGCの脈動も再ロールせずに這う
DECODE受像機 — Y/C分離・同期検波信号から絵へ戻す。754×243の有効映像を読む(窓の外へはみ出すタップはバーストやポーチを読む=実機のフィルタと同じ)
- Y/C分離 — バンドパス(安物)/2ラインコム/3ラインコム。ドットクロール・クロスカラーは方式差から自然発生(描いていない)
- バーストゲートAFPC — Trackパスがライン毎に受信信号のバーストを相関検出し、その実測位相を復調基準にする。バーストが検出できないと発振器は自走してドリフト PSTrack → trk.g
- カラーキラー(自動) — 実測バースト振幅が閾値を割ると色を殺す。砂嵐がモノクロになるのは電界強度を見ているからではなく、バーストが雑音に沈むから trk.b → lock
- 副搬送波位相ドリフト — バーストにロックできない間だけ発振器が自走してドリフトする。以前の「電界強度<0.08で発火」ゲートは廃止。ロックの有無は実測バーストが決める lock ← trk.b
- AGC利得の適用 — 受像機のAGCループが出したライン毎の利得を輝度・クロマに掛ける。定常値ではなく「定常からのずれ」を掛けるので、調整済みの明るさは変わらず過渡だけが出る agc_tex → gain
- コントラスト/ブライトネス — 映像回路の利得・ペデスタル
RGBA16F / 754×243 — 復調済みRGBフィールド(1フレーム=1フィールド)
DISPLAYブラウン管 — 偏向・蛍光体・管面ビームが絵を描く。ここに残る注入はすべて受像機側の現象
- 垂直AFC(V-HOLD) — VBI行の積分器充電(切り込み−等化)でトリガをゲートする垂直発振器。V-HOLDでデチューン、砂嵐で切り込みが埋もれると自走して回る。手動の垂直ロールは廃止(信号の垂直同期は正常。外部デコーダは安定して映るのが正解) PSTrack → PSVFlywheel → PSDisplay
- 水平AFC(フライホイール) — 同期分離器の実測誤差を約12ライン時定数で平均し、走査時に補正。遅い誤差は真っ直ぐに直り、段差(ヘッドスイッチ等)は追従中の曲がりとして映り、ライン毎のジッタは素通しになる。ドロップアウト後の乱れは、同期を食われた行で分離器が雑音に誤トリガし推定を汚すことから創発(専用コードは削除済み) PSTrack → PSFlywheel → lineShift
- 消磁 — 減衰交流によるうねり・R/Bミスコンバージェンス・虹色純度ムラ
- 管の構造 — インターレース織り、ビーム径、走査線、残光(max合成)、シャドウマスク/グリル+ダンパー線、曲率、ビネット、オーバースキャン
- 電源エンベロープ — ウォームアップ/垂直・水平コラプス/残光
- デバッグ波形オーバーレイ — 検波後信号の1ライン全体(ポーチ→同期→バースト→有効映像)をトレース。受像機の内部状態も重ねる: アンバー=水平発振器の位相、シアン=分離器の信頼度、マゼンタ=AGC利得(管面より上に描くので表示段は波形に影響しない)
RGBA8 / ソース解像度 — 完成した「ブラウン管越しの絵」→ OBSの番組へ
一時発動の経路 — ドックとホットキーは信号を直接触りません。押すと該当するグリッチグループが設定時間だけ有効になるだけです
(チェックを入れっぱなしにしたのと同じ状態)。グループの設定——受信不良なら発動中の電界強度・H-HOLD・V-HOLD・ゴースト・ジッタ・フェージング、
再生不良ならフラッギング・ヘッドスイッチング・ドロップアウトとテープ傷の1周掃引——が設定値いっぱいで効き始め、指数的にメインの状態へ戻ります。
その後の復帰(砂嵐からの立ち上がり、色の戻り、水平・垂直の再ロック、AGCの落ち着き)は受像機の物理が自力で行い、直接注入している演出はありません。
消磁・電源も同様にパラメータ経由です。
03送出される1フィールドの構造(910×264)
1画像 = 1フィールド。910 × 262.5 × 59.94 ≒ 14.318 MS/s = 4fsc と規格がそのまま閉じる。
16bit形式は R=上位バイト/G=下位バイト(B=0固定・Aは255。内部の雑音素材B/Aはここへは来ない)、
復元は composite = (v16/65535 − 0.5) / 0.375。
ld-decode の .tbc(4fsc・910×263・16bit)と幾何が一致し、ヘッダ行を落とせばほぼ相互変換できる。
04物理的正当性の総括
05既知の近似
受像機側は一通り実装済みです。同期分離器・水平AFC・バーストゲートAFPC・自動カラーキラー、
垂直同期のトリガ式発振器、キー付きAGCループが Track / Flywheel / VFlywheel / Agc の4パスとして入り、
かつて「代役」だったバーストロック、「専用コード」だったドロップアウト後の乱れ、「乱数」だったAGCハンチング、
「表示側のアニメーション」だった垂直ロールは、すべて実測からの創発に置き換わりました。
残る近似は、いずれも見た目と送出信号の正しさには影響しない範囲です。
- 実装段が物理と1段ずれているもの(△印)— ドロップアウトと補償、ヘッドスイッチのノイズ帯、干渉ビート。
どれも効果は正確ですが、本来はデッキ内/受信アンテナで起きる現象を、実装の都合で検波段・エンコード段に置いています。
結果としてタップ0(デッキ出力)に乗る/乗らないが物理とわずかに食い違います。
- 4.5MHz 音声トラップが無い — 実機は映像経路から音声搬送波をトラップで抜きますが、本実装にはその段がありません。
音声搬送波を上げると細かい点模様と 920kHz(4.5−3.58)のヘリンボーンが残ります。なお櫛形フィルタでは抜けません。
4.5MHz はライン周波数のちょうど286倍=ライン毎に同位相なので、コムは素通しどころか強め合います
- 水平同期ジッタのツマミ — 受像機側の揺れは弱電界で分離器の雑音から自然に出るようになったため、
このノブは「電波はきれいなのに送出側の時間軸が揺れている」場合用の送出側ショートカットとして残しています。
- 垂直の解像度 — 1フィールド=263行の近似(実際は262.5行)。半ラインぶんの位相はヘッダのフィールド番号で持っています。