Главная » Микроконтроллеры
Призовой фонд
на ноябрь 2017 г.
1. Термометр Relsib WT51
Рэлсиб
2. 1000 руб
PCBWay
3. Тестер компонентов LCR-T4
Паяльник
4. 200 руб.
От пользователей

Вторая жизнь Creative Sound Blaster

В Интернете можно найти множество примеров того, как воспроизвести  музыку микроконтроллером, основанных на схемах с ШИМ. Однако качество звука ШИМ оставляет желать лучшего, поэтому появилась идея использовать в качестве источника звука старую ISA звуковую карту Sound Blaster 16!

SoundBlaster_MINI-STM32(1).jpg

Когда начиналась работа над данным проектом, в интернете не нашлось примеров того, как управлять звуковой картой с помощью микроконтроллера. С момента создания первого проекта многое изменилось, и теперь стали использоваться DMA и 16-битные значения при работе на максимальной частоте дискретизации. В качестве источника аудио данных используется SD карта памяти, поддержка которой реализована в  библиотеке FatFs. Для предотвращения «затыкания» звука при считывании данных с карты, воспроизведение осуществляется из двух буферов.

В качестве управляющего микроконтроллера используется ARM микроконтроллер STM32F103RBT6 в LQFP64 корпусе, с 128кБ flash памяти, 20кБ RAM, работающий на частоте 72МГц. Микроконтроллер установлен на покупной отладочной плате Mini STM32 V3.0, все соединения со звуковой картой выполнены проводом.

Схема:

Схема

Для упрощения на схеме опущены очевидные вещи, например, конденсаторы и подтягивающие резисторы. Как вы можете видеть - осталось только четыре свободных вывода, не считая выводов от JTAG интерфейса. Порты PA9 и PA10 предполагалось использовать для подключения к UART, а порт PB0 как вход для кнопки.

Программа поочередно считывает файлы в формате wav с карты памяти, и воспроизводит их в том же порядке, как они сохранены в файловой системе.

Файлы первого проекта:
MINI_STM32-V3.0_SCH.pdf – схема отладочной платы MINI STM32-V3.0
WAV_SB16_Good.zip – Исходный код в GCC программы на STM32 для управления звуковой картой SoundBlaster 16

В качестве продолжения проекта была выбрана звуковая карта Creative Sound Blaster AWE64 с усовершенствованными функциями, такими как цифровой выход и более высокая частота дискретизации. Первая звуковая карта была настроена при помощи переключателя. В новой карте настройки могут быть установлены с помощью программного обеспечения. Для возможности программной настройки карты, потребовалось написать функции настройки PnP. Для более полного использования возможностей карты AWE64 используются функции волнового синтеза звуковым процессором EMU8000 (EMU8K).

SoundBlaster AWE64 Gold

Для нужд синтеза звука на SoundBlaster AWE64 Gold установлена память объемом 4 МБ, в которой хранятся загружаемые сэмплы SoundFont. Технология SoundFont позволяет плате работать не только с заранее прошитыми в ROM инструментами, но и с новыми, загружаемыми в RAM. При необходимости память наращивается до 24 мегабайт.

При записи и воспроизведении цифрового звука Creative SoundBlaster AWE64 Gold обеспечивает характеристики на уровне бытовой Hi-Fi аппаратуры. Полоса частот - от 15 Гц до 55 кГц (+/- 1 дБ) при уровне гармонических искажений не выше 0.005%. Соотношение сигнала и шума не хуже 90 дБ, динамический диапазон при использовании для подключения внешнего высококачественного усилителя цифрового выхода S/PDIF составляет 120 дБ.

Управляющий микроконтроллер также был выбран более мощным, в его роли выступила отладочная плата STM32F4Discovery с установленным на ней MCU STM32F407VG. Микроконтроллер имеет 1МБ Flash памяти, 192кБ RAM памяти, 2xUSB и работает на частоте до 168МГц.

STM32

Сначала микроконтроллер производит инициализацию звуковой карты, устанавливает настройки по умолчанию, извлекает с карты памяти из файла SoundFont информацию об семплах (саундфонтах) и загружает их в DRAM звуковой карты. Затем основной цикл программы получает MIDI данные через USB или UART порт и передает эти данные соответствующим функциям управления звуком. Кроме того, через USB можно управлять микшером, изменить тип реверберации и хоруса или изменять параметры программы. Для более удобного управления звуковой картой с ПК, была написана небольшая программа на Qt. Устройство также может работать независимо от ПК, для этого имеется возможность подключения к другому устройству через UART.

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

В представленном проекте в качестве источника аудио данных выступают wav и midi файлы, записанные на SD карте памяти, но мощностей используемого управляющего процессора вполне достаточно и для воспроизведения mp3 файлов. Для возможности их воспроизведения потребуется подключить соответствующую библиотеку для декодировки mp3 файла в wav поток данных, с дальнейшей передачей на звуковую карту с использованием имеющихся функций.

SynthControl-master.zip – Исходный код на Qt управляющей программы для ПК
emu8000_synth_usb.zip – Исходный код в GCC программы на STM32 для управления звуковой картой SoundBlaster AWE64 и соундфонт файл 4GMGS.
TestSounds.zip – Образцы воспроизведения midi файлов и исходные midi файлы. Воспроизведение midi файлов производилось с использованием соундфонтов SYNTHGS, 4GMGSMT, AWE32 и YMF724.

При написании статьи использовались материалы с сайта http://www.elektroda.pl

Скачать полный архив проекта с исходными кодами, и образцами воспроизводимых midi файлов.

Прикрепленные файлы:

Теги:

Опубликована: 14.09.2013 0 0
Я собрал 0 Участие в конкурсе 4
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 4.5 Проголосовало: 4 чел.

Комментарии (8) | Я собрал (0) | Подписаться

+1
SHREK-2 #
Это интересно. 10 лет назад это было бы ОЧЕНЬ интересно. Хотя и сегодня, при проектировании своего комплекса я задумаюсь над этим вопросом, если не найду в серии STM подходящего девайса.
Ответить
+1
hax #
Когда-то делал различные устройства для шины ISA, включая эмулятор SoundBlaster 1.0 на "рассыпухе" (http://www.deep-shadows.com/hax/wordpress/?page_id=364).
Потом шина ISA умерла, и я как-то смирился с этой мыслью, и никогда не задумывался о том, что оказывается можно сделать ISA Host и использовать эти самые устройстваю Ведь документация по портам должна быть доступна, потому что нужно было уметь рулить всем этим из-под DOS.
Жаль, не получится использовать ISA видеокарты, так как их БИОС написан под x86.
Респект за идею и "хакерский" ум. К сожалению, мотивация к проекту не выдерживает критики, так как современные SB карты имеют USB интерфейс и стоят не заоблачно, как раньше.
Ответить
0

[Автор]
Дeн #
Современные SB карты стоят не так дорого как раньше, но это и не с проста, ведь они по сути представляют только ЦАП/АЦП с USB интерфейсом, у них отсутствует нормальный процессор и память. Вся обработка аудио данных осуществляется непосредственно на ПК, его ресурсов для этого вполне достаточно, задачей же карты является преобразование из аналогового сигнала в цифру (и наоборот). Таким образом для воспроизведения, например midi, все преобразование сигнала придется делать на стороне МК, и я не думаю, что Вы сможете обеспечить на нём хоть какоето подобие 64 голосого звучания MIDI инструментов или эффекты Chorus и Reverberation.
Основной идеей было использовать звуковую карту без ПК, например для создания синтезатора или секвенсора.
Кроме того у любителей качественного звука вполне может остаться старая звуковая карта с разъемом ISA, которая лежит без дела, таким образом им нет необходимости специально приобретать карту.
Ответить
+1
UMeter #
Интересная идея для создания своего музыкального инструмента, вот только еще интересно, можно ли как-нибудь с PCI звуковухой такое же сделать?
Ответить
0

[Автор]
Дeн #
Для работы с PCI потребуется еще более мощный МК, а также возникает проблема в связи с непонятностью работы шины PCI.
Ответить
+1
SergB #
Здорово, у меня как раз завалялась такая звуковуха, уже хотел было её выкинуть, теперь будет возможность сделать с ней чтото полезное.
Интересно было бы еще почитать статьи на подобные тематики, где описано повторное использование компового и не только железа (мониторы, принтеры, отдельные микрухи и т.д.), ведь с каждым годом его становиться все больше, а ведь из него действительно можно сделать чтото интересное.
Ответить
0
Сергей #
Для старых ISA плат существуют специальные ISA-USB адаптеры, но стоят они не дешево
Ответить
0
Илья #
Крутота! А снимать с S/PDIF AWE64 не пробовали?
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется электрическая мощность?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Программатор Pickit3
Программатор Pickit3
AVR-программатор USB ASP Мультиметр Mastech MS8268
вверх