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;
Конструкторы и деструкторы constructor Create(fname: string); Создает объект класса 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.

Рейтинг

Проблемы с госуслугами, медленный интернет или плохая связь? Напишите об этом — Минцифры поможет с решением