MP3 - Bass.dll и выравнивание громкости

Я использую Bass.dll с файлами MP3, и он хорошо работает, но файлы MP3, похоже, записаны с разными уровнями громкости.

Есть ли способ проверить громкость звука, а затем соответствующим образом отрегулировать уровень громкости басов, чтобы все MP3-файлы воспроизводились примерно на одном уровне?

Как и сейчас, если я выключу громкий звук, тихие не будут слышны, так что я всегда буду перетасовывать громкость вверх и вниз.

Я нашел здесь ссылку для использования Bass и прослушивания микрофона, но это не похоже на лучший подход - или это так?

1 ответ

Если я не ошибаюсь, вы хотите отрегулировать громкость канала, которая должна быть применима для всех предыдущих треков. Я отправил код для вас. Вы можете продолжить тот же подход для воспроизведения списка треков. После настройки громкости все следующие дорожки должны воспроизводиться с одинаковым уровнем громкости.

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;
Другие вопросы по тегам