Основы использования звуковых файлов в среде Visual Basic с помощью DirectSound

ИНФОРМАТИКА

УДК 681.142.37

основы использования звуковых файлов в среде visual basic с помощью directsound

и. В. АКИМОВА, Д. Ю. ЕГЕРЕВ Пензенский государственный педагогический университет им. В. Г. Белинского кафедра информатики и методики преподавания информатики

Воспроизведение звуковых файлов в программе - одна из актуальных задач при разработке мультимедийных проектов. Использование обычных средств для воспроизведения звуков в проектах на Visual Basic сильно ограничивает программиста. Решением проблемы является подсистема DirectSound библиотеки DirectX 8 for Visual Basic Type Library. В статье приведены основные моменты использования DirectSound при разработке проекта в среде Visual Basic.

Современное программирование стремится к разработке проектов, реализующих полные мультимедийные возможности. Это предполагает внедрение не только текстовой и графической информации, но и звуковой. Использование обычных средств для воспроизведения звуков в проектах на Visual Basic сильно ограничивает разработчика. Так как средством воспроизведения звука выступает проигрыватель (как правило, Windows Media Player), то у программиста возникают огромные сложности при обработке громкости воспроизведения звука программно, также отсутствует возможность изменения баланса между колонками и атрибутов звуковых файлов: частоты, битрейта и т. д. Одной из самых важных проблем, возникающих перед разработчиками программного обеспечения, где используется какое-либо звуковое сопровождение - это воспроизведение нескольких файлов одновременно.

Решить все эти многочисленные задачи можно легко с помощью подсистемы DirectSound библиотеки DirectX 8 for Visual Basic Type Library (dx8vb.dll). Помимо выше описанных задач с помощью этой библиотеки можно программировать объёмный звук, ло-кализовывать воспроизведение звуков в зависимости от координат объектов, плавное воспроизведение wav-файлов длительностью менее одной секунды и многое другое.

Подсистема DirectSound построена по объектноориентированному принципу в соответствии с моделью COM (Component Object Model - модель объектов-компонентов, или составных объектов) и состоит из набора интерфейсов. Каждый интерфейс отвечает за объект определенного типа: устройство, буфер, службу уведомления и т. п. По сути, интерфейс представляет собой обычный набор управляющих функций, или методов, организованных в класс объектно-ориентированного языка.

Для создания реалистичной звуковой картины DirectSound нуждается в информации о расположении звукоизлучателей - громкоговорителей или наушников - относительно слушателя. Для достижения максимального эффекта звукоизлучатели должны быть установлены и настроены правильно, а приложение должно указать используемую конфигурацию подсистеме DirertSound.

Большинство существующих звуковых адаптеров использует для обмена звуком с центральным процессором звуковые буферы, представляющие со-

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

DirectSound использует для адресации в звуковых буферах понятие текущих позиций, или курсоров. Различают позицию записи/воспроизведения, отслеживающую проигрывание звука из буфера в адаптер или запись звука из адаптера в буфер, и позицию доступа, отслеживающую чтение/запись (обмен данными) между приложением и буфером.

Рассмотрим использование DirectSound при разработке проекта в среде Visual Basic. Для начала создадим новый проект и подключим к нему библиотеку DirectX 8 for Visual Basic Type Library (dx8vb.dll). Объявим следующие переменные:

Dim dx As New DirectX8 ‘Объект DirectX

Dim ds As DirectSound8 ‘Объект DirectSound

Dim dsBuffer As DirectSoundSecondaryBuffer8

‘Звуковой буфер

Как видите, кроме объектов DirectX и DirectSound мы объявили буфер для воспроизведения звука. Максимальное количество одновременно воспроизводимых файлов равно количеству буферов DirectSound.

Инициализация и загрузка данных будет выполнятся функцией InitSound, возвращающей True в случае успешной инициализации:

Public Function InitSound() As Boolean

On Local Error Resume Next

Set ds = dx.DirectSoundCreate

If ds Is Nothing Then Exit Function ds.SetCooperativeLevelMe.hWnd, DSSCL_NORMAL Dim BufferDesc As DSBUFFERDESC BufferDesc.lFlags = DSBCAPS_CTRLPAN OrDSBCAPS_CTRLVOLUME OrDSBCAPS_ CTRLFREQUENCY Set dsBuffer = ds.CreateSoundBufferFromFile

InitSound = True End Function

ИЗВЕСТИЯ ПГПУ • Физико-математические и технические науки » № 8 (12) 2008 г.

Объект DirectSound создаётся с помощью метода DirectSoundCreate объекта DirectX. Единственный параметр этого метода - строка GUID, идентифицирующая звуковое устройство. Если значение этого параметра - пустая строка, то используется устройство по умолчанию. Затем с помощью метода SetCooperativeLevel объекта DirectSound с этим объектом ассоциируется форма, а также устанавливается уровень приоритета этого объекта. Константы DSSCL_NORMAL, DSSCL_PRIORITY и DSSCL_ WRITEPRIMARY означают соответственно нормальный, повышенный и самый высокий уровень приоритета. Для большинства случаев хватает DSSCL_ NORMAL.

В качестве первого параметра метода CreateS oundBufferFromFile объекта ds вы можете использовать строку, содержащую имя любого *.wav файла. При создании буфера DirectSound используется структура BufferDesc. Член этой структуры lFlags -это комбинация флагов из набора констант CONST_ DSBCAPSFLAGS. Флаг DSBCAPS_CTRLPAN означает, что буфер поддерживает контроль баланса, DSBCAPS_CTRLVOLUME - контроль громкости, DSBCAPS_CTRLFREQUENCY - контроль частоты.

Теперь напишем небольшую процедуру PlaySound, проигрывающую буфер, указанный первым параметром с использованием баланса, громкости и частоты указанных в последующих параметрах:

Public Sub PlaySound(ByRef psBuffer As DirectSound SecondaryBuffer8, Pan As Integer, Volume As Integer, Frequency As Integer) psBuffer.SetPan Pan

psBufferSetVolume Volume psBufferSetFrequency Frequency psBuffer.Play DSBPLAY_DEFAULT End Sub

Если использовать в качестве единственного параметра метода Play, проигрывающего звук, константу DSBPLAY_DEFAULT, звук будет воспроизводится один раз. При использовании же константы DSBPLAY_LOOPING звук будет воспроизводиться постоянно.

Метод SetPan устанавливает громкость колонок относительно друг друга. При значении DSBPAN_ LEFT (-10000) параметра pan этого метода звучит только левая колонка, DSBPAN_RIGHT (10000) -только правая, DSBPAN_CENTER (0) означает идеальный баланс между двумя колонками. При значении, например, -8500 параметра pan левая колонка звучит на полной громкости, громкость правой же колонки уменьшена на 85 Дб.

Метод SetVolume устанавливает громкость воспроизводимого звука. Параметр volume этого метода может принимать значения в диапазоне от -10000 до 0. При этом 0 означает полную громкость, а -10000 -громкость, уменьшенную на 100 Дб, что в большинстве случаев означает полную тишину. Метод SetFrequency устанавливает частоту воспроизводимого звука в герцах. Его параметр frequency может принимать значения в диапазоне от 100 до 100000.

Создадим процедуру CleanUp, удаляющую созданные объекты, вызов которой необходимо поместить в Form_Unload:

Public Sub CleanUp

Set dsBufferl = Nothing:Set dsBuffer2 = Nothing Set ds = Nothing End Sub

Теперь, чтобы в этой программе воспроизвести звук из буфера dsBuffer, можно пользоваться, например, таким кодом:

PlaySound dsBufferl, 0, 0,30000.

УДК 681.3

теоретические предпосылки разработки информационной системы оценки качества подготовки студентов вузов на основе рейтинговой оценки

М. В. БАКАНОВА, В. В. ДРОЖДИН Пензенский государственный педагогический университет им. В. Г. Белинского кафедра прикладной математики и информатики

Рассматриваются теоретические и методологические основы разработки информационной системы оценки качества подготовки студентов (ИСОКПС) на основе балльно-рейтинговой оценки знаний. Обсуждается цель, задачи, основные принципы, достоинства рейтинговой системы оценивания студентов. Представлена модель организации учебного процесса в условиях модульного обучения. Определены этапы создания информационной системы оценки качества подготовки студентов вузов на основе рейтинговой оценки.

В современных условиях разработка новых государственных образовательных стандартов и внедрение информационных технологий обучения и контроля знаний ведут к необходимости создания принципиально новой системы оценки качества подготовки студентов вузов для проверки соответствия знаний образовательным стандартам.

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