147

Как я делал цветомузыку своими руками1

Всем привет, на музыкальной волне (неделя баянов) решил поделиться своим проектом, который тоже косвенно связан с музыкой.

Я сделал подсветку + светомузыку, которая позволяет визуализировать звуковой сигнал, воспроизводимый в реальном времени на компуктере при помощи адресной светодиодной ленты. Подсветка выглядит примерно так:

Проект я начал чуть больше года назад, уделяя ему пару часов на выходных. Я хотел написать приложение для Windows, чтобы подсветкой можно было управлять прямо с компьютера. Так же я хотел, по возможности, избавиться от всех транзисторов и резисторов, чтобы проект не пугал тех, кто не связан с электроникой и его с легкостью смог повторить каждый желающий. Кстати говоря, повторить это дело можно даже не имея паяльника.

Я начал программировать приложение и со временем список моих потребностей только расширялся и задумка из чего-то небольшого, что я хотел закончить за пару-тройку выходных переросла в что-то масштабное, на что у меня ушло прилично времени и сил.

Для тех, кто не хочет читать, а хочет смотреть видео, пожалуйста:

https://youtu.be/1yg67rjU6FI

Кстати, в этом видео я разыгрываю Arduino + светодиодную ленту для повторения проекта

А мы продолжим...

Я использовал ленту WS2812b, которую можно без проблем найти на алиэкспресс по цене примерно 150 руб/метр. Выглядит она как-то так:

И тут возникла проблема: мы не можем напрямую с компьютера передавать данные на ленту через USB разъем + хотелось какой-то независимости от самого ПК, чтобы подсветка включалась ещё до входа в систему. Поэтому мне пришлось использовать промежуточное звено. Выбор пал на макетную плату Arduino (выбрал её только из-за того, что она на слуху, её легко найти, она дешевая и повторить проект на ней сможет любой желающий. А так, конечно, есть контроллеры которые подходят для этих целей в разы лучше).

При помощи драйвера мы можем без проблем обмениваться данными между ПК и Ардуино, а последняя, в свою очередь, без проблем может управлять светодиодной лентой.

Сперва я сделал всего 3 режима: мы могли выбрать статичный цвет для ленты, могли поморгать ей и могли пробежаться по всем цветам радуги, плавно сменяя их.

Интерфейс выглядел вот так:

Простенько, но эффективно.

Потом мне пришла идея добавить ещё с десяток разных режимов и этот интерфейс мне показался неудобным, т.к. режимы поочередно сменяли друг друга по нажатию на кнопку.

Я решил переработать дизайн приложения и получилось примерно вот так:

Я добавил колесо режимов слева, добавил некоторые опции (например, подсветка могла включаться и выключаться вместе с запуском Windows, возможность сохранять пресеты настроек и т.д.), но потом и этого интерфейса оказалось недостаточно. Чтобы долистать до нужного режима, приходилось много крутить колесиком мыши, режимы сливались один с другим и это было неудобно. Я снова решил переработать интерфейс, но оставил общую концепцию, т.к. она мне сильно нравилась. В конечном счете получилось вот так:

Все режимы я разбил на 7 основных и несколько подрежимов, которые теперь стало удобно выбирать на "колесе режимов" посередине.

И теперь началось самое интересное: я написал алгоритм светомузыки, который позволял находить в песнях ритмические рисунки разных инструментов и визуализировать тот, который мы выберем. Эта функция работает не идеально до сих пор, иногда алгоритм ошибается, но вокал, гитарную партию и барабаны может выделить без проблем.

Я накидал 5 режимов светомузыки (можно ознакомиться в видео, ссылка на которое в начале поста, словами объяснить это сложно, но я попытаюсь): подсветка может мигать в такт биениям основного ритма, может визуализировать сразу несколько ритмических рисунков, есть интересный режим радуги, режим горения пламени, интенсивность которого меняется в зависимости от того, какие звуки воспроизводятся и режим мигающей гирлянды.

Помимо светомузыки я сделал алгоритм, который сам генерирует подсветку в зависимости от того, что изображено на рабочем столе в данный момент. Некое подобие Ambilight, но немного для других целей.

А теперь, как всё это подключить:

Нам потребуется Arduino любой версии и светодиодная лента WS2812b, подключаем всё по схеме:

Запитываем ленту от 5 вольт, а канал Din подключаем в 7 цифровой пин на Ардуино

Экспериментально я выяснил, что ленты в 30 пикселей более чем достаточно, чтобы сделать подсветку рабочего стола. А питания от USB версии 2.0 и 3.0 достаточно, чтобы запитать эти 30 светодиодов и при этом не спалить контроллер Ардуино.

Далее последовало решение, которое может многим показаться "ну таким себе": я решил отказаться от внешнего блока питания, т.к. предполагалось использовать подсветку только рядом с ПК. Да и управлять ей мы можем только через приложение, поэтому ставить её в другие места нецелесообразно. Таким образом, схема подключения стала немного проще, но взамен мы получили ограничение в 30 пикселей на ленту. Кстати говоря, USB никогда не выдаст больше 900 мА тока, даже если мы закоротим контакты питания (если это версия 3.0), поэтому беспокоиться о выходе из строя чего-либо не придется.

А дальше всё, что нужно сделать: скачать приложение по ссылке на гитхабе, установить его на ПК, следуя установки

После сделуем инструкции:

1) Запускаем приложение

2) Нажимаем на шестеренку в правом верхнем углу

3) Переходим во вкладку "подключение"

4) Выбираем USB-порт, куда подключена Ардуино

5) Нажимаем "Обновить модуль" и выбираем свою версию ардуино

Прошивка автоматически загрузится в контроллер, не понадобится никаких IDE, всё работает через приложение. Готово!

Но я всё-таки рекомендую посмотреть видео на ютубе , там я более подробно и наглядно всё объясняю. Плюс там есть демонстрация того, как это выглядит в самом начале.

Я не очень умею писать длинные посты, поэтому, надеюсь, вы не закидаете меня тапками. Всем спасибо за потраченное время!

Ах да, у меня уже был похожий пост, но там в приложении не было светомузыки, не было многих режимов и возможностей, поэтому считаю это не совсем повтором и баяном, надеюсь на ваше понимание.

Напоследок демонстрация светомузыки в комментариях (сюда не получилось добавить)

Рукодельники

62K постов60.8K подписчика

Правила сообщества

В сообществе запрещена торговля, обсуждение цен, ссылки на страницы с продажами, контакты автора в комментариях. Обязательна информация о материалах и инструментах в текстовом виде.

0. Соблюдайте основные правила Пикабу.


1. Будьте вежливы, старайтесь писать грамотно.


2. В публикациях используйте четкие и красивые фотографии.


3. Автор поста с тегом [моё] может оставить ссылку на свой профиль, группу или канал на других источниках, при условии, что ссылки (активные и не активные) не ведут на прямые продажи. Допускается не больше четырёх ссылок и только в конце поста (п. 8.5 основных правил).


Запрещены:

-ссылки рекламного характера/спам;

-ссылки, ведущие на магазины с указанием стоимости товара/услуги;

-ссылки, ведущие на призывы, покупки, продажи, подписки, репосты, голосование и тому подобное.

(нарушение основных правил сайта, п.8.1 и п. 8.2).

При переходе по ссылке запрещено наличие активных (кликабельных) ссылок, ведущих на вышеперечисленное в п.3, содержание таких ключевых слов как «товар», «услуга», «купить», «продам», «в наличии», «под заказ» и т.п.


3.1 Размещение контактов автора (самим автором или другими пользователями) в комментариях запрещено и подлежит удалению (п. 9.1 и 9.3 основных правил).


4. Обязательным для авторов является наличие технических характеристик изделия в публикациях (материалы, техники, авторские приемы, размеры, времязатраты и прочее) в текстовом виде.

Также помечайте свою работу тегом «Рукоделие с процессом» или «Рукоделие без процесса».


5. Пост-видео, пост-фото без текстового описания переносится в общую ленту. Даже если в видео показан подробный процесс изготовления, делайте краткое описание для тех, у кого нет возможности/желания смотреть видео.

Администрация оставляет за собой право решать, насколько описание соответствует п. 5.


6. Посты с нарушениями без предупреждения переносятся в общую ленту.

За неоднократные нарушения автор получает бан.

Автор может размещать новую публикацию в сообществе, не допуская полученных ранее замечаний.

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества