3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

オーディオプログラミング言語Advent Calendar 2020

Day 2

ChucKによるオーディオプログラミング例

Last updated at Posted at 2020-12-01

ChucK

オーディオプログラミング言語 Advent Calendar 2020

概要

マルチメディア用のオープンソースのビジュアルプログラミング言語。並行処理や処理実行中の変更(オンザフライ)が特徴。作曲、研究、教育、ライブコーディングなどに使用される。IDEとしてminiAudicleが用意されている。ライセンスはGPL。

プリンストン大のGe Wang(現在はスタンフォード大、Smule社)が2003年に開発。

実装例

サイン波生成

ChucKの最大の特徴は多目的に使用されるChucK演算子=>です。この例でもオーディオグラフの連結、値の変数への代入、時間制御にChucK演算子を使っています。


SinOsc sine => Gain g => dac;

440 => sine.freq;
0.5 => g.gain;

1::second => now;

Delayエフェクト

ループ構造もChucK演算子を使って簡潔に表現できます。


// read wav file
me.dir() + "/../voice.wav" => string filename;
SndBuf buf;
filename => buf.read;

// setup audio graph
buf => Gain delayLoop => dac;
delayLoop => Gain feedback => Delay delay => delayLoop;

// setup parameters
400::ms => delay.max => delay.delay;
0.5 => feedback.gain;
0.5 => delay.gain;

// play sound
buf.length() * 2 => now;

感想

ChucK演算子など、あまり他の言語に似ていない独自性の高い仕様ですが、言語設計として非常に洗練されており、素直にシンプルに書くことができます。ライブコーディングパフォーマンス用言語としては、予想外の音というより想定通りの音を出しやすい印象です。統合環境miniAudicleの完成度も高く、軽快に動作するので全体として非常に使いやすいです。

モバイル対応ChiP(ChucK for iPhone)やUnity用アセットもあり、応用先は広いように思います。(これらはGPLではありません)

オーディオプログラミング言語 Advent Calendar 2020

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?