いらないモノ、ひつようなモノ

書籍、音楽、そして若干のテクノロジー

機能面から見たcsound

←csoundメモ 目次へ戻る

csoundいくつかの側面を持っている。

  • csoundの動作
    • 楽器をオプコードで定義し、楽器を指定した時系列のスコアにより発音タイミングを決定し発音させる
    • 楽器は音の強さ、発音時間、トーン以外にもユーザが自由に変数を定義できる。
    • スコアでは楽器の全パラメータをすべて指定することができるので無限の可能性を秘めている。
    • 楽器やスコアを動的に変更するためのいろいろな手段を要していてパフォーミング・アートにも利用できる
  • 音響合成
    • csoundの主目的。csoundの言語により生成した"音"をファイル(wav, aiff, ircamのフォーマットは選択可能)に落としたり、オーディオデバイスを通じて直接発音させたりすることができる。
    • 加算・減算方式、各種変調の音声合成だけではなく、グラニュラー・シンセシス、ハイパーベクトリアル・シンセシス、スキャンド・シンセシス、ウェーブ・テレイン・シンセシス、導波管の物理モデリングによる音声合成など多様な方法が選択できる。moogなんていうmini-Moogのエミュレーションをするopcodeまである。当然、自分で新しい方法を作り出してそれを実装することもできる。
    • フィルタ(ハイパスフィルタ、ローパスフィルタ、双二次フィルタ、バターワースフィルタ、レゾナントローパスだけで18種類あった*1ポルタメントしてくれるフィルタもある)やエフェクタ(ディレイ、パン、リバーブ、ディストーションフランジャーフェイザー、ハーモニックス、パンニング関連だけを見てもその中には3次元音響など25個あった*2、モーフィングも数種類ある)、も一通り揃っている。
    • 三次元音場、や高次元のスピーカーもサポートしている。
  • 音響解析
    • 音声サンプルを与えて解析。基本的にはリシンセサイズしたりモーフィングの目的で解析する。
  • MIDI音源
    • MIDIファイルを入力として音をレンダリングすることができる。トラックダウンするイメージ。
    • リアルタイムなMIDI入力に対してもリアルタイムなレンダリングは可能。しかしその目的で作られていないためlatencyが大きくなりがち。
  • その他
    • MIDIやOCSなどを受信してsystemというOPCODEでコマンドを実行するという変態的使い方も可能*3
    • イメージの処理もできる
入力
  • オーケストラ
    • 楽器を定義するのが主目的。楽器は音を出すものもあれば、信号処理つまりエフェクタとして働くものや制御だけをするもの、標準出力に表示だけをするものも定義できる。
    • 楽器以外にはサンプルレート、コントロールレート、チャネル数、大域変数などの初期化、ZAKの初期化、MIDIチャネルと楽器の対応づけなど各種初期化を行う。
  • スコア
    • 楽譜を定義するのが主目的。ただし一般的な楽譜ではない。1行の英数字記号列が一つの音符やテンポ、スコアセクションの定義である。(実はそれ以外にファンクションテーブルの宣言行もあるがこれは別途説明する)その音符は楽器の発音だけでなく楽器の制御に対応することなどもできる。csoundにおいて音符に対応するスコアの1行は「楽器に指示を与える」という意味と解釈できる。一行の中に含まれるパラメータの数や意味を定義できる。
    • オーケストラ、スコアに加えてcsoundのコマンドラインに与えるパラメータやライセンス情報などを加えたUnified File FormatもしくはCSDファイルという形式が定義されている。XMLもどきなファイル形式。
  • 音声(ファイル)
    • soundinやdiskinでオーディオファイルを取り込むことができる。
    • insやZAKであればinzなどでステレオのオーディオストリームを読みこむことができる
    • bbcuts/bbcutmで取り込んだオーディオファイルを自動でブレイクビーツの要領で切ることができる他、普通のサンプラーのように伸縮や逆方向の再生も可能。
  • MIDI信号
    • MIDI信号はすべての信号を読みこむことができる。スコアファイルとMIDI信号からの両方から使えるようにデザインされたOPCODEとMIDIからのみからしか使われることを想定していないOPCODEがある。MIDI信号は一つのチャネルからくる信号を一つの楽器にしか振り分けられない。
  • マウス、キーボード操作
    • csoundは各種ウィンドウを表示することができる。その操作のためのマウスやキーボード操作
    • GUIの入力だけではなくsensekeyというopcodeはキー入力したASCIIコードを返すし、xyinはWindowのカーソル位置のX、Y座標値を返す。これらを定義した楽器で活用することができる。
  • テキスト
    • GUIのそうだけではなく、コマンドラインからパラメータとして渡したり、標準入力からテキストを渡すこともできる。
出力
  • 音声(ファイル)
    • 音声ファイルはモノラル、ステレオだけでなく4チャンネル、8チャンネルまでサポートしている。サンプリング周波数はオーケストラで設定できる。
  • スペクトル解析
    • 解析して音をモルフィングしたり、リシンセシスするためにサウンドファイルをフーリエ解析した結果をファイルに蓄えそれを読みこんで音声合成を行う。
  • テキスト
    • print系のコマンドで出力できる。楽器発音時、制御レート、任意の頻度での出力が可能
    • コマンドライン引数(-m)でテキスト出力するメッセージを制御可能
  • GUI
    • FLTKを用いてスライダーやボタンなどを持つGUIが構築可能
    • ファンクションテーブルの内容をWindowに出力することも可能


←csoundメモ 目次へ戻る

*1:2013年9月 csound6.00マニュアル参考

*2:2013年9月 csound6.00マニュアル参考

*3:やったことないんだけどねー