JavaScript:Библиотеки/p5.sound/Класс p5.Phrase
Класс p5.Phrase [1]
Описание
Это класс для создания так называемых «фраз». Фраза – это паттерн музыкальных событий, происходящих в течение определенного времени (т.е. серия нот и пауз между ними).
Чтобы воспроизвести фразу, ее нужно добавить в объект p5.Part. Один объект p5.Part может проигрывать одновременно несколько фраз. К примеру, один объект p5.Phrase может быть бас-барабаном, второй – малым барабаном, третий – бас-партией и т.д.
Первый параметр объекта p5.Phrase – это «name», т.е. название фразы (чтобы в дальнейшем ее можно было модифицировать или удалить). Второй параметр – это «callback», т.е. функция обратного вызова, которую будет вызывать эта фраза с каждым новым «шагом». К примеру, она может вызывать функцию playNote(value). Третий параметр – это «sequence», т.е. массив, который задает, какие значения будут передаваться функции обратного вызова на разных «шагах» фразы. Это могут быть данные типа «number», объект с несколькими данными типа «number» или ноль (0), что будет означать, что в этом месте нужна пауза (поэтому функция обратного вызова запущена не будет).
Чтобы использовать этот класс, нужно подключить библиотеку p5.sound. Для этого в заголовок своего файла «index.html» впишите следующее:
<script language="javascript" type="text/javascript" src="path/to/p5.sound.js"></script>
Синтаксис
new p5.Phrase(name, callback, sequence)
Параметры
name – название для объекта p5.Phrase. Тип данных – String
callback – функция, которая будет вызываться объектом p5.Phrase. Она, как правило, проигрывает звук и принимает два параметра: время, когда нужно проиграть звук (в секундах от текущего момента) и значение из массива «sequence». Точности ради время также нужно передать методу play() или start(). Тип данных – функция
sequence – массив со значениями, которые будут передаваться функции обратного вызова с каждым новым «шагом» фразы. Тип данных – массив
Поля
- sequence – массив значений, передаваемых функции обратного вызова с каждым новым «шагом» фразы. В зависимости от требований функции обратного вызова, это могут быть числа (number), строки (String), или объект с несколькими значениями. Ноль (0) означает паузу.
Пример
№1
var mySound, myPhrase, myPart;
var pattern = [1,0,0,2,0,2,0,0];
var msg = 'click to play';
// 'кликните, чтобы начать проигрывание'
function preload() {
mySound = loadSound('assets/beatbox.mp3');
}
function setup() {
noStroke();
fill(255);
textAlign(CENTER);
masterVolume(0.1);
myPhrase = new p5.Phrase('bbox', makeSound, pattern);
myPart = new p5.Part();
myPart.addPhrase(myPhrase);
myPart.setBPM(60);
}
function draw() {
background(0);
text(msg, width/2, height/2);
}
function makeSound(time, playbackRate) {
mySound.rate(playbackRate);
mySound.play(time);
}
function mouseClicked() {
if (mouseX > 0 && mouseX < width && mouseY > 0 && mouseY < height) {
myPart.start();
msg = 'playing pattern';
// 'воспроизведение паттерна'
}
}