オシレーターを制御し、FFTを使用して波形を表示します。MouseXは周波数に、mouseYは振幅にマッピングされます。
oscillator FFT frequency
Sound Visualization
View Source Code
/*
* @name Oscillator Frequency
* @arialabel The wavelength travels across the screen and as the user’s mouse moves left, the wavelength is longer and the frequency is slower and both increase as the mouse moves right
* @description <p>Control an Oscillator and view the waveform using FFT.
* MouseX is mapped to frequency, mouseY is mapped to amplitude.</p>
* <p><em><span class="small"> To run this example locally, you will need the
* <a href="http://p5js.org/reference/#/libraries/p5.sound">p5.sound library</a> and a
* sound file.</span></em></p>
*/
let osc, fft;
function setup() {
// createCanvas(720, 256);
createCanvas(windowWidth, windowHeight);
osc = new p5.TriOsc(); // set frequency and type
osc.amp(0.5);
fft = new p5.FFT();
osc.start();
}
function draw() {
background(255);
let waveform = fft.waveform(); // analyze the waveform
beginShape();
strokeWeight(5);
for (let i = 0; i < waveform.length; i++) {
let x = map(i, 0, waveform.length, 0, width);
let y = map(waveform[i], -1, 1, height, 0);
vertex(x, y);
}
endShape();
// change oscillator frequency based on mouseX
let freq = map(mouseX, 0, width, 40, 880);
osc.freq(freq);
let amp = map(mouseY, 0, height, 1, 0.01);
osc.amp(amp);
}
License
Source code is available on GitHub p5.js website legacy.
All examples are licensed under CC BY-NC-SA 4.0.