class Shmidi::Clock

Public Class Methods

new(socket, delay = 0.25) click to toggle source
# File lib/shmidi/clock.rb, line 8
def initialize(socket, delay = 0.25)
  @socket = socket
  @delay = delay
  @buffer = []
  @thread = Thread.new do
    loop do
      begin
        buf = filter
        Socket[@socket].push(buf)
        buf.each do |event|
          event.destination.push(true)
        end
        wait
      rescue
        Shmidi.ON_EXCEPTION
      end
    end
  end
end

Public Instance Methods

sync(event) click to toggle source
# File lib/shmidi/clock.rb, line 28
def sync(event)
  event.destination = Queue.new
  @buffer << event
  event.destination.pop
end

Protected Instance Methods

filter() click to toggle source
# File lib/shmidi/clock.rb, line 36
def filter
  b = @buffer
  @buffer = []
  b
end
wait() click to toggle source
# File lib/shmidi/clock.rb, line 42
def wait
  sleep(@delay)
end