User Manual

z0 User Manual

z0(ゼロ)— マスタリング専用EQ for macOS
Version 0.12.0

目次

  1. z0とは
  2. システム要件
  3. インストール
  4. z0appセッションマネージャ
  5. TUI EQエンジン操作
  6. ツール詳細
  7. パラメータ仕様
  8. プリセットファイル形式
  9. オフラインエクスポート(CLI)
  10. Aggregate Device と Hog Mode
  11. サンプルレート自動切替
  12. 信号経路と精度
  13. ワークフロー例
  14. トラブルシューティング
  15. 技術仕様一覧
01

z0とは

z0は macOS専用のマスタリングEQです。

設計哲学は「何もしていないように聴こえるEQ」。Core Audio HALに直結し、信号経路から一切の余分な処理を排除しています。

z0は2つのコンポーネントで構成されます:

02

システム要件

項目要件
OSmacOS 10.15 (Catalina) 以降
アプリケーションTerminal.app(標準搭載)
オーディオCore Audio対応オーディオインターフェース
メモリ再生ファイルをRAMに全読込(下記テーブル参照)
対応フォーマットWAV, AIFF, FLAC, MP3, M4A, CAF
対応サンプルレート44.1kHz, 48kHz, 88.2kHz, 96kHz, 176.4kHz, 192kHz
非対応フォーマットDSD (.dsf / .dff) — macOS Core Audio (ExtAudioFile API) にDSD-to-PCMコンバータが含まれないため

メモリとファイル長の制約

z0は再生・処理の前にオーディオファイル全体をRAMにロードします。これにより、ストリーミングアーティファクトのないbit-perfect信号処理を保証しますが、再生可能なファイル長はシステムの空きメモリに依存します。

連続再生(プレイリスト)には影響しません。曲間でメモリは完全に解放されます。

RAM容量別 最大再生時間(目安):

前提: ステレオ (2ch)、リアルタイムツール (32 bytes/frame)。空きRAM = 搭載RAM − 5 GB(OS+アプリ概算)。オフラインエクスポート (z6mo6) はメモリ使用量が半分のため、下記の2倍の長さを処理可能。

サンプルレート8 GB16 GB32 GB64 GB96 GB128 GB
44.1 kHz32 min1h 4min2h 9min4h 19min6h 29min8h 39min
48 kHz29 min59 min1h 59min3h 58min5h 58min7h 57min
88.2 kHz16 min32 min1h 4min2h 9min3h 14min4h 19min
96 kHz14 min29 min59 min1h 59min2h 59min3h 58min
176.4 kHz8 min16 min32 min1h 4min1h 37min2h 9min
192 kHz7 min14 min29 min59 min1h 29min1h 59min
352.8 kHz4 min8 min16 min32 min48 min1h 4min
384 kHz3 min7 min14 min29 min44 min59 min

計算式: 空きバイト数 / 32 / サンプルレート / 60。32 bytes/frame = 2ch × Float64 (8 bytes) × 2バッファ (source + render)。

03

インストール

ビルド

# TUI EQエンジン
cc -O2 -o z6trb  z6trb.c  -framework CoreAudio -framework AudioToolbox -framework CoreFoundation -lncurses
cc -O2 -o z6ma   z6ma.c   -framework CoreAudio -framework AudioToolbox -framework CoreFoundation -lncurses
cc -O2 -o z6mb   z6mb.c   -framework CoreAudio -framework AudioToolbox -framework CoreFoundation -lncurses
cc -O2 -o z6mc   z6mc.c   -framework CoreAudio -framework AudioToolbox -framework CoreFoundation -lncurses
cc -O2 -o z6mams z6mams.c -framework CoreAudio -framework AudioToolbox -framework CoreFoundation -lncurses

# Play(EQなし)
cc -O2 -o z6pb   z6pb.c   -framework CoreAudio -framework AudioToolbox -framework CoreFoundation
cc -O2 -o z6pb32 z6pb32.c -framework CoreAudio -framework AudioToolbox -framework CoreFoundation

# オフラインエクスポート
cc -O2 -o z6mo   z6mo.c   -framework AudioToolbox -framework CoreFoundation
cc -O2 -o z6mo6  z6mo6.c  -framework AudioToolbox -framework CoreFoundation
cc -O2 -o z6moms z6moms.c -framework AudioToolbox -framework CoreFoundation

# セッションマネージャ
swiftc -O -o z0app z0app.swift -framework Cocoa -framework SwiftUI -framework UniformTypeIdentifiers -framework AVFoundation -framework CoreAudio

配置

sudo cp z6pb z6pb32 z6trb z6ma z6mc z6mams z6mach z6mo z6mo6 z6moms z0app /usr/local/bin/
cp z0app z0.app/Contents/MacOS/z0app
04

z0appセッションマネージャ

4.1 起動と画面構成

z0appを起動すると、3つのペインで構成されたウィンドウが表示されます。

┌──────────┬──────────────────────────────────────────────────┐
│ Session  │  Track List                                      │
│ List     │                                                  │
│          │  01  track1.wav    96kHz/24bit  4.2MB  3:21  ... │
│ ・sess1  │  02  track2.wav    48kHz/16bit  2.1MB  2:45  ... │
│ ・sess2  │  03  track3.wav    96kHz/24bit  8.7MB  5:12  ... │
│          │                                                  │
│          ├──────────────────────────────────────────────────┤
│          │  History Panel(Hキーで表示/非表示)               │
│          │  14:30  input:+0.5  b1:100/-2.0/1.41  b2:...    │
│          │  14:15  input:0.0   b1:100/0.0/1.00   b2:...    │
├──────────┴──────────────────────────────────────────────────┤
│ [Open] [New] [Play] [Stop] [Play All] [Export] [History] [Lock] │
│                                          3 tracks / 1 preset │
└─────────────────────────────────────────────────────────────┘

ペイン構成:

領域内容
サイドバー(左・幅180px)セッション名入力欄、セッション一覧、[+ New]ボタン
トラックリスト(中央)読み込んだオーディオファイル一覧。ドラッグで並び替え可能
ヒストリーパネル(下部)Hキーで表示/非表示。プリセット履歴を時系列で表示
ボトムバー操作ボタン群 + ステータス表示

ペイン間移動: Tabキーで サイドバー → トラックリスト → ヒストリーパネル → サイドバー と循環。

トラック行の表示項目:

表示内容
ステータスシンボル○ 未処理 / ● プリセットあり / ✓ エクスポート済 / ▶ 再生中
番号01, 02, ...
ファイル名元ファイル名
フォーマットサンプルレート / ビット深度
ファイルサイズKB / MB / GB
再生時間MM:SS
ツール< Mode Name > 左右矢印で切替可能
プリセット時刻最終プリセット保存時刻(HH:mm、緑色)
履歴数x3 等(プリセットが複数ある場合)
メモインライン編集可能なテキスト

!!SRC!! 警告: トラックのサンプルレートがオーディオデバイスの対応範囲外の場合、赤い !!SRC!! が表示されます。サンプルレート変換が発生し音質に影響する可能性があることを示します。

4.2 セッション管理

セッションは作業状態を保存・復元する単位です。

操作方法
新規セッションCmd+N または サイドバーの [+ New]
セッション切替サイドバーでセッション名をクリック
セッション名変更サイドバー上部のテキスト欄に直接入力
セッション削除サイドバーで右クリック → Delete

保存場所: ~/Library/Application Support/z0app/(環境設定で変更可能)

自動保存: 変更があると2秒ごとに自動保存されます。未保存の変更がある場合、ウィンドウタイトルとボトムバーに が表示されます。

4.3 ファイル管理

ファイルの追加:

方法操作
ファイルピッカーCmd+O
ドラッグ&ドロップファイルをウィンドウにドロップ

対応形式: WAV, AIFF/AIFF-C, FLAC, MP3, M4A, CAF

ファイル追加時に以下のメタデータが自動取得されます:

トラック操作:

操作方法
並び替えトラック行をドラッグ
削除トラック選択 → Delete / Backspace
メモ編集メモ欄をクリックして入力

4.4 ツール選択

トラックリストペインで キーを押すとツールが切り替わります。

モードプレビューエクスポートバンド数位相
Lucidz6pb320
Lucid doublez6pb0
Sculptz6trbz6mo4 PKMinimum
Coherent Livez6maz6mo6LS+4PK+HSZero
Coherentz6mcz6mo6LS+4PK+HSZero
Facetz6mamsz6moms6M+6SZero
Immersez6machz6mo6LS+4PK+HS (×Nch)Zero

ロック中のトラックではモード切替不可。

4.5 再生

操作方法
選択トラック再生Return / ダブルクリック / [Play]ボタン
停止q / [Stop]ボタン
全トラック連続再生[Play All]ボタン
全停止[Stop All]ボタン / q

再生を開始すると:

  1. z0appがTerminal.appに新しいタブ(または既存タブを再利用)を開く
  2. 選択されたツールのTUIバイナリがファイルパスを引数に起動
  3. ツール付きのトラックでは、保存済みプリセットが自動ロードされる

再生中、z0appのボトムバーに ▶ 02 filename [EQ Mode] と再生状況が表示されます。

Play Allモード: 全トラックを上から順に再生します。各トラックの再生終了をCFNotificationで検知し、次のトラックに自動で進みます。

4.6 プリセット管理

TUI EQエンジンで s キーを押すとプリセットが保存され、z0appに自動的に反映されます。

操作方法
プリセット保存TUI上で s キー
プリセットコピーCmd+C(選択トラックのプリセットをコピー)
プリセットペーストCmd+V(選択トラックにペースト)

バンド数自動変換: 異なるツール間でプリセットをコピー&ペーストすると、バンド数が自動変換されます。

変換元 → 変換先処理
4バンド → 6バンドLS (80Hz, Q=0.71) と HS (12kHz, Q=0.71) を追加
6バンド → 4バンド中央4バンド(PK1-PK4)を抽出
6バンド → 12バンド6バンドをMid/Side両方に複製
12バンド → 6バンドMid側の6バンドを抽出

4.7 プリセット履歴

H キーでヒストリーパネルの表示/非表示を切り替えます。

各トラックのプリセット保存履歴が新しい順に表示され、以下の情報が確認できます:

履歴からのリバート:

  1. ヒストリーパネルにフォーカス(Tabキー)
  2. でプリセットを選択
  3. Return で選択したプリセットにリバート

リバートは破壊的ではありません。選択したプリセットの値で新しいエントリが作成されます。ロック中のトラックではリバート不可。

4.8 エクスポート

Cmd+E または [Export] ボタンでエクスポートを実行します。

  1. 保存先フォルダを選択(存在しない場合は自動作成)
  2. 全トラックがバックグラウンドで順次処理される
  3. 進行状況がプログレスバーで表示される

出力ファイル:

01_track1.wav
02_track2.wav
03_track3.wav
eq_sheet.txt      ← EQ設定シート

eq_sheet.txt には各トラックの以下の情報が記録されます:

出力ビット深度:

エクスポート完了後、トラックのステータスが ✓ に変わります。

4.9 ロック機能

Cmd+L または [Lock] ボタンでトラックをロックします。

ロック中は以下の操作が制限されます:

ロック中のトラック行は黄色い背景で表示されます。A/Bテスト時のリファレンストラック保護や、確定済みの設定の誤変更防止に使用します。

4.10 プロジェクトファイル

セッションとは別に、プロジェクトファイル(.z0proj)として保存・読込が可能です。

操作ショートカット
プロジェクト保存Cmd+S
名前を付けて保存Cmd+Shift+S
プロジェクトを開くCmd+Shift+O

プロジェクトファイルはJSON形式で、全トラック情報・プリセット履歴・ツール設定を含みます。

4.11 環境設定

Cmd+, で環境設定ウィンドウを開きます。

設定項目説明
セッション保存フォルダセッションデータの保存先。[Choose...] で変更、[Default] でデフォルトに戻す
エクスポートビット深度「入力と同じ」(デフォルト)または「16bit → 24bit(EQ精度保持)」
Peak navigationピーク検出数(デフォルト: 20、範囲: 1-256)
Quiet Mode再生中にmacOSのバックグラウンドプロセスを一時停止(下記4.12参照)
CoreAudio Recovery[Reset CoreAudio] ボタンでcoreaudiodを再起動。Aggregate Device障害からの復旧用(パスワード要)

4.12 Quiet Mode

z0はまだ開発の途上です。Quiet Modeはテスト段階ですので、お使いの環境で効果が認められたもののみONにしてください。

Quiet Modeは、再生中にマスタリングに無関係なmacOSバックグラウンドプロセスを一時停止する機能です。再生が終了すると全て自動的に復帰します。

macOSは常時600以上のプロセスを実行しており、その中にはSpotlight検索インデックス、iCloud同期、AI写真解析、行動パターン学習、天気データ取得など、オーディオ処理とは無関係なCPU・ディスク・ネットワーク活動が含まれます。これらのバックグラウンド活動を再生中だけ一時停止することで、z0のオーディオ処理がCPUをほぼ独占的に使用できる環境を作ります。

トグル一覧:

トグル対象sudo
Spotlight & Time MachineSpotlightインデックス作成停止、Time Machine一時無効化Yes
Wi-Fi無線LANを一時停止No
BluetoothBluetooth通信を一時停止Yes
Photo & Media analysis写真・動画のML解析を凍結No
Learning & Personalization行動パターン学習・提案エンジンを凍結No
Weather天気データ取得を凍結No
iCloud & Apple RemoteiCloud同期・AppleリモートA/Bテストを凍結No
Siri & IntelligenceSiri・Apple Intelligence基盤を凍結No
Nearby device scanningAirDrop/Handoffのデバイス探索を凍結No
Widgetsウィジェット更新を凍結No
Overbridge EngineElektron Overbridge Engineを凍結No
superwhispersuperwhisper音声入力を凍結No
Quit FinderFinderをCmd+Q相当で終了No

sudo項目: Spotlight & Time Machine、Bluetoothの3項目はシステム権限が必要です。再生開始時にTerminal上でパスワードを求められます(5分間キャッシュされるため、連続再生中は1回だけ入力すれば十分です)。

自動クリーンコピー: Quiet Modeの有無に関わらず、再生時はファイルを自動的に隠しディレクトリ(~/.z0audio/)にxattr除去コピーし、そこから再生します。このディレクトリはSpotlight対象外で.DS_Storeも生成されません。再生終了時に自動削除されます。

注意事項:

4.13 キーボードショートカット一覧

グローバル(全ペイン共通):

キー動作
Cmd+Oファイルを開く
Cmd+N新規セッション
Cmd+Sプロジェクト保存
Cmd+Shift+S名前を付けて保存
Cmd+Shift+Oプロジェクトを開く
Cmd+Eエクスポート
Cmd+Cプリセットコピー
Cmd+Vプリセットペースト
Cmd+,環境設定
Cmd+Q終了
Tab次のペインへ移動

トラックリストペイン:

キー動作
トラック選択
ツール切替
Return再生/停止
Deleteトラック削除
Hヒストリーパネル表示/非表示
Cmd+Lロック切替
q再生停止

ヒストリーパネル:

キー動作
プリセット選択
Return選択プリセットにリバート

4.14 メニュー構成

z0appメニュー:

Fileメニュー:

Editメニュー:

05

TUI EQエンジン操作

z0appからトラックを再生するとTerminal.appにTUI(テキストユーザインターフェース)が表示されます。EQパラメータの操作はすべてこのTUI上で行います。

5.1 TUI画面構成

4バンドモード(Sculpt: z6trb):

z6trb -- 4-band Kahan L2 EQ (PK, ringbuf, |H|, ASCII, mlock)
> Input:Gain [0.0     ] dB
> PK 1 :Freq [100     ] Hz Gain [0.0     ] dB Q    [1.41   ]
  PK 2 :Freq [430     ] Hz Gain [0.0     ] dB Q    [1.41   ]
  PK 3 :Freq [2000    ] Hz Gain [0.0     ] dB Q    [1.00   ]
  PK 4 :Freq [10000   ] Hz Gain [0.0     ] dB Q    [1.00   ]

96000.0Hz/24bit/2ch Playing 64bit(80bit) | ring 262144 (2.7s lead)

/path/to/file.wav

Tab/Arrows:move  0-9:input  A/Z:step  Enter:apply  b:bypass  r:reset  s:save  q:quit

6バンドモード(Coherent Live: z6ma / Coherent: z6mc):

z6ma -- 6-band Zero Phase EQ (LS/PK/HS, block fwd+bwd, |H|^2, ASCII, mlock)
> Input:Gain [0.0     ] dB
> LS   :Freq [80      ] Hz Gain [0.0     ] dB S    [0.71   ]
  PK 1 :Freq [100     ] Hz Gain [0.0     ] dB Q    [1.41   ]
  PK 2 :Freq [430     ] Hz Gain [0.0     ] dB Q    [1.41   ]
  PK 3 :Freq [2000    ] Hz Gain [0.0     ] dB Q    [1.00   ]
  PK 4 :Freq [10000   ] Hz Gain [0.0     ] dB Q    [1.00   ]
  HS   :Freq [12000   ] Hz Gain [0.0     ] dB S    [0.71   ]

96000.0Hz/24bit/2ch Playing 64bit(80bit) | pad=12345 | render 0.42s

/path/to/file.wav

Tab/Arrows:move  0-9:input  A/Z:step  Enter:apply+render  b:bypass  r:reset  s:save  q:quit

画面要素:

内容
1行目バイナリ名 + ツール説明
2行目Input Gain(全バンド共通の入力ゲイン)
3行目Width(ステレオ幅、Facetのみ)
以降各バンドのFreq / Gain / Q(またはS)
ステータス行サンプルレート/ビット深度/チャンネル数、再生状態、バッファ情報
ファイルパス行再生中のファイルパス
ヘルプ行操作キー一覧

> マークはカーソル位置(現在フォーカスされているバンド)を示します。フィールド値は [ ] で囲まれ、現在編集中のフィールドは太字+アンダースコアで表示されます。

5.2 ナビゲーション

キー動作
Tab次のフィールドへ(Freq → Gain → Q → 次のバンドのFreq...)
Shift+Tab前のフィールドへ
前のバンドへ
次のバンドへ
同バンド内で前のフィールドへ
同バンド内で次のフィールドへ

5.3 パラメータ入力

フィールドにフォーカスした状態で直接数値を入力できます。

キー動作
0-9数値入力(最初のキーストロークでフィールドクリア)
.小数点
-マイナス符号
k / KkHz接尾辞(入力値×1000。例: 1.5k → 1500 Hz)
Backspace最後の文字を削除
Enter入力値を確定・適用

入力範囲:

5.4 ステップ入力(A/Zキー)

テーブルに沿って値をステップで上下できます。

キー動作
A現在値の最も近いテーブルエントリから1段上へ
Z現在値の最も近いテーブルエントリから1段下へ

A/Zキーでの変更は即座に適用されます(Enterキー不要)。Zero Phaseモードでは適用と同時に全ファイルの再レンダリングが実行されます。

5.5 バイパス・リセット・保存

キー動作
bバイパス切替。全ゲインを0dBに設定し、EQを透過にする。もう一度押すと元のゲインに復帰。画面に [BYPASS] が表示される
rファクトリーリセット。全パラメータをデフォルト値に戻す
sプリセット保存。現在のEQ設定をファイルに保存。z0appに自動通知される
q終了。未保存の場合は自動保存してから終了

5.6 TUIキーボードショートカット一覧

キー動作
Tab次のフィールド
Shift+Tab前のフィールド
バンド/フィールド移動
0-9 . - k数値入力
Backspace文字削除
Enter確定・適用(Zero Phaseでは再レンダリング)
Aステップアップ(即時適用)
Zステップダウン(即時適用)
wWidth +10(Facetのみ)
WWidth -10(Facetのみ)
LM/S Link切替(Facetのみ、デフォルトON)
]次のピークへジャンプ
[前のピークへジャンプ
bバイパス切替
rファクトリーリセット
sプリセット保存
q終了

テンキーの数字・小数点・マイナスキーにも対応しています。

5.7 ピークナビゲーション

曲中のピーク位置を自動検出し、[ ] キーでジャンプする機能です。リミッティングが最も作動する箇所だけを連続的にAB比較できます。

動作:

  1. ファイルロード時にピーク位置を自動検出(再生前に1回だけ実行)
  2. ] キーで次のピーク位置へジャンプ(ピークの4秒前から再生開始)
  3. [ キーで前のピーク位置へジャンプ(最初のピークより前では曲頭 0:00 にジャンプ)

操作キー:

キー動作
]次のピークへジャンプ
[前のピークへジャンプ(先頭より前は 0:00)

ピーク検出数の設定:

環境設定(Cmd+,)の「Peak navigation」セクションで、検出するピーク数を指定できます(デフォルト: 20、最大: 256)。ファイル内の振幅が大きい順に指定数のピークが検出され、時系列順に並べられます。近接するピーク(500ms以内)は統合されます。

ワークフロー例:

  1. Ceilingでリミッターの Gain / Ceil を設定
  2. ] キーで最大ピークにジャンプ -- ピーク4秒前から再生開始
  3. ピーク到達時のリミッティングを聴く
  4. b でバイパス比較
  5. Gain / Ceil を微調整 -- Enter で適用
  6. ] で次のピーク、[ で前のピークへ移動して確認

z0appのステータスバーの経過カウンターはシーク位置に自動同期します。

06

ツール詳細

6.1 Lucid(再生専用)

EQ処理を一切行わず、ファイルを純粋に再生するモードです。リファレンス聴取やA/B比較用。

モードバイナリ内部精度
Lucidz6pb32Float32
Lucid doublez6pbFloat64 → Float32出力

信号経路:

ファイル → ExtAudioFile読込 → RAMプリバッファ(mlock) → HAL io_proc → DAC

Lucid と Lucid double の違い:

項目Lucid (32bit)Lucid double (64bit)
プリバッファ形式Float32Float64
io_procでの変換不要(直接コピー)Float64→Float32キャスト
メモリ使用量約半分約2倍

6.2 Sculpt(Minimum-Phase EQ)

リアルタイムIIRフィルタによる4バンドPeaking EQ。

モードバイナリ精度特徴
Sculptz6trbKahan ~80bitリングバッファ方式

信号経路:

ファイル → RAMプリバッファ → リングバッファ(~2.7秒先読み) → 4段Biquad EQ → Float32 → DAC

フィルタ特性:

Minimum-Phase(最小位相)とは:

6.3 Coherent(Zero Phase EQ)

ファイル全体をフォワード+バックワード処理し、位相変化ゼロのEQを実現する6バンドモード。

モードバイナリ特徴
Coherent Livez6maブロック独立fwd+bwd。-144dB精度(事実上100%)。操作用
Coherentz6mc完全パディング。pad上限なし。100%ゼロフェーズ。本番用

6バンド構成:

バンドタイプデフォルト周波数デフォルトQ/S
LSLow Shelf80 HzS = 0.71
PK 1Peaking100 HzQ = 1.41
PK 2Peaking430 HzQ = 1.41
PK 3Peaking2000 HzQ = 1.00
PK 4Peaking10000 HzQ = 1.00
HSHigh Shelf12000 HzS = 0.71

Zero-Phase(零位相)とは:

Coherent Live と Coherent の違い:

項目Coherent Live (z6ma)Coherent (z6mc)
レンダリングブロック単位全体一括
パッド上限ブロック依存制限なし
パラメータ変更即座に反映再読込みプロセスが発生
精度-144dB(事実上100%)100% zero-phase
用途パラメータ探索・A/B比較最終プレイバック・録音

Coherent Liveではパラメータ変更が即座に反映されます。Coherentではファイル全体の再レンダリングが必要で、短い無音の後に再生が再開します。レンダリング所要時間はステータス行に表示されます。

6.4 Facet(MS Zero Phase EQ)

Mid(中央定位の音)とSide(左右に広がる音)を独立にEQする12バンドモード。

モードバイナリバンド構成
Facetz6mamsMid 6バンド + Side 6バンド = 12バンド

Mid/Sideとは:

Width(ステレオ幅コントロール)

M/Sデコード直前のSチャンネルゲインを調整し、ステレオ音像の幅を連続的に制御します。Mは固定のためセンター音量は変化しません。

Width動作
0モノラル出力(S = 0)
100(デフォルト)変化なし。オリジナルとbit-identical
200S成分2倍(最大拡張)

操作: w キーで+10 / W キーで-10。A/Zステップにも対応。10刻み(0, 10, 20, ... 200)。

M/S Linkモード(デフォルトON)

L キーでMid/Sideの相対リンクを切替。SIDEヘッダーに [LINK] が表示されます。

Link ON時、A/Zステップ操作が対応するMid/Side両バンドに同時適用されます。各バンドの個別設定は保持されたまま、同じ変化量が両方に加わります(相対リンク)。

Link OFFにすればいつでも個別操作に戻れます。直接数値入力(Enter確定)は現在のバンドのみに適用されます。信号経路に分岐は入りません。

Zero Phase Elliptical EQ

SideチャンネルのBand 1(Low Shelf)でローカットを設定するだけで、ゼロフェーズのElliptical EQとして機能します。低域のSide成分をカットし、低域をモノラルに集中させます。専用の実装は不要——既存の12バンドMS EQの組み合わせで実現します。

使用例:

各チャンネル(Mid/Side)はそれぞれ LS + 4PK + HS の6バンド構成で、Zero Phase処理が適用されます。

6.5 Immerse(Multi-Ch Zero Phase EQ)

マルチチャンネル対応のゼロフェーズEQ。

モードバイナリバンド構成
Immersez6machLS+4PK+HS × Nチャンネル(最大16ch)

ファイルのチャンネル数を自動検出し、全チャンネルに同一のEQカーブを独立適用します。ソースの各チャンネルがデバイスの対応チャンネルにそのまま出力されます。5.1サラウンドやイマーシブオーディオなど、2chを超えるマルチチャンネルマスタリングに対応します。

07

パラメータ仕様

7.1 周波数テーブル

E12/E24系列ベースの21段階。隣接バンド間で被りなしのインターリーブ配置により、10 Hz〜33 kHzの全帯域をカバーします。PK1–PK4は4バンドモード・6バンドモードで共通です。

バンド範囲デフォルト
PK 110, 12, 15, 18, 22, 27, 33, 39, 47, 56, 68, 82, 100, 120, 150, 180, 220, 270, 330, 390, 470 Hz100 Hz
PK 220, 24, 30, 36, 43, 51, 62, 75, 91, 110, 130, 160, 200, 240, 300, 360, 430, 560, 680, 820, 1000 Hz430 Hz
PK 3510, 620, 750, 910, 1.1k, 1.3k, 1.6k, 2k, 2.4k, 3k, 3.6k, 4.3k, 5.1k, 6.2k, 7.5k, 9.1k, 11k, 13k, 16k, 20k, 24k Hz2000 Hz
PK 4680, 820, 1k, 1.2k, 1.5k, 1.8k, 2.2k, 2.7k, 3.3k, 3.9k, 4.7k, 5.6k, 6.8k, 8.2k, 10k, 12k, 15k, 18k, 22k, 27k, 33k Hz10000 Hz

6バンドモード(Coherent Live / Coherent / Facet / Immerse)では上記PK 1–4に加え:

バンド範囲デフォルト
LS15, 18, 22, 27, 33, 39, 47, 56, 68, 80, 100, 120, 150, 180, 220, 270, 330, 390, 470, 560, 680 Hz80 Hz
HS470, 560, 680, 820, 1k, 1.2k, 1.5k, 1.8k, 2.2k, 2.7k, 3.3k, 3.9k, 4.7k, 5.6k, 6.8k, 8.2k, 10k, 12k, 15k, 18k, 22k Hz12000 Hz

7.2 ゲインテーブル

23段階のMaselec型ゲインステップ:

-10  -8  -6  -5  -4  -3  -2.5  -2  -1.5  -1  -0.5  0  +0.5  +1  +1.5  +2  +2.5  +3  +4  +5  +6  +8  +10 dB

0dB付近は0.5dBステップ、両端に向かうほど粗くなる設計です。マスタリング作業では-3dB〜+3dBの範囲で微調整することが多いため、この範囲を細かくカバーしています。

直接入力では上記テーブル外の値(例: +1.3dB)も入力可能ですが、A/Zステップでは上記テーブル上の最も近い値にスナップします。

7.3 Q/Sテーブル

Q(Peaking EQ帯域幅)— 5段階:

Q値意味
0.58非常にブロード(約3オクターブ幅)
0.92ブロード(約2オクターブ幅)
1.41標準(約1オクターブ幅)
1.95ナロー(約0.7オクターブ幅)
2.85非常にナロー(約0.5オクターブ幅)

S(Shelf Slope スロープ)— 5段階:

S値意味
0.30非常に緩やかな傾斜
0.50緩やかな傾斜
0.71標準(Butterworthスロープ)
1.00急な傾斜
1.50非常に急な傾斜
08

プリセットファイル形式

プリセットはプレーンテキスト(.txt)で保存されます。

4バンドモード:

input_gain: 0.5
band1: 100.0 -2.0 1.41
band2: 430.0 3.5 1.41
band3: 2000.0 0.0 1.00
band4: 10000.0 1.2 0.92

6バンドモード:

input_gain: 0.5
band1: 80.0 -1.5 0.71
band2: 100.0 -2.0 1.41
band3: 430.0 3.5 1.41
band4: 2000.0 0.0 1.00
band5: 10000.0 1.2 0.92
band6: 12000.0 0.5 0.71

12バンドMS モード:

input_gain: 0.5
mid1: 80.0 -1.5 0.71
mid2: 100.0 -2.0 1.41
mid3: 430.0 0.0 1.41
mid4: 2000.0 0.0 1.00
mid5: 10000.0 0.0 0.92
mid6: 12000.0 0.5 0.71
side1: 80.0 0.0 0.71
side2: 100.0 0.0 1.41
side3: 430.0 0.0 1.41
side4: 2000.0 1.5 1.00
side5: 10000.0 2.0 0.92
side6: 12000.0 3.0 0.71

各行の形式: キー: 周波数(Hz) ゲイン(dB) Q値

周波数には k 接尾辞が使用可能(例: 1.5k = 1500 Hz)。

プリセット履歴は --- で区切られたブロックとして1ファイルに蓄積されます:

---
# z6trb preset -- 2026-03-14 14:30:45
# path: /path/to/file.wav
input_gain: 0.5
band1: 100.0 -2.0 1.41
...
---
# z6trb preset -- 2026-03-14 15:10:22
# path: /path/to/file.wav
input_gain: 0.0
band1: 100.0 -1.0 1.41
...
09

オフラインエクスポート(CLI)

z0appのエクスポート機能はオフラインバイナリを内部的に呼び出しますが、CLIから直接実行することも可能です。

使用法:

# 4バンド Minimum-Phase エクスポート
z6mo input.wav preset.txt output.wav

# 6バンド Zero Phase エクスポート
z6mo6 input.wav preset.txt output.wav

# 12バンド MS Zero Phase エクスポート
z6moms input.wav preset.txt output.wav

出力ファイルパスを省略すると、macOSの保存ダイアログが表示されます。

処理内容:

  1. 入力ファイルをFloat64で全読込
  2. ミラーパディング適用(-144dBまで減衰する長さ)
  3. フォワードパス: Kahan補償Biquad EQ適用
  4. バックワードパス: 同じBiquad EQを逆方向に適用
  5. 出力ファイルに書き出し

出力ビット深度:

処理時間: ステレオ10分/96kHzのファイルで数秒程度。処理終了時にリアルタイム倍率が表示されます。

10

Aggregate Device と Hog Mode

Aggregate Device

z0は起動時に自動的にAggregate Deviceを作成し、オーディオインターフェースをラップします。

Aggregate Deviceとは:

z0が行う処理:

  1. デフォルト出力デバイスの物理デバイスUIDを取得
  2. com.z0.aggregate というプライベートAggregate Deviceを作成
  3. 物理デバイスをサブデバイスとして登録
  4. マスター・左右チャンネルのボリュームを1.0に固定(HALミキサーによる減衰を防止)

Hog Mode

Hog Modeはオーディオデバイスを1つのプロセスに独占させるCore Audioの機能です。

なぜ必要か:

ユーザへの影響:

11

サンプルレート自動切替

z0はファイルのサンプルレートとオーディオデバイスのサンプルレートの不一致を検出し、自動的にデバイスのサンプルレートを切り替えます。

動作フロー:

  1. デバイスのVirtual Format(現在の動作サンプルレート)を取得
  2. ファイルのサンプルレートと比較
  3. 不一致の場合:

z0app の !!SRC!! 警告:

デバイスがファイルのサンプルレートに対応していない場合、トラックリストに赤い !!SRC!! が表示されます。この場合、macOS Core Audioによるサンプルレート変換(SRC)が発生し、音質に影響を与える可能性があります。

12

信号経路と精度

信号経路比較

macOS afplay(標準プレーヤー):

File → AudioQueue → Core Audio → DAC
    (3層以上の処理層)

z0 Play(EQなし):

File → ExtAudioFileRead → mlock RAM → HAL io_proc → DAC
    (HAL直結、最小限の中間処理)

z0 EQ(Minimum-Phase):

File → RAM(mlock) → Ring Buffer(2.7s先読み) → 4段Biquad → Float32 → DAC
    (全処理が1つのタイトループ内、ゼロコピー)

z0 EQ(Zero Phase):

File → RAM(mlock) → Mirror Pad → Forward Pass(6段Biquad) → Backward Pass → Render Buffer(mlock) → HAL io_proc → DAC

精度の階層

段階精度方式
IEEE 754 Float32約24bit(仮数23bit + 暗黙1bit)HAL出力形式
IEEE 754 Float64約53bitz0内部処理形式
Kahan補償付きFloat64約80bitz6trb / z6ma / z6mb / z6mc

z0の内部処理はFloat64(53bit精度)ですが、Kahan補償加算により実効約80bitの精度を達成しています。最終的なHAL出力はFloat32ですが、24bitオーディオのダイナミックレンジ(約144dB)を完全に包含しています。

メモリ管理

13

ワークフロー例

基本マスタリングセッション

  1. z0appを起動
  2. Cmd+N で新規セッション作成
  3. Cmd+O またはドラッグ&ドロップでオーディオファイルを追加
  4. でツールを選択(例: Coherent)
  5. トラック選択 → Return で再生開始(Terminal.appにTUIが起動)
  6. TUI上でEQパラメータを調整
  7. s でプリセット保存 → z0appに自動反映
  8. q で再生停止、次のトラックを選択して繰り返し
  9. 全トラック完了後 Cmd+E でエクスポート
  10. Cmd+S でプロジェクト保存

A/Bテスト

  1. トラックのEQを調整し s でプリセット保存
  2. 別の設定に変更し再度 s で保存(履歴に2エントリ蓄積)
  3. H でヒストリーパネルを表示
  4. Tab でヒストリーにフォーカス、 で切替、Return でリバート
  5. 元の設定と比較試聴

複数トラックへの一括プリセット適用

  1. 最初のトラックでEQを調整・保存
  2. Cmd+C でプリセットをコピー
  3. 他のトラックを選択 → Cmd+V でペースト
  4. 各トラック個別に微調整

ステレオイメージ調整(MS EQ)

  1. ツールを Facet に設定
  2. Mid側でボーカル・ベースを調整(例: 中低域カット)
  3. Side側でステレオ感を調整(例: 高域ブースト→広がり強調)
  4. プリセット保存 → エクスポート
14

トラブルシューティング

"command not found" エラー

zsh: command not found: z6trb

バイナリが /usr/local/bin/ に配置されていません。ビルド後に配置コマンドを実行してください。

オーディオが歪む/再生されない

z0appからTUIが起動しない

再生が途中で止まる

エクスポートが失敗する

Coherent モードのレンダリングが遅い

15

技術仕様一覧

項目仕様
内部処理精度IEEE 754 Float64 (53bit) + Kahan補償 (~80bit)
HAL出力形式IEEE 754 Float32
リングバッファサイズ2^18 = 262144フレーム(96kHzで約2.7秒先読み)
フィルタ設計RBJ Audio EQ Cookbook + L2プリワーピング補正
ゲイン範囲-10.0 dB 〜 +10.0 dB
周波数ステップ21段(E12/E24インターリーブ)
ゲインステップ23段(Maselec型)
Qステップ5段(0.58, 0.92, 1.41, 1.95, 2.85)
Sステップ5段(0.30, 0.50, 0.71, 1.00, 1.50)
パディング基準-144dB減衰(24bitダイナミックレンジ以下)
メモリ固定mlock() + 事前ページフォールト
IPC方式CFNotification (Distributed)
プリセット形式プレーンテキスト(YAMLライク)
プロジェクト形式.z0proj (JSON)
セッション自動保存2秒間隔
Aggregate Device UIDcom.z0.aggregate
SR切替ポーリング最大40回 × 50ms = 2秒

z0 v0.12.0 -- Mac専用マスタリングEQ

設計哲学: 「何もしていないように聴こえるEQ」