首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何接收MIDI批量调优转储请求的响应?

如何接收MIDI批量调优转储请求的响应?
EN

Stack Overflow用户
提问于 2014-08-29 09:40:54
回答 1查看 285关注 0票数 0

我正在使用MIDI调谐标准将调音从音乐会音调A4 = 440 Hz改为任意调频。它在Windows 7和JDK 1.8.0的机器上运行得很好。,但我想在此之前检查一下,调优标准是否可用.

代码语言:javascript
复制
Synthesizer synthesizer = MidiSystem.getSynthesizer();
System.out.println(synthesizer.getDeviceInfo().getName());

打印出Gervill,正如在Gervills主页上所描述的,它支持调优标准。

Gervill合成器是当前所有平台(Windows、Linux、Mac)上JRE的一部分吗?如果是的话,这会不会持续很长一段时间?

如果Gervill将被另一个不支持MIDI调谐标准的合成器所取代,我想测试它是否可用。

如何测试,如果MIDI调优标准可用?

我的想法是发送一个批量调优转储请求,如果我得到一个响应,我确信它是可用的,否则是不可用的。

代码语言:javascript
复制
//@formatter:off
final byte[] data = new byte[] {
        (byte) 0xf0, // SysEx Header
        (byte) 0x7e, // Non-Realtime
        (byte) 0x7f, // Target Device = All Devices
        (byte) 0x08, // MIDI Tuning
        (byte) 0x00, // Bulk Tuning Dump Request
        (byte) 0x00, // preset = 0
        (byte) 0xf7, // EOX
};
//@formatter:on
SysexMessage dumpRequest = new SysexMessage(data, data.length);

说明书上写着:

接收仪器应通过发送下面一节所述的批量调谐转储消息来响应所述的调谐编号。

,但我的问题是,我如何才能收到这个答复呢?

对于演奏音符和调音,我用MIDI这样的方式:

代码语言:javascript
复制
final int PPQN = 16; // Pulses/Ticks per quarter note
Sequence sequence = new Sequence(Sequence.PPQ, PPQN);
final Track track = sequence.createTrack();

// Send dump request
track.add(new MidiEvent(dumpRequest, 0));

// How to receive the response of the request?

final Sequencer sequencer = MidiSystem.getSequencer();
sequencer.setSequence(sequence);
sequencer.open();
sequencer.start();
// ...
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-29 10:49:34

正如您在MIDI实现图中所看到的那样,Gervill (和几乎任何其他软件合成器一样)不发送任何MIDI消息。

无法从代码中检查默认合成器的功能。

如果您想使用特定的合成器,则必须手动创建它。(Gervill的班级是com.sun.media.sound.SoftSynthesizer。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25565639

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档