在金山音霸中有一个混合声道,可以把好多区分左右声道的音乐如.DAT混合成一个声道,也就是说我不管用左声道的音箱还是右声道的音箱都能放出完整的音乐,在delphi中怎么实现,快,救救我吧!给100分哦!

解决方案 »

  1.   

    大伯,delphi自带的mmsystem就是什么狗屁声道都有了,
    看onlinebook吧。
      

  2.   

    procedure  tform1.trackbar1changer  (sender:tobject);//左声道  
    var  t,v:longint;  
    begin  
    t:=trackbar1.postion;  
    wavoutgetvolume(0,@v);  
    v:=v  and  $ffff0000  or  (t  shl  8);  
    wavoutsetvolume(0,v);  
    end;  
     
    procedure  tform1.trackbar2changer  (sender:tobject);//右声道  
    var  t,v:longint;  
    begin  
    t:=trackbar2.postion;  
    wavoutgetvolume(0,@v);  
    v:=v  and  $0000ffff  or  (t  shl  24);  
    wavoutsetvolume(0,v);  
    end;  
      

  3.   

    delphi中自带得API中有这方面得说明,仔细查查会有收获得!!!
      

  4.   

    不知道下面代码是否有用?
    procedure tform1.dimsoundclick(sender:tobject);
    begin
      mcisendstring('set all audio all on',nil,0,handle);
      dimsound.checked:=true;
      leftsound.checked:=true;
      rightsound.checked:=true;
    end;
      

  5.   

    查也查不出来,有个小巧的,我以前做VOD时用着的,分能再多加点吗??
      

  6.   

    这是我用在VOD系统中的一段核心代码
    Str值为:L/R/Cconst
      MCI_SETAUDIO= $873;
      MCI_SETVIDEO=$0876;
      MCI_DGV_SETAUDIO_SOURCE_LEFT=1;
      MCI_DGV_SETAUDIO_SOURCE_STEREO=0;
      MCI_DGV_SETAUDIO_SOURCE_RIGHT=2;
      MCI_DGV_SETAUDIO_SOURCE=$4004;
      MCI_DGV_SETAUDIO_VALUE=$01000000;
      MCI_DGV_SETAUDIO_ITEM=$00800000;  MCI_DGV_SETAUDIO_VOLUME=$4002; 
      MAX_VOLUME=65535;              
      MIN_VOLUME=0;       
        
    procedure TFormMain.LRC(Str: String);
    var
      s: MCI_DGV_SETAUDIO_PARMS ;
      err:integer;
      buf:array[0..1000] of char;
    begin  if MediaPlayer11.DeviceID>0 then
      begin
        err:=mciSendCommand(MediaPlayer11.DeviceID,MCI_SETAUDIO, MCI_SET_OFF ,integer(@s));
        if(err<>0)then
        begin
          mciGetErrorString(err,buf,sizeof(buf) );
          FormMain.MessageBoxShow('1',buf,2,True,10000);
        end;
        if Str='C' then
          s.dwValue:=MCI_DGV_SETAUDIO_SOURCE_STEREO; 
        if Str='L' then
          s.dwValue:=MCI_DGV_SETAUDIO_SOURCE_Left;
        if Str='R' then
          s.dwValue:=MCI_DGV_SETAUDIO_SOURCE_Right;
        s.dwItem:=MCI_DGV_SETAUDIO_SOURCE;
        err:=mciSendCommand(MediaPlayer11.DeviceID,MCI_SETAUDIO,MCI_DGV_SETAUDIO_VALUE or MCI_DGV_SETAUDIO_ITEM ,integer(@s));
        if (err<>0) then
        begin
          mciGetErrorString(err,buf,sizeof(buf) );
          FormMain.MessageBoxShow('1',buf,2,True,10000);
        end;
        err:=mciSendCommand(MediaPlayer11.DeviceID,MCI_SETAUDIO, MCI_SET_ON ,integer(@s));
        if (err<>0) then
        begin
          mciGetErrorString(err,buf,sizeof(buf) );
          FormMain.MessageBoxShow('1',buf,2,True,10000);
        end;
      end;
    end;