Pagina1 van 1
Forum

Welkom bij de Tweaking4All gemeenschapsforums!
Voor je gaat deelnemen, bekijk de Forum Regels!

Specifieke onderwerpen: Start het onderwerp met de naam van het programma of systeem.
Bijvoorbeeld “MacOS X – Jouw vraag“, of bijvoorbeeld “MS Word – Jouw Tip of Truc“.

Merk op: Omschakelen naar een andere taal zal niet werken als je een post aan het lezen bent aangezien er waarschijnlijk geen vertaling beschikbaar is.



Deel:
Meldingen
Alles wissen

[Opgelost] Lazarus - MacOS - Geluidsbestand afspelen

1 Berichten
1 Gebruikers
0 Reactions
2,251 Bekeken
 Hans
(@hans)
Famed Member Admin
Deelgenomen: 12 jaar geleden
Berichten: 2864
Topic starter  

Een snel voorbeeld hoe je een geluidsbestand (WAV etc) onder MacOS X met Lazarus Pascal kunt afspelen:

unit Unit1;
{$mode objfpc}{$H+}
interface
{$linkframework AudioToolbox}
uses
  Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, MacOSAll, CocoaInt;
type
  { TForm1 }
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
  public
  end;
  TSystemSoundID = UInt32;
  pSystemSoundID = ^TSystemSoundID;
  procedure AudioServicesPlayAlertSound (inSystemSoundID: TSystemSoundID); external name '_AudioServicesPlayAlertSound';
  function AudioServicesCreateSystemSoundID(inFileURL: CFURLRef; outSystemSoundID: pSystemSoundID):OSStatus; external name '_AudioServicesCreateSystemSoundID';
var
  Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
var newSoundID:TSystemSoundID;
    filePathURL: CFURLRef;
    filePathCFStringRef: CFStringRef;
    filePathStr: Str255; // = string
begin
  // Standard sound:
  // AudioServicesPlayAlertSound(newSoundID);
  // Play sound from file
  filePathStr := '/Users/hans/Dropbox/Projects/Lazarus Projects/MacOS Sound Test/project1.app/Contents/Resources/notify.wav';
  filePathCFStringRef := CFStringCreateWithPascalString(kCFAllocatorDefault, filePathStr, CFStringGetSystemEncoding);
  filePathURL := CFURLCreateWithFileSystemPath(kCFAllocatorDefault, filePathCFStringRef, kCFURLPOSIXPathStyle, false);
  AudioServicesCreateSystemSoundID(filePathURL, @newSoundID);
  AudioServicesPlayAlertSound(newSoundID);
end;
end.

Uiteraard moet je zelf een geluidsbestand vinden en het e.e.a. kan misschien beter gedaan worden, maar dit werkt prima.


   
BeantwoordenCiteren
Deel: