how to use sound in Pascal
I made a patch that works on some systems, but they did not really care about it.
Sound makes a sound forever / till NoSound is called. If you only want to make a sound for a certain duration you can use Beep(freq, duration) from the windows unit
answered Apr 23, 2014 at 16:56
16.5k 4 4 gold badges 46 46 silver badges 52 52 bronze badges
-
The Overflow Blog
Related
Hot Network Questions
Subscribe to RSS
Question feed
To subscribe to this RSS feed, copy and paste this URL into your RSS reader.
lang-pascal
Site design / logo © 2023 Stack Exchange Inc; user contributions licensed under CC BY-SA . rev 2023.11.15.1019
By clicking “Accept all cookies”, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy.
Модуль Sounds

Модуль Utils содержит различные вспомогательные процедуры и функции (работа с файлами и каталогами, с датой, форматирование строк и пр.). Ниже приводится интерфейс модуля Utils: type DateTime = record Day, Month, Year, Hour, Minute, Second, Milliseconds: integer; end; LongSize = record Megabytes, Bytes: integer; end; SearchRec = record name: string; size: integer; end; function CreateDir(name: string): boolean; function DeleteFile(name: string): boolean; function DirectoryExists(name: string): boolean; function GetCurrentDir: string; function RemoveDir(name: string): boolean; function RenameFile(OldName,NewName: string): boolean; function SetCurrentDir(name: string): boolean; procedure ChDir(name: string); function Milliseconds: integer; function CompileTime: integer; function CurrentDateTime: DateTime; function CompareMem(p1,p2: pointer; len: integer): boolean; function DiskSize(Drive: integer): LongSize; function DiskFree(Drive: integer): LongSize; procedure ShowMessage(s: string); function PascalABCPath: string; procedure FreeAndNil(var o: Object); procedure Move(p1,p2: pointer; size: integer); function FindFirstFile(path: string; var sr: SearchRec): boolean; function FindFirstDirectory(path: string; var sr: SearchRec): boolean; function FindNext(var sr: SearchRec): boolean; procedure FindClose(var sr: SearchRec); function ExtractFileName(fname: string): string; function ExtractFileExt(fname: string): string; function ExtractFilePath(fname: string): string; function ChangeFileExt(fname,ext: string): string; CreateDir(name) — функция, создающая новый каталог с именем name и возвращающая True, если создание прошло успешно, и False в противном случае; DeleteFile(name) — функция, удаляющая файл с именем name и возвращающая True, если удаление прошло успешно, и False в противном случае; DirectoryExists(name) — функция, возвращающая True, если каталог с именем name существует, и False в противном случае; GetCurrentDir — функция, возвращающая имя текущего каталога; RemoveDir(name) — функция, удаляющая каталог с именем name и возвращающая True, если удаление прошло успешно, и False в противном случае; RenameFile(OldName,NewName) — функция, переименовывающая файл с именем OldName в файл с именем NewName и возвращающая True, если создание прошло успешно, и False в противном случае; SetCurrentDir(name) — функция, устанавливающая каталог с именем name текущим и возвращающая True, если текущий каталог был установлен, и False в противном случае; ChDir(name) — процедура, меняющая текущий каталог на name; Milliseconds — функция, возвращающая количество миллисекунд с момента начала выполнения программы; CompileTime — функция, возвращающая количество миллисекунд, затраченное на компиляцию программы; CurrentDateTime — функция, возвращающая текущие дату и время; CompareMem(p1,p2,len) — функция, возвращающая True, если два участка памяти длины len байт, на которые указывают p1 и p2, идентичны, и False в противном случае; DiskSize(Drive) — функция, возвращающая размер диска Drive (1 — диск A:, 2 — диск B:, 3 — диск C: и т.д.); если диск не существует, то в поле Megabytes возвращается 0, а в поле Bytes возвращается -1; DiskFree(Drive) — функция, возвращающая размер свободного пространства на диске Drive. PascalABCPath — функция, возвращающая полный путь к файлу PascalABC.exe. ShowMessage(s) — процедура, показывающая окно с кнопкой OK и сообщением, задаваемым строкой s. Выполнение программы приостанавливается до нажатия кнопки OK. FreeAndNil(o) — процедура, вызывающая деструктор объекта o в случае если o<>nil и присваивающая o значение nil. FindFirstFile — функция, инициализирующая поиск файлов в каталоге path, помещающая в переменную sr первый найденный файл и возвращающая True, если поиск оказался успешным, и False в противном случае. FindFirstDirectory — функция, инициализирующая поиск файлов в каталоге path, помещающая в переменную sr первый найденный каталог и возвращающая True, если поиск оказался успешным, и False в противном случае. FindNext — функция, помещающая в переменную sr следующий найденный файл (если до этого вызвана функция FindFirstFile) или каталог (если до этого вызвана функция FindFirstDirectory), и возвращающая True, если поиск оказался успешным, и False в противном случае. FindClose — процедура, освобождающая память, выделенную при поиске файлов или каталогов. Приведем типичный пример использования FindFirstFile, FindNext, FindClose для поиска всех файлов в текущем каталоге: uses Utils; var sr: SearchRec; begin if FindFirstFile(‘*.*’,sr) then begin writeln(sr.Name); while FindNext(sr) do writeln(sr.Name); end; FindClose(sr); end. ExtractFileName(fname) — функция, выделяющающая имя и расширение файла из полного имени файла. ExtractFileExt(fname) — функция, выделяющающая расширение файла из полного имени файла. ExtractFilePath(fname) — функция, выделяющающая путь из полного имени файла. ChangeFileExt(fname,ext) — функция, заменяющающая расширение файла на ext.
pascal — работа со звуком
Модуль 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; |
Звуки удобнее рассматривать как объекты класса 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.
Lazarus

- Free Pascal
Website
Downloads
Wiki
Documentation
Bugtracker
Mailing List- Lazarus
Website
Downloads (Laz+FPC)
Packages (OPM)
FAQ
Wiki
Documentation (RTL/FCL/LCL)
Bugtracker
CCR Bugs
IRC channel
GIT
Mailing List
Other languages- Foundation
Website- Useful Wiki Links
Project Roadmap
Getting the Source
Screenshots
How to use the forum