JavaScript:Библиотеки/p5.sound/Класс p5.SoundFile
Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.
![]() |
Черновик |
Класс p5.SoundFile [1]
Описание
Объект p5.SoundFile с путем к файлу.
Объект p5.SoundFile, возможно, не будет доступен сразу, т.к. он загружает данные файла асинхронно. Чтобы начать работать со звуком сразу после его загрузки, задайте нужную функцию во втором параметре.
Требуется указать только один путь к файлу, но браузеры поддерживают не все форматы звуковых файлов (т.е. mp3, ogg, wav и m4a/aac). Поэтому, чтобы гарантировать совместимость вашего скетча с браузером, вместо одного пути можно задать массив путей к нескольким аудиофайлам, а браузер уже выберет тот формат, что подходит лично для него.
Чтобы использовать эту функцию, нужно подключить библиотеку p5.sound. Для этого в заголовок своего файла «index.html» впишите следующее:
<script language="javascript" type="text/javascript" src="path/to/p5.sound.js"></script>
Синтаксис
new p5.SoundFile(path, [successCallback], [errorCallback], [whileLoadingCallback])
Параметры
path – путь к звуковому файлу (String). Опционально можно указать массив путей к файлам в разных форматах. Также можно указать объект из HTML5 File API или объект p5.File. Тип данных – String, массив
successCallback – название функции, которую нужно запустить после загрузки файла. Тип данных – функция
errorCallback – название функции, которую нужно запустить, если загрузка файла не удастся. Эта функция получит сообщение об ошибке или объект XMLHttpRequest с информацией о том, что пошло не так. Тип данных – функция
whileLoadingCalback – название функции, которая будет вызвана во время загрузки файла. Первым параметром для нее является информация о прогрессе загрузки звукового файла (значения между «0» и «1»). Этот прогресс, впрочем, не учитывает дополнительное время, требуемое на декодирование аудиоданных. Тип данных – функция
Методы
- loadSound() – возвращает новый объект p5.SoundFile, находящийся по заданному пути. Если вызвать ее во время preload(), объект p5.SoundFile уже будет готов к моменту, когда в скетче начнут обрабатываться блоки setup() и draw(). Если вызвать loadSound() за пределами preload(), объект p5.SoundFile будет готов не сразу, но на этот случай у loadSound() есть второй параметр для функции, которую нужно запустить сразу после загрузки файла. При загрузке внешних файлов рекомендуем использовать локальный сервер.
- isLoaded() – возвращает «true», если загрузка звукового файла завершилась успешно.
- play() – проигрывает объект p5.SoundFile.
- playMode() – объект p5.SoundFile можно проигрывать в трех режимах: «restart», «sustain» и «untilDone». Эти режимы задают, что случится с объектом p5.SoundFile, когда он уже проигрывается, но пользователь снова пытается запустить его проигрывание. В режиме «sustain» файл продолжит проигрываться, но одновременно с этим запустится еще раз с самого начала, и в результате пользователь будет слышать проигрывание двух файлов одновременно. В режиме «restart» проигрывание файла остановится, после чего он остановится и начнет проигрываться с самого начала. В режиме «untilDone» файл будет проигрываться только в том случае, если его прежнее проигрывание было завершено до конца. По умолчанию стоит режим «sustain».
- pause() – ставит на паузу текущее проигрывание файла. Если файл не проигрывается, ничего не произойдет. Если файл стоит на паузе, то вызов play() возобновит его проигрывание с места, где он был поставлен на паузу. Если перед паузой проигрывание объекта p5.SoundFile было зациклено, то зацикливание останется и после вызова play().
- loop() – зацикливает проигрывание объекта p5.SoundFile. Принимает несколько опциональных параметров, задающих скорость и громкость проигрывания, длительность зацикливания и т.д.
- setLoop() – задает, включить ли циклическое проигрывание объекта p5.SoundFile или нет. Если файл уже проигрывается, изменение этой настройки вступит в силу, когда файл будет проигран до конца.
- isLooping() – возвращает «true», если у объекта p5.SoundFile включено циклическое проигрывание, и он в данный момент проигрывается, и «false», если нет.
- isPlaying() – возвращает «true», если объект p5.SoundFile в данный момент проигрывается, и «false», если нет (т.е. если он остановлен или поставлен на паузу).
- isPaused() – возвращает «true», если проигрывание объекта p5.SoundFile поставлено на паузу, и «false», если нет (т.е. если он проигрывается или остановлен).
- stop() – останавливает проигрывание звукового файла.
- setVolume() – умножает громкость звукового файла на значение в диапазоне между «0.0» (тишина) и «1.0» (полная громкость). Значение «1.0» – это максимальная громкость цифрового звука, поэтому если задать значение выше «1.0», это может привести к цифровым искажениям. Также можно задать затухание при помощи параметра rampTime. Более сложные затухания создаются с помощью класса p5.Env. Кроме того, можно воспользоваться осциллятором, меняющим громкость с помощью аудиосигнала.
- pan() – задает стерео-позицию объекта p5.SoundFile при помощи значения с плавающей точкой в диапазоне от «-1.0» (левая сторона) до «1.0» (правая сторона). Значение по умолчанию – «0.0» (центр).
- getPan() – возвращает текущее значение стерео-позиции (значение в диапазоне от «-1.0» до «1.0»).
- rate() – задает скорость проигрывания звукового файла. Меняет скорость проигрывания и высоту звука. Если задать значение меньше 0, это инвертирует буфер с аудиоданными.
- duration() – возвращает длительность звукового файла (в секундах).
- currentTime() – возвращает текущую позицию проигрывания объекта p5.SoundFile (в секундах). Время соответствует нормальному направлению проигрывания аудиоданных в буфере, но если ранее была вызвана reverseBuffer(), функция currentTime() будет отсчитывать время задом наперед.
- jump() – перемещает курсор проигрывания на заданную позицию файла (в секундах). В параметрах указываются время, с которого нужно начать проигрывание, и продолжительность проигрывания. Если ни один из этих параметров не задан, файл будет воспроизведен полностью от начала до конца.
- channels() – возвращает количество каналов в звуковом файле. К примеру, моно – это 1 канал, а стерео – это 2 канала.
- sampleRate() – возвращает частоту дискретизации звукового файла.
- frames() – возвращает количество отсчетов в звуковом файле. Эквивалентно частоте дискретизации, умноженной на длительность звукового файла.
- getPeaks() – возвращает массив с пиками громкости в объекте p5.SoundFile, который можно использовать в качестве исходных данных для создания статичного волнового графика. Сканирует буфер p5.SoundFile на предмет участков с самой высокой громкостью. Принимает только один параметр length, который задает размер массива. Чем больше массив, тем точнее получается график. Эта функция вдохновлена Wavesurfer.js.
- reverseBuffer() – инвертирует данные в буфере p5.SoundFile. Чтобы проиграть инвертированный звук, нужно отдельно вызвать функцию play().
- onended() – задает событие, запускаемое после того, как будет достигнут конец буфера, содержащего данные звукового файла. Если файл настроен на одноразовое проигрывание, onended() будет вызвана после того, как файл будет проигран до конца. Если файл настроен на циклическое проигрывание, она будет вызвана после вызова функции stop().
- connect() – подключает «выход» объекта библиотеки p5.sound ко «входу» другого объекта библиотеки p5.sound. Может пригодиться, к примеру, при подключении объекта p5.SoundFile к объекту p5.FFT или p5.Effect. Если параметров не задано, подключается к главному устройству вывода аудиоданных (т.е. к самому главному «выходу»). Большинство объектов библиотеки p5.sound, будучи созданными, по умолчанию подключаются к главному устройству вывода аудиоданных.
- disconnect() – отключает «выход» этого объекта p5.SoundFile.
- setPath() – задает новый путь (URL) к источнику этого звукового файла.
- setBuffer() – заменяет текущий аудио-буфер на новый буфер.
- processPeaks() – возвращает массив данных с отметками в местах, где есть ритм. Это асинхронная функция, обрабатывающая файл в оффлайновом аудиоконтексте, и передающая результат функции обратного вызова. Звуковой файл прогоняется через фильтр низких частот, в процессе чего в нем ищутся места, значения которых превышают начальный порог. Если общее количество пиков будет менее минимального числа пиков, порог уменьшится, и анализ запустится снова – пока не будут достигнуты значения в параметре minPeaks или minThreshold.
- addCue() – задает событие, которое будет запущено, когда будет достигнута заданная отметка в медиаэлементе (аудио или видео). Параметрами служат функция обратного вызова, время, где нужно запустить событие (в секундах), и опциональный параметр для функции обратного вызова. У функции обратного вызова первым параметром должно быть время, а вторым (опциональным) – объект.
- removeCue() – удаляет отметку по заданному ID. Сам ID отметки возвращается при помощи функции addCue().
- clearCues() – удаляет все отметки, заданные при помощи addCue().