Урок 14. Воспроизведение звука

14-0Рассмотрим возможности воспроизведения звука в приложении Lazarus.

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

Наиболее простой процедурой, управляющей звуком, является процедура Beep. Она не имеет параметров и воспроизводит стандартный звуковой сигнал, установленный в Windows.

Более серьезной функцией является функцию sndPlaySound.

Функция sndPlaySound воспроизводит указанный волновой файл формата .wav или определенный системой звук. Она объявлена в модуле mmSystem следующим образом:

BOOL sndPlaySound(LPCSTR lpszSoundFile, UINT wFlags);

Через параметр lpszSoundFile этой функции можно передать путь к wav-файлу.

Параметр wFlags определяет способ проигрывания звукового фрагмента. Используются следующие значения (некоторые из них можно комбинировать при помощи операции ИЛИ):

Значение Описание
SND_SYNC Синхронный режим работы. Функция sndPlaySound вернет управление только после завершения проигрывания звукового фрагмента
SND_ASYNC Асинхронный режим работы. Функция вернет управление немедленно, проигрывание звукового фрагмента будет выполняться в фоновом режиме параллельно с работой приложения
SND_NODEFAULT Если указанный файл не найден, функция «тихо» возвращает управление, не проигрывая никаких звуков. Если же этот флаг не указан, и файл не найден, будет проигран стандартный системный звук.А если и это невозможно, функция не будет ничего проигрывать и вернет значение FALSE
SND_MEMORY Это значение используется для проигрывания звуковых файлов, загруженных в оперативную память, например, из ресурсов приложения
SND_LOOP Если указано значение SND_ASYNC, проигрывание звукового фрагмента будет зациклено. Для того чтобы остановить проигрывание, необходимо вызвать функцию sndPlaySound, указав ей в качестве параметра lpszSoundFile значение NULL
SND_NOSTOP При указании этого значения функция проверяет, выполняется ли в настоящий момент проигрывание фрагмента. Если да, функция возвращает значение FALSE

Во всех случаях, если не указан параметр SND_NOSTOP, функция sndPlaySound возвращает значение TRUE, если выполняется проигрывание, и FALSE — если нет. Учтите, что при использовании функций sndPlaySound есть ограничение на размер wav-файла — он должен целиком помещаться в физическую память. Поэтому этот пособы проигрывания звуковых фрагментов хороши только для относительно небольших файлов.

Задание. Создайте приложение, которое позволит прослушивать простейшие звуковые файлы формата wav.

1. Создайте новый проект, сохраните его в папке с названием «Звук».

2. Поместите на форму компонент TButton, измените надпись на ней на «Звук».(Измените свойство Caption).

14-1

3. Подготовьте wav-файл. (Скачайте файл CS2_AutoplayMusic.wav, поместите в папку проекта).

4. Создайте обработчик события для компонента TButton, выполнив на нем двойной щелчок, вводите в созданный обработчик код:

14-2

5. Так как в процедуре обработки нажатия кнопки используется вызов функции sndPlaySound, то следует включить в раздел описания uses вызов модуля mmSystem:

implementation

uses MMSystem;

{TForm1}

6. Запустим программу и посмотрим, что получилось. Щелкните на кнопке «Звук», звуковой файл должен начать проигрываться.

Игорь Мусарлинов, 10″А» класс,  СОШ № 23,  г. Экибастуз

Подписаться
Уведомить о
guest

0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии