音楽をずたずたに切り刻んで再構築するような種類のテクノやハウスが世の中には存在しますが、そんな雰囲気でwaveファイルをずたずたにして再構築するためのライブラリやコマンドを書いて遊んでいます。
α版クオリティで不安定でまだドキュメントもないですが、ソースはgithubにあげてあります。
どんな感じのものなの?
付随するzutazutter.rbというスクリプトに下記のような楽譜ファイルと素材となるwaveファイルを入力すると、素材がずたずたにされた上で楽譜ファイルにそって再構築されたwaveファイルが出力される仕組みまではなんとなくできています。
この楽譜ファイルによって生成されたwaveファイルはこんな感じになります。
別の楽譜で別のwaveを食わせるとこんな感じになります
使ってみたいんだけど
$ git clone git://github.com/Shinpeim/WaveZutaZuta.git
$ cd WaveZutaZuta
$ bundle install --without test
$ bundle exec bin/zutazutter.rb bpm source.wav score.txt > dest.wav
Rubyとbundlerがインストールされていれば、上みたいな感じで使えると思います。bpmには出力したいテンポ、souce.wavにはずたずたにするwaveファイル、score.txtには楽譜ファイル、dest.wavには出力先のwaveファイル名をそれぞれ指定してください。
ちなみに、楽譜ファイルの読み方、書き方ですが、aからzまでの文字それぞれにずたずたにされたwaveファイルの"破片"がアサインされていて、-は音をのばす(タイ)を意味し、0は休符を意味します。*を指定すると、a-zのうちどれかをランダムで鳴らします。1文字が64分音符ひとつ分の長さです。空白文字は無視されます。
これ使ってかっこいいのができたら聴かせてくれるとわたしは喜びます
今後の予定は?
既知のバグがいくつかあるのでそれを修正したいなと思っています。あと、サンプリングソースとなるwaveファイルを複数扱えるようにするとか、a-zにアサインする音をそれぞれ自分で「このwaveファイルのn秒目からの音」みたいに指定できるようにしたいなとも思ってるんですけど、そこまでやるならもう普通にDAW使えよ感があるので、そこまでやろうかどうか迷ってます
追記
仕事が速いことで有名な shogo 氏がはやくもJSに移植、web上でためせるようになってました
http://shogo82148.github.com/WaveZutaZutaJS/
さすがですね