Tag: 频道

Java NIO – 非阻塞通道与AsynchronousChannels

Java NIO提供SocketChannel和ServerSocketChannel ,可以设置为非阻塞模式(异步)。 大多数操作返回与成功相对应的值或者尚未执行操作。 除了回调function之外, AynchronousSocketChannel和AsynchronousServerSocketChannel的目的是什么?

如何在java中获得混音器通道布局

我以为我可以在这个伟大的网站上找到任何东西,但现在我似乎面临着没有答案的问题:)请帮忙! 事实上,我需要播放6个不同的wav文件,每个文件有1个通道,由系统调音台支持的6个通道(左,右,左环绕等)。 使用6个不同的SourceDataLines看起来是合乎逻辑的但是从我看到的情况来看,Mixer不能为它们进行每个样本的同步,所以我想出了在单独的线程中交错它们并且只使用一个SourceDataLine来播放它。 它适用于左右两个通道,但对于更多通道,我需要知道精确的通道布局(差异系统和声卡可能不同)。 我认为系统调音台之一(我有两个:“线性输入”和“java音响系统混音器”)可能有这个元数据,但我找不到它。 有谁知道如何获得这些信息? 谢谢。

如何控制MIDI通道的音量

我有这个代码: Synthesizer synthesizer = MidiSystem.getSynthesizer(); synthesizer.open(); Instrument[] instrument = synthesizer.getDefaultSoundbank().getInstruments(); synthesizer.loadInstrument(instrument[29]); MidiChannel[] channels = synthesizer.getChannels(); MidiChannel channel = channels[1]; channel.programChange(29); channel.noteOn(noteNumber, 127); Teszthang.sleep(2000); channel.noteOff(noteNumber); 所以这是一个例子,以最大音量(127)播放声音2秒。 但是我想控制通道的音量,比如在2秒后,音量会在另外2秒内淡出。 我怎么能这样做? 我知道这些方法: channel.controlChange(controller, value); channel.setPolyPressure(noteNumber, pressure); 但这些不会改变任何音量! 我不知道如何使用这些方法。 如何在noteOn()播放后更改频道的音量?