a9a / Docs

CLI マニュアル

a9a CLI のサブコマンド、主要オプション、operation、job file、render の制約をまとめたページです。

サブコマンド一覧

a9a_cli には次の 4 つのサブコマンドがあります。

サブコマンド役割
probe入力オーディオのメタ情報とラウドネス情報を表示する
renderoperation(処理)を順に適用し、1 件または複数件を書き出す
play入力オーディオを再生する
versionアプリケーション情報を表示する

対応フォーマットは WAV / FLAC / AIFF(AIFF-C を含む)/ Ogg Vorbis / MP3 です。MP3 のエンコードには LAME(libmp3lame)の共有ライブラリが別途必要です。

probe

入力オーディオのフォーマットとラウドネスを計測して表示します。

a9a_cli probe input.wav

オプション

オプション説明
--no-indicator互換性のために受け付けます。probe では進捗表示を行わないため、指定しても動作は変わりません
-q, --quietwarning 行のみを抑制します。計測結果は表示します

出力内容

probe は次の情報を表示します。

  • ファイル情報: ファイルパス、sample rate(サンプリング周波数)、bit depth(量子化ビット数)、channels(チャンネル数)、duration(長さ)
  • ラウドネス指標: integrated LUFS、true peak(トゥルーピーク)、LRA(ラウドネスレンジ)、crest factor(クレストファクター)
  • その他: loop 情報、Vorbis Comments、warnings

render

operation を順に適用してオーディオを書き出します。単一ファイルへの出力には --out、複数ファイルの一括処理には --out-dir を使います。

単一入力・単一出力の基本形です。

a9a_cli render input.wav \
  --out output.flac \
  --op gain db=-3 \
  --op fade-in duration=100ms curve=linear

複数入力を一括で処理する場合は --out-dir で出力先ディレクトリを指定します。

a9a_cli render a.wav b.wav \
  --out-dir out \
  --same-format \
  --op loudness target=-16LUFS max-true-peak=-1dBTP

入出力オプション

オプション説明
-o, --out <PATH>単一の出力ファイル
--out-dir <DIR>複数入力向けの出力ディレクトリ
--force既存の出力を上書きする
--same-format入力のフォーマットを維持する
--format <wav|flac|aiff|ogg|mp3>出力フォーマットを明示する
--sample-rate <HZ>出力の sample rate を指定する
--bits-per-sample <BITS>WAV / FLAC / AIFF の bit depth
--sample-format <int|float>WAV の sample format
--aiff-container <aiff|aifc-none|aifc-sowt|aifc-float32>AIFF 出力時のコンテナ/圧縮方式
--flac-compression-level <0..8>FLAC の圧縮レベル
--vorbis-quality <-1..10>Ogg Vorbis の品質
--mp3-vbr-quality <0..9>MP3 の VBR 品質(0 が最高音質)。LAME が必要
--mp3-bitrate <8..320>MP3 の平均ビットレート(kbps, ABR)。--mp3-vbr-quality とは併用不可
--comment KEY=VALUEVorbis Comment を追加する
--no-indicatorprogress bar と operation ごとの進捗出力を無効化する
-q, --quietwarning と途中経過の表示を抑制する。indicator も無効化する
--job <JOB>TOML job file を読み込む

operation

--op で適用する処理を指定します。同じ --op を複数並べると、指定した順に適用されます。

operation必須キー任意キー
gaindb-
loudnesstargetmax-true-peak
fade-indurationcurve
fade-outdurationcurve
loopstart, end-

loop では start < end である必要があります。

キーの値の形式

キー形式
db, target, max-true-peak数値、または suffix 付き文字列-3, -3dB, -16LUFS, -1dBTP
duration100ms1s、または suffix なしのミリ秒整数100ms, 1s, 100
curvelinear, equal_power, s_curve, log, exp のいずれかequal_power

AIFF / AIFF-C(AIFC)の入出力

.aiff / .aif / .aifc のいずれの拡張子も AIFF ファイルとして読み込めます。読み込み時は AIFF-C(AIFC)コンテナにも対応しており、以下の圧縮方式(compression type)を扱えます。

compression type内容読み込み書き込み
(プレーン AIFF)ビッグエンディアンの整数 PCM
NONE / twos / in16 / in24 / in32AIFF-C のビッグエンディアン整数 PCM○(aifc-none
sowtAIFF-C のリトルエンディアン整数 PCM○(aifc-sowt
fl32AIFF-C の 32bit float(IEEE754)○(aifc-float32
上記以外(ulaw, ima4, fl64 など)圧縮コーデックや 64bit float××

制約

出力先とフォーマットの指定には、次の制約があります。

  • --out--out-dir は同時に指定できません。
  • 複数入力では --out を使えません。--out-dir を使います。
  • --same-format--format は同時に指定できません。
  • --out を使う場合、出力フォーマットを --format--same-format、または出力パスの拡張子のいずれかで決定できる必要があります。
  • --format--out を併用し、--out に拡張子があるときは、拡張子と --format が一致している必要があります。

--sample-rate には次の標準値のみ指定できます。

8000, 11025, 16000, 22050, 32000, 44100, 48000, 88200, 96000, 176400, 192000

フォーマット別のオプションには、次の制約があります。

  • --sample-format は WAV 出力でのみ有効です。float を使う場合は --bits-per-sample 32 が必要です。
  • --aiff-container は AIFF 出力でのみ有効です。省略した場合、入力が AIFF/AIFF-C であればそのコンテナを引き継ぎます(--same-format で AIFF-C の入力を書き戻すと同じコンテナのまま出力されます)。入力が AIFF/AIFF-C 以外の場合は素の AIFF(aiff)になります。aifc-float32 を指定する場合は --bits-per-sample 32 が必要です。
  • FLAC の bit depth は 24 bit までです。--flac-compression-level は FLAC 出力でのみ有効です。
  • --vorbis-quality は Ogg Vorbis 出力でのみ有効です。
  • --mp3-vbr-quality--mp3-bitrate は MP3 出力でのみ有効で、同時には指定できません。どちらも省略した場合は既定の VBR 品質(おおよそ 190 kbps 相当)になります。
  • MP3 出力には LAME(libmp3lame)の共有ライブラリが実行時に必要です。インストールされていない場合は MP3 出力のみエラーになります(インポートや他フォーマットへの出力には不要)。
  • --comment で追加したタグは FLAC / Ogg Vorbis では保持されますが、WAV / AIFF / MP3 では出力時に破棄されます。

Job File

処理内容を TOML ファイルにまとめ、render --job <JOB> で読み込めます。

a9a_cli render --job jobs/render.toml

次は top-level の設定と [[op]] を組み合わせた例です。

input = ["../audio/a.wav", "../audio/b.wav"]
out_dir = "../out"
same_format = true
force = true
comment = ["ARTIST=a9a", "ALBUM=demo"]

[[op]]
type = "gain"
db = -3

[[op]]
type = "fade_in"
duration = "100ms"
curve = "equal_power"

[[op]]
type = "loop"
start = 12000
end = 96000

top-level キー

キー説明
input単一の入力、または入力の配列
output単一の出力ファイル
out_dir複数入力時の出力ディレクトリ
forcetrue で既存の出力を上書きする
same_format入力のフォーマットを維持する
formatwav, flac, aiff, ogg, mp3
sample_rate出力の sample rate
bits_per_sample出力の bit depth
sample_formatWAV 用。int, float
aiff_containerAIFF 用。aiff, aifc-none, aifc-sowt, aifc-float32
flac_compression_levelFLAC 用
vorbis_qualityOgg Vorbis 用。-1..10
mp3_vbr_qualityMP3 用。0..9(0 が最高音質)。LAME が必要
mp3_bitrateMP3 用。平均ビットレート(kbps, ABR)。mp3_vbr_quality とは併用不可
commentKEY=VALUE 文字列の配列

outputout_dir、および same_formatformat は、それぞれ同時に指定できません。

[[op]]

operation は [[op]] テーブルで定義します。type には次の値のみを指定できます。

type必須キー任意キー
gaindb-
loudnesstargetunit(指定する場合は LUFS)、max_true_peak
fade_indurationcurve
fade_outdurationcurve
loopstart, end-

loop では start < end である必要があります。

job file の type は snake_case に固定です。CLI の --op で使う fade-in / fade-out は受け付けません。fade_in / fade_out を使います。

job file の注意点

  • out は受け付けません。output を使います。
  • max-true-peak は受け付けません。max_true_peak を使います。
  • 定義されていないキーはエラーになります。
  • job file 内の相対パスは、カレントディレクトリではなく job file 自身のディレクトリを基準に解決されます。

マージ規則

--job と CLI 引数を同時に使う場合は、次の規則で解決されます。

  • operation は job file の [[op]] の後ろに CLI の --op を連結します。
  • input は CLI 側を優先します。
  • output / out_dir は CLI 側を優先します。
  • sample_rate などの出力 override は、フィールド単位で CLI 側を優先します。
  • forcesame_format は、どちらかが true であれば true になります。
  • comment は job file の配列に CLI の --comment を追記します。

play

入力オーディオを再生します。再生中は端末に再生位置を表示します。オプションはありません。

a9a_cli play input.wav

version

アプリケーション情報を表示します。

a9a_cli version

third-party license を含める場合は --third-party-licenses を付けます。

a9a_cli version --third-party-licenses

代表例

単一ファイルを FLAC に書き出し、ラウドネスを整える例です。

a9a_cli render input.wav \
  --out output.flac \
  --format flac \
  --sample-rate 48000 \
  --bits-per-sample 24 \
  --op loudness target=-16LUFS max-true-peak=-1dBTP

処理内容を job file にまとめ、CLI 側で出力先だけを差し替える例です。

a9a_cli render \
  --job jobs/master.toml \
  --out-dir build/mastered \
  --comment REVISION=2026-03-20

AIFF-C(リトルエンディアン整数 PCM, sowt)として書き出す例です。

a9a_cli render input.wav \
  --out output.aifc \
  --format aiff \
  --aiff-container aifc-sowt \
  --bits-per-sample 16 \
  --op gain db=-3

運用上の考え方

render は多くの前処理を 1 本のワークフローで扱える反面、入出力条件の組み合わせによって有効な指定が変わります。実運用では次の順で整理しておくと扱いやすくなります。

  1. 出力形式を先に決める
  2. sample rate や bit depth の方針を決める
  3. operation を必要最小限から積み上げる
  4. 手順が固まったら job file に落とし込む

まずは単一ファイルで挙動を確認し、その後にバッチ処理へ広げるのが安全です。