Есть ли воспроизведение звука WAV на Mac от Delphi XE2? - PullRequest
5 голосов
/ 12 февраля 2012

Существуют ли учебные пособия или примеры того, как воспроизводить файлы WAV на Mac из приложения, созданного Delphi XE2 FireMonkey?

Я спрашиваю, потому что этот код не работает:

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;

Я загружаю заголовок файла WAV и данные из памяти, и он прекрасно работает с OpenAL.Так что проблема где-то в моем использовании NSSound.Кто-нибудь может привести несколько рабочих примеров воспроизведения звука Delphi XE2 на Mac?

Ответы [ 2 ]

3 голосов
/ 13 февраля 2012

Freepascal / Lazarus имеет модуль под названием «macosall.pas», который представляет собой перевод заголовочных файлов os-x C ++ в pascal, позволяя вам вызывать собственные функции os-x.

К сожалению, этот модуль не являетсячасть delphi, но, открыв модуль, вы можете скопировать объявление функции в delphi, и оно должно работать.

Я ожидаю, что вы найдете то, что вам нужно, в QuickTime API, который является центральным центром медиана яблочных машинах.Также ознакомьтесь с Apple developer и посмотрите документы.

0 голосов
/ 09 апреля 2012

Можно также опубликовать его как ответ, если это кому-нибудь поможет:

Попробовал это, так же попробовал initFromFile(path_to_aiff) .. Ничего не помогло. Итак, я наконец перешел на OpenAL.

Возможно, в будущем Embarcadero исправит этот особый способ доступа к NSSound, но сейчас OpenAL работает лучше всего. Кроме того, OpenAL является кроссплатформенным, что означает, что я могу использовать один и тот же звуковой код на Win и Mac.

...