Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Удаленная работа
Помощь проекту

АНАЛОГО-ЦИФРОВОЙ ПРЕОБРАЗОВАТЕЛЬ ИЗ ЗВУКОВОЙ КАРТЫ

Сегодня каждый пользователь ПЭВМ знаком с термином "мультимедиа". У многих он ассоциируется с качественным звуком, анимацией и т.п. Однако звуковую карту 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 begin dwBufferLehgth : =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: workdata_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). О.БАРАНОВСКИЙ
220116,г.Минск-116,а/я202, БГУ, фак. РФиЭ, 5 курс.

Источник: РЛ 3/98


C этой схемой также часто просматривают:

Цифровой тахометр
ПРЕОБРАЗОВАТЕЛЬ НАПРЯЖЕНИЯ 12/220 В - 50 Гц
Звуковой пробник-омметр (4 варианта)
Преобразователь напряжения 12---> 220 В
Преобразователь напряжения 12---> 220 В до 200 Вт
ШИФРАТОР РЕЧЕВЫХ СООБЩЕНИЙ
НА ЧТО ГОДИТСЯ ТЕЛЕФОННАЯ КАРТОЧКА?
Считыватель штрих-кодов
Индикатор биений на светоизлучающих диодах

Главные категории

Arduino


Аудио


В Вашу мастерскую


Видео


Для автомобиля


Для дома и быта


Для начинающих


Зарядные устройства


Измерительные приборы


Источники питания


Компьютер


Медицина и здоровье


Микроконтроллеры


Музыкантам


Опасные, но интересные конструкции


Охранные устройства


Программаторы


Радио и связь


Радиоуправление моделями


Световые эффекты


Связь по проводам и не только...


Телевидение


Телефония


Узлы цифровой электроники


Фототехника


Шпионская техника



Реклама на KAZUS.RU


Последние поступления

USB генератор пароля в виде флешки

Самодельная USB-гарнитура

Защита от помех устройства, питаемого от разъёма USB

Простое управление куллером компьютера

Переходник для подключения к USB-порту устройства с большим потребляемым током

1-wire шлюз для компьютера (через com-порт) на ATTiny2313

SPI шлюз для компьютера (через com-порт) на ATTiny2313

I2C шлюз для компьютера (через com-порт) на ATTiny2313

Стрелочный индикатор загрузки ЦП и оперативной памяти ПК

Sim Card Reader SOLO GWR



© 2003—2024 «KAZUS.RU - Электронный портал»