在D中,一个设备的音量好象是0-65535的一个值。但是这个值是包含了左右声道的。听说高位是左声道,低位是右声道。可是我是才鸟,不知道怎么分配。
我在程序中不需要把左油声道分开来,只要能控制整体声音大小就行了。
我用的控件是TXaudioPlayer。
用他的SetOutputVolume来设置播放文件的声音的。
不知道具体怎么弄。
我如果用TRACKBAR来来设置,应该怎么弄呢?如果直接通过TRACKBAR的值来指定的时候就会出现一会左一会右的情况。谢谢各位啦~~~
最好铁份源码出来!
我在程序中不需要把左油声道分开来,只要能控制整体声音大小就行了。
我用的控件是TXaudioPlayer。
用他的SetOutputVolume来设置播放文件的声音的。
不知道具体怎么弄。
我如果用TRACKBAR来来设置,应该怎么弄呢?如果直接通过TRACKBAR的值来指定的时候就会出现一会左一会右的情况。谢谢各位啦~~~
最好铁份源码出来!
解决方案 »
- 怎样给TcxGridDBTableView增加列,并且赋值
- BlockWrite函数的用法(关于I/O Error)
- Delphi可否实现语音传输,可有源码?说明原理也可以!
- 怎样才能把东西脱进去运行
- 两条sql 语句的区别?(大家帮忙过来看一下)
- DBComboBox1.items.delete(??)该怎么写呢?在线等待………………
- 深空 请进来接分
- 在Delphi2006中使用Ehlib4.1.4出现不能显示库中的汉字信息的问题....怎么办啊
- 救命哪!!!哪里有DELPHI6下载?100分,分可以再加,
- 如何制作delphi程序安装盘 ?
- 谁有Tif转成jpg的源码?
- 【求助】ActiveX读取Access数据库时,如果取得服务器端的相对路径???
hoping to be a little helpful...
Both right and left vulume can be controlled.}
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls,
Forms, Dialogs,mmSystem, ComCtrls, StdCtrls, Buttons;/////
//////////////////mmSystem!!!!type
TForm1 = class(TForm)
TrackBar1: TTrackBar;
Label1: TLabel;
TrackBar2: TTrackBar;
Label2: TLabel;
Label3: TLabel;
TrackBar3: TTrackBar;
procedure TrackBar1Change(Sender: TObject);
procedure TrackBar2Change(Sender: TObject);
procedure TrackBar3Change(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.DFM}procedure TForm1.TrackBar1Change(Sender: TObject);
var t,v:longint;
begin
//Set TraackBar1.max:=255;
t:=TrackBar1.Position;
//v's high 16 bits:right Blast; v's low 16 bits:left blast
v:=(t shl 8)or(t shl 24);
if WaveOutSetVolume(0,v)<>MMSYSERR_NOERROR then
ShowMessage('Fail!');
end;procedure TForm1.TrackBar2Change(Sender: TObject);
var t,v:longint;
begin
t:=TrackBar2.Position;
WaveOutGetVolume(0,@v);;//Change left blast while keep right
v:=v and $ffff0000 or (t shl 8);
WaveOutSetVolume(0,v);
end;procedure TForm1.TrackBar3Change(Sender: TObject);
var t,v:longint;
begin
t:=TrackBar3.Position;
WaveOutGetVolume(0,@v);//Change right blast while keep left
v:=v and $0000ffff or (t shl 24);
WaveOutSetVolume(0,v);
end;procedure TForm1.FormCreate(Sender: TObject);
var v:longint;
begin
WaveOutGetVolume(0,@v);
TrackBar2.Position:=hi(v);
TrackBar3.Position:=hi(v shl 16);
//only use high 8 bits,you can get more obvious effect
// For WaveFormFile,you can use WaveOutGetVolume
// For cd File,you can use auxgetvulume;
TrackBar1.Position:=(TrackBar2.Position+TrackBar3.Position)div 2;
end;end.
帮我看看是怎么弄的?procedure Tfrmmain.x1sScroll(Sender: TObject;
ScrollPos: Integer);
var v , t :integer;
begin
t := x1s.Position;
v:=v and $0000ffff or (t shl 24);
caption := inttostr(v);
x1.SetOutputVolume(-1,v,-1)
end;
结果不是一个WORD,而是0-100的数。
不过还是很感谢帮忙。
可以控制WAVE的!