aesndlib.pp 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. {$IFNDEF FPC_DOTTEDUNITS}
  2. unit aesndlib;
  3. {$ENDIF FPC_DOTTEDUNITS}
  4. {$mode objfpc}
  5. {$J+}
  6. {$INLINE ON}
  7. {$MACRO ON}
  8. {$PACKRECORDS C}
  9. {$ASSERTIONS ON}
  10. interface
  11. {$IFDEF FPC_DOTTEDUNITS}
  12. uses
  13. System.CTypes, WiiApi.Gctypes;
  14. {$ELSE FPC_DOTTEDUNITS}
  15. uses
  16. ctypes, gctypes;
  17. {$ENDIF FPC_DOTTEDUNITS}
  18. const
  19. MAX_VOICES = 32;
  20. SND_BUFFERSIZE = 384; // output 2ms sound data at 48KHz
  21. {$ifdef HW_DOL}
  22. DSP_DEFAULT_FREQ = 48044;
  23. {$else}
  24. DSP_DEFAULT_FREQ = 48000;
  25. {$endif}
  26. VOICE_STATE_STOPPED = 0;
  27. VOICE_STATE_RUNNING = 1;
  28. VOICE_STATE_STREAM = 2;
  29. VOICE_MONO8 = $00000000;
  30. VOICE_STEREO8 = $00000001;
  31. VOICE_MONO16 = $00000002;
  32. VOICE_STEREO16 = $00000003;
  33. VOICE_FREQ32KHZ = 32000;
  34. VOICE_FREQ48KHZ = 48000;
  35. type
  36. aesndpb_t = record
  37. end;
  38. AESNDPB = aesndpb_t;
  39. PAESNDPB = ^AESNDPB;
  40. AESNDVoiceCallback = procedure(pb: PAESNDPB; state: cuint32); cdecl;
  41. AESNDAudioCallback = procedure(audio_buffer: pointer; len: cuint32); cdecl;
  42. procedure AESND_Init; cdecl; external;
  43. procedure AESND_Reset; cdecl; external;
  44. procedure AESND_Pause(pause: cbool); cdecl; external;
  45. function AESND_GetDSPProcessTime: cuint32; cdecl; external;
  46. function AESND_GetDSPProcessUsage: f32; cdecl; external;
  47. function AESND_RegisterAudioCallback(cb: AESNDAudioCallback): AESNDAudioCallback; cdecl; external;
  48. function AESND_AllocateVoice(cb: AESNDVoiceCallback): PAESNDPB; cdecl; external;
  49. procedure AESND_FreeVoice(pb: PAESNDPB); cdecl; external;
  50. procedure AESND_SetVoiceStop(pb: PAESNDPB; stop: cbool); cdecl; external;
  51. procedure AESND_SetVoiceMute(pb: PAESNDPB; mute: cbool); cdecl; external;
  52. procedure AESND_SetVoiceLoop(pb: PAESNDPB; loop: cbool); cdecl; external;
  53. procedure AESND_SetVoiceFormat(pb: PAESNDPB; format: cuint32); cdecl; external;
  54. procedure AESND_SetVoiceStream(pb: PAESNDPB; stream: cbool); cdecl; external;
  55. procedure AESND_SetVoiceFrequency(pb: PAESNDPB; freq: cuint32); cdecl; external;
  56. procedure AESND_SetVoiceVolume(pb: PAESNDPB; volume_l, volume_r: cuint16); cdecl; external;
  57. procedure AESND_SetVoiceBuffer(pb: PAESNDPB; buffer: pointer; len: cuint32); cdecl; external;
  58. procedure AESND_PlayVoice(pb: PAESNDPB; format: cuint32; buffer: pointer; len, freq, delay: cuint32; looped: cbool); cdecl; external;
  59. function AESND_RegisterVoiceCallback(pb: PAESNDPB; cb: AESNDVoiceCallback): AESNDVoiceCallback; cdecl; external;
  60. implementation
  61. initialization
  62. {$linklib aesnd}
  63. end.