Обсуждаем цифровые устройства...
Ответить

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

Сб мар 21, 2020 11:54:36

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

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 байт) Скачиваний: 148

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

Сб мар 21, 2020 14:53:41

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 раз.

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

Сб мар 21, 2020 16:12:04

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

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

Вообще, лучше смотрите не только на саму библиотеку glcd, но и на то, как она в проекте используете (в основном, в canvas.c). А то складывается впечатление, что Вы туда и не заглядывали.

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

Вс мар 22, 2020 21:13:54

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

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

Анализ Фурье в проекте делается из расчета 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)

Основная сложность - в том, что под каждый экран нужно чуть по-своему это делать - немного скучно это.

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

Вс мар 22, 2020 22:05:42

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

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

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

4. Все еще нет режима Mixed на экране Input при воспроизведении с Bluetooth, в отличие от того же тюнера или КаРадио. Почему-то показывает только стерео спектр в этом режиме.

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

Вс мар 22, 2020 22:27:48

1. А мне новые от Gurchan больше понравились.
2. Выключите в настройках режим поиска по сохраненным станциям.
3. Баг BT201. Он эту ситуацию не сопровождает никакими признаками того, что источник поменялся. Просто не пользуйтесь картой и флешкой одновременно.
4. Добавлю.

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

Вс мар 22, 2020 22:37:36

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

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

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

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

такое вот моё мнение со стороны.

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

Вс мар 22, 2020 22:51:20

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

Может, и красивые, но издалека выглядят почти одинаково...

WiseLord писал(а):2. Выключите в настройках режим поиска по сохраненным станциям.


Проверил еще раз: Station mode = OFF, но автосканирования не происходит... При каждом нажатии кнопки происходит пошаговое увеличение/уменьшение частоты на 100 кГц и все, пока до станции добредешь... Раньше было, это железно.

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

Пн мар 23, 2020 09:14:48

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

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

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

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

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

Пн мар 23, 2020 09:20:37

слева на серебристом приборе красивее :)

Re: Tembroblock - STM32F103 spektrum analizörü

Пн мар 23, 2020 10:43:05

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.

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

Пн мар 23, 2020 13:55:48

Мой вариант усилителя 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
Спасибо автору! Всем мира и здоровья!

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

Пн мар 23, 2020 16:21:05

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 KiB) Скачиваний: 170

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

Вт мар 24, 2020 00:12:36

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

[/uquote]

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

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


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

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

Вт мар 24, 2020 02:03:15

Skorch писал(а): Ранее спрашивал насколько трудно сделать вывод нижнего канала зеркально.
Попотел, но сделал. Выглядит, действительно, неплохо.

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

Вт мар 24, 2020 10:38:04

Доброго времени уважаемые коты! К сожалению в программировании полный нулик... просьба к вам может ли кто-то объяснить вкратце как собирать прошивку или может соберёт кто-то для камней 103c8t6 и 303cbt6 с дисплеем ili9341 и последними наворотами для платы что в изначальном проекте под много дисплеев. Заранее спасибо и не пинайте сильно.

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

Вт мар 24, 2020 11:17:53

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





Устанавливать QtCreator - вовсе не обязательно. Достаточно лишь самого компилятора (gcc-arm-none-eabi) и утилиты GNU make. Сборка командой make flash, после необходимой подстройки под себя Makefile проекта.

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

Вт мар 24, 2020 12:43:01

Огромная благодарность за разъяснение. Буду набираться опыта вечером.)))

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

Вт мар 24, 2020 14:46:17

Подскажите для F303, что нужно поменять в Makefile?
Вложения
000.png
(146.68 KiB) Скачиваний: 203

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

Вт мар 24, 2020 14:58:09

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

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