ChucK-プログラマブルサウンド

非常に多くのプログラミング言語があります。主流から難解なものまで、教育用から高度に専門化されたものまで。 そして、私たちの多くが何らかの方法で(少なくとも基本的な学校レベルで)メインストリームに精通している場合、特別なタスクを実行するように設計されたプログラミング言語は多くの人にとってひそかに暗いままです。 カーテンを少し開けて、片目でもプログラミングの世界を見てみましょう...音楽!



そこで、今日のゲストであるChucKは 、2003年にプリンストン大学のペリークックとガイワンによって発明され、2009年に最新バージョンがリリースされました。

ChucKは、音楽を作成し、リアルタイムでサウンドを合成し、さまざまな専用周辺機器の相互作用を整理するように設計されたプログラミング言語の1つです。





チャック



ChucKはインタープリター言語です。 プログラムの複数のスレッド(いわゆる「シュレッド」)の並列実行をネイティブでサポートし、シュレッドは特定のサイクル(サンプルレート、制御レート)に従って実行されるため、チャック自身で同期できます。 ところで、著者の説明では、「ChucKはオンザフライのプログラミング言語」と言われています。実際、実行中にプログラムに直接変更を加えることができ、ステージ上で驚くべきことを行うことができます。 (はい、はい!すぐに音楽に変わるステージでコードを走らせるオタクは本物です!)

ChucKは、データの厳密な型指定を備えたマルチパラダイム言語であり、スコープの特性に関連する通常の構文ではありません(これについては後で説明します)。 特にモジュラー合成スタジオに既に遭遇した人にとっては、OOPの観点からチャックにアプローチするのが最も便利です。



始めましょうか?



GNU GPLの下でChucKによって配布され、Windows、Linux、Mac OS X、そして最近ではiOS(クローズドソース)で利用可能です。

開始するには、ツールを入手してください。 必要なソフトウェアについては、 こちらをご覧ください

このリンクを使用すると、Mac OS XおよびWindows用のコンソールインタープリターバイナリを見つけることができます.Linuxの場合、自己コンパイルのソースコードが表示されます(必要なすべての手順が記載されているため、初心者でも理解できます)。 しかし、メモ帳とコンソールは最も便利なものではありません。快適な作業のためには、開発環境が必要です。 次の2つのオプションから選択できます。



•miniAudicle-シンタックスハイライト、デバッガー、仮想マシンを1つのボトルに収めたエディター。 すでにベータ版ですので、たくさんの驚きに備えましょう。 たとえば、JACKがサポートされているLinuxでこの技術をアセンブルすることはできませんでした(Windowsでは、終了時にminiAudicle.exeプロセスを手動で破棄する必要がありました。 プログラムは正しく完了しません。

スクリーンショット



•Audicle-実験的なモジュール式開発環境。Max/ MSPに精通している人にとっては、より便利に思えるかもしれません。 ただし、クラシックIDEでの作業に慣れている人にとっては、Audicleはあいまいに見えるでしょう。 さらに、miniAudicleよりもさらに生でバグがあります。

安定性と(主観的に)利便性が向上したため、私は個人的に最初の選択肢に決めました。 スクリーンショット



このサイトにはiOS用のバージョンはありません。おそらくAppStoreにあります。 必要なソフトウェアの組み立てとインストールについては説明しません。サイト上のすべての指示があり、教育を受けた人々がハブに座っているので、自分でそれを理解したい人は誰でも願っています。 最終的にまだ苦労している人のために、チャキストのフォーラムへのリンクを提供します。



10こんにちは、世界!



コードを記述する前に、miniAudicleプログラムで実行されるすべてのアクションに同意することにしましょう。 作業する前に、仮想マシンを起動します(プログラムのメインメニューの[ChucK->仮想マシンの起動])。 細断処理は、大きな緑色のボタン「細断処理の追加」によって開始され、停止は赤の「細断処理の削除」によって起動されます。 細断処理が実行され、[細断処理の追加]をクリックして別のコピーを追加すると、[細断処理の置換]ボタンが再起動します。

だから。 新しいプログラミング言語に精通することはどこで慣例ですか? まあ、もちろん、平凡な「Hello、World!」から:



<<< "Hello,World!" >>>;









あまり一般的ではない構文は非常に簡単に説明されています:チャックは単に標準のテキスト出力で動作するように設計されておらず、<<< >>>文字で囲まれているのは実際にはデバッグ情報の出力です。 次の例を見てみましょう。



.5 => float hello; // hello 5









実数の表記に注意してください。 このようなレコードは必須ではありませんが、ドキュメントで使用されています。 ちなみに、「非常に普通ではない」構文の最初の例は、演算子=>です。

=>演算子はチャックと呼ばれ、割り当て演算子の機能以上の機能を果たします。 実際、オブジェクト間の接続コードの役割を果たし、割り当ては「接続」の特殊なケースの1つにすぎません。 たとえば、この構造を使用して記述された古典的なシンセサイザーのモデルは、440 => Oscillator => Envelope => Filter => AudioOutのようになります。

このような典型的な例を使ってこれを理解してみましょう(同時に、時間間隔に関しても理解します):



SinOsc S => JCRev R => dac;

.2 => S.gain;

440 => S.freq;

.3 => R.mix;



5::second + now => time later;



while( now < later )

{

1::second => now;

}









このコードを実行してみてください。 リバーブを通過した440Hzの正弦波が5秒間聞こえます。 順番に見てみましょう。 最初の行は次の構造を示しています:正弦波オシレーターSのインスタンスが初期化され、次に=>演算子を使用して、信号がJCReverb Rリバーブインスタンスに送信され、そこから信号がdac(ChucKの標準サウンド出力)に送信されます。 2行目と3行目では、サウンドパラメーターを設定します。ゲイン-ボリューム、ミックス-元の(いわゆるドライ)正弦波とリバーブで処理された信号の混合の度合い。 人生と同じように、直接音と反射音の両方が聞こえます。 (リバーブはサーフェスからの反射をシミュレートし、どの部屋でも効果音を実現できます)。 S.freqで-周波数が設定されます。

そして、楽しみが始まります。 事実、チャックには、同期を制御するための2つの特別なデータタイプとその他のニーズがあります。 これはタイプ時間とタイプdur(期間)です。 タイプ時間は絶対時間であり、デュアは相対的です。 行



5::second + now => time later;









現在の瞬間から5秒をカウントし(time型の特別な変数が現在の時間を決定します)、この値を後の変数に割り当てます。 推測することは難しいことではないので、サイクルが続きます。各ステップは厳密に定義された期間(ここでは1秒)実行されます。 ここでは、このサイクルは時間への参照を明確にするために与えられており、実際の状況では同じことがはるかに簡単に書かれます。



SinOsc S => JCRev R => dac;

.2 => S.gain;

440 => S.freq;

.3 => R.mix;

5::second => now;









時間は秒単位で設定できるだけでなく、サンプル、ミリ秒、分、時間、さらには日、週、年単位でも設定できます。 ここで、開発者は明らかにユーモアで主題に近づきました。



おそらく十分



これでチャックとの知り合いは終わりです。 これは紹介としては十分だと思います。 ChucKは単純な合成に限定されないことを付け加えます。 MIDIプロトコル、外部オーディオファイル、シーケンサーを使用できます。



知り合いを続けたい人のために、いくつかの便利なリンクを添付します。

chuck.cs.princeton.edu/doc/language-公式の言語仕様、完全に読むことを強くお勧めします

wiki.cs.princeton.edu/index.php/ChucK-wiki

chuck.cs.princeton.edu/doc/examplesコード例。 (pdfのマニュアルと多くの例もminiAudicleのフォルダーにあります。)

electro-music.com/forum/forum-140.html-小さいが、ほとんど唯一のチャキストの生きているコミュニティ。



ロシア語では、残念ながら、有用な情報はまったくありません。



実際、ChucKはサウンド抽出専用に設計された唯一のPLではありません。純粋に商用でより使いやすいソリューションなど、他のソリューションもあります。 関与したいが、チャックが習得するのが難しすぎると思われる人(実際、複雑なことは何もありませんが、主なことは関与して把握することです)または他の理由に適さない人には、他の解決策をアドバイスできます: en.wikipedia.org/ wiki / Audio_programming_language

また、突然開発に参加したい場合は、sourceforge.netでChucKを探してください。



All Articles