memorandums

日々の生活で問題解決したこと、知ってよかったことなどを自分が思い出すために記録しています。

Processingで音ファイル再生速度のリアルタイム変更

とくればMinimライブラリを使う、が基本だったように思います。

たまたま、今、ちょっとした演習で音楽ファイルを自由なテンポで再生できないか調べていたところそうではない(Minimではできない)ことを知り、実はProcessingが提供しているSoundライブラリでできることを知りました。

ちょっとメモまで書いておきます。

事前にProcessingのIDEでSoundライブラリをインポートしておく必要があります。

その上で、以下のコードを入力し、スケッチフォルダにsample.mp3というファイルをいれておきます。

import processing.sound.*;
SoundFile file;

void setup() {
  size(640, 360);
  file = new SoundFile(this, "sample.mp3");
  file.loop();
  file.rate(1);
}      

void draw() {
  background(0);

  float rate = map(mouseX, 0, width, 0, 2);

  line(mouseX, 0, mouseX, height);

  stroke(255);
  textSize(30);
  text(rate, mouseX, mouseY/2);
  file.rate(rate);
}

マウスカーソルのX座標の位置によって再生速度が変化します。

使い方はとても簡単で、SoundFileでコンストラクトしたのち、loopメソッドを呼び出し、rateメソッドに再生速度の割合を与えれば(正の小数)再生速度がリアルタイムで変更できます。これは便利ですね。。。何か使えそう。

ドキュメント:rate() / Libraries / Processing.org

Processingの出番(少なくともp5jsより)はメッキリ少なくなりましたが、ある範囲においてはプロトタイプ作成でまだまだ現役で使えますね。はい。

以上です。