class Midicat::Cli
Attributes
device[R]
options[R]
Public Class Methods
new(args)
click to toggle source
# File lib/midicat/cli.rb, line 8 def initialize args @options = { raw_mode: false } opt = OptionParser.new opt.on('--raw', 'Enable raw mode (shows raw midi event)') { @options[:raw_mode] = true } opt.version = Midicat::VERSION opt.parse! args @ni = Nibbler.new if UniMIDI::Input.all.length > 1 @device = UniMIDI::Input.gets elsif UniMIDI::Input.all.length == 1 @device = UniMIDI::Input.all[0] puts @device.pretty_name else puts "no MIDI device found!" exit! 1 end unless @device.nil? begin mainloop @device.open ensure @device.close end end end
Public Instance Methods
mainloop(device)
click to toggle source
# File lib/midicat/cli.rb, line 39 def mainloop(device) loop do device.gets.each do |data| show_message device.name, data end end end
pretty_print(timestamp, device_name, message)
click to toggle source
# File lib/midicat/cli.rb, line 65 def pretty_print timestamp, device_name, message puts "#{timestamp} #{device_name} #{Midicat::Formatter::format message}" end
show_message(device_name, data)
click to toggle source
# File lib/midicat/cli.rb, line 47 def show_message device_name, data timestamp = sprintf "%12.4f", data[:timestamp] if @options[:raw_mode] puts "#{timestamp} #{device_name} #{data[:data]}" else messages = @ni.parse(*data[:data]) if messages.is_a? Array messages.each do |message| pretty_print timestamp, device_name, message end else pretty_print timestamp, device_name, messages end end end