to top page
2013-04-08
SoX で音を作る
SoX の synth エフェクトオプションで音を生成してみる。
引き続きこちらを参考にした。
- SoX, SoXI, soxformat マニュアルページ日本語訳

サイン波を作る。
$ sox -n sin440.ogg synth 0.5 sin 440 gain -10

-n : 入力ファイルとして null ファイルを指定。-n オプションについては前項の最後に書いた。
sin440.ogg : 出力ファイル名
synth 0.5 sin 440 : 長さ0.5秒、高さ440Hz のサイン波を生成
gain -10 : synth エフェクトには既定で gain -h の機能が組み込まれている。耳が痛いので gain オプションで音量を調整。

周波数は % でも指定できる。
$ sox -n pluck-29.ogg synth 2 pluck %-29 gain -10

%-29 : synth のパラメータ。% に続く数字で A (440Hz )からの半音単位の差を指定(ここではマイナス29)。
pluck : 波形を表す synth のパラメータ。

上で使った sin(sine、正弦波)、pluck(撥弦)のほか、波形タイプとして square、triangle、sawtooth、trapezium、exp、noise(または whitenoise )、tpdfnoise、pinknoise、brownnoise(矩形波、三角波、のこぎり波、台形波、exp、ホワイトノイズ、三角形確率密度関数ノイズ、ピンクノイズ、ブラウニアンノイズ)が使える。

短七和音を作る。
$ sox -n -c 1 minor7.ogg synth sin %-12 sin %-9 sin %-5 sin %-2 fade h 0.5 2 0.5

-c 1 : 出力ファイル minor7.ogg に対するオプション。チャンネル数1(モノラル)を示す。
sin %-12 sin %-9 sin %-5 sin %-2 : synth のパラメータ。A、C、E、G を重ねている。
fade h 0.5 2 0.5 : フェードエフェクトオプション。h はフェード曲線のタイプ(サイン波の1/2)を示す。そのあとの3つの数字は、フェードインの長さ、音声の停止時刻、フェードアウトの長さ。

2つの synth エフェクトを連結して複雑な波形を生成。
$ sox -n complex.ogg synth 2 sin 200-500 synth 2 sin fmod 700-100 gain -14

synth 2 sin 200-500 : 200Hz から 500Hz にスイープする2秒間のサイン波。
synth 2 sin fmod 700-100 : synth エフェクトの各段では、前段の出力に対し,生成波形を混合するか, 生成波形による変調を施すかを選択できる。ここでは fmod パラメータで周波数変調を選択している。ほかに、createmixamod(振幅変調)が選べる。デフォルトは create。