2014-10-05 64 views
-1

我使用的是帶有MP3文件的Bass.dll,它運行良好,但是MP3似乎已經被記錄在不同輸出音量水平。MP3 - Bass.dll和音量調節

有什麼方法可以測試可聽音量,然後相應地調整低音音量電平,以便所有的MP3都能在相同的電平上播放?

就像現在一樣,如果我拒絕那些響亮的聲音,那些安靜的聲音就不會被聽到,所以我會永遠在上下拖動音量。

我在這裏找到了一個用於使用低音和麥克風的鏈接,但這看起來不是最好的方法 - 或者它是什麼?

+2

谷歌bass.dll規範化,第一個鏈接發送給您直接到他們的論壇,幷包含一個完整的德爾福樣品如何實現這一目標... – whosrdaddy 2014-10-05 19:51:54

回答

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; 
+0

這個答案並沒有解決quesion。用戶希望所有文件都具有一致的音量級別,這隻能通過使用規範化來實現... – whosrdaddy 2014-10-06 09:07:10