In those situations, you can bind your own input events.
Here is an example similar to the one in the last post except that only the notes C, E, and G are transposed
require "micromidi" @input = UniMIDI::Input.use(:first) @output = UniMIDI::Output.use(:first) MIDI.using(@input, @output) do thru_except :note receive :note do |message| message.octave += 1 if %w{C E G}.include?(message.note_name) output message end join end
For the sake of expressiveness, there are many permutations of each of these methods. I recommend reading the rdoc for the MicroMIDI Instructions classes to get a handle on what's possible.
http://github.com/arirusso/micromidi
Next: Shorthand with MicroMIDI
Sigh.
ReplyDelete[2] pry(main)> @input = UniMIDI::Input.use(:first)
RuntimeError: midiInOpen: No Memory
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/midi-winmm-0.1.10/lib/midi-winmm/map.rb:217:in `winmm_func'
Is your library working in Windows? I think its power is enourmous, I'd love to get it working! :)
Thank you!
@farro - I'm going to fix some bugs in the Windows version today. I'll see if I can reproduce this and let you know
ReplyDeleteMan, thanks! Were you able to reproduce the issue and have it sorted? I'd love to fiddle with MIDI here but unfortunately I have to run Win! Thanks!
ReplyDeleteBy the way if I can help in any way please tell me.
ReplyDelete