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.
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.
mciSendString('set all audio all on', nil, 0, Handle);
{立体声}
//左声道
mciSendString('set all audio all off', nil, 0, Handle);
mciSendString('set all audio left on', nil, 0, Handle);
{左声道}
//右声道
mciSendString('set all audio all off', nil, 0, Handle);
mciSendString('set all audio right on', nil, 0, Handle);
{右声道}
但是有些格式的VCD只有伴音,没有唱歌声音,用其他播放器则有唱歌声音
这是什么回事?