はじめに
MDG(名古屋大学 安田・遠藤・浦田研究室) Advent Calendar 2019 4日目の投稿です!
タイトルからしてニッチな記事ですが,何卒お付き合いいただけますと.
Minimについて
Minimはprocessingで利用できるサウンドライブラリです.
音声ファイルの再生, サイン波の生成などができるようです.
使い方
マイクからの入力の音声波形を表示するプログラムを例とします.
単一ファイルの場合
まず, 単一ファイル内にMinim関連の処理を全て書く場合のコードを以下に示します.
main.pde
import ddf.minim.*;
Minim minim; //Minim型変数であるminimの宣言
AudioInput in; //マイク入力用の変数
int waveH = 150; //波形の高さ
void setup() {
fullScreen();
minim = new Minim(this);
in = minim.getLineIn(Minim.MONO, 512);
stroke(0, 0, 0);
strokeWeight(4);
}
void draw() {
background(255);
for (int i = 0; i < in.bufferSize() ; i++) {
point(width * 0.15 + i * 2.5, height * 0.8 + in.left.get(i) * waveH);
}
}
このとき,
minim = new Minim(this);
上記部分でthisが示しているのはPAppletクラスのオブジェクトです.
よって, Minim関連の処理を別のクラスファイルに書く場合, PAppletクラスのオブジェクトを返す関数をメインファイルに用意する必要があります.
Minim関連のコードを別クラス・別ファイルに書く場合
minim_separated.pde
class Minim_separated {
Minim minim; //Minim型変数であるminimの宣言
AudioInput in; //マイク入力用の変数
int waveH = 150; //波形の高さ
Minim_separated() {
minim = new Minim(getPApplet());
in = minim.getLineIn(Minim.MONO, 512);
stroke(0, 0, 0);
strokeWeight(4);
}
void draw_soundwave() {
background(255);
for (int i = 0; i < in.bufferSize() ; i++) {
point(width * 0.15 + i * 2.5, height * 0.8 + in.left.get(i) * waveH);
}
}
}
main_separated.pde
import ddf.minim.*;
Minim_separated minim_separated;
void getPApplet() {
return this;
}
void setup() {
fullScreen();
}
void draw() {
minim_separated.draw_soundwave();
}
おわりに
Minimに限らず, PAppletクラスのオブジェクトを引数として取るオブジェクトを生成して使うライブラリを使用する場合, 今回紹介した方法が利用できるかと思います.