简单的多媒体问题!(倾家荡产)(50分)

  • 主题发起人 主题发起人 pengph
  • 开始时间 开始时间
P

pengph

Unregistered / Unconfirmed
GUEST, unregistred user!
我在做媒体播放器,要求不管什么声音文件,都要使滚动条能改变音量。
由于TrackBar只用8位二进制数表示音量,waveoutsetvolume函数中的第二个参数
代表32位的整数低16位表示左声道的音量,高16位表示右声道的音量,
而auxsetvolume函数中的第一个参数代表设备类型,第二个参数代表16位的整数吗?
播放cd时我知道用auxsetvolume来改音量,但和waveoutsetvolume的使用一样吗?
播放*.midi是怎样控制的?
帮助文件我已看过,请讲明思路。
最好给我例子!!!谁能回答,全分奉送!!!
waveoutsetvolume的方法如下:

procedure TForm1.TB_lChange(Sender: TObject);

var
pos,vol:longint;//左声道

begin

pos:=TB_l.Position;

waveoutgetvolume(0,@vol);

vol:=vol and $ffff0000 or (pos shl 8);

waveoutsetvolume(0,vol);

end;
 
你可以控制主输出的音量
 
你控制的是wave的音量:(
 
在2000年电脑报的合订本的下册里一篇文章讲了如何控制左右声道,你去看看。
 
参看MSDN中的例子Mixapp,可以象Windows的调整音量的“播放控制”程序一样控制音频
设备,不管什么类型,只要在Windows中安装,通吃。
 
要用到的函数有:
mixerClose
mixerGetControlDetails
mixerGetDevCaps
mixerGetID
mixerGetLineControls
mixerGetLineInfo
mixerGetNumDevs
mixerMessage
mixerOpen
mixerSetControlDetails
详细看一下这些函数的帮助你就清楚了。
 
对于 教父:好的,我去看看
对于 wvition:能不能给我个例子?:)
 
pengph:如果还想接着讨论请定期提前自己的帖子,如果不想继续讨论请结束帖子。
 

function GetVolume(Devicetype:integer):Longint;
Procedure SetVolume(Devicetype,VolumeValue:Integer);


procedure TForm1.FormCreate(Sender: TObject);
begin

TrackBar1.Position:=GetVolume(5);
end;

procedure TForm1.TrackBar1Change(Sender: TObject);
begin

SetVolume(5,TrackBar1.Position);
end;

Procedure TForm1.SetVolume(Devicetype,VolumeValue:Integer);
begin

auxsetVolume(DeviceType,((VolumeValue shl 8) or (VolumeValue shl 24)));
end;
 
接受答案了.
 
接受答案了.
 
TO:富翁
我好笨啊,不会用啊。
function GetVolume(Devicetype:integer):Longint;
应该放在哪啊?
 
后退
顶部