Темброблок - анализатор спектра на STM32F103

Обсуждаем цифровые устройства...
Ответить
Друг Кота
Аватара пользователя
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск

Сообщение WiseLord »

Нормально сделать такое не получится.

P.S. В коде (canvas.c => canvasShowAudioInput()) поменяйте строчку if (clear || (btCtx->flags & BT_FLAG_NAME_CHANGED)) { на что-то типа if (true) { и посмотрите, какая бяка со спектром получается.

P.P.S. Можно, как вариант, обрезать расширение у выводимого файла. Ситуация станет чуть лучше.


P.P.P.S. Я тут немножко пробежался скриптом по своей музыкальной коллекцией и собрал все возможные символы, которые встречаются в их именах файлов. И, похоже, стоит добавить недостающие в шрифты, а то не выводятся корректно.
Вложения
uniq_chars.txt
(582 байт) 164 скачивания
Контактная информация:
Реклама
Мучитель микросхем
Сообщения: 443
Зарегистрирован: Ср окт 19, 2011 08:48:27
Откуда: Мать городов русских

Сообщение Frogfot »

2 WiseLord разбираюсь в вашей программе, хочу вывести на дисплей своей функцией значение указателя - *font через glcd.font - как сделать преобразовать указатель в uint32_t?

Код: Выделить всё

void glcdSetFont(const tFont *font)
{
  glcd.font = font;

  uint32_t Adress = &glcd->font;

  PrintHex32(Adress, x, y);
}
Последний раз редактировалось Frogfot Сб мар 21, 2020 16:13:21, всего редактировалось 1 раз.
Хорошему коту и в декабре - март :)
Реклама
Друг Кота
Аватара пользователя
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск

Сообщение WiseLord »

У меняв проекте есть ещё библиотека "utils" с функцией utilMkStr(). С нею, например:

glcdWriteString(utilMkString("%p", glcd.font));

Вообще, лучше смотрите не только на саму библиотеку glcd, но и на то, как она в проекте используете (в основном, в canvas.c). А то складывается впечатление, что Вы туда и не заглядывали.
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск

Сообщение WiseLord »

А что вы думаете по поводу уменьшения числа символов спектра, но при этом более равномерном в плане октав выводе по частотам?

Поясню, что я имею в виду.

Анализ Фурье в проекте делается из расчета 1024 точек (сэмплов) на частоте 20кГц. В результате получается 512 частотных полос на звуковой диапазон 10кГц, или около 20Гц на один "столбик".

Особенность преобразования Фурье в том, что этот ряд равномерный, что для человека не очень подходит. Частота 20 Гц отличается от частоты 40Гц вдвое (на октаву), а это всего лишь соседние столбики. И наоборот, такие же соседние столбики будут для частот 9960Гц и 9980Гц, но для человека услышать такую малую относительную разницу нереально.

Для некоторой минимизации этого эффекта в проекте эти 512 полос ужимаются до 128. Низкие частоты используются один к одному, а чем ближе к ВЧ, тем больше исходных полос формируют одну выходную. Получается, что низкочастотная часть спектра на экране немножко раздвигается правее, ужимая высокочастотную. В итоге спектр становится более "октавным" и зрительно более приятным для человека.

Но всё равно, 512 полос полноценных "октавных" 128 не получишь. Тут надо либо больше отсчётов брать, например, 4096, либо выходных полос меньше делать. Первое нереально из-за нехватки ОЗУ, а вот второе - вполне себе вариант.

Я сейчас разрабатываю для себя похожий девайс на OLED 3.12", 256x64, и применил в нем такой подход. Получилось для вывода 43 столбика шириной 4px и промежутком 2px, идеально выписавшихся в ширину экрана. И 512 полос, ужавшись до 43, дали визуально неплохой эффект, на мой взгляд. Спектр выглядит более равномерно.

Вот я и думаю, не применить ли тот же принцип и в этом, "родительском", проекте... Тем более, что и ОЗУ сэкономится (меньше хранить пиков сигнала и прочего нужного только для отрисовки спектра).

Обладатели 480x320 дисплеев могут посмотреть, как это может выглядить, взяв код отсюда. Под другие разрешения дополнительно подкрутите шаг и ширину столбцов в canvas.c под себя:

Код: Выделить всё

    const int16_t step = 11;             // Step of columns
    const int16_t colW = 7;             // Column width
, с тем, чтобы в ширину дисплея укладывалось примерно 40..44 столбиков. В примере 11 * 44 = 484 - идеально для 480 ширины, т.к. недостающие 4 пиксела приходятся как раз на ненужный зазор (11 - 7)

Основная сложность - в том, что под каждый экран нужно чуть по-своему это делать - немного скучно это.
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Открыл глаза
Сообщения: 62
Зарегистрирован: Пт фев 21, 2020 17:14:54

Сообщение Duke »

1. Тяжело издалека различить новые иконки USB и SD - выглядят практически одинаково. Как по мне, предыдущая иконка USB была более аутентичная и оригинальная.

2. В тюнере на RDA5807 теперь нет автосканирования. Не знаю, как в других. Раньше при нажатии кнопки Next или Previous при выключенном режиме Станция происходило автоматическое сканирование диапазона, которое останавливалось при нахождении устойчивого сигнала станции. Дальнейшее нажатие сканировало диапазон дальше до следующей станции и т.д. Теперь нужно все время нажимать кнопку Next или Previous для пошагового увеличения/уменьшения частоты на заданный шаг 50 или 100 кГц, пока не найдешь станцию. Это тоже не совсем удобно, по-моему.

3. При окончании проигрывания последнего трека, скажем, на USB флешке, происходит автоматический переход на воспроизведение с SD карты, если она также установлена, но иконка при этом не меняется, так и остается USB. Это запутывает, какой источник в данный момент используется. Вероятно, то же происходит и в обратном направлении, пока не проверял.

4. Все еще нет режима Mixed на экране Input при воспроизведении с Bluetooth, в отличие от того же тюнера или КаРадио. Почему-то показывает только стерео спектр в этом режиме.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск

Сообщение WiseLord »

1. А мне новые от Gurchan больше понравились.
2. Выключите в настройках режим поиска по сохраненным станциям.
3. Баг BT201. Он эту ситуацию не сопровождает никакими признаками того, что источник поменялся. Просто не пользуйтесь картой и флешкой одновременно.
4. Добавлю.
Контактная информация:
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18677
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

WiseLord писал(а):А что вы думаете по поводу уменьшения числа символов спектра, но при этом более равномерном в плане октав выводе по частотам?
если позволите, выскажу своё мнение, хоть в данном проекте я и не ориентируюсь.

существует вполне устоявшаяся "сетка" частот для многополосных эквалайзеров. по-моему, больше 10 полос там не бывает, ну или крайне редко бывает, ибо такая "тонкая регулировка" слишком сложная для практического непрофессионального (т.е. студийного) применения. если мне память не изменяет, что это частоты 32-64-125-250-500-1000-2000-4000-8000-16000 Гц.

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

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

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

Мой уютный бложик... заходите!
Контактная информация:
Открыл глаза
Сообщения: 62
Зарегистрирован: Пт фев 21, 2020 17:14:54

Сообщение Duke »

[uquote="WiseLord",url="/forum/viewtopic.php?p=3817053#p3817053"]1. А мне новые от Gurchan больше понравились.

Может, и красивые, но издалека выглядят почти одинаково...
WiseLord писал(а):2. Выключите в настройках режим поиска по сохраненным станциям.
Проверил еще раз: Station mode = OFF, но автосканирования не происходит... При каждом нажатии кнопки происходит пошаговое увеличение/уменьшение частоты на 100 кГц и все, пока до станции добредешь... Раньше было, это железно.
Друг Кота
Аватара пользователя
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск

Сообщение WiseLord »

Сейчас поведение такое:
а) Режим станций включен: короткое нажатие - прыжок на ближайшую станцию, длинное нажатие - автосканирование.
б) Режим станций выключен: короткое нажатие - перестройка на один шаг, длинное нажатие - автосканирование.

P.S. Попробовал запрашивать текущие устройство после каждой смены трека - модуль часто возвращает его некорректно, в итоге даже то, что раньше показывало правильно, может сбиться. В общем, ничего с этим не поделать.

А иконку SD-карты я развернул на 90 градусов - должно быть лучше. И вообще, если кого-то иконки чем-то не устраивают - можно и самому нарисовать. Всё необходимое для их рисования есть. Получится хорошо - можно и в проект добавить.

Добавлено after 9 hours 39 minutes 46 seconds:
Снял небольшое видео для сравнения вывода спектра меньшим числом полос

Контактная информация:
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18677
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

слева на серебристом приборе красивее :)
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 182
Зарегистрирован: Ср авг 01, 2018 10:04:10

Сообщение Gürcan »

WISELORD hello when we switch from another karadio to another input, for example bluetooth, karadio continues to play in the background. when we switch to another channel, there is still sound from behind.
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 172
Зарегистрирован: Пн мар 24, 2014 22:07:01
Откуда: Оренбургская область

Сообщение pap.cot »

Мой вариант усилителя AmpСontrol-f103:
Изображение
Плата STM32F103CB с дисплеем 240х320 2.8 SPI + Bluetooth модуль CSR8645 и ТФ усилитель MAX97220:
https://easyeda.com/pap.cot/ampcontrol-f103_full
Плата коммутации и фильтров:
- аудио контроллер TDA7418TR, радио RDA5807M, расширитель портов PCF8574APWR (вкл/откл Bluetooth, KaRadio), 3 активных фильтра на OPA1662 с частотой среза 200 Гц (фронт, тыл и саб), разъемы для подключения 3 плат УМ, питание +-5В +9В +20В. Сигнал MUTE отключает все усилители, а сигнал STBY отключает БП 24В и плату коммутации и фильтров.
Изображение
https://easyeda.com/pap.cot/pl_filters
Плата УМ на TPA3116D2DADR:
https://easyeda.com/pap.cot/tpa3116v1
Платы KaRadio – WiFi модуль ESP32-WROVER + I2S ЦАП PCM5100A:
https://easyeda.com/pap.cot/karadio32_esp32-wrover
https://easyeda.com/pap.cot/pcm510xa
Дежурный БП Traco power TML 05105. Импульсный блок питания 24В/60Вт для усилителей:
Изображение
https://photos.app.goo.gl/bbVqhkzD1Mj2gAAE8
Тут прошивка: https://yadi.sk/d/klXdMyMIwwSf2w
Спасибо автору! Всем мира и здоровья!
Контактная информация:
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 182
Зарегистрирован: Ср авг 01, 2018 10:04:10

Сообщение Gürcan »

Hello friends, I just added the icon files in the picture format and added that there are people who want to edit.
Вложения
NEW ICON.rar
(45.7 КБ) 189 скачиваний
Открыл глаза
Сообщения: 57
Зарегистрирован: Чт окт 11, 2007 14:47:12
Откуда: Чернигов

Сообщение Skorch »

[uquote="WiseLord",
Снял небольшое видео для сравнения вывода спектра меньшим числом полос

[/uquote]

Ранее спрашивал насколько трудно сделать вывод нижнего канала зеркально.

визуально должно выглядеть очень круто.


по числу полос спектроанализатора : 16 достаточно (больше плохо обрабатываются нашими мозгами и превращаеются в кашу) , 32 - уже профессиональный перфекционизм и в бытовом устройстве уже излишне. или как видно на видео экран должен быть заметно шире ...
Друг Кота
Аватара пользователя
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск

Сообщение WiseLord »

Skorch писал(а): Ранее спрашивал насколько трудно сделать вывод нижнего канала зеркально.
Попотел, но сделал. Выглядит, действительно, неплохо.
Контактная информация:
Вымогатель припоя
Аватара пользователя
Сообщения: 556
Зарегистрирован: Пн июл 21, 2014 01:43:04
Откуда: Самара

Сообщение Pavlon90 »

Доброго времени уважаемые коты! К сожалению в программировании полный нулик... просьба к вам может ли кто-то объяснить вкратце как собирать прошивку или может соберёт кто-то для камней 103c8t6 и 303cbt6 с дисплеем ili9341 и последними наворотами для платы что в изначальном проекте под много дисплеев. Заранее спасибо и не пинайте сильно.
Друг Кота
Аватара пользователя
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск

Сообщение WiseLord »

По этому поводу я специально записывал видеоролики.





Устанавливать QtCreator - вовсе не обязательно. Достаточно лишь самого компилятора (gcc-arm-none-eabi) и утилиты GNU make. Сборка командой make flash, после необходимой подстройки под себя Makefile проекта.
Контактная информация:
Вымогатель припоя
Аватара пользователя
Сообщения: 556
Зарегистрирован: Пн июл 21, 2014 01:43:04
Откуда: Самара

Сообщение Pavlon90 »

Огромная благодарность за разъяснение. Буду набираться опыта вечером.)))
Открыл глаза
Сообщения: 75
Зарегистрирован: Вт дек 11, 2018 06:25:42
Откуда: г Омск

Сообщение Александр 84 »

Подскажите для F303, что нужно поменять в Makefile?
Вложения
000.png
(146.68 КБ) 236 скачиваний
Друг Кота
Аватара пользователя
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск

Сообщение WiseLord »

Да вроде больше ничего.

Ошибку сборки поправил.
Последний раз редактировалось WiseLord Вт мар 24, 2020 15:02:47, всего редактировалось 1 раз.
Контактная информация:
Ответить

Вернуться в «Цифровая техника»