技術解説 · 1分で読めます
TONOの仕組み
TONOは、Core Audioのprocess tapを通じてすべてのアプリの音を受け取ります。process tapは、ほかのアプリの音声を取得するためにmacOSがバージョン14.2から提供しているインターフェイスです。TONOはその音をメモリ上で数ミリ秒のレイテンシで処理し、出力先で再生します。カーネル機能拡張はインストールせず、仮想出力デバイスも必要ありません。TONOが終了したりクラッシュしたりしても、macOSはすぐにすべてのアプリの元の音を戻します。小さなオーディオドライバを使うのはオプションの仮想マイクだけで、それもユーザー空間で動作します。
シグナルパス
1.5 ms
リミッターの先読み時間。TONOが音に加える固定の遅延の大部分です。
TONO 2.5.0macOS 15以降Appleシリコン更新
シグナルパス
- アプリはいつもどおり再生します。Spotify、Safari、ミュージック、ゲーム、通話は、現在の出力先に音を送ります。アプリ側の設定を変える必要はありません。
- process tapがTONOに音を渡します。TONOはCore Audioに、デフォルトの出力先へのtapを要求します。macOSはそこで再生中のアプリの音をステレオにミックスして渡し、TONOがtapを保持している間だけ元の出力をミュートします。TONO自身のプロセス、既知のオーディオ中継アプリ、同じデバイスから録音しているアプリ(たとえばAirPodsやヘッドセットのマイクを使った通話)は対象外で、そのまま再生されるため、音がループすることはありません。
- TONOはオーディオスレッド上で処理します。プライベートな機器セット(aggregate device)が、出力先とtapを結びます。各バッファ(有線の出力では256サンプル、BluetoothとAirPlayでは512サンプル)はメモリ上でTONOのチェーンを通り、オーディオスレッドではメモリ確保もロックも行いません。
- 処理された音は出力先へ送られます。スピーカー、ヘッドホン、USB、HDMI、DisplayPort、AirPlay。音量キーもそのまま使えます(TONOの後ろにあるためです)。デバイスを切り替えれば、TONOも追従します。
処理チェーン(順番どおり)
- プリアンプとオートゲイン:ブーストしたカーブが、単に音量を上げるだけにならないようにします。
- ベースエンハンサー、続いてイコライザ:アナログの特性に合わせたフィルターによる最大24バンド(スペクトルの上端付近でも特性が崩れません)。カットはオクターブあたり6〜96 dB、各バンドは両チャンネル、左、右、ミッド、サイドのいずれかに適用できます。
- エアー、レベラー、ステレオ幅、クロスフィード:クイックコントロールとプリセットが使います。
- 3Dと8D:頭部のバイノーラルモデル(両耳間の時間差とレベル差、耳介によるノッチ)とルームリバーブ。
- 出力:最大+18 dBのゲイン、バランス、モノラル。その後に耳ごとの聴覚プロファイル。
- 先読みリミッター:4倍オーバーサンプリングによるトゥルーピーク検出。リミッターがオン(デフォルト)の間、出力が上限を超えることはありません。
- リスニングガード:スリープタイマーのフェードアウトと、聴覚保護の音量上限が最後に入ります。
画面のカーブは、音声が通るのと同じフィルター係数から計算されています。見たとおりの音が聞こえます。
レイテンシ
リミッターは1.5 ms先を読みます。トゥルーピークフィルターを含めると、44.1または48 kHzで音を約1.6 ms遅らせます。3Dと8Dで約0.3 msが加わります。出力デバイス自体のバッファと合わせても、TONOの遅れは数ミリ秒。音楽、動画、通話で気になることはありません。HEAR ORIGINALは手を加えていない信号をまったく同じだけ遅らせるので、切り替えても時間がずれることはありません。
TONOが終了・クラッシュしたとき
tapはTONOのプロセスに属しています。プロセスが終わると(通常の終了でもクラッシュでも)、macOSはtapを取り除き、再生していたデバイス上ですべてのアプリのミュートをすぐに解除します。無音のまま取り残されることはありません。設定、プリセット、プロファイルはファイルとして保存されていて、次に起動したときに戻ります。録音中だった音声は作業ファイルから復元されます。
アプリごとにフェーダーをひとつ
アプリミキサー(App Mixer)をオンにすると、TONOはアプリごとのtapと「Everything else(その他すべて)」用のtapを開き、それぞれのフェーダーでミックスして、その合計をチェーンに通します。別の出力先に送ったアプリは、それぞれの経路でそのデバイスに送られ、個別に処理されます。そこでもイコライザは効きますが、スピーカー、HDMI、DisplayPort、AirPlayでは3Dと8Dはかかりません。
録音
録音は専用のプライベートなtapを使うため、システムオーディオ、ひとつのアプリ(そのすべてのプロセスを、どのデバイスでも)、または通話とあなたのマイクを録音できます。オーディオスレッドはロックフリーのリングバッファにコピーするだけで、別の書き込みスレッドがM4A、WAV、FLACにエンコードしながらジャーナルを記録します。そのため、クラッシュしても、ディスクがいっぱいになっても、スリープしても、必ず再生できるファイルが残ります。
マイクスタジオとTONO Mikro
マイクスタジオ(Mic Studio)は、マイクにかかる独立したチェーンです。ハイパス、ゲイン、ノイズフィルター(AIはMac上でAppleの声を分離するオーディオユニットを使い、LightはTONO独自のスペクトルフィルター)、ゲート、トーン、コンプレッサー、ディエッサー、エフェクト、−1 dBFSのリミッター。その結果がTONO Mikroに送られます。TONO Mikroは、独自のユーザー空間プロセスで動くオーディオサーバープラグインが提供する仮想入力です。セッションが動くのは、アプリがTONO Mikroを読み込んでいる間だけ。TONOが止まると、TONO Mikroが返すのは無音で、古い音声が流れることはありません。
ディスプレイとウインドウ
- 明るさ:内蔵ディスプレイとAppleのディスプレイにはmacOS自身のディスプレイサービス、外部モニターにはDDC/CI(各モニターを一度、検証付きの読み取りで確認します)、それ以外のディスプレイと最低値より下の範囲にはソフトウェアのオーバーレイを使います。オーバーレイは、フルスクリーンのアプリを含むすべての操作スペースに表示されます。
- 色温度:ディスプレイが対応していればカラー(ガンマ)テーブルを、それ以外では暖色の色味を重ねます。
- ウインドウ:アクセシビリティのインターフェイスでウインドウを移動・リサイズし、位置はウインドウサーバから取得します。TONOがウインドウのタイトルや内容を読むことはなく、画面を録画することもありません。
権限
| 権限 | macOSが確認するタイミング | 用途 |
|---|---|---|
| 画面収録とシステムオーディオ録音 | 初めてサウンドをオンにしたとき(必須) | process tap。TONOはリアルタイムに処理し、録音ボタンを押したときだけ録音します |
| マイク | 通話の録音、マイクスタジオ | あなたの声 |
| 頭の動き | 3D・空間のヘッドトラッキング | AirPodsでの頭の向き。リアルタイムに使い、保存しません |
| アクセシビリティ | ウインドウモジュール | ほかのアプリのウインドウの移動とリサイズ |
| 位置情報サービス | 任意、自動ルール用 | 正確な日没時刻。許可しない場合はタイムゾーンから求めます |
通信とプライバシー
- ライセンス:アクティベーションと、週に1回程度のLemon Squeezyでの確認。送信するのはライセンスキーと、機種名だけのこのMacの名前(たとえば「MacBook Pro (MacBookPro18,1)」)で、あなたがMacに付けた名前は送信されません。Proは最後の確認から30日間(買い切りライセンスでは60日間)、オフラインでも使えます。
- アップデート:Sparkleが1日に1回、TONOのウェブサイトで新しいバージョンを確認します。送信するのはTONOのバージョンだけです(Tools → Updatesでオフにできます)。すべてのアップデートは署名されていて、インストールの前に検証されます。
- それ以外は何もありません:アカウントもアクセス解析も広告もありません。音、録音、聴覚プロファイル、ルールはあなたのMacに残ります。
TONOがMac App Storeにない理由
TONOはマイクスタジオの仮想マイク用にオーディオドライバをインストールし、App Storeのアプリには使えないシステムインターフェイス(ディスプレイの明るさ調整など)を使います。そのため、TONOはウェブサイトから直接配布しています。
フェイルセーフな設計
- 不正なサンプルはフィルターに入る前にゼロにされ、不具合のあるブロックはミュートされて、チェーンは50 ms以内にクリーンな状態から再開します。
- 出力に書き込まれるすべてのサンプルはクランプされます。リミッターがオン(デフォルト)なら、その上限を超えないことをテストで確認しています。
- ミュートしたマイクはTONOの終了時に解放されます。クラッシュした場合は、次に起動したときにTONOが元に戻します。
よくある質問
Core Audioのprocess tapとは何ですか?
macOS 14.2から使えるmacOSのインターフェイスで、ユーザーの許可のもと、アプリがほかのプロセスの音声(たとえば出力先で再生中のすべての音)を受け取れるようにするものです。この用途では、SoundflowerやBlackHoleのような仮想オーディオドライバが要らなくなりました。
TONOはカーネル機能拡張を使いますか?
いいえ。音はprocess tapを通ります。唯一のドライバであるTONO Mikro(マイクスタジオ用)は、ユーザー空間で動くオーディオサーバープラグインで、設定したときだけインストールされます。
なぜmacOSはこの権限を「画面収録とシステムオーディオ録音」と呼ぶのですか?
ほかのアプリの音声へのアクセスには、macOSは一律にこの名前を使います。TONOが画面を読み取ることはありません。音をリアルタイムに処理し、録音ボタンを押したときだけ録音します。
TONOはオフラインでも使えますか?
はい。すべての処理はMac上で行われます。Proライセンスは週に1回程度確認され、オフラインでも30日間(買い切りライセンスでは60日間)使えます。
Macを、
鳴らそう。
無料でダウンロード。最初の1日間はProのすべてが使えます。アカウントは不要です。
ずっと無料Proは月額€3.99からmacOS 15以降Appleシリコン