ProcessingのサウンドライブラリEssまとめ

Processingは画像系がメインですが音声関係のライブラリもいくつか存在し、現在はKrister Olsson氏が開発したEssが主流っぽいです。

しかし(少なくとも私がダウンロードしたバージョンでは)Processing本体にはEssのExampleコードがあるにもかかわらず、Essのライブラリ本体は同梱されていません。
http://www.tree-axis.com/Ess/
ここからEss_r2.zipをダウンロード、解凍してprocessing/libraries以下に配置して下さい。

上記サイトはそっけない印象ですが、各クラスの解説や、ダウンロードできるドキュメント・サンプルコードはかなり充実しているので要チェックです。現在ソースコードはダウンロードできないですが、作者にメールしたところ、現在オープンソース化の準備を進めているところで、GPLかLGPLで出すそうです。

・・・とはいえ「Essで何ができるのか」の情報がネット上に少ない気がするので、クラスごとに簡単にまとめました。

Ess

Essのエンジン。セットアップでstart()、終了時にstop()すればよいです

AudioChannel

ひとつのモノラル音声データを表します。音を作る時はこれに書き込めばよいです

AudioStream

ストリームにするときはこちら

AudioInput

オーディオ入力

AudioFile

音声ファイルを表します。ファイル名を指定した場合、dataディレクトリ以下を探すことに注意

AudioGenerator

いわゆるオシレータの親クラス。generate()メソッドでAudioChannelにデータを作成します。個々のサブクラスは波形を表します

Silence、PinkNoise、WhiteNoise、SawtoothWave、SineWave、SquareWave、TriangleWave

クラス名そのままですね

AudioFilter

エフェクターの親クラス。AudioChannelのデータに対する変換を行います。以下その子クラスです

Amplify

音量を変えます。一定率での変換なので、トレモロは出来ません。他のエフェクトにも共通して言えますが、LFOみたいなものは無いので、自分で作りこむ必要があるでしょう

Normalize、FadeIn、FadeOut

ノーマライズ、フェードイン、フェードアウト・・・音量変化のバリエーションですね

Envelope

ボリューム変化を自由に作成します。Envelopeは任意のデータソースに対してエンベロープを反映させるといったものではないので、ピッチやローパスフィルターと組み合わせることはできません

Reverse

逆回転

RateShift

ピッチの変化に応じテンポ(=再生時間)も変わる、つまり再生速度の上げ下げ

PitchShift

テンポを変化させずにピッチを変更する、ピッチシフト

TempoShift

ピッチを変化させずにテンポを変更する、ピッチシフトの逆。タイムストレッチという呼び方のほうがメジャーでしょう

LowPass、HighPass、BandPass、Notch、LowShelf、HighShelf

いわゆるフィルター。レゾナンスもあります

EQ

1バンドイコライザー。一度のエフェクトでは1箇所しか変換できないですが、繰り返して使えば問題ないですね

Reverb

シンプルなリバーブ。roomSize、predelay(リバーブが始まる前のずれ)、damp(リバーブの減衰速度)が指定できます。

FFT

与えられたAudioChannelのデータに対して高速フーリエ変換を実行して、スペクトラムを取り出せるようにします