MP3 - Bass.dll和音量调节

时间:2014-10-05 19:16:06

标签: delphi mp3 volume bass.dll

我正在使用带有MP3文件的Bass.dll并且效果很好,但MP3似乎已经录制了不同级别的输出音量。

我是否有某种方法可以测试音量,然后相应地调整低音音量,以便所有MP3播放在同一水平?

就像现在一样,如果我拒绝响亮的那个,那些安静的声音听不到,所以我一直在上下调整音量。

我在这里找到了一个使用Bass和听麦克风的链接,但这似乎不是最好的方法 - 或者是它?

1 个答案:

答案 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;