Бесплатная техническая библиотека ЭНЦИКЛОПЕДИЯ РАДИОЭЛЕКТРОНИКИ И ЭЛЕКТРОТЕХНИКИ Аналогово-цифровой преобразователь из звуковой карты. Энциклопедия радиоэлектроники и электротехники Энциклопедия радиоэлектроники и электротехники / Радиолюбителю-конструктору Сегодня каждый пользователь ПЭВМ знаком с термином "мультимедиа". У многих он ассоциируется с качественным звуком, анимацией и т.п. Однако звуковую карту Sound Blaster можно использовать как аналого-цифровой и цифро-аналоговый преобразователь с исключительно широкими возможностями обработки данных. Компьютер с такой картой можно использовать в качестве осциллографа, генератора или анализатора сигналов. Дело в том, что ее "сердцем" является цифровой сигнальный процессор DSP (Digital Signal Processor). Для того чтобы использовать его возможности, необходимо иметь непосредственный доступ к буферам, содержащим звуковые данные и управляющим режимом работы DSP, т.е. использовать интерфейс низкого уровня. В этой статье мы рассмотрим устройство звуковой карты и формат стандартных типов файлов данных, в которых в памяти компьютера хранятся данные, полученные в результате оцифровки сигналов, поступающих на вход звуковой карты. Такие же файлы можно синтезировать программно с целью получения сигналов заданной формы. Как правило, звуковая карта (рис.1) имеет два сдвоенных (стереофонических) входа и два таких же выхода. Первый (линейный) вход рассчитан на входные сигналы с амплитудой около 1 В, второй - микрофонный, для более слабых сигналов. При использовании звуковой карты в качестве аналого-цифрового преобразователя можно использовать любой из этих входов - в зависимости от уровня обрабатываемого сигнала. Данные, имеющие отношение к мультимедиа, хранятся в файлах в так называемом RIFF-формате (Resource Interchange File Format - формат файла для обмена ресурсами) [1]. Файл в формате RIFF содержит вложенные фрагменты (chunk's). Внешний фрагмент состоит из заголовка и области данных (рис.2). Первое двойное слово заголовка содержит четырехсимвольный код, который идентифицирует данные, хранящиеся во фрагменте. Второе двойное слово заголовка - размер области данных в байтах (без учета размера самого заголовка). Область данных имеет переменную длину с условием ее выравнивания на границу слова и дополнения в конце нулевым байтом до целого числа слов в случае необходимости. Формат RIFF не описывает формат данных. Практически файл в формате RIFF может содержать любые данные для мультимедиа, причем формат данных зависит от типа данных. Область, обозначенная на рис.2 как "Данные", могут содержать внутри себя другие фрагменты. Для файла, в котором хранятся звуковые данные (wav-файл), эта область содержит идентификатор данных "WAVE", фрагмент формата звуковых данных "fmt" (три символа "fmt" и пробел на конце), а также фрагмент звуковых данных (рис.2). Файл может дополнительно содержать фрагменты других типов, поэтому не следует думать, что заголовок wav-файла имеет фиксируемый формат. Например в файле может присутствовать фрагмент "LIST" или "INFO", содержащий информацию о правах .копирования и другую дополнительную информацию. Рассмотрим, как происходит запись данных. Вначале требуется открыть устройство ввода, указав ему формат звуковых данных. Затем нужно заказать один или несколько блоков памяти и подготовить их для ввода, вызвав специальную функцию. После этого подготовленные блоки нужно по мере необходимости передавать драйверу устройства ввода, который заполняет их записанными звуковыми данными. Для сохранения записанных данных в wav-файле приложение должно сформировать и записать в файл заяаловок wav-файла и звуковые данные из подготовленных заполненных драйвером устройств ввода блоков памяти. Ниже представлен фрагмент программы, позволяющий записать блок данных в файл, что необходимо при использовании звуковой карты в качестве аналого-цифрового преобразователя: uses SysUtils, MMSystem; type TWaveData = array[0..0) of word ;const Discret = 22050;WaveHdr:TWaveHdr=( lpData: nil;(address of the waveform buffer) dwBufferLength: 0;(length, in bytes, of the buffer) dwBytesRecorded: 0;(How much data is in the buffer ) dwUser: 0; dwFlags: 0; dwLoops: 0; IpMext: nil; reserved: 0 ) ;WaveFormat: TWaveFormatEx=( wFormatTag: WAVE_FORMAT_PCM; nChannels: 1; nSamplesPerSec: Discret; nAvgBytesPerSec: Discret; nBllockAlign: 1; wBitsPerSample: 8; csSize: 0 ) ;var WaveDate: ^TWaveDate; HSoundDevice: HWaveIn; hfile: HMMIO; res: MMResult;begin with WaveHdr do begindwBufferLehgth : =round(Discret/10);dwBytesRecorded: =round(Discret/10);GetMem(WaveData, dwBytesRecorded);lpData : =PChar(WaveData); end; res : =waveInOpen (@HSoundDevice, WAVE_MAPPER, @WaveFormat, 0,0,0); res : =waveInPrepareHeader (HSoundDevice, @WaveHdr, SizeOf (WaveHdr)); res : =waveInUnprepareHeader (HSoundDevice, @WaveHdr,SizeOf(WaveHdr)) ; FreeMem (WaveData) ; res: =waveInStart (HSoundDevice) ; hfile:=mmio0pen ("d: \work\data_1. txt",nil, MMIO_CREATE or MMIO_READWRITE); mmioWrite(hfile,WaveHdr.IpData, WaveHdr,dwBytesRecorded); mmioClose(hfile,0); waveInReset(HSoundDevice) ; waveInClose(HSoundDevice) ;end. В отличие от интерфейса МСI, где многие параметры принимаются по умолчанию, интерфейс низкого уровня требует внимательного и тщательного учета всех деталей процесса записи и чтения. В качестве компенсации за дополнительно затраченные усилия вы получаете большую гибкость и возможность работать не только со звуком, но также и с произвольными сигналами в реальном времени. Литература 1. Фролов А.В., Фролов Г.В. Мультимедиа для Windows. Руководство для программиста. - М,"ДИАЛОГ-МИФИ", 1994, 284 с. (Библиотека системного программиста; Т. 15). Автор: О.Барановский, г.Минск; Публикация: Н. Большаков, rf.atnn.ru Смотрите другие статьи раздела Радиолюбителю-конструктору. Читайте и пишите полезные комментарии к этой статье. Последние новости науки и техники, новинки электроники: Использование Apple Vision Pro во время операций
16.03.2024 Хранение углерода в Северное море
16.03.2024 Выращены мини-органы из амниотической жидкости человека
15.03.2024
Другие интересные новости: ▪ Гаджет для лечения морской болезни электротерапией ▪ Высокомасштабируемый ПАК Fujitsu Storage Eternus CS800 S5 ▪ Охранная сигнализация для ноутбука ▪ Повторяющиеся маршруты сократят расход топлива гибридных автомобилей Лента новостей науки и техники, новинок электроники Интересные материалы Бесплатной технической библиотеки: ▪ раздел сайта Дозиметры. Подборка статей ▪ статья Загородная мебель из дощечек. Советы домашнему мастеру ▪ статья Как играют в бейсбол? Подробный ответ ▪ статья Монтажник светопрозрачных конструкций. Должностная инструкция ▪ статья КСВ-метр для УКВ диапазона. Энциклопедия радиоэлектроники и электротехники
Оставьте свой комментарий к этой статье: All languages of this page Главная страница | Библиотека | Статьи | Карта сайта | Отзывы о сайте www.diagram.com.ua |