mirror of
https://github.com/processing/processing4.git
synced 2026-06-16 04:26:26 +02:00
New Minim for 2.0
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
/**
|
||||
* This sketch demonstrates how to use an FFT to analyze
|
||||
* the audio being generated by an AudioPlayer.
|
||||
* <p>
|
||||
* FFT stands for Fast Fourier Transform, which is a
|
||||
* method of analyzing audio that allows you to visualize
|
||||
* the frequency content of a signal. You've seen
|
||||
* visualizations like this before in music players
|
||||
* and car stereos.
|
||||
*/
|
||||
|
||||
import ddf.minim.analysis.*;
|
||||
import ddf.minim.*;
|
||||
|
||||
Minim minim;
|
||||
AudioPlayer jingle;
|
||||
FFT fft;
|
||||
|
||||
void setup()
|
||||
{
|
||||
size(512, 200, P3D);
|
||||
|
||||
minim = new Minim(this);
|
||||
|
||||
// specify that we want the audio buffers of the AudioPlayer
|
||||
// to be 1024 samples long because our FFT needs to have
|
||||
// a power-of-two buffer size and this is a good size.
|
||||
jingle = minim.loadFile("jingle.mp3", 1024);
|
||||
|
||||
// loop the file indefinitely
|
||||
jingle.loop();
|
||||
|
||||
// create an FFT object that has a time-domain buffer
|
||||
// the same size as jingle's sample buffer
|
||||
// note that this needs to be a power of two
|
||||
// and that it means the size of the spectrum will be half as large.
|
||||
fft = new FFT( jingle.bufferSize(), jingle.sampleRate() );
|
||||
|
||||
}
|
||||
|
||||
void draw()
|
||||
{
|
||||
background(0);
|
||||
stroke(255);
|
||||
|
||||
// perform a forward FFT on the samples in jingle's mix buffer,
|
||||
// which contains the mix of both the left and right channels of the file
|
||||
fft.forward( jingle.mix );
|
||||
|
||||
for(int i = 0; i < fft.specSize(); i++)
|
||||
{
|
||||
// draw the line for frequency band i, scaling it up a bit so we can see it
|
||||
line( i, height, i, height - fft.getBand(i)*8 );
|
||||
}
|
||||
}
|
||||
Binary file not shown.
Reference in New Issue
Block a user