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?
Might as well post it as an answer, in case that helps anyone:
Tried that, as well tried
initFromFile(path_to_aiff).. Nothing helped. So I have finally switched to OpenAL.Maybe in future Embarcadero fixes that specific way of accessing NSSound, but for now OpenAL works best. Also, OpenAL is cross-platform, meaning that I can use same sound code on Win and Mac.