ffi-coremidi 0.3.2 → 0.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 783d35848d8b43aad819797077531c839855b609
4
- data.tar.gz: 3d5ddc1fdd6c4ba3334a3239230c70a30437b093
3
+ metadata.gz: 139d11b8026aa7260adbd6388fb4872b7773409e
4
+ data.tar.gz: 1254869a8df40213da841a526d06fb30a8e55c3f
5
5
  SHA512:
6
- metadata.gz: 930ba168f35d3a27c4f29a9ebea265d431c9183ea207232aea9665da7a98a90b09c4961707dae42a81a80384d85199d41224648a1c0c60f19da4f00419b3e50c
7
- data.tar.gz: 37317428e46af018b23da9af3df7a5767d61ddcd87cf060c7261b3df526ce8389baaf7c14faff6e9f772c3ed088e63e8a1797e0f66eaca9cb63b089a5394c917
6
+ metadata.gz: 93cd4cc3d7c7415c6e5d90aa1b6794598639701cb528adf07c6ee5cd7051a65c250858b62c86ae36062a8cbf281e230452f8876868dd420286d5cfb24122c3a6
7
+ data.tar.gz: a71bcd64f2c44eb5e80e2bdd1912a3459ab82f0e9e94f0532e98c5ac7b214c0337636db2e76fbf2fc5a12248721cedef96878c9258421773692641110cb88e6c
@@ -19,5 +19,5 @@ require "coremidi/source"
19
19
  require "coremidi/destination"
20
20
 
21
21
  module CoreMIDI
22
- VERSION = "0.3.2"
22
+ VERSION = "0.3.3"
23
23
  end
@@ -122,7 +122,11 @@ module CoreMIDI
122
122
 
123
123
  private
124
124
 
125
- def enqueue_message(bytes, time)
125
+ # Add a single message to the buffer
126
+ # @param [Array<Fixnum>] bytes Message data
127
+ # @param [Float] timestamp The system float timestamp
128
+ # @return [Array<Hash>] The resulting buffer
129
+ def enqueue_message(bytes, timestamp)
126
130
  if bytes.first.eql?(0xF0) || !@sysex_buffer.empty?
127
131
  @sysex_buffer += bytes
128
132
  if bytes.last.eql?(0xF7)
@@ -130,7 +134,8 @@ module CoreMIDI
130
134
  @sysex_buffer.clear
131
135
  end
132
136
  end
133
- @buffer << get_message_formatted(bytes, time) if @sysex_buffer.empty?
137
+ @buffer << get_message_formatted(bytes, timestamp) if @sysex_buffer.empty?
138
+ @buffer
134
139
  end
135
140
 
136
141
  # New MIDI messages from the queue
@@ -157,29 +162,36 @@ module CoreMIDI
157
162
  end
158
163
  end
159
164
 
160
- def get_messages(new_packets)
161
- count = new_packets[:numPackets]
162
- first = new_packets[:packet][0]
165
+ # Get MIDI messages from the given CoreMIDI packet list
166
+ # @param [API::MIDIPacketList] new_packets The packet list
167
+ # @return [Array<Array<Fixnum>>] A collection of MIDI messages
168
+ def get_messages(packet_list)
169
+ count = packet_list[:numPackets]
170
+ first = packet_list[:packet][0]
163
171
  data = first[:data].to_a
164
172
  messages = []
165
173
  messages << data.slice!(0, first[:length])
166
174
  (count - 1).times do |i|
167
- length_index = 8
168
- message_length = data[length_index]
169
- message_start_index = length_index + 2
170
- packet_end_index = message_start_index + message_length
171
- packet = data.slice!(0..packet_end_index)
172
- messages << packet.slice(message_start_index, message_length)
175
+ message_length = data[8]
176
+ unless message_length.nil?
177
+ packet_end_index = 10 + message_length
178
+ if data.length >= packet_end_index + 1
179
+ packet = data.slice!(0..packet_end_index)
180
+ messages << packet.slice(10, message_length)
181
+ end
182
+ end
173
183
  end
174
184
  messages
175
185
  end
176
186
 
177
187
  # Timestamp for a received MIDI message
188
+ # @return [Fixnum]
178
189
  def timestamp(now)
179
190
  (now - @start_time) * 1000
180
191
  end
181
192
 
182
193
  # Give a message its timestamp and package it in a Hash
194
+ # @return [Hash]
183
195
  def get_message_formatted(raw, time)
184
196
  {
185
197
  :data => raw,
@@ -188,6 +200,7 @@ module CoreMIDI
188
200
  end
189
201
 
190
202
  # Initialize a coremidi port for this endpoint
203
+ # @return [Boolean]
191
204
  def initialize_port
192
205
  @callback = get_event_callback
193
206
  port = API.create_midi_input_port(@client, @resource_id, @name, @callback)
@@ -197,6 +210,7 @@ module CoreMIDI
197
210
  end
198
211
 
199
212
  # Initialize the MIDI message buffer
213
+ # @return [Boolean]
200
214
  def initialize_buffer
201
215
  @pointer = 0
202
216
  @buffer = []
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ffi-coremidi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ari Russo