I'm trying to change the volume of my wave file but it doens't seems to work.
I'm using; BASS_FX_DSP_SetParameters(chan, BASS_FX_DSPFX_VOLUME, @volume);
where @volume; volume.lChannel := 0; volume.fVolume := 0.5;
.
The rest of the code:
chan := BASS_StreamCreateFile(FALSE, PChar(SourceFileName), 0, 0, BASS_STREAM_DECODE);
BASS_ChannelGetInfo(chan, chaninfo);
nChannels := chaninfo.chans;
if (chaninfo.flags and BASS_SAMPLE_8BITS > 0)then
begin
wBitsPerSample := 8;
end
else
begin
wBitsPerSample := 16;
end;
nBlockAlign := nChannels * wBitsPerSample div 8;
BASS_ChannelGetAttributes(chan, frq, vl, Tmp);
BASS_FX_DSP_SetParameters(chan, BASS_FX_DSPFX_VOLUME, @volume);
BASS_FX_DSP_Set(chan, BASS_FX_DSPFX_VOLUME, 0);
nSamplesPerSec := frq;
nAvgBytesPerSec := nSamplesPerSec * nBlockAlign;
RecStream := TFileStream.Create(naam, fmCreate);
frmProgress.Show;
frmProgress.Label43.Caption := 'MP3 naar WAV converteren:';
// Write header portion of wave file
temp := 'RIFF'; RecStream.write(temp[1], length(temp));
temp := #0#0#0#0; RecStream.write(temp[1], length(temp));
temp := 'WAVE'; RecStream.write(temp[1], length(temp));
temp := 'fmt '; RecStream.write(temp[1], length(temp));
temp := #$10#0#0#0; RecStream.write(temp[1], length(temp));
temp := #1#0; RecStream.write(temp[1], length(temp));
if nChannels = 1 then
temp := #1#0
else
temp := #2#0;
RecStream.write(temp[1], length(temp));
RecStream.write(nSamplesPerSec, 2);
temp := #0#0; RecStream.write(temp[1], length(temp));
RecStream.write(nAvgBytesPerSec, 4);
RecStream.write(nBlockAlign, 2);
RecStream.write(wBitsPerSample, 2);
temp := 'data'; RecStream.write(temp[1],length(temp));
temp := #0#0#0#0; RecStream.write(temp[1],length(temp));
while (BASS_ChannelIsActive(chan) > 0) do
begin
BytesRead := BASS_ChannelGetData(chan, @buf, 10000);
RecStream.Write(buf, BytesRead);
Application.ProcessMessages;
PercentDone := Trunc(100 * (BASS_ChannelGetPosition(Chan) / BASS_ChannelGetLength(chan)));
frmProgress.ProgressBar.Position := PercentDone;
frmProgress.LabelOp.Caption := 'Voortgang ' + IntToStr(PercentDone) + '%';
end;
BASS_StreamFree(chan);
frmProgress.LabelOp.Caption := 'Bestand sluiten ...';
i := RecStream.Size - 8;
RecStream.Position := 4;
RecStream.write(i, 4);
i := i - $24;
RecStream.Position := 40;
RecStream.write(i, 4);
RecStream.Free;
frmProgress.LabelOp.Caption := 'Klaar';
frmProgress.Close;
But i don't get the volume change to work can anyone help me with this?