Daily Creative Coding

元「30 min. Processing」。毎日、Creative Codingします。

サイン波の周波数と音量をGUIで操作する

f:id:aa_debdeb:20161024201034p:plain
/**
* frequncy and amplitude controlled by GUI
*
* @author aa_debdeb
* @date 2016/10/30
*/

import controlP5.*;
import ddf.minim.spi.*;
import ddf.minim.signals.*;
import ddf.minim.*;
import ddf.minim.analysis.*;
import ddf.minim.ugens.*;
import ddf.minim.effects.*;

Minim minim;
AudioOutput out;
Oscil osc;
ControlP5 cp5;

float freq, amp;

void setup(){
  size(400, 300);
  
  float radius = 40;
  cp5 = new ControlP5(this);
  cp5.addKnob("freq")
     .setLabel("frequency")
     .setRange(0, 1000)
     .setValue(500)
     .setPosition(width / 3 - radius, height / 2 - radius)
     .setRadius(radius)
     .setDragDirection(Knob.VERTICAL);
     
  cp5.addKnob("amp")
     .setLabel("amplitude")
     .setRange(0, 1)
     .setValue(0.5)
     .setPosition(width * 2.0 / 3 - radius, height / 2 - radius)
     .setRadius(radius)
     .setDragDirection(Knob.VERTICAL);
     
  minim = new Minim(this);
  out = minim.getLineOut();
  osc = new Oscil(440, 0.5, Waves.SINE);
  osc.patch(out);
}

void draw(){
  background(128);
  osc.setAmplitude(amp);
  osc.setFrequency(freq);
}