
⚠️ この日本語コンテンツは英語から機械翻訳されたものです。
概要
Macの画面コンテンツを実物のCRT、特に15kHz、240pのRGBS形式を受け入れるタイプのものにミラーリングする小さなツールを作りました。
ソースコードと技術的な詳細については:
https://github.com/kynantokoro/picrt

このMac-to-CRTプロジェクトの始まり
少し前にヤフオクで約4万円でSony PVMを購入しました。これは80年代から90年代頃に作られた業務用のCRTモニターです。
最近では「CRT」という言葉は主にエフェクトとして扱われ、物事に一般的な「レトロ」な見た目を与えるために偽のスキャンラインを追加するものとされています。しかし本物は電子ビームがあなたの目に向かって発射される物理的なモニターであり、PVMが私の机の上に置かれると、それが実際に作られた目的を、可能な限り最高の方法で実現させたくなりました。
無数のレトロテックフォーラムと同じくらい多くのClaudeとの質問ラリーを掘り下げた結果、画像を表示する最良かつ最も本物の方法は15kHzアナログRGBS信号による240pであり、現代のPCではそれを出力できないことを学びました。
画面に何かを表示するには、何らかの古いデバイス(古いPCやレトロゲーム機)、または私が住んでいる場所では入手できないと思われる非常に特殊なビデオ機器を使用する必要がありました。
そこで止めることもできましたが、Raspberry Pi用の「VGA666」HATというものがうまくいくかもしれないことを知りました。

240pは現代のディスプレイには小さすぎます!
Piに15khzを出力させる
怪しいAliExpressストアからVGA666が到着するのを待った後、Raspberry Pi Zero 2Wに接続しました。VGA出力は同期合成器に入ります。VGAはHsyncとVsyncを別々に伝送するため、RGBSが期待する単一の合成同期信号にそれらをマージするものが必要です。(Pi側で「ボックス内」でこれを行うこともできるような気がしますが、私は別の同期合成器を使用しました。)そこから、VGAから5×BNCケーブルがPVMのRGBS入力に接続されます。
ハードウェアを接続した後、基本的にClaude Codeを起動し、生成された放送信号テストパターンが正しく見えるまでチャットを続けました。
これはしばらく前のことなので詳細をすべて覚えていませんが、いくつかのGPIOピンが死んでいるように見えるトラブルがあったことは覚えています。各ビットの信号を画面に表示して問題のあるピンを見つけ、一つずつ解決していくことでデバッグしました。ピンを解放するためにBluetooth(その他)を無効にする必要があったと思います。
また覚えているのは、一部のピンが反転したり混ざったりしているように見え、それを解決するためにかなりの追加デバッグが必要だったことです。

同期合成器には5v電源用のUSBケーブルが必要ですが、余分な電源ケーブルは欲しくなかったので、Piの5vピンアウトからジャンパーケーブルを接続しました…😅
Piへのピクセルストリーミング
Pi-CRT側が動作した後、Mac-Pi部分の作業を始めました。可能な限り低遅延が欲しかったので、有線ソリューションを探していました。ボトルネックを特定し、それを中心に構築して可能な限り最高の出力を得ることが鍵だと分かっていました。そして再びClaudeとのやり取りの中で、プロトコルを動作させることができました。
動作させることはできましたが、ポートを手動で割り当てる必要があり、これは大きな面倒でした。本当にスムーズなプラグアンドプレイ体験が欲しかったので、DHCPというものを使うことになりました。DHCPはDynamic Host Configuration Protocolの略で、私はネットワーキングについてあまり学んでこなかったので、この新しい概念は私にとって目を開かせるものでした。Piを外してプラグインするだけで、毎回動作します!
Macアプリ
最後はMac上のソフトウェアでした。このステップには特別なことは何もありませんでした。Swiftを使ったこともありませんでしたが、いくつかのプロンプトで問題なく動作させることができました。
Piが接続されているかどうかを検出し、接続されている場合は画面上の領域を切り取るか、全画面をPiに送信できます。
主に240p領域モードを使用しています。ピクセルを圧縮/ぼかすことがないためです。

A.I.は新しい分野を学び体験するための素晴らしいツール
私にとっての大きな収穫は、やりたいことの大まかな感覚と、ボトルネックがどこにあるかのある程度の感覚(私の場合は「240pだけなら、USBでも低遅延で伝送できるかもしれない」という仮説と、実現可能かどうかを確認するための事前の計算)があれば、完全には理解していない分野に深く踏み込むプロジェクトを実際に実現できるということです。もちろんAIの助けを借りて。そして実際に構築したことで、DHCPやUDPなど、普段触れないものを学ぶことができ、それは本当に楽しい学びでした。