上篇稍微带过了一下javax.sound.midi包进行midi播放的方式。那么这里我们就来看看怎么样捕获和处理midi的音符信号。
之前我们有使用过Sequence类当中的一个方法:
Track[] tracks = Sequence.getTracks();
对音频处理稍有了解就知道,midi记录的声音信息是多轨的,根据midi的信号原则,最多可以有128条轨道(编号为0~127)。所以说一个 javax.sound.midi.Track其实就是一个在此midi中存在的音轨数据的实例化对象。
midi使用一种叫做“信息”(Message)的机制来存储音符信息,一般来说,信息可以被翻译成“短信息”(ShortMessage , 注意和手机的”短信“区别开)和”综合信息“(MetaMessage)。根据文档上对于信息内容的分类,可知短信息是负责控制轨道开始发声、停止发声、调整音量和做其他播放有关的控制的。而综合信息并没有被定义实际的用途,我们可以在MetaMessage的Javadoc上看到这样一段。
/** A <code>MetaMessage</code> is a <code>{@link MidiMessage}</code> that is not meaningful to synthesizers, but
* that can be stored in a MIDI file and interpreted by a sequencer program.
*/
翻译过来就是说,MetaMessage并不会在合成器中起到实际

本文深入探讨Java的javax.sound.midi包,讲解如何捕获和处理MIDI音符信号。通过Sequence类的Message机制,了解ShortMessage和MetaMessage在控制音轨播放中的作用。同时介绍如何利用Sequencer的传输器和接收器监听并处理MIDI信息。
最低0.47元/天 解锁文章
428

被折叠的 条评论
为什么被折叠?



