Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Processing 2. Креативное программирование

.pdf
Скачиваний:
144
Добавлен:
06.03.2016
Размер:
16.65 Mб
Скачать

String info = "Position: " + playheadMinutes + ":" + nf( playheadSeconds, 2 ) + "/" + totalMinutes + ":" + nf( totalSeconds, 2 );

fill( 0 ); noStroke();

text( info, 10, 20 );

}

..

void mousePressed()

{

int pos = floor( map( mouseX, 0, width, 0, player.length() ) ); player.play( pos );

}

void keyPressed()

{

if ( key == ' ' ) {

if ( player.isPlaying() ) { player.pause();

} else { player.play();

}

}

if ( key == CODED ) {

if ( keyCode == LEFT ) { player.rewind();

}

}

}

stop(),AudioPlayer Minim. .

void stop()

{

player.close();

minim.stop();

super.stop();

}

140

7

, . -. / -.

minim, MinimPApplet.AudioPlayer. AudioPlayer:

player = minim.loadFile("song.mp3");

player.play(),. ,player.loop().

. -,. player. isPlaying() , -. .(true), player.pause()(false), ., . player.rewind().

draw() . player. length() , .player.position() . -0map().,, .:

int seconds = (int)(milliseconds/1000) % 60;

int minutes = (int)(milliseconds/(1000*60)) % 60;

mousePressed() length() position().play() .

141

stop() AudioPlayer Minim., Minim.

..Minim ., , .

, - minim, Minim

AudioInput.

import ddf.minim.*;

import ddf.minim.signals.*; import ddf.minim.analysis.*; import ddf.minim.effects.*;

Minim minim;

AudioInput in;

setup() getLineIn() Minim.

void setup()

{

size( 640, 480 ); smooth();

minim = new Minim( this );

in = minim.getLineIn( Minim.STEREO, 512 );

background( 0 );

}

draw() bufferSize() AudioInput. stop().

void draw()

{

fill( 0, 16 );

142

7

noStroke();

rect( 0, 0, width, height/2 );

stroke( 255 ); noFill();

float r = 0;

for ( int i = 0; i < in.bufferSize(); i++ ) { r += abs( in.mix.get( i ) ) * 20;

}

ellipse( width/2, height/2, r, r );

}

void stop()

{

in.close();

minim.stop();

super.stop();

}

, . -, . .

143

minim.getLineIn() AudioInput., . ,, .. Minim. STEREOMinim.MONO . - ; 512. ,1024.

draw() bufferSize(). , abs() . -. , .

- , , . ,..

. ,.

import ddf.minim.*;

import ddf.minim.signals.*; import ddf.minim.analysis.*; import ddf.minim.effects.*;

Minim minim;

AudioPlayer player;

void setup()

{

size( 1024, 480 ); smooth();

minim = new Minim( this );

player = minim.loadFile("song.mp3", 1024); player.play();

strokeWeight( 2 );

}

144

7

, draw(). , -. stop().

void draw()

{

background( 255 );

translate( 0, height/2 );

//right channel stroke( 255, 0, 0 );

for ( int i = 0; i < player.right.size(); i++ ) { float y = player.right.get( i ) * 220;

point( i, y );

}

//left channel

stroke( 0 );

for ( int i = 0; i < player.left.size(); i++ ) { float y = player.left.get( i ) * 220;

point( i, y );

}

}

void stop()

{

player.close();

minim.stop();

super.stop();

}

, , ..

145

AudioPlayer : ,. player.left, player.right player.mix. size() ,. , . get() .-1 1,.

( ). Minim , ,. : http://paulbourke.net/ miscellaneous/ dft/. , ..

FFT, .

import ddf.minim.*;

import ddf.minim.signals.*; import ddf.minim.analysis.*; import ddf.minim.effects.*;

Minim minim;

AudioPlayer player;

FFT fft;

void setup()

{

size( 1024, 480 );

minim = new Minim( this );

player = minim.loadFile("song.mp3", 512 ); player.loop();

fft = new FFT( player.bufferSize(), player.sampleRate() );

background( 255 );

}

146

7

draw() fft .background(),. .

void draw()

{

fill( 255, 8 ); noStroke();

rect( 0, 0, width, height );

fft.forward( player.mix );

strokeWeight( 4 ); strokeCap( SQUARE ); stroke( 0 );

for ( int i = 0; i < fft.specSize(); i++ ) {

line( i*4, height, i*4, height - fft.getBand( i ) * 20 );

}

}

void stop()

{

player.close();

minim.stop();

super.stop();

}

, ..

147

, , FFT, .AudioPlayer :

fft = new FFT( player.bufferSize(), player.sampleRate() );

draw(). , player.left player.right .

fft.forward( player.mix );

FFT fft.specSize(). FFT player.bufferSize() / 2 + 1. fft. getBand(). , , .

, ., ., .

minim, Minim, AudioPlayerFFT. Particleboolean . .

import ddf.minim.*;

import ddf.minim.signals.*; import ddf.minim.analysis.*; import ddf.minim.effects.*;

Minim minim;

AudioPlayer player;

FFT fft;

Particle[] particles;

boolean fade = false;

148

7

void setup()

{

size( 640, 480 ); smooth();

background( 0 );

colorMode( HSB, 360, 100, 100, 100 );

minim = new Minim( this );

player = minim.loadFile("song.mp3", 512 ); player.loop();

fft = new FFT( player.bufferSize(), player.sampleRate() );

particles = new Particle[ fft.specSize() ]; for ( int i = 0; i < fft.specSize(); i++ ) {

particles[i] = new Particle( i );

}

}

draw() . RGB pushStyle() popStyle(),. ,for.

void draw()

{

pushStyle(); colorMode( RGB, 255 ); if ( fade ) {

noStroke(); fill( 0, 8 );

rect( 0, 0, width, height );

}else { background( 0 );

}

popStyle();

fft.forward( player.mix );

for ( int i = 0; i < fft.specSize() - 1; i++ ) { particles[i].update(fft.getBand(i), player.mix.get( i*2 )); particles[i].render();

}

}

149

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]