class Shmidi::Button

Constants

CTYPE

Attributes

counter[R]

Public Class Methods

new(socket, channel, note, pressed = false) click to toggle source
Calls superclass method Shmidi::Control::new
# File lib/shmidi/controls/button.rb, line 8
def initialize(socket, channel, note, pressed = false)
  super(socket, channel, note)
  @pressed = pressed
  init
end

Public Instance Methods

init() click to toggle source
# File lib/shmidi/controls/button.rb, line 14
def init
  @counter = 0
  @__on_press = []
  socket.on_event(channel, :on, note) do |event|
    @pressed = true
    @counter += 1 # intentionaly before handlers
    Shmidi.TRACE {"#{CTYPE}\t#{id}\tPRESSED\t#{event.value}"}
    @__on_press.each { |b| b.call(self) }
  end

  @__on_release = []
  socket.on_event(channel, :off, note) do |event|
    @pressed = false
    Shmidi.TRACE {"#{CTYPE}\t#{id}\tRELEASE\t#{event.value}"}
    @__on_release.each { |b| b.call(self) }
    @counter += 1 # intentionaly after handlers
  end
end
on_press(&block) click to toggle source
# File lib/shmidi/controls/button.rb, line 40
def on_press(&block)
  @__on_press << block
end
on_release(&block) click to toggle source
# File lib/shmidi/controls/button.rb, line 47
def on_release(&block)
  @__on_release << block
end
pressed?() click to toggle source
# File lib/shmidi/controls/button.rb, line 37
def pressed?
  !!@pressed
end
released?() click to toggle source
# File lib/shmidi/controls/button.rb, line 44
def released?
  !@pressed
end
reset() click to toggle source
# File lib/shmidi/controls/button.rb, line 33
def reset
  @pressed = false
end