Недавно мне пришла в голову идея создать мурлыканье кошки на JavaScript. Поискав в интернете по этой теме, ничего не нашлось, значит надо реализовывать! Изучив, как это вообще можно сделать, я решил воспользоваться такой замечательной вещью, как API веб-аудио .
Современные браузеры уже более-менее нормально поддерживают эту технологию.
Идея работы Web Audi API предельно проста — мы создаем ноды и соединяем их друг с другом, причем каждый нод может быть источником звука, генератором сигналов, задержкой, анализатором, фильтром, регулятором громкости.
, точка «выхода» (откуда звук уже поступает на звуковую карту).
Для начала я взял mp3 мурлыканья и решил проанализировать спектр, чтобы в будущем синтезировать что-то подобное.
Схема подключения была следующая:
Но полученные красивые характеристики сигнала мне совершенно не помогли.
Поэтому пришлось подбирать параметры для генерации экспериментально.
Для генерации звука была реализована следующая схема:
И так, мой алгоритм:
1. Создать глобальные узлы регулировки громкости, анализатор, выход
2. Создаём блоки с узлами — генераторами, объёмами, фильтрами, задержками:
3. Подключите все к «основному» тому
4. Синусоидальное управление «основной» громкостью.
Таким образом, экспериментально были подобраны следующие параметры мурлыканья: 1-й блок: прямоугольные, синусоидальные, пилообразные сигналы частотой 11 Гц с ФНЧ на частоте 600 Гц и задержкой 0,001 с.
2-й блок: те же сигналы с задержкой 0,0013. 2-й блок: те же сигналы с задержкой 0,0012. Это оказалось сплошным мурлыканьем.
Но кошки мурчат громко при выдохе и тихо при вдохе, поэтому периодически увеличивать и уменьшать громкость необходимо.
Для этого я взял синусоиду с ограничением максимальной громкости:
В результате получилось мурлыканье «сферического кота в вакууме» — очень плавное, как будто микрофон держал прямо возле пасти кота, но очень похожее на тот пример, который был у меня в мп3. Конечно, все кошки мурчат по-разному (и моя тоже не одинаково), но результатом я все равно доволен.
Ссылка к jsfiddle УПД.
Не работает в фаерфоксе.
В хроме работает. УПД 2. Как оказалось, звук в разных наушниках сильно различается.
У одних это звучит как мурлыканье, у других – как вертолет! УПД 3. Вариант мурлыканья из комментариев: jsfiddle - на мой взгляд, это больше похоже на правду! УПД 4. Поправил скрипку - установил выбранные пользователем настройки Гринчи Теги: #JavaScript #Дурацкое программирование #кошки #Разработка сайтов #JavaScript
-
Лучший It-Блог В Рунете В Понимании Блогеров
19 Oct, 24 -
Беспроводной Джойстик Xbox360 На Пк
19 Oct, 24 -
Готовится Новая Версия Dropbox
19 Oct, 24 -
Движущиеся Элементы В Прототипе Axure
19 Oct, 24 -
Остерегайтесь Оптоволокна
19 Oct, 24