Рефераты. Программа воспроизведения произвольного звукового файла с использованием звукового адаптера (формат ...

Программа воспроизведения произвольного звукового файла с использованием звукового адаптера (формат ...

Федеральное агентство по науке и образованию

Российской Федерации.

Брянский государственный технический университет.





 

 

 

Кафедра информатики и программного обеспечения.



 

Курсовая работа

по дисциплине

 «Организация ЭВМ»

на тему:

«Программа воспроизведения произвольного звукового файла с использованием звукового адаптера (формат - wav)».




                                                                                     Студент:

                                                                                                Изотов  И.Н.


                                                                           Группа:

                                                                             06ПО3(с)


                                                                                              Преподаватель:

                                                                                                      Статутов А.Г.      







Брянск 2007

Содержание

стр.

Введение--------------------------------------------------------------------------------------- 3

Устройство звуковой платы  Sound Blaster--------------------------------------------- 4

Программирование DSP-------------------------------------------------------------------- 5

Команды DSP--------------------------------------------------------------------------------- 7

Программирование  контроллера DMA------------------------------------------------ 12

Описание функции Open_file------------------------------------------------------------- 17

Алгоритм и блок-схема-------------------------------------------------------------------- 18

Компиляция---------------------------------------------------------------------------------- 19

Код исходной  программы(начало)----------------------------------------------------- 20

Заключение---------------------------------------------------------------------------------- 25

Литература----------------------------------------------------------------------------------- 26

 

 

Введение

Программирование современных звуковых плат - весьма сложное занятие. В качестве примера рассмотрим одну часто применяемую операцию – воспроизведение оцифрованного звука. Для вывода звука через звуковую плату может использоваться один из трех режимов: пряной вывод (команда 10h), когда программа должна сама с нужной частотой посылать отдельные байты из оцифрованного звука в DSP; простой DMA-режим, когда выводится блок данных, после чего вызывается прерывания; и DMA с автоинициализацией, когда данные выводятся непрерывно и после вызова каждого блока вызывается прерывание. Именно в этом  порядке увеличивается качество воспроизводимого звука. В первом случаи качество звука будет очень плохим, поэтому будем реализовывать второй случай, благодаря чему мы сможем указать точную скорость оцифровки звука и выводить 16-битный звук.  Данная программа работает только на звуковых платах  Sound Blaster.

 

Устройство звуковой платы  Sound Blaster


Звуковые платы совместимые с теми или иными моделями Sound Blaster, выглядят как четыре независимых устройства:

1)      DSP (Digital Signal Processor) - устройство, позволяющее выводить и счи­тывать оцифрованный звук;

2)       Микшер (Mixer) - система регуляторов громкости для всех каналов платы;

3)      DFM (Frequency Modulation) или AdLib (по названию первой звуковой пла­ты) - устройство, позволяющее синтезировать звук из синусоидальных и треугольных волн. Слова типа OPL2 или OPL3 в описании платы - это и есть номера версии используемого FM-синтезатора;

4)       MIDI (Music Instrumental Digital Interface) - стандартный интерфейс пере­дачи данных в музыкальной аппаратуре. Но в нашем случае рассматривает­ся GMIDI (обобщенный MIDI) - более качественная система генерации му­зыки, в которой используются не искусственные синусоидальные сигналы, а образцы звучания различных инструментов. К сожалению, качество этих образцов в большинстве дешевых плат оставляет желать лучшего.

Номера портов ввода-вывода, предоставляющих доступ ко всем этим устрой­ствам, отсчитываются от базового порта, обычно равного 220h, но допускаются также конфигурации с 210h, 230h, 240h, 250h, 260h и 280h. Кроме того, интерфейс - GMIDI использует другую серию портов, которая может начинаться как с 300h, так и с 330h. В описаниях портов мы будем считать, что базовыми являются 220U и 300h. Область портов интерфейса с AdLib начинается с 388h.

Существует большое число модификаций плат Sound Blaster, отличающихся, помимо всего прочего, набором поддерживаемых команд и портов ввода-вывода. После названия каждой команды или порта мы будем указывать сокращенное название платы, начиная с которой эта команда или порт поддерживается:

-  SB- Sound Blaster 1.0;

 - SB2 - Sound Blaster 2.0;

-  SBPro - Sound Blaster Pro;

-  SBPro2 - Sound Blaster Pro2;

-  SB16 - Sound Blaster 16;

-  ASP - Sound Blaster 16 ASP;

-  AWE - Sound Blaster AWE32.


Программирование DSP

Цифровой процессор - наиболее важная часть звуковой платы. Именно с его помощью осуществляется вывод обычного оцифрованного звука, так же как и за­пись звука из внешнего источника в файл. Для своей работы, помимо описывае­мых в этом разделе портов, DSP использует прерывания и контроллер прямого доступа к памяти DMA. Программирование DMA мы рассмотрим далее. DSP обслуживается при помощи следующих портов:

226h для записи: сброс DSP (SB)

Запись в этот порт осуществляет полную переинициализацию DSP, прерывая все происходящие процессы. Операцию сброса DSP необходимо выполнить, по крайней мере, один раз после перезагрузки системы, чтобы его можно было использовать.

Процедура сброса осуществляется следующим образом:

1.    В порт 226h записывается число 1 (начало инициализации).

2.    Выдерживается пауза как минимум 3,3 мкс.

3.    В порт 226h записывается число 0 (конец инициализации).

4.  Выдерживается пауза максимум 100 мкс. В течение паузы можно выполнять чтение порта 22Eh. Когда в считываемом числе будет установлен бит 7 (дан­ные готовы), можно сразу переходить к пункту 5. В противном случае имеет смысл повторить процедуру, используя другой базовый порт.

5.  Выполняется чтение из порта 22Ah. Если считанное число равно 0AAh - DSP был успешно инициализирован. В противном случае допускается вернуться к пункту 4, но по истечении 100 мкс после записи в 226h можно будет с уверен­ностью сказать, что DSP с базовым адресом 220h не существует или не работает.

22Ah для чтения: чтение данных из DSP (SB)

Чтение из этого порта используется для передачи всех  возможных данных от DSP программам. Процедура чтения состоит из двух шагов;

1.  Выполнять цикл чтения порта 22Eh, пока бит 7 считываемого байта не ока­жется равным единице.

2.   Выполнить чтение из порта 22Ah.

22CН для записи: запись данных и команд DSP (начиная с SB)

Этот единственный порт используется для передачи всего множества команд DSP и для пересылки в него данных (аргументов команд). Процедура записи:

1. Выполнять цикл чтения порта 22Ch, пока бит 7 считываемого байта не ока­жется равным нулю.

2.  Выполнить запись в порт 22Ch.

22Ch для чтения: готовность DSP для приема команды (SB)

Если при чтении из этого порта бит 7 сброшен в ноль - DSP готов к приему оче­редного байта в порт 22Ch на запись. Значение остальных битов не определено.

22Eh для чтения: готовность DSP для посылки данных (начиная с SB)

Если при чтении из этого порта бит 7 установлен в единицу - DSP готов к пере­даче через порт 22Ah очередного байта.

22Eh для чтения (тот же порт!): подтверждение обработки 8-битного прерыва­ния (SB)

Обработчик прерывания, сгенерированного звуковой платой по окончании 8-битной операции, обязательно должен выполнить одно чтение из этого порта перед завершением (помимо обычной процедуры посылки сигнала EOI в соответ­ствующий контроллер прерываний).

22Fh для чтения: подтверждение обработки 16-битного прерывания (SB16)

Обработчик прерывания, сгенерированного звуковой платой по окончании 16-битной операции, обязательно должен выполнить одно чтение из этого пор­та перед завершением (помимо обычной процедуры посылки сигнала ЕОI в со­ответствующий контроллер прерываний).

Теперь рассмотрим команды DSP. Все они пересылаются в звуковую плату че­рез порт 22Ch, как описано выше. После команды могут следовать аргументы которые передаются таким же образом (включая ожидание готовности к приему команды).

 

 

 

 

 

 

 

 

 

Команды DSP

04h: состояние DSP (устаревшая) (SB2 - SBPro2)

Возвращает информацию о текущей операции DSP:

бит 0: динамик включен

бит 1: стерео АЦП включен

бит 2: всегда 0

бит 3: происходит прямое воспроизведение 8-битного РСМ

бит 4: происходит воспроизведение 2-битного ADPCM через DMA

бит 5: происходит воспроизведение 2,6-битного ADPCM через DMA

бит 6: происходит воспроизведение 4-битного ADPCM через DMA

бит 7: происходит воспроизведение 8-битного РСМ через DMA

10h, NN: прямое воспроизведение 8-бйтного звука (SB)

Выводит очередной байт (NN) из несжатого 8-битного оцифрованного звука на воспроизведение. При использовании этого способа воспроизведения сама про­грамма должна заботиться о том, чтобы новые данные всегда были наготове (то есть не считывать их с диска в ходе работы) и чтобы байты пересылались в DSP с необходимой частотой. (В этом режиме поддерживаются частоты до 23 кГц.) Процедура вывода проста:

Страницы: 1, 2, 3, 4



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.