User Manual
z0(ゼロ)— マスタリング専用EQ for macOS
Version 0.12.0
z0は macOS専用のマスタリングEQです。
設計哲学は「何もしていないように聴こえるEQ」。Core Audio HALに直結し、信号経路から一切の余分な処理を排除しています。
z0は2つのコンポーネントで構成されます:
| 項目 | 要件 |
|---|---|
| OS | macOS 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 GB | 16 GB | 32 GB | 64 GB | 96 GB | 128 GB |
|---|---|---|---|---|---|---|
| 44.1 kHz | 32 min | 1h 4min | 2h 9min | 4h 19min | 6h 29min | 8h 39min |
| 48 kHz | 29 min | 59 min | 1h 59min | 3h 58min | 5h 58min | 7h 57min |
| 88.2 kHz | 16 min | 32 min | 1h 4min | 2h 9min | 3h 14min | 4h 19min |
| 96 kHz | 14 min | 29 min | 59 min | 1h 59min | 2h 59min | 3h 58min |
| 176.4 kHz | 8 min | 16 min | 32 min | 1h 4min | 1h 37min | 2h 9min |
| 192 kHz | 7 min | 14 min | 29 min | 59 min | 1h 29min | 1h 59min |
| 352.8 kHz | 4 min | 8 min | 16 min | 32 min | 48 min | 1h 4min |
| 384 kHz | 3 min | 7 min | 14 min | 29 min | 44 min | 59 min |
計算式: 空きバイト数 / 32 / サンプルレート / 60。32 bytes/frame = 2ch × Float64 (8 bytes) × 2バッファ (source + render)。
# 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
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!! が表示されます。サンプルレート変換が発生し音質に影響する可能性があることを示します。
セッションは作業状態を保存・復元する単位です。
| 操作 | 方法 |
|---|---|
| 新規セッション | Cmd+N または サイドバーの [+ New] |
| セッション切替 | サイドバーでセッション名をクリック |
| セッション名変更 | サイドバー上部のテキスト欄に直接入力 |
| セッション削除 | サイドバーで右クリック → Delete |
保存場所: ~/Library/Application Support/z0app/(環境設定で変更可能)
自動保存: 変更があると2秒ごとに自動保存されます。未保存の変更がある場合、ウィンドウタイトルとボトムバーに • が表示されます。
ファイルの追加:
| 方法 | 操作 |
|---|---|
| ファイルピッカー | Cmd+O |
| ドラッグ&ドロップ | ファイルをウィンドウにドロップ |
対応形式: WAV, AIFF/AIFF-C, FLAC, MP3, M4A, CAF
ファイル追加時に以下のメタデータが自動取得されます:
トラック操作:
| 操作 | 方法 |
|---|---|
| 並び替え | トラック行をドラッグ |
| 削除 | トラック選択 → Delete / Backspace |
| メモ編集 | メモ欄をクリックして入力 |
トラックリストペインで ← → キーを押すとツールが切り替わります。
| モード | プレビュー | エクスポート | バンド数 | 位相 |
|---|---|---|---|---|
| Lucid | z6pb32 | — | 0 | — |
| Lucid double | z6pb | — | 0 | — |
| Sculpt | z6trb | z6mo | 4 PK | Minimum |
| Coherent Live | z6ma | z6mo6 | LS+4PK+HS | Zero |
| Coherent | z6mc | z6mo6 | LS+4PK+HS | Zero |
| Facet | z6mams | z6moms | 6M+6S | Zero |
| Immerse | z6mach | z6mo6 | LS+4PK+HS (×Nch) | Zero |
ロック中のトラックではモード切替不可。
| 操作 | 方法 |
|---|---|
| 選択トラック再生 | Return / ダブルクリック / [Play]ボタン |
| 停止 | q / [Stop]ボタン |
| 全トラック連続再生 | [Play All]ボタン |
| 全停止 | [Stop All]ボタン / q |
再生を開始すると:
再生中、z0appのボトムバーに ▶ 02 filename [EQ Mode] と再生状況が表示されます。
Play Allモード: 全トラックを上から順に再生します。各トラックの再生終了をCFNotificationで検知し、次のトラックに自動で進みます。
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バンドを抽出 |
H キーでヒストリーパネルの表示/非表示を切り替えます。
各トラックのプリセット保存履歴が新しい順に表示され、以下の情報が確認できます:
履歴からのリバート:
Tabキー)↑ ↓ でプリセットを選択Return で選択したプリセットにリバートリバートは破壊的ではありません。選択したプリセットの値で新しいエントリが作成されます。ロック中のトラックではリバート不可。
Cmd+E または [Export] ボタンでエクスポートを実行します。
出力ファイル:
01_track1.wav
02_track2.wav
03_track3.wav
eq_sheet.txt ← EQ設定シート
eq_sheet.txt には各トラックの以下の情報が記録されます:
出力ビット深度:
エクスポート完了後、トラックのステータスが ✓ に変わります。
Cmd+L または [Lock] ボタンでトラックをロックします。
ロック中は以下の操作が制限されます:
ロック中のトラック行は黄色い背景で表示されます。A/Bテスト時のリファレンストラック保護や、確定済みの設定の誤変更防止に使用します。
セッションとは別に、プロジェクトファイル(.z0proj)として保存・読込が可能です。
| 操作 | ショートカット |
|---|---|
| プロジェクト保存 | Cmd+S |
| 名前を付けて保存 | Cmd+Shift+S |
| プロジェクトを開く | Cmd+Shift+O |
プロジェクトファイルはJSON形式で、全トラック情報・プリセット履歴・ツール設定を含みます。
Cmd+, で環境設定ウィンドウを開きます。
| 設定項目 | 説明 |
|---|---|
| セッション保存フォルダ | セッションデータの保存先。[Choose...] で変更、[Default] でデフォルトに戻す |
| エクスポートビット深度 | 「入力と同じ」(デフォルト)または「16bit → 24bit(EQ精度保持)」 |
| Peak navigation | ピーク検出数(デフォルト: 20、範囲: 1-256) |
| Quiet Mode | 再生中にmacOSのバックグラウンドプロセスを一時停止(下記4.12参照) |
| CoreAudio Recovery | [Reset CoreAudio] ボタンでcoreaudiodを再起動。Aggregate Device障害からの復旧用(パスワード要) |
z0はまだ開発の途上です。Quiet Modeはテスト段階ですので、お使いの環境で効果が認められたもののみONにしてください。
Quiet Modeは、再生中にマスタリングに無関係なmacOSバックグラウンドプロセスを一時停止する機能です。再生が終了すると全て自動的に復帰します。
macOSは常時600以上のプロセスを実行しており、その中にはSpotlight検索インデックス、iCloud同期、AI写真解析、行動パターン学習、天気データ取得など、オーディオ処理とは無関係なCPU・ディスク・ネットワーク活動が含まれます。これらのバックグラウンド活動を再生中だけ一時停止することで、z0のオーディオ処理がCPUをほぼ独占的に使用できる環境を作ります。
トグル一覧:
| トグル | 対象 | sudo |
|---|---|---|
| Spotlight & Time Machine | Spotlightインデックス作成停止、Time Machine一時無効化 | Yes |
| Wi-Fi | 無線LANを一時停止 | No |
| Bluetooth | Bluetooth通信を一時停止 | Yes |
| Photo & Media analysis | 写真・動画のML解析を凍結 | No |
| Learning & Personalization | 行動パターン学習・提案エンジンを凍結 | No |
| Weather | 天気データ取得を凍結 | No |
| iCloud & Apple Remote | iCloud同期・AppleリモートA/Bテストを凍結 | No |
| Siri & Intelligence | Siri・Apple Intelligence基盤を凍結 | No |
| Nearby device scanning | AirDrop/Handoffのデバイス探索を凍結 | No |
| Widgets | ウィジェット更新を凍結 | No |
| Overbridge Engine | Elektron Overbridge Engineを凍結 | No |
| superwhisper | superwhisper音声入力を凍結 | No |
| Quit Finder | FinderをCmd+Q相当で終了 | No |
sudo項目: Spotlight & Time Machine、Bluetoothの3項目はシステム権限が必要です。再生開始時にTerminal上でパスワードを求められます(5分間キャッシュされるため、連続再生中は1回だけ入力すれば十分です)。
自動クリーンコピー: Quiet Modeの有無に関わらず、再生時はファイルを自動的に隠しディレクトリ(~/.z0audio/)にxattr除去コピーし、そこから再生します。このディレクトリはSpotlight対象外で.DS_Storeも生成されません。再生終了時に自動削除されます。
注意事項:
グローバル(全ペイン共通):
| キー | 動作 |
|---|---|
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 | 選択プリセットにリバート |
z0appメニュー:
Cmd+,)Cmd+Q)Fileメニュー:
Cmd+N)Cmd+O)Cmd+S)Cmd+Shift+S)Cmd+Shift+O)Cmd+E)Editメニュー:
Cmd+X)Cmd+C)Cmd+V)Cmd+A)z0appからトラックを再生するとTerminal.appにTUI(テキストユーザインターフェース)が表示されます。EQパラメータの操作はすべてこの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) |
| ステータス行 | サンプルレート/ビット深度/チャンネル数、再生状態、バッファ情報 |
| ファイルパス行 | 再生中のファイルパス |
| ヘルプ行 | 操作キー一覧 |
> マークはカーソル位置(現在フォーカスされているバンド)を示します。フィールド値は [ ] で囲まれ、現在編集中のフィールドは太字+アンダースコアで表示されます。
| キー | 動作 |
|---|---|
Tab | 次のフィールドへ(Freq → Gain → Q → 次のバンドのFreq...) |
Shift+Tab | 前のフィールドへ |
↑ | 前のバンドへ |
↓ | 次のバンドへ |
← | 同バンド内で前のフィールドへ |
→ | 同バンド内で次のフィールドへ |
フィールドにフォーカスした状態で直接数値を入力できます。
| キー | 動作 |
|---|---|
0-9 | 数値入力(最初のキーストロークでフィールドクリア) |
. | 小数点 |
- | マイナス符号 |
k / K | kHz接尾辞(入力値×1000。例: 1.5k → 1500 Hz) |
Backspace | 最後の文字を削除 |
Enter | 入力値を確定・適用 |
入力範囲:
テーブルに沿って値をステップで上下できます。
| キー | 動作 |
|---|---|
A | 現在値の最も近いテーブルエントリから1段上へ |
Z | 現在値の最も近いテーブルエントリから1段下へ |
A/Zキーでの変更は即座に適用されます(Enterキー不要)。Zero Phaseモードでは適用と同時に全ファイルの再レンダリングが実行されます。
| キー | 動作 |
|---|---|
b | バイパス切替。全ゲインを0dBに設定し、EQを透過にする。もう一度押すと元のゲインに復帰。画面に [BYPASS] が表示される |
r | ファクトリーリセット。全パラメータをデフォルト値に戻す |
s | プリセット保存。現在のEQ設定をファイルに保存。z0appに自動通知される |
q | 終了。未保存の場合は自動保存してから終了 |
| キー | 動作 |
|---|---|
Tab | 次のフィールド |
Shift+Tab | 前のフィールド |
↑ ↓ ← → | バンド/フィールド移動 |
0-9 . - k | 数値入力 |
Backspace | 文字削除 |
Enter | 確定・適用(Zero Phaseでは再レンダリング) |
A | ステップアップ(即時適用) |
Z | ステップダウン(即時適用) |
w | Width +10(Facetのみ) |
W | Width -10(Facetのみ) |
L | M/S Link切替(Facetのみ、デフォルトON) |
] | 次のピークへジャンプ |
[ | 前のピークへジャンプ |
b | バイパス切替 |
r | ファクトリーリセット |
s | プリセット保存 |
q | 終了 |
テンキーの数字・小数点・マイナスキーにも対応しています。
曲中のピーク位置を自動検出し、[ ] キーでジャンプする機能です。リミッティングが最も作動する箇所だけを連続的にAB比較できます。
動作:
] キーで次のピーク位置へジャンプ(ピークの4秒前から再生開始)[ キーで前のピーク位置へジャンプ(最初のピークより前では曲頭 0:00 にジャンプ)操作キー:
| キー | 動作 |
|---|---|
] | 次のピークへジャンプ |
[ | 前のピークへジャンプ(先頭より前は 0:00) |
ピーク検出数の設定:
環境設定(Cmd+,)の「Peak navigation」セクションで、検出するピーク数を指定できます(デフォルト: 20、最大: 256)。ファイル内の振幅が大きい順に指定数のピークが検出され、時系列順に並べられます。近接するピーク(500ms以内)は統合されます。
ワークフロー例:
] キーで最大ピークにジャンプ -- ピーク4秒前から再生開始b でバイパス比較Enter で適用] で次のピーク、[ で前のピークへ移動して確認z0appのステータスバーの経過カウンターはシーク位置に自動同期します。
EQ処理を一切行わず、ファイルを純粋に再生するモードです。リファレンス聴取やA/B比較用。
| モード | バイナリ | 内部精度 |
|---|---|---|
| Lucid | z6pb32 | Float32 |
| Lucid double | z6pb | Float64 → Float32出力 |
信号経路:
ファイル → ExtAudioFile読込 → RAMプリバッファ(mlock) → HAL io_proc → DAC
mlock()で物理メモリに固定し、ページングジッタを排除Lucid と Lucid double の違い:
| 項目 | Lucid (32bit) | Lucid double (64bit) |
|---|---|---|
| プリバッファ形式 | Float32 | Float64 |
| io_procでの変換 | 不要(直接コピー) | Float64→Float32キャスト |
| メモリ使用量 | 約半分 | 約2倍 |
リアルタイムIIRフィルタによる4バンドPeaking EQ。
| モード | バイナリ | 精度 | 特徴 |
|---|---|---|---|
| Sculpt | z6trb | Kahan ~80bit | リングバッファ方式 |
信号経路:
ファイル → RAMプリバッファ → リングバッファ(~2.7秒先読み) → 4段Biquad EQ → Float32 → DAC
フィルタ特性:
Minimum-Phase(最小位相)とは:
ファイル全体をフォワード+バックワード処理し、位相変化ゼロのEQを実現する6バンドモード。
| モード | バイナリ | 特徴 |
|---|---|---|
| Coherent Live | z6ma | ブロック独立fwd+bwd。-144dB精度(事実上100%)。操作用 |
| Coherent | z6mc | 完全パディング。pad上限なし。100%ゼロフェーズ。本番用 |
6バンド構成:
| バンド | タイプ | デフォルト周波数 | デフォルトQ/S |
|---|---|---|---|
| LS | Low Shelf | 80 Hz | S = 0.71 |
| PK 1 | Peaking | 100 Hz | Q = 1.41 |
| PK 2 | Peaking | 430 Hz | Q = 1.41 |
| PK 3 | Peaking | 2000 Hz | Q = 1.00 |
| PK 4 | Peaking | 10000 Hz | Q = 1.00 |
| HS | High Shelf | 12000 Hz | S = 0.71 |
Zero-Phase(零位相)とは:
Coherent Live と Coherent の違い:
| 項目 | Coherent Live (z6ma) | Coherent (z6mc) |
|---|---|---|
| レンダリング | ブロック単位 | 全体一括 |
| パッド上限 | ブロック依存 | 制限なし |
| パラメータ変更 | 即座に反映 | 再読込みプロセスが発生 |
| 精度 | -144dB(事実上100%) | 100% zero-phase |
| 用途 | パラメータ探索・A/B比較 | 最終プレイバック・録音 |
Coherent Liveではパラメータ変更が即座に反映されます。Coherentではファイル全体の再レンダリングが必要で、短い無音の後に再生が再開します。レンダリング所要時間はステータス行に表示されます。
Mid(中央定位の音)とSide(左右に広がる音)を独立にEQする12バンドモード。
| モード | バイナリ | バンド構成 |
|---|---|---|
| Facet | z6mams | Mid 6バンド + Side 6バンド = 12バンド |
Mid/Sideとは:
M/Sデコード直前のSチャンネルゲインを調整し、ステレオ音像の幅を連続的に制御します。Mは固定のためセンター音量は変化しません。
| Width | 動作 |
|---|---|
| 0 | モノラル出力(S = 0) |
| 100(デフォルト) | 変化なし。オリジナルとbit-identical |
| 200 | S成分2倍(最大拡張) |
操作: w キーで+10 / W キーで-10。A/Zステップにも対応。10刻み(0, 10, 20, ... 200)。
L キーでMid/Sideの相対リンクを切替。SIDEヘッダーに [LINK] が表示されます。
Link ON時、A/Zステップ操作が対応するMid/Side両バンドに同時適用されます。各バンドの個別設定は保持されたまま、同じ変化量が両方に加わります(相対リンク)。
Link OFFにすればいつでも個別操作に戻れます。直接数値入力(Enter確定)は現在のバンドのみに適用されます。信号経路に分岐は入りません。
SideチャンネルのBand 1(Low Shelf)でローカットを設定するだけで、ゼロフェーズのElliptical EQとして機能します。低域のSide成分をカットし、低域をモノラルに集中させます。専用の実装は不要——既存の12バンドMS EQの組み合わせで実現します。
使用例:
各チャンネル(Mid/Side)はそれぞれ LS + 4PK + HS の6バンド構成で、Zero Phase処理が適用されます。
マルチチャンネル対応のゼロフェーズEQ。
| モード | バイナリ | バンド構成 |
|---|---|---|
| Immerse | z6mach | LS+4PK+HS × Nチャンネル(最大16ch) |
ファイルのチャンネル数を自動検出し、全チャンネルに同一のEQカーブを独立適用します。ソースの各チャンネルがデバイスの対応チャンネルにそのまま出力されます。5.1サラウンドやイマーシブオーディオなど、2chを超えるマルチチャンネルマスタリングに対応します。
E12/E24系列ベースの21段階。隣接バンド間で被りなしのインターリーブ配置により、10 Hz〜33 kHzの全帯域をカバーします。PK1–PK4は4バンドモード・6バンドモードで共通です。
| バンド | 範囲 | デフォルト |
|---|---|---|
| PK 1 | 10, 12, 15, 18, 22, 27, 33, 39, 47, 56, 68, 82, 100, 120, 150, 180, 220, 270, 330, 390, 470 Hz | 100 Hz |
| PK 2 | 20, 24, 30, 36, 43, 51, 62, 75, 91, 110, 130, 160, 200, 240, 300, 360, 430, 560, 680, 820, 1000 Hz | 430 Hz |
| PK 3 | 510, 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 Hz | 2000 Hz |
| PK 4 | 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, 27k, 33k Hz | 10000 Hz |
6バンドモード(Coherent Live / Coherent / Facet / Immerse)では上記PK 1–4に加え:
| バンド | 範囲 | デフォルト |
|---|---|---|
| LS | 15, 18, 22, 27, 33, 39, 47, 56, 68, 80, 100, 120, 150, 180, 220, 270, 330, 390, 470, 560, 680 Hz | 80 Hz |
| HS | 470, 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 Hz | 12000 Hz |
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ステップでは上記テーブル上の最も近い値にスナップします。
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 | 非常に急な傾斜 |
プリセットはプレーンテキスト(.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
...
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の保存ダイアログが表示されます。
処理内容:
出力ビット深度:
Z0_UPGRADE_16BIT=1 で16bit→24bit昇格処理時間: ステレオ10分/96kHzのファイルで数秒程度。処理終了時にリアルタイム倍率が表示されます。
z0は起動時に自動的にAggregate Deviceを作成し、オーディオインターフェースをラップします。
Aggregate Deviceとは:
z0が行う処理:
com.z0.aggregate というプライベートAggregate Deviceを作成Hog Modeはオーディオデバイスを1つのプロセスに独占させるCore Audioの機能です。
なぜ必要か:
ユーザへの影響:
z0はファイルのサンプルレートとオーディオデバイスのサンプルレートの不一致を検出し、自動的にデバイスのサンプルレートを切り替えます。
動作フロー:
z0app の !!SRC!! 警告:
デバイスがファイルのサンプルレートに対応していない場合、トラックリストに赤い !!SRC!! が表示されます。この場合、macOS Core Audioによるサンプルレート変換(SRC)が発生し、音質に影響を与える可能性があります。
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 | 約53bit | z0内部処理形式 |
| Kahan補償付きFloat64 | 約80bit | z6trb / z6ma / z6mb / z6mc |
z0の内部処理はFloat64(53bit精度)ですが、Kahan補償加算により実効約80bitの精度を達成しています。最終的なHAL出力はFloat32ですが、24bitオーディオのダイナミックレンジ(約144dB)を完全に包含しています。
mlock() で物理メモリに固定(ページングによるジッタ排除)Cmd+N で新規セッション作成Cmd+O またはドラッグ&ドロップでオーディオファイルを追加← → でツールを選択(例: Coherent)Return で再生開始(Terminal.appにTUIが起動)s でプリセット保存 → z0appに自動反映q で再生停止、次のトラックを選択して繰り返しCmd+E でエクスポートCmd+S でプロジェクト保存s でプリセット保存s で保存(履歴に2エントリ蓄積)H でヒストリーパネルを表示Tab でヒストリーにフォーカス、↑ ↓ で切替、Return でリバートCmd+C でプリセットをコピーCmd+V でペーストFacet に設定zsh: command not found: z6trb
バイナリが /usr/local/bin/ に配置されていません。ビルド後に配置コマンドを実行してください。
mlock() の制限に達している場合: ulimit -l unlimited を試行| 項目 | 仕様 |
|---|---|
| 内部処理精度 | 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 UID | com.z0.aggregate |
| SR切替ポーリング | 最大40回 × 50ms = 2秒 |
z0 v0.12.0 -- Mac専用マスタリングEQ
設計哲学: 「何もしていないように聴こえるEQ」