ffi-coremidi 0.3.8 → 0.3.9

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b89ec50ebb1e9fd6bca17f28dbfb065e85edb4ee
4
- data.tar.gz: d213dd0c938562dab97afe5d262fec5fcb1b491d
3
+ metadata.gz: 548ce7a99e6cb8697066d0d52ce5884efd8437dd
4
+ data.tar.gz: 033b84506aafc25fbd008bda1e808ce22aea5a78
5
5
  SHA512:
6
- metadata.gz: 810f3b9da5ec4e3bc9f85962fc82e56fa6e41fb022bae10364bdf57285b3a8d448a770eac869955f522f23fb6a6ded6c314eb6a924d5453eabad8cdbfd840323
7
- data.tar.gz: e7f2022a340fe38364d409e4c26cf30a5721cd367e9174a8b3c57f38bd1441f5e9ece9337a505a0aa2a775ae247e45832e1e1abb643e3b224a7b3701ebfc0adc
6
+ metadata.gz: '09b13413a37eecc61cfeb931780fe721410a37a9e523afda53550e98e38e73435849ade03965b8acebd46155d6ee98e689f3d860ecb1d0b337b5f54d146114f7'
7
+ data.tar.gz: 90ec924b77f5fb32ef936712292578f49b6e70d9c7ef28fcc93428333fea229ba88991e976a2c9c59c6e42450755911a458363b377974d7ff7b53349d0f84008
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright 2011-2015 Ari Russo
1
+ Copyright 2011-2017 Ari Russo
2
2
 
3
3
  Licensed under the Apache License, Version 2.0 (the "License");
4
4
  you may not use this file except in compliance with the License.
data/README.md CHANGED
@@ -48,4 +48,4 @@ Also thank you to [Jeremy Voorhis](http://github.com/jvoorhis) for some useful d
48
48
 
49
49
  Apache 2.0, See the file LICENSE
50
50
 
51
- Copyright (c) 2011-2015 [Ari Russo](http://github.com/arirusso)
51
+ Copyright (c) 2011-2017 [Ari Russo](http://github.com/arirusso)
@@ -1,7 +1,10 @@
1
- # ffi-coremidi
2
1
  #
2
+ # ffi-coremidi
3
3
  # Realtime MIDI IO with Ruby for OSX
4
- # (c)2011-2015 Ari Russo
4
+ #
5
+ # (c)2011-2017 Ari Russo
6
+ # https://github.com/arirusso/ffi-coremidi
7
+ #
5
8
 
6
9
  # Libs
7
10
  require "ffi"
@@ -19,5 +22,5 @@ require "coremidi/source"
19
22
  require "coremidi/destination"
20
23
 
21
24
  module CoreMIDI
22
- VERSION = "0.3.8"
25
+ VERSION = "0.3.9"
23
26
  end
@@ -110,7 +110,7 @@ module CoreMIDI
110
110
 
111
111
  # @param [FFI::Pointer] resource A pointer to an underlying struct
112
112
  # @param [String, Symbol] name The property name to get
113
- # @return [Fixnum]
113
+ # @return [Integer]
114
114
  def self.get_int(resource, name)
115
115
  property = API::CF.CFStringCreateWithCString(nil, name.to_s, 0)
116
116
  value = FFI::MemoryPointer.new(:pointer, 32)
@@ -34,7 +34,7 @@ module CoreMIDI
34
34
  alias_method :puts_hex, :puts_s
35
35
 
36
36
  # Send a MIDI message comprised of numeric bytes
37
- # @param [*Fixnum] data Numeric bytes eg 0x90, 0x40, 0x40
37
+ # @param [*Integer] data Numeric bytes eg 0x90, 0x40, 0x40
38
38
  # @return [Boolean]
39
39
  def puts_bytes(*data)
40
40
  type = sysex?(data) ? :sysex : :small
@@ -44,12 +44,12 @@ module CoreMIDI
44
44
  end
45
45
 
46
46
  # Send a MIDI message of indeterminate type
47
- # @param [*Array<Fixnum>, *Array<String>, *Fixnum, *String] args
47
+ # @param [*Array<Integer>, *Array<String>, *Integer, *String] args
48
48
  # @return [Boolean]
49
49
  def puts(*args)
50
50
  case args.first
51
51
  when Array then args.each { |arg| puts(*arg) }
52
- when Fixnum then puts_bytes(*args)
52
+ when Integer then puts_bytes(*args)
53
53
  when String then puts_bytestr(*args)
54
54
  end
55
55
  end
@@ -1,7 +1,7 @@
1
1
  module CoreMIDI
2
2
 
3
- # A MIDI device may have multiple logically distinct sub-components. For example, one device may
4
- # encompass a MIDI synthesizer and a pair of MIDI ports, both addressable via a USB port. Each
3
+ # A MIDI device may have multiple logically distinct sub-components. For example, one device may
4
+ # encompass a MIDI synthesizer and a pair of MIDI ports, both addressable via a USB port. Each
5
5
  # such element of a device is called a MIDI entity.
6
6
  #
7
7
  # https://developer.apple.com/library/ios/documentation/CoreMidi/Reference/MIDIServices_Reference/Reference/reference.html
@@ -11,7 +11,7 @@ module CoreMIDI
11
11
  :id, # Unique Numeric id
12
12
  :name # Device name from coremidi
13
13
 
14
- # @param [Fixnum] id The ID for the device
14
+ # @param [Integer] id The ID for the device
15
15
  # @param [Object] device_pointer The underlying device pointer
16
16
  # @param [Hash] options
17
17
  # @option options [Boolean] :include_offline Whether to include offline entities (default: false)
@@ -21,7 +21,7 @@ module CoreMIDI
21
21
  @entities = []
22
22
  populate(options)
23
23
  end
24
-
24
+
25
25
  # Endpoints for this device
26
26
  # @return [Array<Endpoint>]
27
27
  def endpoints
@@ -32,9 +32,9 @@ module CoreMIDI
32
32
  end
33
33
  endpoints
34
34
  end
35
-
35
+
36
36
  # Assign all of this Device's endpoints an consecutive local id
37
- # @param [Integer] last_id The highest already used endpoint ID
37
+ # @param [Integer] last_id The highest already used endpoint ID
38
38
  # @return [Integer] The highest used endpoint ID after populating this device's endpoints
39
39
  def populate_endpoint_ids(last_id)
40
40
  id = 0
@@ -72,7 +72,7 @@ module CoreMIDI
72
72
 
73
73
  # Has the device list been populated?
74
74
  def self.populated?
75
- !@devices.nil? && !@devices.empty?
75
+ !@devices.nil? && !@devices.empty?
76
76
  end
77
77
 
78
78
  private
@@ -82,7 +82,7 @@ module CoreMIDI
82
82
  @name = API.get_string(@resource, "name")
83
83
  raise RuntimeError.new("Can't get device name") unless @name
84
84
  end
85
-
85
+
86
86
  # All of the endpoints for all devices a consecutive local id
87
87
  def self.populate_endpoint_ids
88
88
  counter = 0
@@ -93,7 +93,7 @@ module CoreMIDI
93
93
  # Populates the entities for this device. These entities are in turn used to gather the endpoints.
94
94
  # @param [Hash] options
95
95
  # @option options [Boolean] :include_offline Whether to include offline entities (default: false)
96
- # @return [Fixnum] The number of entities populated
96
+ # @return [Integer] The number of entities populated
97
97
  def populate_entities(options = {})
98
98
  include_if_offline = options[:include_offline] || false
99
99
  i = 0
@@ -17,7 +17,7 @@ module CoreMIDI
17
17
 
18
18
  alias_method :enabled?, :enabled
19
19
 
20
- # @param [Fixnum] resource_id
20
+ # @param [Integer] resource_id
21
21
  # @param [Entity] entity
22
22
  def initialize(resource_id, entity)
23
23
  @entity = entity
@@ -33,8 +33,8 @@ module CoreMIDI
33
33
  end
34
34
 
35
35
  # Set the id for this endpoint (the id is immutable)
36
- # @param [Fixnum] val
37
- # @return [Fixnum]
36
+ # @param [Integer] val
37
+ # @return [Integer]
38
38
  def id=(id)
39
39
  @id ||= id
40
40
  end
@@ -1,35 +1,35 @@
1
1
  module CoreMIDI
2
2
 
3
- # A MIDI entity can have any number of MIDI endpoints, each of which is a source or destination
4
- # of a 16-channel MIDI stream. By grouping a device's endpoints into entities, the system has
5
- # enough information for an application to make reasonable default assumptions about how to
6
- # communicate in a bi-directional manner with each entity, as is necessary in MIDI librarian
3
+ # A MIDI entity can have any number of MIDI endpoints, each of which is a source or destination
4
+ # of a 16-channel MIDI stream. By grouping a device's endpoints into entities, the system has
5
+ # enough information for an application to make reasonable default assumptions about how to
6
+ # communicate in a bi-directional manner with each entity, as is necessary in MIDI librarian
7
7
  # applications.
8
8
  #
9
9
  # https://developer.apple.com/library/ios/documentation/CoreMidi/Reference/MIDIServices_Reference/Reference/reference.html
10
10
  class Entity
11
11
 
12
- attr_reader :endpoints,
12
+ attr_reader :endpoints,
13
13
  :manufacturer,
14
14
  :model,
15
15
  :name,
16
16
  :resource
17
-
17
+
18
18
  # @param [FFI::Pointer] resource A pointer to the underlying entity
19
19
  # @param [Hash] options
20
20
  # @option options [Boolean] :include_offline Include offline endpoints in the list
21
21
  def initialize(resource, options = {})
22
- @endpoints = {
23
- :source => [],
24
- :destination => []
22
+ @endpoints = {
23
+ :source => [],
24
+ :destination => []
25
25
  }
26
26
  @resource = resource
27
27
  populate(options)
28
28
  end
29
-
29
+
30
30
  # Assign all of this Entity's endpoints an consecutive local id
31
- # @param [Fixnum] starting_id
32
- # @return [Fixnum]
31
+ # @param [Integer] starting_id
32
+ # @return [Integer]
33
33
  def populate_endpoint_ids(starting_id)
34
34
  counter = 0
35
35
  @endpoints.values.flatten.each do |endpoint|
@@ -38,7 +38,7 @@ module CoreMIDI
38
38
  end
39
39
  counter
40
40
  end
41
-
41
+
42
42
  # Is the entity online?
43
43
  # @return [Boolean]
44
44
  def online?
@@ -52,12 +52,12 @@ module CoreMIDI
52
52
  def get_name
53
53
  "#{@manufacturer} #{@model}"
54
54
  end
55
-
55
+
56
56
  # Populate endpoints of a specified type for this entity
57
57
  # @param [Symbol] type The endpoint type eg :source, :destination
58
58
  # @param [Hash] options
59
59
  # @option options [Boolean] :include_offline Include offline endpoints in the list
60
- # @return [Fixnum]
60
+ # @return [Integer]
61
61
  def populate_endpoints_by_type(type, options = {})
62
62
  endpoint_class = Endpoint.get_class(type)
63
63
  num_endpoints = number_of_endpoints(type)
@@ -66,18 +66,18 @@ module CoreMIDI
66
66
  if endpoint.online? || options[:include_offline]
67
67
  @endpoints[type] << endpoint
68
68
  end
69
- end
70
- @endpoints[type].size
69
+ end
70
+ @endpoints[type].size
71
71
  end
72
72
 
73
73
  # Populate the endpoints for this entity
74
74
  # @param [Hash] options
75
75
  # @option options [Boolean] :include_offline Include offline endpoints in the list
76
- # @return [Fixnum]
76
+ # @return [Integer]
77
77
  def populate_endpoints(options = {})
78
78
  @endpoints.keys.map { |type| populate_endpoints_by_type(type, options) }.reduce(&:+)
79
79
  end
80
-
80
+
81
81
  # The number of endpoints for this entity
82
82
  # @param [Symbol] type The endpoint type eg :source, :destination
83
83
  def number_of_endpoints(type)
@@ -86,20 +86,20 @@ module CoreMIDI
86
86
  when :destination then API.MIDIEntityGetNumberOfDestinations(@resource)
87
87
  end
88
88
  end
89
-
89
+
90
90
  # A CFString property from the underlying entity
91
91
  # @param [Symbol, String] name The property name
92
92
  # @return [String, nil]
93
93
  def get_string(name)
94
94
  API.get_string(@resource, name)
95
95
  end
96
-
96
+
97
97
  # An Integer property from the underlying entity
98
98
  # @param [Symbol, String] name The property name
99
- # @return [Fixnum, nil]
99
+ # @return [Integer, nil]
100
100
  def get_int(name)
101
101
  API.get_int(@resource, name)
102
- end
102
+ end
103
103
 
104
104
  # Populate the entity properties from the underlying resource
105
105
  # @param [Hash] options
@@ -121,7 +121,7 @@ module CoreMIDI
121
121
  private
122
122
 
123
123
  # Add a single message to the buffer
124
- # @param [Array<Fixnum>] bytes Message data
124
+ # @param [Array<Integer>] bytes Message data
125
125
  # @param [Float] timestamp The system float timestamp
126
126
  # @return [Array<Hash>] The resulting buffer
127
127
  def enqueue_message(bytes, timestamp)
@@ -162,7 +162,7 @@ module CoreMIDI
162
162
 
163
163
  # Get MIDI messages from the given CoreMIDI packet list
164
164
  # @param [API::MIDIPacketList] new_packets The packet list
165
- # @return [Array<Array<Fixnum>>] A collection of MIDI messages
165
+ # @return [Array<Array<Integer>>] A collection of MIDI messages
166
166
  def get_messages(packet_list)
167
167
  count = packet_list[:numPackets]
168
168
  first = packet_list[:packet][0]
@@ -186,8 +186,8 @@ module CoreMIDI
186
186
  end
187
187
 
188
188
  # Get the next index for "length" from the blob of MIDI data
189
- # @param [Array<Fixnum>] data
190
- # @return [Fixnum]
189
+ # @param [Array<Integer>] data
190
+ # @return [Integer]
191
191
  def find_next_length_index(data)
192
192
  last_is_zero = false
193
193
  data.each_with_index do |num, i|
@@ -204,7 +204,7 @@ module CoreMIDI
204
204
  end
205
205
 
206
206
  # Timestamp for a received MIDI message
207
- # @return [Fixnum]
207
+ # @return [Integer]
208
208
  def timestamp(now)
209
209
  (now - @start_time) * 1000
210
210
  end
@@ -6,10 +6,10 @@ module CoreMIDI
6
6
  extend self
7
7
 
8
8
  # Convert an array of numeric byes to a hex string (e.g. [0x90, 0x40, 0x40] becomes "904040")
9
- # @param [Array<Fixnum>] bytes
9
+ # @param [Array<Integer>] bytes
10
10
  # @return [String]
11
11
  def numeric_bytes_to_hex_string(bytes)
12
- string_bytes = bytes.map do |byte|
12
+ string_bytes = bytes.map do |byte|
13
13
  str = byte.to_s(16).upcase
14
14
  str = "0" + str if byte < 16
15
15
  str
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ffi-coremidi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.8
4
+ version: 0.3.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ari Russo
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-31 00:00:00.000000000 Z
11
+ date: 2017-06-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest
@@ -132,7 +132,7 @@ files:
132
132
  - test/io_test.rb
133
133
  homepage: http://github.com/arirusso/ffi-coremidi
134
134
  licenses:
135
- - Apache 2.0
135
+ - Apache-2.0
136
136
  metadata: {}
137
137
  post_install_message:
138
138
  rdoc_options: []
@@ -150,7 +150,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
150
150
  version: 1.3.6
151
151
  requirements: []
152
152
  rubyforge_project: ffi-coremidi
153
- rubygems_version: 2.4.6
153
+ rubygems_version: 2.6.8
154
154
  signing_key:
155
155
  specification_version: 4
156
156
  summary: Realtime MIDI IO with Ruby for OSX