我正在阅读“Practical Ruby Projects”一书,刚刚读完第 2 章,其中作者提供了 Ruby 代码,以使用名为“SimpleSynth”的软件播放一些 MIDI 声音。这是特定示例的链接:https ://github.com/mattybojo/midi_music/blob/master/music.rb
在 Mac OS 上,您应该打开一个名为 FreeSynth 的免费软件:( http://notahat.com/simplesynth/ ),它可以让您听到正在播放的声音。
我应该听到一些声音,但运行此代码后我什么也没听到。该脚本工作正常。每当我关闭“FreeSynth”软件时,Ruby 都会抛出“noMIDIDestinations”错误。
这是错误声明:class NoMIDIDestinations < Exception; 结尾
这是引发异常的代码:
num = C.mIDIGetNumberOfDestinations()
raise NoMIDIDestinations if num < 1 # If no MIDI devices listening raise exception
这基本上意味着没有应用程序监听 MIDI 信号。
如果我在 FreeSynth 打开的情况下运行它,它不会抛出此异常,并且我可以看到它在睡眠语句之间暂停。
# This is the code that outputs the sound to a listening MIDI synth
midi = LiveMIDI.new
midi.note_on(0, 60, 100)
sleep(1)
midi.note_off(0, 60)
sleep(1)
midi.program_change(1, 40)
midi.note_on(1, 60, 100)
sleep(1)
midi.note_off(1, 60)
所以脚本工作正常,只是其他问题。
有人可以帮我解决这个问题吗?
我认为问题可能出在 MacOS 中的 MIDI 上,但我不是一个健全的人,所有这些 MIDI 的东西都让我头疼。我环顾四周,看看 CoreAudio(Apple 的声音框架)在 MIDI 方面是否有任何重大变化,但没有发现任何变化。
我在 Macbook Pro 上,Lion。除了使用 FreeSynth,还有其他选择吗?我下载了几个 MIDI 合成器,但它们只有一个名为“组件”的文件。所以我猜这不是我需要的。
提前致谢。