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

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

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

Как я делал цветомузыку своими руками Электроника, Программирование, Своими руками, Видео, YouTube, Длиннопост, Рукоделие с процессом

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

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

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

https://youtu.be/1yg67rjU6FI

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

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

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

Как я делал цветомузыку своими руками Электроника, Программирование, Своими руками, Видео, YouTube, Длиннопост, Рукоделие с процессом

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

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

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

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

Как я делал цветомузыку своими руками Электроника, Программирование, Своими руками, Видео, YouTube, Длиннопост, Рукоделие с процессом

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

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

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

Как я делал цветомузыку своими руками Электроника, Программирование, Своими руками, Видео, YouTube, Длиннопост, Рукоделие с процессом

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

Как я делал цветомузыку своими руками Электроника, Программирование, Своими руками, Видео, YouTube, Длиннопост, Рукоделие с процессом

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

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

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

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

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

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

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

Как я делал цветомузыку своими руками Электроника, Программирование, Своими руками, Видео, YouTube, Длиннопост, Рукоделие с процессом

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

52.5K поста58.4K подписчиков

Добавить пост

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

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

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


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


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


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


Запрещены:

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

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

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

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

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


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


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

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


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

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


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

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

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