我正在使用带有MP3文件的Bass.dll并且效果很好,但MP3似乎已经录制了不同级别的输出音量。
我是否有某种方法可以测试音量,然后相应地调整低音音量,以便所有MP3播放在同一水平?
就像现在一样,如果我拒绝响亮的那个,那些安静的声音听不到,所以我一直在上下调整音量。
我在这里找到了一个使用Bass和听麦克风的链接,但这似乎不是最好的方法 - 或者是它?
答案 0 :(得分:0)
如果我没错,您需要调整必须适用于所有前面曲目的频道音量。我已经为你发布了一些代码。您可以采用相同的方法来播放曲目列表。设置音量后,以下所有音轨都应以相同的音量播放。
procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
// Free the stream if a song is playing
if Channel <> 0 then
BASS_StreamFree(Channel);
// Create a new stream
Channel := BASS_StreamCreateFile(False, PChar(OpenDialog1.FileName), 0, 0, 0 {$IFDEF UNICODE} or BASS_UNICODE {$ENDIF});
// Check if channel is unable to play
if Channel = 0 then begin
ShowMessage('Unable to play');
Exit;
end;
// Set volume for every playback
BASS_ChannelSetAttribute(Channel, BASS_ATTRIB_VOL, TrackBar1.Position / 100);
// Play the track
BASS_ChannelPlay(Channel, False);
end;
end;
我们使用轨迹栏调整音量时的代码。
procedure TForm1.TrackBar1Change(Sender: TObject);
begin
// Adjust volume for the current track
BASS_ChannelSetAttribute(Channel, BASS_ATTRIB_VOL, TrackBar1.Position / 100);
end;