m4aファイルをwavに変換するクイックアクション

ここ数年、ギターの録音はAmpliTube for iPhone/iPadを使うようになった。AmpliTubeでは、録音したトラックをm4aファイルとして書き出すことができるのだが、Cubaseではm4aを直接読み込むことができないので、一度wavファイルに変換して読み込んでいる。この作業が毎回手間なので、Finderから右クリックで一発でwavに変換するためのクイックアクションを作った。

前提知識: afconvertコマンド

macOSには音声ファイルを変換できるafconvertというコマンドが用意されており、こちらのコマンドを使うとm4aファイルをwavファイルに変換できる。

$ afconvert -f WAVE -d LEI16 -c 1 input.m4a output.wav

-cでチャンネル数を指定することができる。1を指定するとモノラルwavとして出力することができる。

Automator クイックアクションの作成

Automatorを起動し、新しいクイックアクションを作成する。クイックアクションは、Finderのファイルの右クリックメニューから呼び出すことができるワークフローで、今回は呼び出されたら選択されたファイルに対してafconvertコマンドを実行してモノラルwavファイルを書き出す、というような仕組みを作っていく。

まずは、「ワークフローが受け取る現在の項目」でオーディオファイルを選択する。これを設定しなくても問題はないのだが、オーディオファイル以外でアクションが呼ばれた際にエラーが起きるのは微妙なので、オーディオファイルに限定しておく。また検索対象は「Finder」にしておく。他の項目については任意でOK。

左側のアクションリストから「シェルスクリプトを実行」を選び、右側にドラッグして追加する。入力の引き渡し方法を「引数として」に設定する。こうすると選択されたファイルのパスをシェルスクリプト内で引数として$1などで参照できるようになる。

選択されたファイルパスは$1で取得しても良いのだが、Finder上で複数のファイルを選択した状態でクイックアクションが呼ばれた場合、$2や$3にもファイルパスが含まれた状態でシェルスクリプトが実行されることになる。したがって、基本的には全ての引数のリストを参照できる$@を使って、全ての引数に対して処理を行っていく実装をすることが好ましい。

for f in "$@"
do
	afconvert -f WAVE -d LEI16 -c 1 "$f" "$f.wav"
done

上のスクリプトでは、選択されたファイル一つずつに対してafconvertコマンドを実行して、モノラルのWAVファイルに変換を行っている。$fにファイルパス(foo.m4aなど)が渡されるため、”$f.wav”という指定では、foo.m4a.wavというようなファイル名で変換結果が出力される。モノラルではなく、ステレオで出したい場合は-c 2を指定すれば良い。

名前をつけて保存すると、Finderのファイルの右クリックメニューのクイックアクションからワークフローを起動できるようになる。

不要になったクイックアクションはシステム環境設定の機能拡張→Finderから削除できる。

Pocket

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です