java - 如何在 Java MIDI 程序中更改乐器
问题描述
如何在 Midi 中更换乐器?我可以将通道的值更改为最多 9,之后它会显示“通道超出范围”,这都是钢琴。例如,如何将其更改为吉他
public noteplay()
throws InvalidMidiDataException,MidiUnavailableException
{
bpm =80;
beatLength = 1;
theTimeMelody = 0;
theTimeBass =0;
seq = new Sequence(Sequence.PPQ,3);
trkBass = seq.createTrack();
trkMelody = seq.createTrack();
}
public void melody(int volume)
throws InvalidMidiDataException,MidiUnavailableException
{
int list1[] = { 56,59,60,63,56,59,60,63, 61,64,65,68,61,64,65,68, 56,59,60,63,56,59,60,63, 63,66,67,70,73,66,67,70,};
for (int pitch : list1)
{
ShortMessage onMsg = new ShortMessage();
onMsg.setMessage(ShortMessage.NOTE_ON, 0, pitch, 80);
ShortMessage offMsg = new ShortMessage();
offMsg.setMessage(ShortMessage.NOTE_OFF, 0, pitch, 90);
trkBass.add(new MidiEvent(onMsg,theTimeBass));
trkBass.add(new MidiEvent(offMsg,theTimeBass+beatLength));
theTimeBass += beatLength;
}
}
}
解决方案
通用 MIDI 标准为鼓保留了第十个通道。
您可以将其他 15 个通道用于旋律乐器。
推荐阅读
- amazon-web-services - 如何从 appsync lambda 解析器设置 cookie
- python - python从装饰函数中捕获错误
- android - Flutter androidManifest.xml 解析错误
- reactjs - 当有条件地渲染组件时,钩子规则会发生什么
- wordpress - 根据用户角色更改帖子元
- python - 接受一串字母的函数,从有效单词列表中输出单词列表,然后找到拼字游戏得分最高的单词
- python - 使用一组值存储到数据库中
- amazon-web-services - Kubernetes 负载均衡如何消费队列消息(SQS 或其他)并将其传递给 pod?
- android - Flutter PopupMenuButton 自定义菜单中的 3 个点
- java - 使多对多关系对象的 REST API 返回 ID