Audio DSL - AudioWorkletを手軽に扱えるDSL
Web AudioはWebブラウザ上で音楽を扱えるAPIですが、処理をメインスレッドで行う必要があります。それに対してAudioWorkletはオーディオ処理に特化したWorkerで、バックグラウンドで音声処理が可能になります。しかしオーディオ自体の処理は複雑なイメージがあります。 そうした処理をDSLでシンプルにしてくれるのがAudio DSLになります。
Audio DSLの使い方
Audio DSLのシンプルな例です。拡張子はdslで、シンプルな記述でAudioWorkletを定義できます。
void process() {
float type = wave_type;
loop {
out_0[i] = (
type == 0.0 ? calc_sin() :
type == 1.0 ? calc_square() :
type == 2.0 ? calc_saw() :
type == 3.0 ? calc_triangle() :
calc_noise()
) * gain[i];
angle = angle + angle_per_sample(note_to_hz(note[i]));
angle = angle > TWO_PI ? angle - TWO_PI : angle;
}
}
デモサイトでは音楽を奏でられます。
Audio DSLを使えば複雑なAudioWorkletを手軽に扱えるようになります。利用時にはモジュール用のJavaScriptに変換します。dslというコマンドが用意されていますので、それを使って変換し、Webブラウザで読み込む仕組みです。後はJavaScriptのイベント内で実行します。
Audio DSLはTypeScript製のオープンソース・ソフトウェア(MIT License)です。
Audio DSL Example jinjor/audio-dsl: An experimental DSL for AudioWorklet