pcmaudio: set amplitude to biased zero at end

pcmtest2: small updates to the demo program
This commit is contained in:
slederer 2025-10-12 22:52:17 +02:00
parent 598ee8921f
commit 536c0adde7
2 changed files with 44 additions and 24 deletions

View file

@ -1,32 +1,21 @@
{$H1536} {$H2560}
program pcmtest2; program pcmtest2;
uses pcmaudio; uses pcmaudio;
var filename:string; var filename:string;
buf:SndBufPtr; buf:SndBufPtr;
f:file;
size:integer;
i:integer;
c:char;
sampleRate:integer; sampleRate:integer;
err:integer; err:integer;
done:boolean; done:boolean;
begin c:char;
if ParamCount > 0 then
filename := ParamStr(1)
else
begin
write('Filename> ');
readln(filename);
end;
err := 1; function readAudioFile(fname:string):SndBufPtr;
if ParamCount > 1 then var i,size:integer;
val(ParamStr(2), sampleRate, err); c:char;
if err > 0 then buf:SndBufPtr;
sampleRate := 16000; f:file;
begin
open(f, filename, ModeReadOnly); open(f, fname, ModeReadOnly);
size := FileSize(f); size := FileSize(f);
new(buf, size); new(buf, size);
@ -41,17 +30,42 @@ begin
close(f); close(f);
readAudioFile := buf;
end;
begin
if ParamCount > 0 then
filename := ParamStr(1)
else
begin
write('Filename> ');
readln(filename);
end;
err := 1;
if ParamCount > 1 then
val(ParamStr(2), sampleRate, err);
if err > 0 then
sampleRate := 32000;
buf := readAudioFile(filename);
SampleQStart(buf, sampleRate); SampleQStart(buf, sampleRate);
write('Press Q to stop> '); write('Press ESC to stop> ');
done := false; done := false;
while not done do while not done do
begin begin
read(c); read(c);
if upcase(c) = 'Q' then if c = #27 then
done := true begin
done := true; writeln(';');
end
else else
writeln('Queue size: ', SampleQSize); if c = '?' then
begin
writeln; writeln('Queue: ', SampleQSize);
end;
end; end;
SampleQStop; SampleQStop;

View file

@ -232,6 +232,12 @@ SMPLQ_I_END:
STOREI STOREI
DROP DROP
; set amplitude out to zero (biased)
LOADC AUDIO_BASE+2
LOADCP 32768
STOREI
DROP
SMPLQ_I_XT: SMPLQ_I_XT:
LOADC IRQC_REG ; re-enable interrupts LOADC IRQC_REG ; re-enable interrupts
LOADC IRQC_EN LOADC IRQC_EN