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

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

csoundを使った作曲でひと段落 - 曲

パーカッションを含めcsoundで音源、スコア記述をおこなって曲を完成させた。スコアの記述にはrubyを用いて意図した曲構成通りのスコアを生成させた。各トラック/楽器のボリュームの調整にはaudacityでmixerの代わりとた。

ミックスダウン

当初はzakを用いてトラックのフェーダーの動きをオートメーション的にcsoundでミックスダウンもやろうとした。が、簡単にあきらめた。理由はこてこてに作りこめばやればできなくないのだが、どうにも体系的でなるべく楽なやり方が思いつかないためである*1。フェーダの操作はソフトウエア上であればDAWでグラフィカルにやるべきものを王政復古とばかりにテキストのインタフェースでやるほうがデータの保存性や、年月が経ったあとで可読性が落ちる。

トラックごとのWAVファイルを作成しそれをaudacityで音量調整をした(別にDAWつかってもいいんだけど)。他の楽器を使った操作をしないならaudacityならプロジェクト保存できるので後で手直しなどもできるし手軽に作業ができる。せっかくcsound使ったのでほとんどエフェクタも用いず、コンプも何もかけないで生にしておいた。

score生成の延長の先にあるもの

csoundの「-L」オプションを用いるとスコアをリアルタイムに読み込むことができる。実際Linux上で試したところ csound -L stdin -d -m0 live.orc -+rtaudio -odac:hw:0,0とするとコンソールに手打ちでスコアを打つとリアルタイムに発音できた*2。しかしながら cat score.rb | csound -L stdin...のようにscore.rbでスコアを生成するプログラムからスコアを流すとプログラム終了後にまとめて発音してしまう。

rubyによるスコア生成プログラムを作っていたのは上記のようにMIDIの単純な信号よりも高次なレベルで音響生成できることを意図していたがこの方法はうまくいかないことが分かった。ちなみに、csound5のソースコード中で、リアルタイムのスコア制御を司るファイルのEngine/linevent.cを解析すると(ver. 5.06)マニュアルなどには記載されていないが、-L "| program"と記述するとprogramのプロセスへパイプを開いて同様のことができることが分かった。しかしこの方法を取っても同じようにプログラム終了時にまとめて発音した(意味なし!)。

ちなみにマニュアルにはスコアをキャレッジリターン("\r")を入れることと書いてあるのだけれど、ソースを見るとラインフィード("\n")を確認している。このあたりの機能はあまりまじめに使われていないようだ。

ここであきらめるわけにはいかないな。。。

csoundにはAPIがあり、SWIGでそれらのAPIを利用できるということだし、SWIG+rubyという組み合わせも既に世の中で存在しているのだからこの組み合わせでcsoundAPIから利用することを考えてみようと思う。今後はcsoundAPIとSWIGとの格闘をゆっくり進めるつもりだ。

想像図

今後の進め方は以下のように進める(いつになるか分からないけど)。回転する音をさらに進めて空間内に存在する見えない音の形や色を生成することができたらいいな。

外部デバイス入力/Graphics/proce55ing
                |
            (network)
                |
                V
              Server
                |
                V
          高次なscore生成
                |
              (SWIG)
                |
                V
      csound(realtime)音響生成

GooglePageCreator

mp3のファイルはGooglePageCreatorのページに置かせてもらっているが、10Mを超えると置けないという情報があった。何度も失敗したが10Mを超えていたのでmp3変換時にbitrateを落としてファイルを小さくしたら確かに置くことができた。

ケロログを使ったりしてたけど、どうも使い勝手が好きでないので乗り換え中。他にいいところないかな。

*1:具体的にはlinseg等でボリュームのグラフを書こうとしたが時間計算するのが面倒であるしこれを省力化する方法が思い当たらなかった

*2:blueではその機能を使っているようだ