Csound - オーディオプログラミングのためのドメイン固有言語
Csoundは音声合成の分野で広く使われている、オーディオプログラミングのための
ドメイン固有言語(DSL)です。その名は、
C言語で実装されていることに由来し、他の言語とは一線を画しています。フリーソフトウェアとして公開されており、LGPL-2.1またはそれ以降の
ライセンスのもとで利用できます。
この言語は1985年に
マサチューセッツ工科大学のBarry Vercoeによって開発されました。彼のプロジェクトは、ベル研究所の音楽家Max Mathewsが提唱した
MUSIC-Nモデルに基づいています。Csoundの開発は長年にわたり続けられ、1990年代からはバス大学のJohn Fitchが指導しています。最初の公式リリースは2006年3月18日に行われたバージョン5.01です。
Csoundでは、1700を超えるユニットジェネレーターが存在するため、多様な音作りが可能です。特にそのモジュール性の高さとユーザーによる拡張性は大きな特徴です。また、MPEG-4 Structured Audioの基礎となるStructured Audio Orchestra Language(SAOL)との密接な関係も注目されます。
Csoundは、音楽的な処理を行うための2種類の特別なテキスト形式、すなわちorchestraファイルとscoreファイルを使用します。orchestraファイルでは楽器の特性を定義し、scoreファイルでは演奏時の時間的なパラメータを設定します。これらの命令は、音声ファイルを生成するか、あるいはリアルタイムで音声を出力するために実行されます。
さらに、orchestraファイルとscoreファイルを統合したCSDファイル(拡張子.csд)として1つのファイルにまとめることも可能です。以下に、1kHzの
正弦波を44.1kHzの
サンプリング周波数で1秒間鳴らすサンプルコードを示します。
```plaintext
csound -W -d -o tone.wav
sr = 44100 ; サンプリング周波数
kr = 4410 ; 制御信号周波数
ksmps = 10 ; それらの比
nchnls = 1 ; 出力チャネル数
instr 1
a1 oscil p4, p5, 1 ; 単純な発振器
out a1 ; 出力
endin
f1 0 8192 10 1 ; 正弦波を表すテーブル
i1 0 1 20000 1000 ; 1kHzの音を1秒間発生させる
e
```
Csoundは、バージョン5への移行時に大幅な機能強化が行われ、APIによる利用が可能になりました。これにより、
C言語にとどまらず、
Pythonや
Java、LISP、
Tcl、
C++、
Haskellといった他のプログラミング言語でも使用できるAPIが用意されています。大規模なプログラムの開発においては、
統合開発環境(IDE)が非常に役立ちます。
主なフロントエンドとしては、以下のようなツールが存在します。
- - Cabbage: JUCEベースのGUIを持つCsoundプログラム用のIDEで、VSTプラグインやスタンドアロンアプリとしてのエクスポートが可能です。
- - CsoundQt: QtベースのGUIを持ち、Csoundのプログラムを視覚的に操作できます。
- - blue: Javaで開発された、Csound専用の作曲環境です。
関連項目としては、Cross-platform対応の
ライブラリであるOpenMusicや、
音響信号処理、
ソフトウェア・シンセサイザーなどが挙げられます。
さまざまな開発リソースや公式サイトも用意されており、プログラミングの知識があればCsoundを十分に活用することができるでしょう。興味のある方は、ぜひ試してみてください。