103

Продолжение поста «Как я делал цветомузыку своими руками»

Почему-то видео демонстрации светомузыки не загрузилось в основной пост, поэтому оставлю его тут в комментариях

147

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

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

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

Как я делал цветомузыку своими руками Электроника, Программирование, Своими руками, Видео, 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, всё работает через приложение. Готово!

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

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

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

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

Показать полностью 6 1
Отличная работа, все прочитано!