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;