Comments 13
Спасибо за статью. Век живи — Век учись.
А почему вы решили захардкодить значения частот нот, не проще ли получать эти значения простым делением заданной ля (в вашем случае 440) на соответствующее искомой ноте n?
Простым делением тут работать не будет, т.к. изменение частоты между нотами растет экспоненциально. То есть, условно, между A4 и A3 разность будет 220, а между A3 и A2, уже 110. Ну и как бы зачем вводить функцию для вычисления, если захардкодить реально проще?
В дальнейшем, возможно, сделаю именно динамический расчет, для более точного соответствия реальным звукам.
В дальнейшем, возможно, сделаю именно динамический расчет, для более точного соответствия реальным звукам.
Ну просто захардкоженная функция являет собой огромный свич, чем уже глаза «режет». Плюс как только вы захотите сделать частоту ля задаваемой, что часто важно, вам придется все равно придется все это дело переписывать.
Графическое изображение волны уже делали на php https://github.com/afreiday/php-waveform-png
Однако, когда мне понадобилась волна из mp3, я никак не мог понять зачем применять php для этого, если все равно в любом случае требуется приложение для получения wav файла.
Куда проще воспользоваться ffmpeg для генерации волны ( правда попробовать настроить цвета этой волны — какой то лютый капец )
Когда я реализовывал плеер потипу как на soundcloud вот тут http://serebniti.ru/airs/2016-03-15/ ( анимация у меня не на канвасе, а css) я решил отказаться от волны на png в сторону json файла из png, получаемом на лету, по нескольким причинам.
1) Адаптивность к экранам. Я могу грамотно ресемплировать волну независимо от экрана из png в любую ширину.
Вот так http://cdn.serebniti.ru/getjson.php?id=5718&w=286 json для ширины экрана 3*286px (ширина просто 3 пикселя одного столбика)
2) Гибкость в дизайну. Уж из json можно на конве нарисовать что угодно.
3) Размер. Немножечко, но меньше, в json только Y координата + gzip.
Однако, когда мне понадобилась волна из mp3, я никак не мог понять зачем применять php для этого, если все равно в любом случае требуется приложение для получения wav файла.
Куда проще воспользоваться ffmpeg для генерации волны ( правда попробовать настроить цвета этой волны — какой то лютый капец )
Когда я реализовывал плеер потипу как на soundcloud вот тут http://serebniti.ru/airs/2016-03-15/ ( анимация у меня не на канвасе, а css) я решил отказаться от волны на png в сторону json файла из png, получаемом на лету, по нескольким причинам.
1) Адаптивность к экранам. Я могу грамотно ресемплировать волну независимо от экрана из png в любую ширину.
Вот так http://cdn.serebniti.ru/getjson.php?id=5718&w=286 json для ширины экрана 3*286px (ширина просто 3 пикселя одного столбика)
2) Гибкость в дизайну. Уж из json можно на конве нарисовать что угодно.
3) Размер. Немножечко, но меньше, в json только Y координата + gzip.
Вот пока как то так
Графическое изображение волны уже делали на php https://github.com/afreiday/php-waveform-png
Хочется сделать, во-первых, без использования lame для пережатия, да. А во-вторых, более человеко-понятно.
Когда я реализовывал плеер потипу как на soundcloud вот тут http://serebniti.ru/airs/2016-03-15/ ( анимация у меня не на канвасе, а css) я решил отказаться от волны на png в сторону json файла из png, получаемом на лету, по нескольким причинам.
В целом да, интересный вариант, можно подумать в эту сторону, спасибо.
Хочется сделать, во-первых, без использования lame для пережатия, да.
Хм. если на входе mp3 вам и так и так придеться распаковывать чем то в wav. Я пробовал способ ресемплирования json на клиенте
но потом отказался
http://stackoverflow.com/a/35880655/2497351
То есть Вы сначала с помощью ffmpeg получаете png, а делее интерпретируете его в json?
Да. Через ffmpeg получаю waveform с черным фоном и красной волной. Png уходит в папку с картинками, а JSON я генерю на лету из PNG через GD либу, ей же и делаю ресемлинг ( рейсайз тот который без интерполяции, самый простой, иначе полутона получаются и подсчет конкретно красных пикселей становится затруднительным)
Спасибо )
Буду следить за вашим проектом, возможно не только следить, пока трудно со временем, но мне эта тема прям очень интересна, только в контексте работы с подобными вещами на кубиборд/расбери-подобных железках, впрочем это не так уж и имеет значение.
В любом случае круто =)
Буду следить за вашим проектом, возможно не только следить, пока трудно со временем, но мне эта тема прям очень интересна, только в контексте работы с подобными вещами на кубиборд/расбери-подобных железках, впрочем это не так уж и имеет значение.
В любом случае круто =)
Sign up to leave a comment.
Работа с WAV-файлами с использованием PHP