Day1 にて紹介したライン入力にpatch()メソッドを適用する方法としてもっとシンプルな方法がわかったので紹介します。
minimのreferencesのVocoderの部分にあったやり方です。
Vocoder reference in -> http://code.compartmental.net/minim/vocoder_class_vocoder.html
以下ソース
import ddf.minim.*;
import ddf.minim.ugens.*;
import ddf.minim.spi.*;
Minim minim;
LiveInput in;
AudioOutput out;
AudioRecorder recorder;
void setup(){
size(1024,200);
//initialize the minim and out objects
int buffer_size = 512;
minim = new Minim(this);
minim.debugOn();
out = minim.getLineOut(Minim.STEREO,buffer_size);
AudioStream inputStream = minim.getInputStream( Minim.STEREO,
out.bufferSize(),
out.sampleRate(),
out.getFormat().getSampleSizeInBits()
);
in = new LiveInput(inputStream);
out = minim.getLineOut(Minim.STEREO,buffer_size);
in.patch(out);
}
void draw(){
// erase the window to dark grey
background( 64 );
// draw using a light gray stroke
stroke( 192 );
// draw the waveforms
for( int i = 0; i < out.bufferSize() - 1; i++ )
{
// find the x position of each buffer value
float x1 = map( i, 0, out.bufferSize(), 0, width );
float x2 = map( i+1, 0, out.bufferSize(), 0, width );
// draw a line from one buffer position to the next for both channels
line( x1, 50 + out.left.get(i)*50, x2, 50 + out.left.get(i+1)*50);
line( x1, 150 + out.right.get(i)*50, x2, 150 + out.right.get(i+1)*50);
}
}
この方法でスマートにpatch()を適用することができ、Day2のようなエフェクトの追加が可能です。





