Atitit java播放 wav MIXER 混响器编程
目录
1.1. MIXER 混响器编程 1
1.2. 得到系统中一共有多少个混音器设备: 1
1.3. 接口摘要 1
1.4. 调节音量 2
1.5. Code /bookmarksHtmlEverythingIndexPrj/src/apkg/soundPlay.java 3
MIXER 混响器编程
10月14日 17:17:24fakine阅读数:3632
版权声明:本文为博主原创文章,未经博主允许。 /fakine/article/details/12711779
得到系统中一共有多少个混音器设备:
、
(在一般的系统中只有一块声卡,所以返回的值应该为1;我的系统中装有一块PIC创新声卡,一块主板载C-media声卡,还安装了Totalrecorder软件,所以返回值是3)
int devnum=::mixerGetNumDevs();
调节音量sline.open();FloatControlvolctrl=(FloatControl)sline.getControl(FloatControl.Type.MASTER_GAIN);volctrl.setValue(newVal);//newVal-thevalueofvolumeslider
也就是说,必须开始播放,得到了播放的DataLine以后才可以得到Control信息.
我这么做了,的到
Master Gain with current value: 0.0 dB (range: -80.0 - 6.0206)
不太懂dB是怎么算的,反正默认值为0,也就是说,向正(增大音量)只能移动6个单位.对于一个JSlider来说,实在太小距离了.
混音与Java(不带混合机
Code /bookmarksHtmlEverythingIndexPrj/src/apkg/soundPlay.java
privatestaticvoidplaywav(String file)throwsException {
AudioInputStream audioInputStream= AudioSystem.getAudioInputStream(newFile(file));
AudioFormat audioFormat= audioInputStream.getFormat();
DataLine.Info info=newDataLine.Info(SourceDataLine.class, audioFormat);
SourceDataLine sourceDataLine= (SourceDataLine) AudioSystem
.getLine(info);
//AudioFormat audioFormat2= new AudioFormat( 70000, 16, 2, true, false);
sourceDataLine.open(audioFormat); //thisaudioformatcan overwrite last DataLine.Info.audioFormat
sourceDataLine.start();
intcnt;
// 读取数据到缓存数据
byte[] tempBuffer=newbyte[10000] ;
while((cnt= audioInputStream.read(tempBuffer, 0, tempBuffer.length)) != -1) {
if(cnt> 0) {
// 播放缓存数据
sourceDataLine.write(tempBuffer, 0, cnt);
}
}
// Block等待临时数据被输出为空
sourceDataLine.drain();
sourceDataLine.close();
}
API) - IT屋-程序员软件开发技术分享社区.html
Atitit java播放 wav MIXER 混响器编程 目录 1.1. MIXER 混响器编程1 1.2. 得到系统中一共有多少个混音器设备:1 1.3. 接口摘要1 1.4. 调节音量