Хочу предложить обсудить следующую топологию звуковоспроизводящего устройства:
PC --Ethernet--> MCU --> Oversampling+FIR filter --> FIFO --> DAC --> I/U converter --> LPF --> attenuator --> amplifier
Работать должно так. Микроконтроллер с сетевым стеком слушает несколько TCP сокетов по разным портам для разных типов аудиоданных (44.1/16, 48/16 и т.п.). Полученные данные проходят через фильтр (кстати, думаю будет полезно иметь возможность отключать его с целью поиграться с программными оверсемплерами) и пишутся в FIFO, с которого забираются в DAC по клоку с генератора (должно быть два генератора, для 44.1kHz и 48kHz; нужный выбирается контроллером, в зависимости от того, на какой порт идут аудиоданные). Состояние FIFO отслеживается контроллером для управления скоростью вливания аудиоданных. Также для удобства несложно управлять с контроллера релейным регулятором громкости после DAC.
С компьютера аудиопоток по первому времени можно заливать даже с командной строки, что-то вроде cat rawaudio | nc 192.168.123.221 1234. А вообще неплохо бы написать драйвер для JACK или похожей технологии http://jackaudio.org/.
Что-то похожее уже реализовано различными фирмами, например Ethersound от Digigram. Но, к сожалению, я не нашёл доступных контроллеров ни для одной похожей технологии. Впрочем, пока это не выглядит слишком сложным, чтобы не попробовать реализовать самому.
Добавлено через 58 минут
Нашёл похожий DIY проект на стадии разработки. В качестве интерфейса автор использовал готовый модуль с перепрограммируемым FPGA (http://www.atmark-techno.com/en/prod...zaku/suzaku-s). Интересное решение, но не самое дешёвое. Пока что склоняюсь к Atmel семейству контроллеров с набортным Ethernet.
http://audio.peufeu.com/
Социальные закладки