unimidi 0.1.6-i386-mingw32 → 0.1.10-i386-mingw32

Sign up to get free protection for your applications and to get access to all the features.
data/LICENSE CHANGED
@@ -1,13 +1,13 @@
1
- Copyright 2010-2011 Ari Russo
2
-
3
- Licensed under the Apache License, Version 2.0 (the "License");
4
- you may not use this file except in compliance with the License.
5
- You may obtain a copy of the License at
6
-
7
- http://www.apache.org/licenses/LICENSE-2.0
8
-
9
- Unless required by applicable law or agreed to in writing, software
10
- distributed under the License is distributed on an "AS IS" BASIS,
11
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- See the License for the specific language governing permissions and
1
+ Copyright 2010-2011 Ari Russo
2
+
3
+ Licensed under the Apache License, Version 2.0 (the "License");
4
+ you may not use this file except in compliance with the License.
5
+ You may obtain a copy of the License at
6
+
7
+ http://www.apache.org/licenses/LICENSE-2.0
8
+
9
+ Unless required by applicable law or agreed to in writing, software
10
+ distributed under the License is distributed on an "AS IS" BASIS,
11
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ See the License for the specific language governing permissions and
13
13
  limitations under the License.
data/README.rdoc CHANGED
@@ -1,55 +1,59 @@
1
- = UniMIDI
2
-
3
- == Summary
4
-
5
- Platform independent realtime MIDI input and output for Ruby.
6
-
7
- == Features
8
-
9
- * Supports Linux, JRuby, OSX, Windows and Cygwin
10
- * Both input and output to and from multiple devices concurrently
11
- * Agnostically handle different MIDI and SysEx Message types
12
-
13
- == Requirements
14
-
15
- Platform
16
-
17
- * JRuby: {midi-jruby}[http://github.com/arirusso/midi-jruby]
18
- * Linux: {alsa-rawmidi}[http://github.com/arirusso/alsa-rawmidi]
19
- * OSX: {ffi-coremidi}[http://github.com/arirusso/ffi-coremidi]
20
- * Windows/Cygwin: {midi-winmm}[http://github.com/arirusso/midi-winmm]
21
-
22
- == Install
23
-
24
- gem install unimidi
25
-
26
- == Examples
27
-
28
- * {input}[http://github.com/arirusso/unimidi/blob/master/examples/input.rb]
29
- * {output}[http://github.com/arirusso/unimidi/blob/master/examples/output.rb]
30
-
31
- == Tests
32
-
33
- * please see {test/config.rb}[http://github.com/arirusso/unimidi/blob/master/test/config.rb] before running tests
34
-
35
- == Documentation
36
-
37
- * {rdoc}[http://rdoc.info/gems/unimidi]
38
-
39
- == If you are using JRuby
40
-
41
- A couple of notes
42
-
43
- * You must be in 1.9 mode. This is normally accomplished by passing --1.9 to JRuby at the command line. For testing in 1.9 mode, use
44
- jruby --1.9 -S rake test
45
- * javax.sound has some documented issues with SysEx messages in some versions OSX Snow Leopard which do affect this library.
46
-
47
- == Author
48
-
49
- {Ari Russo}[http://github.com/arirusso] <ari.russo at gmail.com>
50
-
51
- == License
52
-
53
- Apache 2.0, See the file LICENSE
54
-
55
- Copyright (c) 2010-2011 Ari Russo
1
+ = UniMIDI
2
+
3
+ == Summary
4
+
5
+ Platform independent realtime MIDI input and output for Ruby.
6
+
7
+ == Features
8
+
9
+ * Supports Linux, JRuby, OSX, Windows and Cygwin
10
+ * Both input and output to and from multiple devices concurrently
11
+ * Agnostically handle different MIDI and SysEx Message types
12
+
13
+ == Requirements
14
+
15
+ Platform
16
+
17
+ * JRuby: {midi-jruby}[http://github.com/arirusso/midi-jruby]
18
+ * Linux: {alsa-rawmidi}[http://github.com/arirusso/alsa-rawmidi]
19
+ * OSX: {ffi-coremidi}[http://github.com/arirusso/ffi-coremidi]
20
+ * Windows/Cygwin: {midi-winmm}[http://github.com/arirusso/midi-winmm]
21
+
22
+ == Install
23
+
24
+ gem install unimidi
25
+
26
+ No compilation required
27
+
28
+ == Examples
29
+
30
+ * {input}[http://github.com/arirusso/unimidi/blob/master/examples/input.rb]
31
+ * {output}[http://github.com/arirusso/unimidi/blob/master/examples/output.rb]
32
+
33
+ {more}[http://github.com/arirusso/unimidi/blob/master/examples]
34
+
35
+ == Tests
36
+
37
+ * please see {test/config.rb}[http://github.com/arirusso/unimidi/blob/master/test/config.rb] before running tests
38
+
39
+ == Documentation
40
+
41
+ * {rdoc}[http://rdoc.info/gems/unimidi]
42
+
43
+ == If you are using JRuby
44
+
45
+ A couple of notes
46
+
47
+ * You must be in 1.9 mode. This is normally accomplished by passing --1.9 to JRuby at the command line. For testing in 1.9 mode, use
48
+ jruby --1.9 -S rake test
49
+ * javax.sound has some documented issues with SysEx messages in some versions OSX Snow Leopard which do affect this library.
50
+
51
+ == Author
52
+
53
+ {Ari Russo}[http://github.com/arirusso] <ari.russo at gmail.com>
54
+
55
+ == License
56
+
57
+ Apache 2.0, See the file LICENSE
58
+
59
+ Copyright (c) 2010-2011 Ari Russo
data/bin/unimidi ADDED
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env ruby
2
+ $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', 'lib')
3
+
4
+ require 'unimidi'
5
+
6
+ opts = ARGV.length > 1 ? ARGV.slice(1, ARGV.length-1) : {}
7
+
8
+ raise "No command specified" if ARGV.first.nil?
9
+
10
+ UniMIDI.command(ARGV.first.to_sym, opts)
data/lib/unimidi.rb CHANGED
@@ -1,22 +1,31 @@
1
- #!/usr/bin/env ruby
2
- #
3
- # A realtime MIDI interface for Ruby
4
- # (c)2010-2011 Ari Russo and licensed under the Apache 2.0 License
5
- #
6
-
7
- module UniMIDI
8
-
9
- VERSION = "0.1.6"
10
-
11
- end
12
-
13
- require 'forwardable'
14
-
15
- require 'unimidi/congruous_api_adapter'
16
- require 'unimidi/platform'
17
- require 'unimidi/type_conversion'
18
-
19
- module UniMIDI
20
- extend(Platform.instance.interface)
21
- include(Platform.instance.interface)
22
- end
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # A realtime MIDI interface for Ruby
4
+ # (c)2010-2011 Ari Russo and licensed under the Apache 2.0 License
5
+ #
6
+
7
+ module UniMIDI
8
+
9
+ VERSION = "0.1.10"
10
+
11
+ end
12
+
13
+ require 'forwardable'
14
+
15
+ require 'unimidi/congruous_api_adapter'
16
+ require 'unimidi/platform'
17
+ require 'unimidi/type_conversion'
18
+
19
+ module UniMIDI
20
+ extend(Platform.instance.interface)
21
+ include(Platform.instance.interface)
22
+
23
+ def self.command(command, options = {})
24
+ if [:l, :list, :list_devices].include?(command)
25
+ require 'pp'
26
+ pp Device::all
27
+ else
28
+ raise "Command #{command.to_s} not found"
29
+ end
30
+ end
31
+ end
@@ -1,26 +1,26 @@
1
- #!/usr/bin/env ruby
2
- #
3
-
4
- require 'alsa-rawmidi'
5
-
6
- module UniMIDI
7
-
8
- module AlsaRawMIDIAdapter
9
-
10
- class Input < CongruousApiInput
11
- defer_to AlsaRawMIDI::Input
12
- end
13
-
14
- class Output < CongruousApiOutput
15
- defer_to AlsaRawMIDI::Output
16
- end
17
-
18
- class Device < CongruousApiDevice
19
- defer_to AlsaRawMIDI::Device
20
- input_class Input
21
- output_class Output
22
- end
23
-
24
- end
25
-
1
+ #!/usr/bin/env ruby
2
+ #
3
+
4
+ require 'alsa-rawmidi'
5
+
6
+ module UniMIDI
7
+
8
+ module AlsaRawMIDIAdapter
9
+
10
+ class Input < CongruousApiInput
11
+ defer_to AlsaRawMIDI::Input
12
+ end
13
+
14
+ class Output < CongruousApiOutput
15
+ defer_to AlsaRawMIDI::Output
16
+ end
17
+
18
+ class Device < CongruousApiDevice
19
+ defer_to AlsaRawMIDI::Device
20
+ input_class Input
21
+ output_class Output
22
+ end
23
+
24
+ end
25
+
26
26
  end
@@ -1,26 +1,26 @@
1
- #!/usr/bin/env ruby
2
- #
3
-
4
- require 'coremidi'
5
-
6
- module UniMIDI
7
-
8
- module CoreMIDIAdapter
9
-
10
- class Input < CongruousApiInput
11
- defer_to CoreMIDI::Input
12
- end
13
-
14
- class Output < CongruousApiOutput
15
- defer_to CoreMIDI::Output
16
- end
17
-
18
- class Device < CongruousApiDevice
19
- defer_to CoreMIDI::Entity
20
- input_class Input
21
- output_class Output
22
- end
23
-
24
- end
25
-
1
+ #!/usr/bin/env ruby
2
+ #
3
+
4
+ require 'coremidi'
5
+
6
+ module UniMIDI
7
+
8
+ module CoreMIDIAdapter
9
+
10
+ class Input < CongruousApiInput
11
+ defer_to CoreMIDI::Input
12
+ end
13
+
14
+ class Output < CongruousApiOutput
15
+ defer_to CoreMIDI::Output
16
+ end
17
+
18
+ class Device < CongruousApiDevice
19
+ defer_to CoreMIDI::Entity
20
+ input_class Input
21
+ output_class Output
22
+ end
23
+
24
+ end
25
+
26
26
  end
@@ -1,26 +1,26 @@
1
- #!/usr/bin/env ruby
2
- #
3
-
4
- require 'midi-jruby'
5
-
6
- module UniMIDI
7
-
8
- module MIDIJRubyAdapter
9
-
10
- class Input < CongruousApiInput
11
- defer_to MIDIJRuby::Input
12
- end
13
-
14
- class Output < CongruousApiOutput
15
- defer_to MIDIJRuby::Output
16
- end
17
-
18
- class Device < CongruousApiDevice
19
- defer_to MIDIJRuby::Device
20
- input_class Input
21
- output_class Output
22
- end
23
-
24
- end
25
-
1
+ #!/usr/bin/env ruby
2
+ #
3
+
4
+ require 'midi-jruby'
5
+
6
+ module UniMIDI
7
+
8
+ module MIDIJRubyAdapter
9
+
10
+ class Input < CongruousApiInput
11
+ defer_to MIDIJRuby::Input
12
+ end
13
+
14
+ class Output < CongruousApiOutput
15
+ defer_to MIDIJRuby::Output
16
+ end
17
+
18
+ class Device < CongruousApiDevice
19
+ defer_to MIDIJRuby::Device
20
+ input_class Input
21
+ output_class Output
22
+ end
23
+
24
+ end
25
+
26
26
  end
@@ -1,26 +1,26 @@
1
- #!/usr/bin/env ruby
2
- #
3
-
4
- require 'midi-winmm'
5
-
6
- module UniMIDI
7
-
8
- module MIDIWinMMAdapter
9
-
10
- class Input < CongruousApiInput
11
- defer_to MIDIWinMM::Input
12
- end
13
-
14
- class Output < CongruousApiOutput
15
- defer_to MIDIWinMM::Output
16
- end
17
-
18
- class Device < CongruousApiDevice
19
- defer_to MIDIWinMM::Device
20
- input_class Input
21
- output_class Output
22
- end
23
-
24
- end
25
-
1
+ #!/usr/bin/env ruby
2
+ #
3
+
4
+ require 'midi-winmm'
5
+
6
+ module UniMIDI
7
+
8
+ module MIDIWinMMAdapter
9
+
10
+ class Input < CongruousApiInput
11
+ defer_to MIDIWinMM::Input
12
+ end
13
+
14
+ class Output < CongruousApiOutput
15
+ defer_to MIDIWinMM::Output
16
+ end
17
+
18
+ class Device < CongruousApiDevice
19
+ defer_to MIDIWinMM::Device
20
+ input_class Input
21
+ output_class Output
22
+ end
23
+
24
+ end
25
+
26
26
  end
@@ -1,213 +1,215 @@
1
- #!/usr/bin/env ruby
2
- #
3
-
4
- module UniMIDI
5
-
6
- module CongruousApiAdapter
7
-
8
- module Device
9
-
10
- def initialize(device_obj)
11
- @device = device_obj
12
- @id = @device.id
13
- @name = @device.name
14
- end
15
-
16
- # enable the device for use, can be passed a block to which the device will be passed back
17
- def open(*a, &block)
18
- @device.open(*a)
19
- unless block.nil?
20
- begin
21
- yield(self)
22
- ensure
23
- close
24
- end
25
- else
26
- self
27
- end
28
- end
29
-
30
- # close the device
31
- def close(*a)
32
- @device.close(*a)
33
- end
34
-
35
- def self.included(base)
36
- base.send(:attr_reader, :name)
37
- base.send(:attr_reader, :id)
38
- end
39
-
40
- module ClassMethods
41
-
42
- # returns the first device for this class
43
- def first(*a)
44
- dev = @deference[self].first(*a)
45
- raise 'Device not found' if dev.nil?
46
- new(dev)
47
- end
48
-
49
- # returns the last device for this class
50
- def last(*a)
51
- dev = @deference[self].last(*a)
52
- raise 'Device not found' if dev.nil?
53
- new(dev)
54
- end
55
-
56
- # returns all devices in an array
57
- def all
58
- all_by_type.values.flatten
59
- end
60
-
61
- # returns all devices as a hash as such
62
- # { :input => [input devices], :output => [output devices] }
63
- def all_by_type
64
- {
65
- :input => @deference[self].all_by_type[:input].map { |d| @input_class.new(d) },
66
- :output => @deference[self].all_by_type[:output].map { |d| @output_class.new(d) }
67
- }
68
- end
69
-
70
- def defer_to(klass)
71
- @deference ||= {}
72
- @deference[self] = klass
73
- end
74
-
75
- def input_class(klass)
76
- @input_class = klass
77
- end
78
-
79
- def output_class(klass)
80
- @output_class = klass
81
- end
82
-
83
- end
84
-
85
- end
86
-
87
- end
88
-
89
- class CongruousApiInput
90
-
91
- include CongruousApiAdapter::Device
92
- extend CongruousApiAdapter::Device::ClassMethods
93
- extend Forwardable
94
-
95
- def_delegators :@device, :buffer
96
-
97
- #
98
- # returns an array of MIDI event hashes as such:
99
- # [
100
- # { :data => [144, 60, 100], :timestamp => 1024 },
101
- # { :data => [128, 60, 100], :timestamp => 1100 },
102
- # { :data => [144, 40, 120], :timestamp => 1200 }
103
- # ]
104
- #
105
- # the data is an array of Numeric bytes
106
- # the timestamp is the number of millis since this input was enabled
107
- #
108
- def gets(*a)
109
- @device.gets(*a)
110
- end
111
-
112
- #
113
- # same as gets but returns message data as string of hex digits as such:
114
- # [
115
- # { :data => "904060", :timestamp => 904 },
116
- # { :data => "804060", :timestamp => 1150 },
117
- # { :data => "90447F", :timestamp => 1300 }
118
- # ]
119
- #
120
- def gets_s(*a)
121
- @device.gets_s(*a)
122
- end
123
- alias_method :gets_bytestr, :gets_s
124
- alias_method :gets_hex, :gets_s
125
-
126
- #
127
- # returns an array of data bytes such as
128
- # [144, 60, 100, 128, 60, 100, 144, 40, 120]
129
- #
130
- def gets_data(*a)
131
- arr = gets
132
- arr.map { |msg| msg[:data] }.inject { |a,b| a + b }
133
- end
134
-
135
- #
136
- # returns a string of data such as
137
- # "90406080406090447F"
138
- #
139
- def gets_data_s(*a)
140
- arr = gets_bytestr
141
- arr.map { |msg| msg[:data] }.join
142
- end
143
- alias_method :gets_data_bytestr, :gets_data_s
144
- alias_method :gets_data_hex, :gets_data_s
145
-
146
- # clears the buffer
147
- def clear_buffer
148
- @device.buffer.clear
149
- end
150
-
151
- # gets any messages in the buffer in the same format as CongruousApiInput#gets
152
- def gets_buffer(*a)
153
- @device.buffer
154
- end
155
-
156
- # gets any messages in the buffer in the same format as CongruousApiInput#gets_s
157
- def gets_buffer_s(*a)
158
- @device.buffer.map { |msg| msg[:data] = TypeConversion.numeric_byte_array_to_hex_string(msg[:data]); msg }
159
- end
160
-
161
- # gets any messages in the buffer in the same format as CongruousApiInput#gets_data
162
- def gets_buffer_data(*a)
163
- @device.buffer.map { |msg| msg[:data] }
164
- end
165
-
166
- # returns all inputs
167
- def self.all
168
- @deference[self].all.map { |d| new(d) }
169
- end
170
-
171
- end
172
-
173
- class CongruousApiOutput
174
-
175
- include CongruousApiAdapter::Device
176
- extend CongruousApiAdapter::Device::ClassMethods
177
-
178
- # sends a message to the output. the message can be:
179
- #
180
- # bytes eg output.puts(0x90, 0x40, 0x40)
181
- # an array of bytes eg output.puts([0x90, 0x40, 0x40])
182
- # or a string eg output.puts("904040")
183
- #
184
- def puts(*a)
185
- @device.puts(*a)
186
- end
187
-
188
- # sends a message to the output in a form of a string eg "904040". this method does not do
189
- # type checking and therefore is more performant than puts
190
- def puts_s(*a)
191
- @device.puts_s(*a)
192
- end
193
- alias_method :puts_bytestr, :puts_s
194
- alias_method :puts_hex, :puts_s
195
-
196
- # sends a message to the output in a form of bytes eg output.puts_bytes(0x90, 0x40, 0x40).
197
- # this method does not do type checking and therefore is more performant than puts
198
- def puts_bytes(*a)
199
- @device.puts_bytes(*a)
200
- end
201
-
202
- # returns all outputs
203
- def self.all
204
- @deference[self].all.map { |d| new(d) }
205
- end
206
-
207
- end
208
-
209
- class CongruousApiDevice
210
- extend CongruousApiAdapter::Device::ClassMethods
211
- end
212
-
1
+ #!/usr/bin/env ruby
2
+ #
3
+
4
+ module UniMIDI
5
+
6
+ module CongruousApiAdapter
7
+
8
+ module Device
9
+
10
+ def initialize(device_obj)
11
+ @device = device_obj
12
+ @id = @device.id
13
+ @name = @device.name
14
+ @type = @device.type
15
+ end
16
+
17
+ # enable the device for use, can be passed a block to which the device will be passed back
18
+ def open(*a, &block)
19
+ @device.open(*a)
20
+ unless block.nil?
21
+ begin
22
+ yield(self)
23
+ ensure
24
+ close
25
+ end
26
+ else
27
+ self
28
+ end
29
+ end
30
+
31
+ # close the device
32
+ def close(*a)
33
+ @device.close(*a)
34
+ end
35
+
36
+ def self.included(base)
37
+ base.send(:attr_reader, :name)
38
+ base.send(:attr_reader, :id)
39
+ base.send(:attr_reader, :type)
40
+ end
41
+
42
+ module ClassMethods
43
+
44
+ # returns the first device for this class
45
+ def first(*a)
46
+ dev = @deference[self].first(*a)
47
+ raise 'Device not found' if dev.nil?
48
+ new(dev)
49
+ end
50
+
51
+ # returns the last device for this class
52
+ def last(*a)
53
+ dev = @deference[self].last(*a)
54
+ raise 'Device not found' if dev.nil?
55
+ new(dev)
56
+ end
57
+
58
+ # returns all devices in an array
59
+ def all
60
+ all_by_type.values.flatten
61
+ end
62
+
63
+ # returns all devices as a hash as such
64
+ # { :input => [input devices], :output => [output devices] }
65
+ def all_by_type
66
+ {
67
+ :input => @deference[self].all_by_type[:input].map { |d| @input_class.new(d) },
68
+ :output => @deference[self].all_by_type[:output].map { |d| @output_class.new(d) }
69
+ }
70
+ end
71
+
72
+ def defer_to(klass)
73
+ @deference ||= {}
74
+ @deference[self] = klass
75
+ end
76
+
77
+ def input_class(klass)
78
+ @input_class = klass
79
+ end
80
+
81
+ def output_class(klass)
82
+ @output_class = klass
83
+ end
84
+
85
+ end
86
+
87
+ end
88
+
89
+ end
90
+
91
+ class CongruousApiInput
92
+
93
+ include CongruousApiAdapter::Device
94
+ extend CongruousApiAdapter::Device::ClassMethods
95
+ extend Forwardable
96
+
97
+ def_delegators :@device, :buffer
98
+
99
+ #
100
+ # returns an array of MIDI event hashes as such:
101
+ # [
102
+ # { :data => [144, 60, 100], :timestamp => 1024 },
103
+ # { :data => [128, 60, 100], :timestamp => 1100 },
104
+ # { :data => [144, 40, 120], :timestamp => 1200 }
105
+ # ]
106
+ #
107
+ # the data is an array of Numeric bytes
108
+ # the timestamp is the number of millis since this input was enabled
109
+ #
110
+ def gets(*a)
111
+ @device.gets(*a)
112
+ end
113
+
114
+ #
115
+ # same as gets but returns message data as string of hex digits as such:
116
+ # [
117
+ # { :data => "904060", :timestamp => 904 },
118
+ # { :data => "804060", :timestamp => 1150 },
119
+ # { :data => "90447F", :timestamp => 1300 }
120
+ # ]
121
+ #
122
+ def gets_s(*a)
123
+ @device.gets_s(*a)
124
+ end
125
+ alias_method :gets_bytestr, :gets_s
126
+ alias_method :gets_hex, :gets_s
127
+
128
+ #
129
+ # returns an array of data bytes such as
130
+ # [144, 60, 100, 128, 60, 100, 144, 40, 120]
131
+ #
132
+ def gets_data(*a)
133
+ arr = gets
134
+ arr.map { |msg| msg[:data] }.inject { |a,b| a + b }
135
+ end
136
+
137
+ #
138
+ # returns a string of data such as
139
+ # "90406080406090447F"
140
+ #
141
+ def gets_data_s(*a)
142
+ arr = gets_bytestr
143
+ arr.map { |msg| msg[:data] }.join
144
+ end
145
+ alias_method :gets_data_bytestr, :gets_data_s
146
+ alias_method :gets_data_hex, :gets_data_s
147
+
148
+ # clears the buffer
149
+ def clear_buffer
150
+ @device.buffer.clear
151
+ end
152
+
153
+ # gets any messages in the buffer in the same format as CongruousApiInput#gets
154
+ def gets_buffer(*a)
155
+ @device.buffer
156
+ end
157
+
158
+ # gets any messages in the buffer in the same format as CongruousApiInput#gets_s
159
+ def gets_buffer_s(*a)
160
+ @device.buffer.map { |msg| msg[:data] = TypeConversion.numeric_byte_array_to_hex_string(msg[:data]); msg }
161
+ end
162
+
163
+ # gets any messages in the buffer in the same format as CongruousApiInput#gets_data
164
+ def gets_buffer_data(*a)
165
+ @device.buffer.map { |msg| msg[:data] }
166
+ end
167
+
168
+ # returns all inputs
169
+ def self.all
170
+ @deference[self].all.map { |d| new(d) }
171
+ end
172
+
173
+ end
174
+
175
+ class CongruousApiOutput
176
+
177
+ include CongruousApiAdapter::Device
178
+ extend CongruousApiAdapter::Device::ClassMethods
179
+
180
+ # sends a message to the output. the message can be:
181
+ #
182
+ # bytes eg output.puts(0x90, 0x40, 0x40)
183
+ # an array of bytes eg output.puts([0x90, 0x40, 0x40])
184
+ # or a string eg output.puts("904040")
185
+ #
186
+ def puts(*a)
187
+ @device.puts(*a)
188
+ end
189
+
190
+ # sends a message to the output in a form of a string eg "904040". this method does not do
191
+ # type checking and therefore is more performant than puts
192
+ def puts_s(*a)
193
+ @device.puts_s(*a)
194
+ end
195
+ alias_method :puts_bytestr, :puts_s
196
+ alias_method :puts_hex, :puts_s
197
+
198
+ # sends a message to the output in a form of bytes eg output.puts_bytes(0x90, 0x40, 0x40).
199
+ # this method does not do type checking and therefore is more performant than puts
200
+ def puts_bytes(*a)
201
+ @device.puts_bytes(*a)
202
+ end
203
+
204
+ # returns all outputs
205
+ def self.all
206
+ @deference[self].all.map { |d| new(d) }
207
+ end
208
+
209
+ end
210
+
211
+ class CongruousApiDevice
212
+ extend CongruousApiAdapter::Device::ClassMethods
213
+ end
214
+
213
215
  end
@@ -1,35 +1,35 @@
1
- #!/usr/bin/env ruby
2
- #
3
-
4
- require 'singleton'
5
-
6
- module UniMIDI
7
-
8
- class Platform
9
-
10
- include Singleton
11
-
12
- attr_reader :interface
13
-
14
- def initialize
15
- lib = case RUBY_PLATFORM
16
- when /darwin/ then "ffi-coremidi"
17
- when /java/ then "midi-jruby"
18
- when /linux/ then "alsa-rawmidi"
19
- when /mingw/ then "midi-winmm"
20
- #when /win/ then "midi-winmm"
21
- end
22
- require("unimidi/adapter/#{lib}")
23
- @interface = case RUBY_PLATFORM
24
- when /darwin/ then CoreMIDIAdapter
25
- when /java/ then MIDIJRubyAdapter
26
- when /linux/ then AlsaRawMIDIAdapter
27
- when /mingw/ then MIDIWinMMAdapter
28
- #when /win/ then MIDIWinMMAdapter
29
- end
30
- end
31
-
32
- end
33
-
34
- end
35
-
1
+ #!/usr/bin/env ruby
2
+ #
3
+
4
+ require 'singleton'
5
+
6
+ module UniMIDI
7
+
8
+ class Platform
9
+
10
+ include Singleton
11
+
12
+ attr_reader :interface
13
+
14
+ def initialize
15
+ lib = case RUBY_PLATFORM
16
+ when /darwin/ then "ffi-coremidi"
17
+ when /java/ then "midi-jruby"
18
+ when /linux/ then "alsa-rawmidi"
19
+ when /mingw/ then "midi-winmm"
20
+ #when /win/ then "midi-winmm"
21
+ end
22
+ require("unimidi/adapter/#{lib}")
23
+ @interface = case RUBY_PLATFORM
24
+ when /darwin/ then CoreMIDIAdapter
25
+ when /java/ then MIDIJRubyAdapter
26
+ when /linux/ then AlsaRawMIDIAdapter
27
+ when /mingw/ then MIDIWinMMAdapter
28
+ #when /win/ then MIDIWinMMAdapter
29
+ end
30
+ end
31
+
32
+ end
33
+
34
+ end
35
+
@@ -1,15 +1,15 @@
1
- #!/usr/bin/env ruby
2
- #
3
-
4
- module UniMIDI
5
-
6
- module TypeConversion
7
-
8
- # byte array to string of hex bytes
9
- def numeric_byte_array_to_hex_string(bytes)
10
- bytes.map { |b| b.hex }.join
11
- end
12
-
13
- end
14
-
1
+ #!/usr/bin/env ruby
2
+ #
3
+
4
+ module UniMIDI
5
+
6
+ module TypeConversion
7
+
8
+ # byte array to string of hex bytes
9
+ def numeric_byte_array_to_hex_string(bytes)
10
+ bytes.map { |b| b.hex }.join
11
+ end
12
+
13
+ end
14
+
15
15
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: unimidi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.6
4
+ version: 0.1.10
5
5
  prerelease:
6
6
  platform: i386-mingw32
7
7
  authors:
@@ -9,12 +9,12 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-05-17 00:00:00.000000000 -04:00
13
- default_executable:
12
+ date: 2011-05-23 00:00:00.000000000 -04:00
13
+ default_executable: unimidi
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: midi-winmm
17
- requirement: &16122156 !ruby/object:Gem::Requirement
17
+ requirement: &9407904 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ! '>='
@@ -22,14 +22,16 @@ dependencies:
22
22
  version: '0'
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *16122156
26
- description: Cross-Platform, realtime MIDI input and output for Ruby.
25
+ version_requirements: *9407904
26
+ description: Platform Independent, realtime MIDI input and output for Ruby.
27
27
  email:
28
28
  - ari.russo@gmail.com
29
- executables: []
29
+ executables:
30
+ - unimidi
30
31
  extensions: []
31
32
  extra_rdoc_files: []
32
33
  files:
34
+ - bin/unimidi
33
35
  - lib/unimidi/adapter/alsa-rawmidi.rb
34
36
  - lib/unimidi/adapter/ffi-coremidi.rb
35
37
  - lib/unimidi/adapter/midi-jruby.rb
@@ -64,5 +66,5 @@ rubyforge_project: unimidi
64
66
  rubygems_version: 1.5.2
65
67
  signing_key:
66
68
  specification_version: 3
67
- summary: Cross-Platform, realtime MIDI input and output for Ruby
69
+ summary: Realtime MIDI input and output for Ruby.
68
70
  test_files: []