MInimでいろいろな波形の音を鳴らす
マウスの縦位置が音量,横位置が音の高さに対応している.
/** * Minim Sound Wave * * @author aa_debdeb * @date 2015/12/04 */ import ddf.minim.*; import ddf.minim.analysis.*; import ddf.minim.effects.*; import ddf.minim.signals.*; import ddf.minim.spi.*; import ddf.minim.ugens.*; Minim minim; AudioOutput out; Oscil wave; void setup(){ size(512, 200); minim = new Minim(this); out = minim.getLineOut(); wave = new Oscil(440, 0.5, Waves.SINE); wave.patch(out); } void draw(){ background(255); stroke(255, 0, 0); strokeWeight(3); noFill(); beginShape(); for(int i = 0; i < width; i++){ vertex(i, height / 2 - wave.getWaveform().value((float)i / width) * 100); } endShape(); stroke(0); strokeWeight(1); noFill(); beginShape(); for(int i = 0; i < out.bufferSize(); i++){ vertex(i, height / 2 + out.mix.get(i) * 100); } endShape(); } void mouseMoved(){ float amp = map(mouseY, 0, height, 1, 0); wave.setAmplitude(amp); float freq = map(mouseX, 0, width, 0, 15000); wave.setFrequency(freq); } void mousePressed(){ saveFrame("images/image.jpg"); } void keyPressed(){ switch(key){ case '1': wave.setWaveform(Waves.SINE); break; case '2': wave.setWaveform(Waves.TRIANGLE); break; case '3': wave.setWaveform(Waves.SAW); break; case '4': wave.setWaveform(Waves.SQUARE); break; case '5': wave.setWaveform(Waves.QUARTERPULSE); break; case '6': wave.setWaveform(Waves.PHASOR); break; } }