Delphi調節音量

一、調節全部音量  
1.先在窗體中添加一個trackbar控件,可通過改變它的位置來調節音量,在trackbar1的屬性中,我們把Max屬性修改成255,改成
這個值是爲了便於進行二進制的音量調節操作。  
2.爲了調用一個Windows函數,在uses子句里加上Mmsystem。  
3.爲trackbar1的Onchange事件編寫如下代碼:  
procedure Tform1.TrackBar1change(Sender:Tobject);   
var
t,v:longint;
// t的最大值爲8位的二進制:11111111;
//用v來表示音量的大小,這是個32位的整數,高16位表示右聲道的音量,低16位表示左聲道的音量
begin
 t:=trackbar1.Position;
//得到Trackbar的位置,可用這個值來表示音量的大小  
v:=(t shl 8) or (t shl 24);//將t左移8位、24位  
waveoutsetvolume(0,v);//設置音量  
end;  

二、分別控制兩個聲道的方法  
1.控制左聲道  
procedure Tform1.TrackBar1change(Sender:Tobject);   
var
t,v:longint;  
begin   
t:=trackbar1.Position; 
 waveoutgetvolume(0,@v);
//@表示指向變量v的指針(32位),調用此函數的用意就是得到右聲道的值,做到在調節左聲道的時候,不改變右聲道  
v:=v and $ffff0000 or (t shl 8);
//數字前面加$表示是十六進制數字  
waveoutsetvolume(0,v);  
end;
  
2.控制右聲道  
procedure Tform1.TrackBar2change(Sender:Tobject);   
var
t,v:longint;//它的原理同上  
begin  
 t:=trackbar2.Position; 
 waveoutgetvolume(0,@v); 
 v:=v and $0000ffff or (t shl 24); 
 waveoutsetvolume(0,v);  
end;  

三、設置滑塊的初始位置  
1.程序開始執行時,缺省情況下,Trackbar的位置在0,但我們希望程序開始執行時,這兩個滑塊能自動得到當前的音量,而處在相應
的位置。  
procedure TForm1.FormCreate(Sender: TObject);   
var
v:longint;  
begin  
 waveoutgetvolume(0,@v);//得到現在音量  
trackbar1.Position:=hi(v);//設置左滑塊的正確位置 
 trackbar2.Position:=hi(v shr 16);//設置右聲道滑塊的正確位置  
end;  
注:函數hi(v)的作用爲:返回一個16位無符號整數的高8位值。如果v爲32位,則高16位自動被忽略了。  
2.只使用高8位時,可使調節效果更明顯。  
3.對波形文件可以用waveoutgetvolume函數,對cd文件可以用auxgetvolume函數。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章