ARDUINO Цветомузыка на MSGEQ7 и на фильтрах

Цветомузыка на MSGEQ7 и на фильтрах
ЦМУ на MSGEQ7. Также сюда добавляю второй проект ЦМУ на фильтрах.
ссылка на плату и схему https://oshwlab.com/technotrasher/colormusic
За год была проведена большая работа.
Итак ЦМУ на MSGEQ7.
1. Двухканальная схема. стерео.
2. Ручная регулировка шумов. предустановки шумов.
3. 7 режимов цму. в которых есть под-режимы.
4. 10 вариантов световых эффектов.
5. регулировки эффектов и режимов.
6. за "спектр" отвечают микросхемы MSGEQ7. достать рабочие сложно. (Купить более менее рабочие MSGEQ7 - по поиску на алиэкспресс "Модуль анализатора звука Aispark")
7. Аудио компрессор и система контроля клипинга взята тут - kompressor_SSM2167. прочтите обязательно, кто будет собирать.
8. описание режимов в начале скетча.
9. работа возможна с 300 светодиодами!
10. регулировка параметров с пульта и возможность сброса настроек "когда, что то нажал и все поломалось"
11. режим тишины с подсветкой (можно отключить), время срабатывания так же выставляется в скетче.
12 . Использованы статьи. тут для понимания работы MSGEQ7.
13. работа от микрофона. включается с пульта! на плате есть возможность отрегулировать чувствительность и время срабатывания микрофона.
14. режимы работы отображаются светодиодами на плате. на плате возможно механическое отсоединение сигнала с микрофона либо "байпас"
компрессора.
15. регулировка уровня входного сигнала линейным стерео потенциометром.
17. кнопки с платы убраны все, кроме переключения из ждущего режима. нужно для аварийного режима. если перестал работать пульт, а нужно включить хоть что то.
никаких энкодеров и т.д. скетч в первую очередь адаптировался под большую ленту. была битва за каждый байт и даже бит. и дорабатываться будет дальше.
18. Параметры сохраняются в память при отключении ЦМУ. в том числе режимы, шумы, настройки для режимов.
19. питание ленты обособлено от питания ардуино. вы не "сожжете" ардуино, забыв подключить внешний БП и программируя её через USB.
20.

Если вы нашли ошибку или знаете, как что то доработать - напишите об этом.

Особая благодарность Евгению (Slenk) - он находил на меня пару минут на ответ и подсказку. я же подглядывал в его скетч и брал самое лучшее.
так же благодарность - Sergo_ST без его подсказок и терпеливых ответов на мои глупые вопросы скетч был бы намного "толще и тупее". и не факт, что работал бы.


Этап второй ЦМУ на фильтрах. проект делается совместно с poty
проект сложен для сборки.
что сделано - плата. бетта версия. постоянно вносятся изменения. часть отлажена и уже работает.
модуль сбора данных. частично отлажен. работа продолжается.
ЦМУ на фильтрах можно повторять. работает! плату можно заказывать. недавно были изменены некоторые номиналы конденсаторов в фильтрах.
плата доступна тут .
скетч colorMusic_v8_filter.rar
эффектов очень много. все описано вначале скетча. могу сказать, что есть эффекты от Лумазоид ЦМУ. :)
 

Вложения

Изменено:

Комментарии

ig3757

✩✩✩✩✩✩✩
7 Ноя 2020
18
5
Примерно так и должно быть! Только где нормальные MSGEQ7 брать?:cry:
 

technotrasher

★★★★✩✩✩
14 Ноя 2019
510
227
да. сложно найти. еще продаются наборы "собери сам" от robotdyn. там все микросхемы рабочие. но 25 у. е. набор. я покупал их то же.
 

ig3757

✩✩✩✩✩✩✩
7 Ноя 2020
18
5
Дорого, им цена 1-2$. Подождём, может чегой то измениться к лучшему?
 

technotrasher

★★★★✩✩✩
14 Ноя 2019
510
227
не дорого. они и у прямого поставщика дорогие. есть микросхемы что 10 центов. есть и 10 у.е. зависит видимо от производства. не нужно привыкать у дешевому али. там продают отходы. то что выбрасывают заводы. для качественных приборов на али вообще ничего не берут. есть на эту тему статья. с этой микросхемой проблема - нет прямого поставщика у нас. в России есть. Чип и Дип торгует годными.
 
  • Лойс +1
Реакции: vitsom18

poty

★★★★★★✩
19 Фев 2020
3,222
937
Даже нано имеет 8 аналоговых портов. Сделать простейшие фильтры на резисторах/конденсаторах, диодное выпрямление и поставить одинарный ОУ на вход, перед фильтрами - и будет счастье! Как будто цветомузыку в детстве на тиристорах не делали. Зациклились на этой глючной микросхеме...
 
  • Лойс +1
Реакции: galchik22 и technotrasher

technotrasher

★★★★✩✩✩
14 Ноя 2019
510
227
Даже нано имеет 8 аналоговых портов. Сделать простейшие фильтры на резисторах/конденсаторах, диодное
но но!!! а как же заморочиться???? :)))))) а вы тут такие тайны раскрываете. но простейшие фильтры не подходят. тут все же вернуться к схеме с операционниками придется.
 

poty

★★★★★★✩
19 Фев 2020
3,222
937
Если прочитать datasheet на это чудо, то там написано, что фильтры RC (Switched - Capacitor Filters). Да там лучше и не нужно - полосы примерно на 1,5 октавы отстоят друг от друга.
А в целом, при стоимости счетверенных ОУ от 5 рублей и доступности "как грязи", можно и на ОУ забабахать.
 
Изменено:
  • Лойс +1
Реакции: galchik22 и technotrasher

Геннадий П

★★★★★★✩
14 Апр 2021
1,963
632
44
У RC-фильтров добротность так себе. Лучше на ОУ делать, есть много разных 4-канальных ОУ.
Но опять же, это нужно номиналы рассчитывать, подбирать их ... сложно :)
 
  • Лойс +1
Реакции: technotrasher

technotrasher

★★★★✩✩✩
14 Ноя 2019
510
227
У RC-фильтров добротность так себе. Лучше на ОУ делать, есть много разных 4-канальных ОУ.
Но опять же, это нужно номиналы рассчитывать, подбирать их ... сложно :)
тут все просто. легче в скетче числа "двигать", чем делать тестовый стенд. подбирать номиналы. рассчитывать.
 

poty

★★★★★★✩
19 Фев 2020
3,222
937
А нам нужны полосы с точностью до Герца? Мы же не измерительный инструмент делаем! Добротность фильтров в MSGEQ7 - всего 6! Такое получить можно вообще не напрягаясь.
В качестве дополнительных аргументов могу указать на то, что в 14-полосном варианте используется аппроксимация, т.е. в принципе все измерения делаются на пальцах. Ну, и посмотрите принцип работы: отсчёт "хранится" в конденсаторе, его разряд осуществляется мультиплексором, поэтому считываемые значения - это не мгновенные значения гармоник, а некая комбинация интегрального значения до отсчёта и текущего.
Я также далёк от мысли, что точность преобразований на Ардуино и её помехозащищённость вообще дают хоть какую-то адекватную картинку: настройка осуществляется на средний уровень сигнала, без учёта уровней самих гармоник (на ВЧ - сплошная профанация), окно преобразования мало (для гайверовского варианта), точность частоты дискретизации отсчётов не соблюдается... По факту - имеем красивую игрушку, не более.
 
  • Лойс +1
Реакции: technotrasher

kDn

★★★★★✩✩
18 Ноя 2019
1,103
437
@poty, ардуино нано вполне хватит для задач разложения гармоник в звуковом диапазоне, если использовать две штуки - одна на обработку звука, другая на вывод значений на светодиоды, то получится вполне хорошо. Но лично я просто взял ESP, чтобы не морочить голову, ее ресурсов более чем достаточно, чтобы десяток опросов в секунду особо ни на что не влиял. По итогу я вообще не вижу особого смысла в использовании MSGEQ7, ну разве что так - поглядеть возможности, интереса ради.

Может если будет свободное время, то перенесу свой код обработки сигнала на нану))), с каким-то минимальным API для получения главной гармоники, массива гармоник, нормализованных значений и т.д., будет опционально использоваться в виде сопроцессора/DSP :), но это если настроение будет.
 
  • Лойс +1
Реакции: technotrasher

poty

★★★★★★✩
19 Фев 2020
3,222
937
@kDn, я не о том. То, что Ардуино с горем пополам может чем-то заниматься - можно посмотреть у Гайвера. Но давайте всё же проанализируем - чем, собственно. Время преобразования АЦП, при последовательном считывании, довольно велико (стандартно - около 100мкс, если не ошибаюсь). Да, знаю, что можно уменьшить битность, увеличить частоту, оптимизировать код... Но всё это влияет на точность, шумы преобразования. Исходя из этого, реальное время на обработку составляет лишь часть времени, доступного Ардуино.
Вторая часть "марализонского балета" - входной сигнал. Типичный музыкальный сигнал имеет пик-фактор от 5 до 10, т.е., RMS этого сигнала примерно в 5-10 раз меньше амплитуды. Если мы ориентируемся на узкополосный сигнал, то чем уже полоса, тем ближе пик-фактор к синусоидальному (корень из 2 = 1,4). Распределение сигнала по звуковому диапазону неравномерное. Как правило, наибольшей амплитудой (не берём НЧ пассажи) обладает область 500-2000Гц, область ВЧ обычно на 5-10дБ меньше, НЧ - на 3-4дБ. Но входной-то сигнал на АЦП у нас ориентируется на амплитуду, причём всего сигнала, которая к тому же практически не бывает всегда на максимуме (иначе не было бы тихих и громких отрезков)! Иначе мы его не оцифруем. Ну и что имеем? Что из 1024/2 (так как сигнал двухполярный, считаем, что он занимает полную шкалу) = 512 уровней, на "смысловую" часть остаётся в лучшем случае 100 уровней, из них на ВЧ - около 22. Используемый алгоритм ускорения АЦП "теряет" примерно 5-6 нижних уровней (шумы, смещения, неточность самого АЦП). Остаётся около 16 уровней (4 бита). Вот и вся правда. Тут даже сжатие динамического диапазона на полном сигнале не поможет!
Когда используем полосовые фильтры, можно в каждой полосе сделать усиление, пропорциональное уровню сигнала именно в этой полосе. В связи с тем, что полоса будет иметь меньший пик фактор и использовать больший диапазон входных напряжений АЦП, точность повысится значительно. Непосредственно преобразования делать уже тоже не нужно будет - его сделают за нас пассивные элементы фильтра. Т.е., обработка - значительно упрощается.
Что касается усложнения схемы. Ну, если отталкиваться от 7-полосного варианта MSGEQ7, то потребуется всего два корпуса с ОУ + для каждого полосового фильтра - 3 резистора и два конденсатора (в тотале - 21 резистор и 14 конденсаторов). Для полосовых фильтров можно рассчитать значения так, что резисторы все будут только трёх номиналов, итого - используем интегральную "гребёнку" на 8 резисторов в количестве трёх штук корпусов. С конденсаторами сложнее, но в SMD варианте 14 конденсаторов - это мизер. Т.е., и усложнения-то серьёзного нет никакого.
 

technotrasher

★★★★✩✩✩
14 Ноя 2019
510
227
я все же за аппаратную реализацию. пром. варианты они на фильтрах все же. если poty фильтры предложит и все же на ОУ, я бы макет сделал. компрессор сигнала все равно тоже нужен. чтобы перегруз убрать. и вопрос в инерционности фильтров.
 

poty

★★★★★★✩
19 Фев 2020
3,222
937
@technotrasher, надо попробовать. Прям завтра не сделаю, но запишу это себе в "хотелки".
 

kDn

★★★★★✩✩
18 Ноя 2019
1,103
437
@poty, куча ошибок и непонимания принципов работы))), но мне сидя на пляже лень объяснять в очередной раз))). В общем используйте что хотите/знаете, я то все что нужно было сделал за пару дней на ESP, перенести на ардуину тоже пару дней. А ссылаться на Гайвера и его несколько шаманские подходы к написанию кода - вообще о многом говорит ;), ведь у него во многих местах сделано странно, в других откровенно неправильно.
 
  • Лойс +1
Реакции: novvel и technotrasher

technotrasher

★★★★✩✩✩
14 Ноя 2019
510
227
@technotrasher, надо попробовать. Прям завтра не сделаю, но запишу это себе в "хотелки".
отлично. мне только фильтры. и ткнуть чем регулируется полоса пропускания. остальное я сам разберусь. работать же будем опять с амплитудой.
 

Дуче

✩✩✩✩✩✩✩
4 Авг 2020
9
2
Схема фильтров, собрал на ней двадцатиполосный анализатор спектра, по 10 полос на канал. Думаю, что и для наших хотелок она подойдет.
 

Вложения

Изменено:

technotrasher

★★★★✩✩✩
14 Ноя 2019
510
227
спасибо. я это все видел. немножко не то. я практик. расчеты оставлю математикам. мне готовые параметры нужны. и решение. а вот дальше я уже сам и плату сделаю и соберу и приборами проверю и протестирую. и подправлю.
 
  • Лойс +1
Реакции: ElectNN

poty

★★★★★★✩
19 Фев 2020
3,222
937
@kDn, да не вопрос. Вы зациклены на коде, но есть такая поговорка: SISO (shit in - shit out), из г... конфетку не сделать. На код Гайвера я нигде не ссылался, если что.
 

kDn

★★★★★✩✩
18 Ноя 2019
1,103
437
@technotrasher, надо попробовать. Прям завтра не сделаю, но запишу это себе в "хотелки".
Попробуйте обязательно, будет проверкой для вас - руки из какого места растут :), а как сделаете, то и я адаптирую свои наработки))). Там и видно будет, где SI, а где SO и прочие разглагольствования :)
* Я если что подожду, могу напомнить через месяц, если надо ;)
 
  • Лойс +1
Реакции: technotrasher

kDn

★★★★★✩✩
18 Ноя 2019
1,103
437
@kDn, не возражаю по поводу напоминания.
Понятно. Я на этом форуме уже множество раз слышал рецепт натыкать фильтров и чудесным образом получить результат. Дальше разговоров ничего в таких случаях не идёт. Что-то мне настойчиво подсказывает, что так и будет в этот раз :)
 

poty

★★★★★★✩
19 Фев 2020
3,222
937
@kDn, я привык прислушиваться к своему мнению, учитывать мнение других людей, если я его понимаю, но "что-то" к этим двум категориям не относится.