Class: CoreMIDI::Source

Inherits:
Object
  • Object
show all
Includes:
Endpoint
Defined in:
lib/coremidi/source.rb

Overview

Type of endpoint used for input

Instance Attribute Summary

Attributes included from Endpoint

#enabled, #entity, #id, #resource_id, #type

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Endpoint

all_by_type, destinations, get_class, #initialize, #online?, sources

Class Method Details

.allArray<Source>

All input endpoints

Returns:



99
100
101
# File 'lib/coremidi/source.rb', line 99

def self.all
  Endpoint.all_by_type[:source]
end

.clearObject



245
246
247
248
# File 'lib/coremidi/source.rb', line 245

def @buffer.clear
  super
  @pointer = 0
end

.firstSource

Shortcut to the first available input endpoint

Returns:



87
88
89
# File 'lib/coremidi/source.rb', line 87

def self.first
  Endpoint.first(:source)
end

.lastSource

Shortcut to the last available input endpoint

Returns:



93
94
95
# File 'lib/coremidi/source.rb', line 93

def self.last
  Endpoint.last(:source)
end

Instance Method Details

#bufferArray<Hash>

The buffer of received messages since instantiation

Returns:

  • (Array<Hash>)


10
11
12
13
# File 'lib/coremidi/source.rb', line 10

def buffer
  fill_buffer
  @buffer
end

#closeBoolean

Close this input

Returns:

  • (Boolean)


68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# File 'lib/coremidi/source.rb', line 68

def close
  #error = API.MIDIPortDisconnectSource( @handle, @resource )
  #raise "MIDIPortDisconnectSource returned error code #{error}" unless error.zero?
  #error = API.MIDIClientDispose(@handle)
  #raise "MIDIClientDispose returned error code #{error}" unless error.zero?
  #error = API.MIDIPortDispose(@handle)
  #raise "MIDIPortDispose returned error code #{error}" unless error.zero?
  #error = API.MIDIEndpointDispose(@resource)
  #raise "MIDIEndpointDispose returned error code #{error}" unless error.zero?
  if @enabled
    @enabled = false
    true
  else
    false
  end
end

#enable(options = {}, &block) ⇒ Source Also known as: open, start

Enable this the input for use; can be passed a block

Returns:



52
53
54
55
56
57
58
59
60
61
62
# File 'lib/coremidi/source.rb', line 52

def enable(options = {}, &block)
  @enabled = true unless @enabled
  if block_given?
    begin
      yield(self)
    ensure
      close
    end
  end
  self
end

#getsArray<Hash> Also known as: read

An array of MIDI event hashes as such:

[
  { :data => [144, 60, 100], :timestamp => 1024 },
  { :data => [128, 60, 100], :timestamp => 1100 },
  { :data => [144, 40, 120], :timestamp => 1200 }
]

The data is an array of Numeric bytes The timestamp is the number of millis since this input was enabled

Returns:

  • (Array<Hash>)


27
28
29
# File 'lib/coremidi/source.rb', line 27

def gets
  fill_buffer
end

#gets_sArray<Hash> Also known as: gets_bytestr

Same as Source#gets except that it returns message data as string of hex digits as such:

[
  { :data => "904060", :timestamp => 904 },
  { :data => "804060", :timestamp => 1150 },
  { :data => "90447F", :timestamp => 1300 }
]

Returns:

  • (Array<Hash>)


41
42
43
44
45
46
47
# File 'lib/coremidi/source.rb', line 41

def gets_s
  messages = gets
  messages.each do |message|
    message[:data] = TypeConversion.numeric_bytes_to_hex_string(message[:data])
  end
  messages
end