pascal - работа со звуком
В Pascal ABC есть модуль Sounds.
Вот описание:
Модуль Sounds содержит процедуры и функции для работы со звуком:
- n := LoadSound(fname) - загружает звук из файла с именем fname в оперативную память и возвращает описатель звука в целую переменную n (звуковой файл должен иметь формат .wav);
- PlaySound(n) - начинает проигрывание звука с описателем n;
- StopSound(n) - останавливает проигрывание звука с описателем n;
- RewindSound(n) - "перематывает" звук с описателем n на начало;
- DestroySound(n) - удаляет звук с описателем n из оперативной памяти, описатель звука при этом становится недействительным;
- SoundIsPlaying(n) - возвращает True если звук с описателем n проигрывается и False в противном случае;
- SoundLength(n) - возвращает длительность звука с описателем n в миллисекундах.
Модуль Sounds содержит также класс Sound, имеющий следующий интефейс:
type Sound = class public constructor Create(fname: string); destructor Destroy; procedure Load(fname: string); procedure Play; procedure Stop; procedure Rewind; property IsPlaying: boolean; function Length: integer; end;
Конструкторы и деструкторы |
| Создает объект класса Sound и загружает в него звук из файла fname (звуковой файл должен иметь формат .wav). Звук с именем fname ищется вначале в текущем каталоге, а затем в подкаталоге Media\Sounds\ каталога программы PascalABC.exe. |
destructor Destroy; | Разрушает объект и содержащийся в нем звук. | |
Свойства |
property IsPlaying: boolean; | Проигрывается ли звук. Присваивание IsPlaying=False эквивалентно вызову Stop, а присваивание IsPlaying=True - вызову Play. |
Методы | procedure Load(fname: string); | Загружает звук из файла с именем fname. Звук с именем fname ищется вначале в текущем каталоге, а затем в подкаталоге Media\Sounds\ каталога программы PascalABC.exe. Звук, до этого содержащийся в объекте, разрушается. |
procedure Play; | Начинает проигрывание звука. | |
procedure Stop; | Останавливаетает проигрывание звука. | |
procedure Rewind; | "Перематывает" звук на начало. | |
function Length: integer; | Возвращает длительность звука в миллисекундах. |
Звуки удобнее рассматривать как объекты класса Sound, в котором собраны все основные действия со звуками. Такой подход является более удобным и современным, чем подход с описателями звуков. Единственный его недостаток - необходимость вводить основные понятия, связанные с классами. Подход с описателями позволяет работать со звуками сразу после рассмотрения темы "Процедуры и функции" или даже раньше, если подпрограммы рассматривать просто как команды.
Пример работы со звуком с использованием описателей
uses Sounds; var n: integer; begin n:=LoadSound('b.wav'); PlaySound(n); Sleep(SoundTime(n)); DestroySound(n); end.
Пример работы со звуком с использованием класса Sound
uses Sounds; var s: Sound; begin s:=Sound.Create('b.wav'); s.Play; Sleep(s.Length); s.Destroy; end.