103

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

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

147

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

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

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

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

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

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

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

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

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

Темы

Политика

Теги

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

Сообщества

18+

Теги

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

Сообщества

Игры

Теги

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

Сообщества

Юмор

Теги

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

Сообщества

Отношения

Теги

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

Сообщества

Здоровье

Теги

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

Сообщества

Путешествия

Теги

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

Сообщества

Спорт

Теги

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

Сообщества

Хобби

Теги

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

Сообщества

Сервис

Теги

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

Сообщества

Природа

Теги

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

Сообщества

Бизнес

Теги

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

Сообщества

Транспорт

Теги

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

Сообщества

Общение

Теги

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

Сообщества

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

Теги

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

Сообщества

Наука

Теги

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

Сообщества

IT

Теги

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

Сообщества

Животные

Теги

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

Сообщества

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

Теги

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

Сообщества

Экономика

Теги

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

Сообщества

Кулинария

Теги

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

Сообщества

История

Теги

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

Сообщества