class Object

Public Instance Methods

clear() click to toggle source

Stop and delete all connections.

# File lib/patchmaster/irb/irb.rb, line 37
def clear
  patch.stop
  patch.connections = []
  patch.start
end
dsl() click to toggle source
# File lib/patchmaster/irb/irb.rb, line 27
def dsl
  PM::IRB.instance.dsl
end
method_missing(sym, *args) click to toggle source
Calls superclass method
# File lib/patchmaster/irb/irb.rb, line 53
def method_missing(sym, *args)
  pm = PM::PatchMaster.instance
  if dsl.respond_to?(sym)
    patch.stop
    dsl.send(sym, *args)
    if sym == :input || sym == :inp
      pm.inputs.last.start
    end
    patch.start
  elsif pm.respond_to?(sym)
    pm.send(sym, *args)
  else
    super
  end
end
panic!() click to toggle source

The “panic” command is handled by the PM::DSL instance. This version (panic!) tells that panic to send all all-notes-off messages.

# File lib/patchmaster/irb/irb.rb, line 49
def panic!
  PM::PatchMaster.instance.panic(true)
end
patch() click to toggle source

Return the current (only) patch.

# File lib/patchmaster/irb/irb.rb, line 32
def patch
  dsl.instance_variable_get(:@patch)
end
pm() click to toggle source

Helper methods

# File lib/patchmaster/web/sinatra_app.rb, line 9
def pm
  @pm ||= PM::SinatraApp.instance.pm
end
pm_help() click to toggle source
# File lib/patchmaster/irb/irb.rb, line 43
def pm_help
  puts IO.read(File.join(File.dirname(__FILE__), 'irb_help.txt'))
end
return_status(opts={}) click to toggle source
# File lib/patchmaster/web/sinatra_app.rb, line 13
def return_status(opts={})
  pm = pm()
  status = {
    :lists => pm.song_lists.map(&:name),
    :list => pm.song_list.name,
    :songs => pm.song_list.songs.map(&:name),
    :triggers => pm.inputs.collect do |instrument|
      instrument.triggers.collect { |trigger| ":#{instrument.sym} #{trigger.to_s}" }
    end.flatten
  }
  if pm.song
    status[:song] = {
      :name => pm.song.name,
      :patches => pm.song.patches.map(&:name)
    }
    if pm.patch
      status[:patch] = {
        :name => pm.patch.name,
        :connections => pm.patch.connections.collect do |conn|
          {
            :input => conn.input.name,
            :input_chan => conn.input_chan ? conn.input_chan + 1 : 'all',
            :output => conn.output.name,
            :output_chan => conn.output_chan + 1,
            :pc => conn.pc_prog.to_s,
            :zone => conn.zone ? [conn.note_num_to_name(conn.zone.begin),
                                  conn.note_num_to_name(conn.zone.end)] : '',
            :xpose => conn.xpose.to_s,
            :filter => conn.filter.to_s
          }
        end
      }
    end
  end
  json status.merge(opts)
end