//===============================//
//  Cyborg Direct Sound Library  //
//  autor: Osipov Eugene         //
//  http://www.cyborghome.ru/    //
//  Free for non commerce use!   //
//  v. 1.1.0.5 (07.02.2005)      //
//===============================//

Unit CyborgSoundHeaderLite;

interface
Uses Windows;
Type
  TCallEndPlayOGG = procedure;

  Tcbrg_GetVerStr   = Function : pChar; stdcall;
  Tcbrg_InitDS      = Function : HResult;StdCall;
  Tcbrg_CloseDS     = Function : HResult;StdCall;
  Tcbrg_CreateSound = Function (FileName : PChar) : Pointer; StdCall;
  Tcbrg_FreeSound   = Procedure (Var pSound : Pointer); StdCall;
  Tcbrg_PlaySound   = Function (Var pSound : Pointer; Loop : boolean) : hResult; StdCall;
  Tcbrg_StopSound   = Function (Var pSound : Pointer; Pause : boolean) : hResult; StdCall;
  Tcbrg_SetVolume   = Function (Var pSoundOrMusic : Pointer; Volume : LongInt) : hResult; stdcall;
  Tcbrg_GetFileName = Function (Var pSoundOrMusic : Pointer) : PChar; stdcall;
VAR
  //Функция возвращает адрес строки с версией данной библиотеки:
  cbrg_GetVerStr : Tcbrg_GetVerStr;
  //Инициализация, вызывается перед началом использования библиотеки:
  cbrg_InitDS    : Tcbrg_InitDS;
  //Освобождение ресурсов, вызывается после окончания работы с библиотекой:
  cbrg_CloseDS   : Tcbrg_CloseDS;

  //+++===WAV===+++\\

  //Загрузить WAV-файл:
  cbrg_CreateSound : Tcbrg_CreateSound;
  //Следите чтобы путь FileName не был длинее 128 байт, иначе могут
  //быть плачевные последствия!!!

  //Выгрузить загруженный звук WAV:
  cbrg_FreeSound : Tcbrg_FreeSound;

  //Проиграть звук.
  //Loop=true - постоянно проигрывать звук
  cbrg_PlaySound : Tcbrg_PlaySound;

  //Остановить звук.
  //Pause=true - при вызове cbrg_PlaySound звук будет проигрываться с момента остановки, а не с начала
  cbrg_StopSound : Tcbrg_StopSound;

  //+++===ROUTINES===+++\\

  //Установить громкость звука или музыки (от 0=[min] до 100=[max]):
  cbrg_SetVolume : Tcbrg_SetVolume;

  //Возвращает указанный при создании путь к звуку или музыке:
  cbrg_GetFileName : Tcbrg_GetFileName;

  Procedure cbrg_LoadSoundLibrary;
  Procedure cbrg_FreeSoundLibrary;

implementation

CONST LibName='cyborgsoundlite.dll';

VAR
  cbrg_DLLInstance : THandle;

Procedure cbrg_LoadSoundLibrary;
begin
  { загружаем DLL }
  if cbrg_DLLInstance<>0 then cbrg_FreeSoundLibrary;
  cbrg_DLLInstance:=0;
  cbrg_DLLInstance := LoadLibrary(LibName);
  if cbrg_DLLInstance<>0 then
  begin
  cbrg_GetVerStr  := GetProcAddress(cbrg_DLLInstance, 'cbrg_GetVerStr');
  cbrg_InitDS     := GetProcAddress(cbrg_DLLInstance, 'cbrg_InitDS');
  cbrg_CloseDS    := GetProcAddress(cbrg_DLLInstance, 'cbrg_CloseDS');
  cbrg_CreateSound:= GetProcAddress(cbrg_DLLInstance, 'cbrg_CreateSound');
  cbrg_FreeSound  := GetProcAddress(cbrg_DLLInstance, 'cbrg_FreeSound');
  cbrg_PlaySound  := GetProcAddress(cbrg_DLLInstance, 'cbrg_PlaySound');
  cbrg_StopSound  := GetProcAddress(cbrg_DLLInstance, 'cbrg_StopSound');
  cbrg_SetVolume  := GetProcAddress(cbrg_DLLInstance, 'cbrg_SetVolume');
  cbrg_GetFileName:= GetProcAddress(cbrg_DLLInstance, 'cbrg_GetFileName');
  end;
end;

Procedure cbrg_FreeSoundLibrary;
begin
  if cbrg_DLLInstance<>0 then
  FreeLibrary(cbrg_DLLInstance);
  cbrg_GetVerStr  := nil;
  cbrg_InitDS     := nil;
  cbrg_CloseDS    := nil;
  cbrg_CreateSound:= nil;
  cbrg_FreeSound  := nil;
  cbrg_PlaySound  := nil;
  cbrg_StopSound  := nil;
  cbrg_SetVolume  := nil;
  cbrg_GetFileName:= nil;
end;

Initialization
  cbrg_DLLInstance:=0;
Finalization

end.
