オープンソースプロジェクト
TomHarte/CLK avatar
TomHarte/CLK

Clock Signal:メディアをダブルクリックで起動する低遅延エミュレーター

遅延を嫌うエミュレータ: Acorn Electron、BBC Micro および Archimedes、Amstrad CPC、Apple II/II+/IIe および初期の Macintosh、Atari 2600 および ST、ColecoVision、Enterprise 64/128、Commodore Vic-20 および Amiga、MSX 1/2、Oric 1/Atmos、初期の PC 互換機、Sega Master System、Sinclair ZX80/81とZXスペクトラム、タンディココとトムソンMO5/6。

スター 1,141フォーク 67C++MIT
GitHub

ひと目でわかる

これは何?
Acorn ElectronからMSX、Vic-20、初期Macintoshまでを対象に、機種選択と信号処理を利用者から隠すC++エミュレーターです。
誰に向いている?
Clock Signal:メディアをダブルクリックで起動する低遅延エミュレーターは、READMEに記載されたClock Signal、CLK、TomHarte/CLK、Snap、OpenGL、Metalを自分の環境で確認できる開発者や利用者に向いています。反対に、対応OS、モデル精度、転送互換性、性能を文書だけで保証してほしい場合には向きません。
商用利用できる?
できます。MIT は寛容なライセンスで、著作権表示とライセンス表示を残せば、使用・改変・販売が可能です。
今もメンテナンスされている?
されています。最後のコミットは 49 日前です。
何の言語で書かれている?
主に C++ です(GitHub の言語統計による)。

回答はプロジェクトの GitHub データ(最終同期:2026年9月14日)と当サイトの分析に基づくもので、法的助言ではありません。

オープンソース詳細解説

対応機種の広さと完成度の境界

Clock Signal、略称CLKは、C++で書かれたエミュレータで、その掲げる目標は目立たないことだ。ユーザーはエミュレータの操作方法や実機の癖を学ぶ代わりに、古典的ソフトウェアを直接起動する。READMEは冒頭で三つのプロジェクト目標を挙げている。対応プラットフォームのあらゆるソースメディアをシングルクリックで読み込むこと、元の出力を忠実に再現するための信号処理を重視すること、遅延を可能な限り避けること。完全なエミュレーションとして挙げられているのは、Acorn Electron、Amstrad CPC、Apple II/II+とIIe、Atari 2600とST、BBC Micro、ColecoVision、Commodore Plus 4とVic-20、Enterprise 64/128、初期Macintoshモデル、MSX 1と2、Oric 1/Atmos、Sega Master System、Sinclair ZX80/81とZX Spectrum、Tandy CoCo 1/2、Thomson MO5/6。加えて存在するが未完成とされるのが、Acorn Archimedes、Commodore Amiga、初期PC互換機の三つ。

TomHarte/CLKについて、README の Clock Signal、CLK、TomHarte/CLK、Snap、OpenGL、Metal に関する説明と、実際に生成された設定または出力を照合します。

ディスク・テープ・ROMの単一手順

CLKをインストールした状態では、ソフトウェアを読み込む手順は、OS上でファイルを見つけてダブルクリックするだけだ。ユーザーがそのマシンを一度も使ったことがなくても同じである。CLKは静的解析と実行時解析を使って、適切なマシンを自動的に選んで設定し、ディスク、テープ、ROM上のソフトウェアを実行するために必要なコマンドを発行し、可能なら読み込みを高速化する。READMEは、インポート手順はなく、CLKはファイルの所有権を取得せず、OSの起動機構を奪わないと強調する。エミュレートしたタイトルはデスクトップやDockに置いたまま、他のデスクトップソフトと同じように起動できる。

TomHarte/CLKについて、導入時は Clock Signal、CLK、TomHarte/CLK、Snap、OpenGL、Metal の版と配置を記録し、記載されていない既定値を推測しません。

コンポジット映像を信号として扱う

映像出力は実機が生成したのと同じ方法で生成される。READMEの例はVic-20だ。唯一の映像出力がコンポジットであるため、エミュレートされたマシンの唯一の出力もコンポジットであり、ホストのGPUがそのコンポジット信号をデコードする。だからアーティファクトは、後からフィルタをかけたからではなく、実信号が実際に処理されるために現れる。オーディオも同じ経路をたどる。実機が192kHzでオーディオを生成するなら、エミュレータは192kHzのソース信号を生成し、ホストが出力できるレートにフィルタリングする。READMEには比較表が二つあり、一つはElectron、Repton 3、Stormlord、Road Fighter、Donkey Kong、Sonic the Hedgehogで1:1ピクセル複製とコンポジットデコードを並べ、もう一つはAmstrad CPCで1:1ピクセル複製とアスペクト比補正・ローパスフィルタを並べている。

TomHarte/CLKについて、実行に失敗した場合は Clock Signal、CLK、TomHarte/CLK、Snap、OpenGL、Metal のどの段階で止まったかをログとコマンド単位で切り分けます。

CRT表示と音声遅延の設計

表示は蛍光体の残光を持つエミュレートCRTとしてモデル化されており、140Hzの4Kモニタなら4K解像度で毎秒140フレームの異なる画像を生成できる。この設計は、高リフレッシュレートのディスプレイがエミュレートCRTのフレームごとの変化を直接反映できることを意味する。READMEは、遅延はエミュレートされたマシンやエミュレータではなく、ホストハードウェアによって決まると述べている。オーディオ遅延はフレームレートとは独立しており、通常5-10ミリ秒に抑えられる。これらの数値は設計目標として示されている。特定のホストで実際に毎秒140フレームに達するか、オーディオ遅延が5-10ミリ秒に収まるかはREADMEでは確認できず、測定方法も示されていない。

TomHarte/CLKについて、複数環境を扱う場合は Clock Signal、CLK、TomHarte/CLK、Snap、OpenGL、Metal の差分を同じ入力で比較し、未確認の対応範囲を広げません。

macOSとUNIX系の描画経路

READMEは精度をユーザー体験の問題と定義する。エミュレータが正確であればあるほど、ユーザーは追加の操作なしで興味のあるソフトウェアをすべて実行できる可能性が高まる。CLKは対応するすべてのマシンでサイクル精度を試みており、READMEは一部のケースで成功したと述べている。どのマシンがサイクル精度を達成したかは名前を挙げられておらず、ベンチマークやテスト結果もない。実際にどのマシンがサイクル精度に達しているかはREADMEでは確認できない。精度目標は独立した性能指標としてではなく、読み込みの約束と結びつけて語られている。

TomHarte/CLKについて、権限や外部接続が関わる場合は Clock Signal、CLK、TomHarte/CLK、Snap、OpenGL、Metal が要求する範囲を確認し、不要な認証情報を入力しません。

CLKで実ファイルを開く前の確認

macOSでは、CLKはネイティブのCocoaとMetalアプリケーションである。Linux、BSD、その他のUNIXおよびUNIX風システムではOpenGLを使用し、QtまたはSDLでビルドできる。macOS版とソースコードはGitHubで公開され、QtベースのLinuxビルドはSnapパッケージとして提供されている。READMEはビルドコマンド、依存関係のバージョン、リリースのダウンロード以外のインストール手順を記録していない。その代わりに、Apple IIe版プリンス・オブ・ペルシャ、Amiga版インディ500、BBC Micro版エリート、PC互換機版フライトシミュレータなどの商用タイトルのスクリーンショットギャラリーを多数含んでおり、エミュレーション出力の視覚的な例となっている。

TomHarte/CLKについて、採用判断では Clock Signal、CLK、TomHarte/CLK、Snap、OpenGL、Metal を使う最小ケースを先に作り、出力またはエラーを README の前提と照合します。

編集部の結論

Clock Signal:メディアをダブルクリックで起動する低遅延エミュレーターは、READMEに記載されたClock Signal、CLK、TomHarte/CLK、Snap、OpenGL、Metalを自分の環境で確認できる開発者や利用者に向いています。反対に、対応OS、モデル精度、転送互換性、性能を文書だけで保証してほしい場合には向きません。Clock Signal、CLK、TomHarte/CLK、Snap、OpenGL、Metalを含む最小の入力を用意し、出力、ログ、権限要求を確認してから運用範囲を決めてください。

公式情報源

  1. Official README
  2. Project repository
  3. Release notes
コミュニティノート

コミュニティノート