草庐IT

midi-instrument

全部标签

java - Instrument Netty 的 EventLoop 用于确定性执行计划任务

我想检测Netty的EventLoop以便:以确定的顺序运行任务。捕获计划任务的截止日期。快进虚拟时钟,触发截止任务的执行。我知道EmbeddedChannel并在一些测试中使用它。但我想要的是介于单元测试和集成测试之间的东西,对某些极端情况仍然视而不见。断连重连和ping场景大量使用定时任务。我可以添加具有巨大延迟的确定性,但我不希望我的测试等待几秒钟或更长时间。所以检测Netty的EventLoop看起来像是解决方案。我已经编写了至少对我来说有意义的代码。我修改ScheduledFutureTask#nanoTime以返回我的值。我派生了NioEventLoopGroup,所以我捕

笔记本电脑退出 hibernate 后,Java MIDI 音频出现延迟

我正在开发musicprogramminglanguage,并使用JVM(通过Clojure)播放用这种语言编写的乐谱。到目前为止,我们只是使用javax.sound.midiMidiSynthesizer来播放乐谱。因为Clojure的启动时间很慢,而我们希望能够从命令行播放乐谱并立即听到,我们选择将乐谱解释器构建为后台服务器进程,并使用用Java编写的更轻量级的命令行客户端。所有这些在大多数情况下都运行良好,但是,有一个奇怪的问题,我们看到如果您启动服务器,然后关闭笔记本电脑*并让它hibernate,然后再次打开它并让服务器播放乐谱,音频不会立即出现,而是会延迟几秒钟。使用调试日

java - 将代码添加到带有 Instrumentation : ASM or BCEL? 的 Java 类

我正在编写一个游戏引擎/库,其中有一个事件调度程序类,它通过调用“已注册”事件处理程序类的监听器方法来调度事件。可以通过调用适当的调度程序方法向事件调度程序注册事件处理程序/监听器。这显然会导致一些用于注册每个事件处理程序的样板代码(我的引擎的其他方面也有类似的样板代码),所以我想知道-在加载过程中使用Instrumentation添加所有必要的代码怎么样?事件处理程序类,因此在编码时无需显式注册事件调度程序-程序运行时会自动添加对调度程序注册方法的调用。据我了解,为了使用Instrumentation,应该使用一些字节码修饰符API。我知道两个-ASM和BCEL。我应该使用哪一个?显

Java sound api - 扫描 midi 设备

我正在开发一个Java项目,该项目使用javax.sound.midi库从MIDI硬件接收MIDI事件。在文档中,它说MidiSystem.getMidiDeviceInfo()返回所有连接的MIDI硬件的列表。它对我有用,但问题是,它只能工作一次。第一次实际扫描设备需要一些时间,但之后每次都会立即返回相同的列表,即使已连接新设备也是如此。有没有办法强制它重新扫描?如果应用程序重新启动,它将重新扫描,但我不希望我的用户在连接新的MIDI设备时必须重新启动。顺便说一句,我使用的是MacOSX...有人指出,不同操作系统的行为可能不同。 最佳答案

javassist 在 pre-main 方法中加载一个类文件(java instrumentation)

我正在尝试使用javassist加载特定类,我在pre-main方法中执行此操作,如下所示:publicbyte[]transform(ClassLoaderloader,StringclassName,ClassclassBeingRedefined,ProtectionDomainprotectionDomain,byte[]classfileBuffer)throwsIllegalClassFormatException{byte[]byteCode=classfileBuffer;if(className.toLowerCase().endsWith("class1")){Cl

java - midi 键盘不适用于所有平台

我做了一个keyboardapplication前一段时间从jar中获取midi音库作为资源,并使用它来获取音库中包含的乐器名称。这似乎在使用带有sunsjava6的windows7的机器上以及在使用sunsjava6的linux中运行良好。但是,这似乎不适用于使用相同版本的java的windowsxp的机器。似乎正在发生的事情是在调用getInstrumentName()方法时尚未加载仪器数组。仪器数组在DefaultControl类(第二个代码示例)的构造函数中填充。有人可以帮我理解为什么会这样,为什么它似乎依赖于机器?我这样得到当前的乐器名称:data.setControls(n

python - 在 Python 中操作 MIDI 文件

我正在寻找一种方法来更改Python中预先存在的MIDI文件中的单个音符。我发现了很多允许编写MIDI文件但不能改变现有文件的包。是否有可以帮助解决此问题的程序包或解析MIDI文件的十六进制来完成此操作的方法? 最佳答案 开源程序MIDICSV将MIDI转换为文本CSV,反之亦然。您可以以文本形式打开CSV文件并使用Python轻松编辑它,而无需依赖任何特殊模块。有关MIDI协议(protocol)的信息,请参阅:MIDIfile-formatspecificationMIDImessages在recentproject中我发现这项

python用fluidsynth合成midi

我无法导入fluidsynth。[也许有更好的模块?]我正在尝试从python或pygame合成midi。我可以从pygame发送midi事件。我正在使用mingus,pyfluidsynth似乎很好/最简单。我认为这意味着安装了pyfluidsynth,但没有安装单独的fluidsynth。我不知道它是否需要“fluidsynth”安装程序才能工作?测试.py:importfluidsynthprint":("错误:Traceback(mostrecentcalllast):File"test.py",line1,inimportfluidsynthFile"C:\Users\jak

python - 从 MIDI 设备实时获取输入(Python)

我有一个触发手指(MIDI平板电脑),我希望能够实时读取它的输入并让python根据按下的键执行操作。我需要它用于Windows,最好使用python2.5+谢谢 最佳答案 PyGame包括一个内置的midimodule,可用于Linux、Windows和MacOS,并得到很好的支持。例如,这里是pygame.midi.Input的文档:Inputisusedtogetmidiinputfrommididevices.Input(device_id)Input(device_id,buffer_size)Input.close-cl

python - 如何用 Python 编写 MIDI 文件?

我正在编写一个脚本,根据各个像素的RGBA值将图片转换为MIDI音符。但是,我似乎无法完成最后一步,即将笔记实际输出到文件中。我试过使用MIDIUtil库,但是它的文档不是最好的,我似乎无法理解。如果有人能告诉我如何对笔记进行排序(这样它们就不会全部从头开始),我们将不胜感激。 最佳答案 看样本,好像是frommidiutil.MidiFileimportMIDIFile#createyourMIDIobjectmf=MIDIFile(1)#only1tracktrack=0#theonlytracktime=0#startatth