首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重新实现"ToneMatrix“音频玩具

重新实现"ToneMatrix“音频玩具
EN

Stack Overflow用户
提问于 2009-04-17 13:04:19
回答 1查看 657关注 0票数 0

有一个非常酷的音频“玩具”叫ToneMatrix。我想把它重新实现为Java applet。我试过使用JFugueplayer.play和单独的音符来处理声音,用Thread.sleep来计时,但是效果很糟糕。

JFugue在第17次(是的,真的,我数过了)调用player.play之后停止响应,而Thread.sleep太不规律了,无法提供良好的节奏。

你会推荐什么来代替?基本上,我正在寻找一种简单的方法来在飞行中产生单音符的声音。因此,在声音播放前的一小段时间内,我需要能够查看数据并告诉音频库要播放什么音符。(多个音符很可能是和谐的。)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-04-17 13:56:30

我的猜测是你忘记了在JFugue中关闭音符,或者有一个bug,一旦开始播放就忘记停止播放音符。

使用MIDI是一种非常简单的方式来做你所说的事情。以下是midi包中一些有用方法的大杂烩,将帮助您入门:

代码语言:javascript
复制
Synthesizer synth = MidiSystem.getSynthesizer();
synth.open();
MidiChannel midiChannel = synth.getChannels()[0];
midiChannel.allNotesOff();
currentInstrument = synth.getAvailableInstruments()[index];
System.out.println("Switching instrument to #" + index + ": " + currentInstrument.getName());
synth.loadInstrument(currentInstrument);
midiChannel.programChange(currentInstrument.getPatch().getBank(), currentInstrument.getPatch().getProgram());
midiChannel.noteOn(noteNumber, velocity);
midiChannel.noteOff(noteNumber);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/760329

复制
相关文章

相似问题

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