Are there any tutorials or examples on how to play WAV files on Mac from application built by Delphi XE2 FireMonkey?
I'm asking because this code does not work:
var
//fWaves head and data is initialized and plays properly on Win through OpenAL
fWaves: array of record
Head: TWAVHeaderEx;
Data: array of byte;
end;
D: NSData;
N: NSSound;
begin
D := TNSData.Wrap(TNSData.Create.initWithBytes(@fWaves[0].Head, SizeOf(fWaves[0].Head) + fWaves[0].Head.DataSize));
ShowMessage(IntToStr(D.length)); //--Length is correct
N := TNSSound.Wrap(TNSSound.Create.initWithData(D));
ShowMessage(FloatToStr(N.Duration)); //--Displays 0
if N.play then
ShowMessage('Yes')
else
ShowMessage('No'); //--Always returns NO
end;
I'm loading WAV file header and data from memory and it plays fine with OpenAL. So the problem is somewhere in my NSSound usage. Could anyone please provide some working examples of Delphi XE2 sound playback on Mac?
Freepascal/Lazarus has a unit called "macosall.pas" which is a translation of the os-x C++ headerfiles to pascal, allowing you to call native os-x functions.
Sadly this unit is not a part of delphi, but by opening the unit you can copy the function declaration over to delphi and it should work.
I expect that you will find what you need in the quicktime API which is the central hub of media on apple machines. Also check out Apple developer and have a look at the docs.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With