SoundFileを読み込み、その再生速度をmouseYに、音量をmouseXにマッピングします。再生速度は、ウェブオーディオコンテキストがサウンドファイル情報を処理する速度です。速度が遅くなると、サウンドの持続時間が長くなるだけでなく、より低い周波数で再生されるため、ピッチも下がります。
rate pitch volume
Sound Interaction
View Source Code
/*
* @name Playback Rate
* @arialabel Two grey circles on a light grey background that move as the user moves their mouse and plays different noises based on their distance from each other
* @description <p>Load a SoundFile and map its playback rate to
* mouseY, volume to mouseX. Playback rate is the speed with
* which the web audio context processings the sound file information.
* Slower rates not only increase the duration of the sound, but also
* decrease the pitch because it is being played back at a slower frequency.</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>
* a sound file, and a running <a href="https://github.com/processing/p5.js/wiki/Local-server">local server</a>.</span></em></p>
*/
// A sound file object
let song;
function preload() {
// Load a sound file
// song = loadSound('assets/Damscray_DancingTiger.mp3');
song = loadSound('../../../../p5js-website-legacy-examples/assets/Damscray_DancingTiger.mp3');
}
function setup() {
// createCanvas(710, 400);
createCanvas(windowWidth, windowHeight);
// Loop the sound forever
// (well, at least until stop() is called)
song.loop();
}
function draw() {
background(200);
// Set the volume to a range between 0 and 1.0
let volume = map(mouseX, 0, width, 0, 1);
volume = constrain(volume, 0, 1);
song.amp(volume);
// Set the rate to a range between 0.1 and 4
// Changing the rate alters the pitch
let speed = map(mouseY, 0.1, height, 0, 2);
speed = constrain(speed, 0.01, 4);
song.rate(speed);
// Draw some circles to show what is going on
stroke(0);
fill(51, 100);
ellipse(mouseX, 100, 48, 48);
stroke(0);
fill(51, 100);
ellipse(100, mouseY, 48, 48);
}
License
Source code is available on GitHub p5.js website legacy.
All examples are licensed under CC BY-NC-SA 4.0.