Разработка процессора звуковых эффектов на STM32F407VET6
- Войдите на сайт для отправки комментариев
Втр, 25/05/2021 - 18:41
Хотя в данном разделе рекомендуется размещать готовые проекты, но существeет и немало проектов в процессе разработки. Именно к таким и относится текущий проект.
Конечно, хорошо, когда все и сразу. Но нередко проект занимает не один месяц, а то и год. Если его не начать публиковать в процессе, к моменту публикации многие тонкости и особенности будут благополучно забыты. Для простого проекта это, возможно, и не существенно, а для сложного, особенно такого, который из-за сложности вряд ли будет повторен целиком, именно отдельные особенности, которые описывают сложности в отдельных вопросах, и могут оказаться наиболее востребованными при фрагментарном повторении проекта или просто при заимствовании идей или обмене опытом.
Поэтому начинаю публикацию почти сразу после появления первого рабочего прототипа.
Таймер 2 задает частоту дискретизации 96кГц, подавая ее на ADC, данные ADC контроллер DMA переносит во входной буфер в ОЗУ. По заполнении первой половины буфера происходит аппаратное прерывание, в котором данные первой половины буфера обрабатываются и переносятся в выходной буфер. Одновременно с записью данных с ADC во входной буфер контроллер DMA считывает данные из выходного буфера и отправляет их в порт DAC. Причем после первого прерывания контроллер DMA уже работает со вторыми половинами входного и выходного буферов. По заполнении второй половины снова генерится прерывание и МК теперь может обработать вторые половины буферов, пока записываются первые.
На данном этапе звук претерпевает простейшую обработку - пропускается через ФНЧ с управляемыми аналоговыми органами управления частотой и добротностью. Для расчета фильтров используются таблицы с заранее насчитанными коэффициентами. Правда, эти таблицы взяты мною из другого проекта, где частота дискретизации составляла 48 кГц. Поэтому при работе таблиц в данном проекте они обеспечивают диапазон резонансной частоты фильтра не от 20 Гц до 16 кГц, а от 40 Гц до 32 кГц.
файл фильтра FilterAD_F.h
и файл фильтра FilterAD_F.cpp
Рис.4. А теперь отладка со звуком, идущим с MP3-плеера.
Интересный проект. Для прокачки скилов самое то.
А почему не пошли по пути применения для обработки звука спец ДСП ADAU1701 как самый народный или ADAU1452?
А на STM сделать интерфейс пользователя?. Пошли по этому пути и получился очень достойный пгрегат с большими возможностями.
Есть у меня ADAU1401 DSP mini board, но что-то я не нашел внятной документации собственно по командам. Обычно рекомендуют программировать при помощи утилиты SigmaStudio, но как-то это не очень интересно.
Опять же, насколько я понял, там практически линейный код, а максимальная длина этого кода, опять же, не позволяет сделать некоторые интересные штуки вроде ревербератора или линии задержки.
Ну и, кроме того, ARM сам содержит целый набор DSP-шных команд.
В общем, мне показалось, что возможностей для творчества с stm32 больше.
Если будет интересно могу показать какой веб интерфейс управления усилителем с ДСП получился. Пиши в личку.
Пиши в личку.
Может, это и было бы смешно, если бы не исходило от человека, который 5 лет на форуме.
Какова цель данного "Проекта"?
Создать устройство с какой то функциональностью ? Тогда почему не написано в самом начале? Какие звуковые сигналы с какой целью планируется обрабатывать разрабатываемым "процессором звуковых эффектов".
Освоить принципы обработки звука на STM32 ?
Какова цель данного "Проекта"?
Создать устройство с какой то функциональностью ? Тогда почему не написано в самом начале? Какие звуковые сигналы с какой целью планируется обрабатывать разрабатываемым "процессором звуковых эффектов".
Освоить принципы обработки звука на STM32 ?
https://ru.wikipedia.org/wiki/%D0%97%D0%B2%D1%83%D0%BA%D0%BE%D0%B2%D0%BE...
Не благодари!
Какова цель данного "Проекта"?
Чтобы в поисковой выдаче по запросу стало выдавать " процессор звуковых эффектов на ардуино".
А получится или нет - это не важно. Зато всех будет сбивать с толку.
Какова цель данного "Проекта"?
Создать устройство с какой то функциональностью ? Тогда почему не написано в самом начале? Какие звуковые сигналы с какой целью планируется обрабатывать разрабатываемым "процессором звуковых эффектов".
Собственно я специально включил в название слово "разработка" т.к. готового ТЗ еще нет.
Пока что сделан стенд, на котором можно отрабатывать различные эффекты. И цель - именно "пощупать" различные алгоритмы обработки звука, как универсальные (пригодные для любого музыкального инструмента или фонограммы в целом), так и специфические ориентированные на электрогитару.
Освоить принципы обработки звука на STM32 ?
Принципы обработки они как бы от конкретного контроллера (или процессора) на зависят.
Ну и продолжаю публикацию исходников.
Файл stm32f4xx_common.h
Файл stm32f4xx_common.cpp
Кстати, в процесе работы над проектом обнаружил многочисленные ошибки в ардуиновских файлах поддержки stm32f4xx: отсутствие в структурах существующих регистров, неверные константы (тупо скопированные из stm32f103), отсутствие некоторых аппаратных средств (в частности, таймеров). Пока что пришлось внести правку в файлы: dac.h, timer.h, rccF4.h. Это только то, что оказалось необходимо править в существующих файлах. Кроме них многочисленные заплатки были сделаны в отдельных файлах, добавленных в проект.
Да, и здесь же опубликую схему: