很多多媒体软件都有均衡调节EQ,请知道的大家出来讲讲(300分)

  • 主题发起人 主题发起人 陈礼泉
  • 开始时间 开始时间

陈礼泉

Unregistered / Unconfirmed
GUEST, unregistred user!
很多多媒体软件都有均衡调节EQ,请知道的大家出来讲讲,原理,实现都可以
 
procedure SetWaveLeft(Volume:Integer);
//设置声音为左声道(Integer 1~13)
var
Wave:String;
begin

try
Wave :='$' + inttohex(0,4)+
inttohex(Volume*5000,4);
MMSystem.waveOutSetVolume(0,StrToInt(Wave));
except
PubUnit.ErrorMsgBox;
end;

end;


procedure SetWaveRigth(Volume:Integer);
//设置声音为右声道(Integer 1~13)
var
Wave:string;
begin

try
Wave :='$' + inttohex(Volume*5000,4) +
inttohex(0,4);
MMSystem.waveOutSetVolume(0,StrToInt(Wave));
except
PubUnit.ErrorMsgBox;
end;

end;


procedure SetWaveBalance(Volume:Integer);//设置声音为双声道(Integer 1~13)
var
Wave:String;
begin

try
Wave :='$' + inttohex(Volume *5000,4) +
inttohex(Volume*5000,4);
MMSystem.waveOutSetVolume(0,StrToInt(Wave));
except
PubUnit.ErrorMsgBox;
end;

end;

 
我提的不是这个,而是如何实现均衡器,不是设置左右声道的音量
 
你可以用MMtool来作,它应该能完成你的大部分功能!
 
我要的是自己实现它的功能,不是用控件
 
均衡器?你会音频解码吗?在解码的过程中才能实现均衡器功能,别地就不要想了,这方面的控件你见过吗?就算有也是和播放功能做在一起的,不可能有现成的单一功能的这种控件,你学一下FFT吧!
 
jackalan你好牛
 
学习中。。。。。
 
均衡器是要分析wav格式的,例如有合并,立体声模拟输出,高音增强,低音增强等。
只有参考控件源码自己分析,是有点困难!
 
要手工解码,分频操作。
我也没有做过。
 
自己做太难了,要使用FFT算法来分频,还是用现成的吧,声音的频率是20-20000Hz,EQ就是把这些频率按段分离,一般是6段、10段、20段、30段,单独提升或衰减后再合成。
 
理论上说确实是要用快速傅立叶转换,但其实在 VS.NET 中却没有这么多限制。有一本 VC 的书有写 EQ 的制作,而且不需要 { 均衡器是要分析wav格式的,例如有合并,立体声模拟输出,高音增强,低音增强等 }。事实上也有软件做到了,以前中舟 815 E 主板上附带的音频控制器就能直接调整底层的声音效果。
 
都是老鸟,我听课。
 
我会了,找fft1.pas单元(去搜索fft1.zip),但是提升很大比例(20db)时,有明显爆破音。
 
可以使用XAudio.dll + XaudioPlayer.pas单元做,我是用它做的,即可以播放MP3、WAV音乐,并可以做EQ均衡调节,左右声道控制、立体声、静音。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部