MinimでLFOをかける
キー入力で元の波形,LFOの波形を変更できる
- 1: 元の波形をサイン波にする
- 2: 元の波形を三角波にする
- 3: 元の波形を矩形波にする
- 4: 元の波形をノコギリ波にする
- q: LFOの波形をサイン波にする
- w: LFOの波形を三角波にする
- e LFOの波形を矩形にする
- r: LFOの波形をノコギリ波にする
マウスのx座標でLFOの周波数を変更できる.
/** * Low Frequency Oscillater * * @author aa_debdeb * @2015/12/18 */ 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 src; Oscil lfo; void setup(){ size(512, 200); minim = new Minim(this); out = minim.getLineOut(); src = new Oscil(440, 0.5, Waves.SINE); lfo = new Oscil(0.5, 0.3, Waves.SINE); src.patch(lfo).patch(out); } void draw(){ background(0); stroke(60); strokeWeight(1); line(mouseX, 0, mouseX, height); line(0, mouseY, width, mouseY); stroke(255); strokeWeight(1); for(int i = 0; i < out.bufferSize() - 1; i++){ line(i, 50 + out.left.get(i) * 50, i + 1, 50 + out.left.get(i + 1) * 50); line(i, 150 + out.right.get(i) * 50, i + 1, 150 + out.right.get(i + 1) * 50); } textSize(12); text("lfo frequency:" + lfo.frequency.getLastValue(), 15, 15); } void mouseMoved(){ float lfoFreq = map(mouseX, 0, width, 20, 0.1); lfo.setFrequency(lfoFreq); } void keyPressed(){ switch(key){ case '1': lfo.setWaveform(Waves.SINE); break; case '2': lfo.setWaveform(Waves.TRIANGLE); break; case '3': lfo.setWaveform(Waves.SQUARE); break; case '4': lfo.setWaveform(Waves.SAW); break; case 'q': src.setWaveform(Waves.SINE); break; case 'w': src.setWaveform(Waves.TRIANGLE); break; case 'e': src.setWaveform(Waves.SQUARE); break; case 'r': src.setWaveform(Waves.SAW); break; } }