50 lines
1.2 KiB
ObjectPascal
50 lines
1.2 KiB
ObjectPascal
program Demo;
|
|
uses
|
|
SysUtils, Audio;
|
|
|
|
var
|
|
Caps: TAudioCaps;
|
|
Info: TAudioInfo;
|
|
pModule: PAudioModule;
|
|
szFileName : Array [0..127] of Char;
|
|
bStatus: Integer;
|
|
begin
|
|
if ParamCount <> 1 then
|
|
begin
|
|
Writeln('use: demo filename[.mod|.s3m|.xm]');
|
|
Halt(0);
|
|
end;
|
|
Info.nDeviceId := AUDIO_DEVICE_MAPPER;
|
|
Info.wFormat := AUDIO_FORMAT_16BITS or AUDIO_FORMAT_STEREO or AUDIO_FORMAT_FILTER;
|
|
Info.nSampleRate := 44100;
|
|
if AOpenAudio(Info) <> 0 then
|
|
begin
|
|
Writeln('Audio initialization failed');
|
|
Halt(1);
|
|
end;
|
|
AGetAudioDevCaps(Info.nDeviceId, Caps);
|
|
Write(Caps.szProductName,' playing at ');
|
|
if Info.wFormat and AUDIO_FORMAT_16BITS <> 0 then
|
|
Write('16-bit ') else Write('8-bit ');
|
|
if Info.wFormat and AUDIO_FORMAT_STEREO <> 0 then
|
|
Write('stereo ') else Write('mono ');
|
|
Writeln(Info.nSampleRate,' Hz');
|
|
if ALoadModuleFile(StrPCopy(szFileName, ParamStr(1)), pModule, 0) <> 0 then
|
|
begin
|
|
Writeln('Cant load module file');
|
|
ACloseAudio;
|
|
Halt(1);
|
|
end;
|
|
AOpenVoices(pModule^.nTracks);
|
|
APlayModule(pModule);
|
|
while (AGetModuleStatus(bStatus) = 0) do
|
|
begin
|
|
if bStatus <> 0 then break;
|
|
AUpdateAudio;
|
|
end;
|
|
AStopModule;
|
|
ACloseVoices;
|
|
AFreeModuleFile(pModule);
|
|
ACloseAudio;
|
|
end.
|