midi-message 0.0.1-i686-linux → 0.0.2-i686-linux

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc CHANGED
@@ -1,17 +1,26 @@
1
- = midi-messages
1
+ = midi-message
2
2
 
3
3
  == Summary
4
4
 
5
- MIDI Messages in Ruby
5
+ MIDI messages, objectified in Ruby
6
6
 
7
7
  == Features
8
8
 
9
- * Objectification of the MIDI spec
9
+ * All message types and components
10
10
  * YAML Dictionary of MIDI constants
11
11
 
12
12
  == Install
13
13
 
14
- * gem install midi-message (*not yet available)
14
+ * gem install midi-message
15
+
16
+ == Examples
17
+
18
+ * {melody}[http://github.com/arirusso/midi-message/blob/master/examples/melody.rb]
19
+ * {parse}[http://github.com/arirusso/midi-message/blob/master/examples/parse.rb]
20
+
21
+ == Documentation
22
+
23
+ * {rdoc}[http://rdoc.info/gems/midi-message]
15
24
 
16
25
  == Author
17
26
 
@@ -122,7 +122,12 @@ module MIDIMessage
122
122
  schema :channel, :number, :value
123
123
  type_id 0xB
124
124
  display_name 'Control Change'
125
- identifier :number
125
+ use_constants 'Control Change', :for => 'Number'
126
+
127
+ def self.find(name, channel, value)
128
+ c = const(name)
129
+ new(channel, c, value)
130
+ end
126
131
 
127
132
  end
128
133
 
@@ -137,8 +142,12 @@ module MIDIMessage
137
142
  schema :channel, :note, :velocity
138
143
  type_id 0x8
139
144
  display_name 'Note Off'
140
- use_constants 'Note'
141
- identifier :note
145
+ use_constants 'Note', :for => :note
146
+
147
+ def self.find(name, channel, velocity)
148
+ c = const(name)
149
+ new(channel, name, velocity)
150
+ end
142
151
 
143
152
  end
144
153
 
@@ -153,8 +162,12 @@ module MIDIMessage
153
162
  schema :channel, :note, :velocity
154
163
  type_id 0x9
155
164
  display_name 'Note On'
156
- use_constants 'Note'
157
- identifier :note
165
+ use_constants 'Note', :for => :note
166
+
167
+ def self.find(name, channel, velocity)
168
+ c = const(name)
169
+ new(channel, name, velocity)
170
+ end
158
171
 
159
172
  end
160
173
 
@@ -168,7 +181,7 @@ module MIDIMessage
168
181
 
169
182
  schema :channel, :low, :high
170
183
  type_id 0xE
171
- DisplayName = 'Pitch Bend'
184
+ display_name 'Pitch Bend'
172
185
 
173
186
  end
174
187
 
@@ -182,7 +195,7 @@ module MIDIMessage
182
195
 
183
196
  schema :channel, :note, :value
184
197
  type_id 0xA
185
- DisplayName = 'Polyphonic Aftertouch'
198
+ display_name 'Polyphonic Aftertouch'
186
199
 
187
200
  end
188
201
 
@@ -196,7 +209,7 @@ module MIDIMessage
196
209
 
197
210
  schema :channel, :program
198
211
  type_id 0xC
199
- DisplayName = 'Program Change'
212
+ display_name 'Program Change'
200
213
 
201
214
  end
202
215
 
@@ -10,10 +10,10 @@ module MIDIMessage
10
10
  :verbose_name
11
11
 
12
12
  def initialize_simple_message(status_nibble_1, status_nibble_2)
13
- @status = [status_nibble_1, status_nibble_2]
13
+ @status = [status_nibble_1, status_nibble_2]
14
14
  group_name = self.class.const_get(:DisplayName)
15
15
  group_name_alias = self.class.const_get(:UseConstants) rescue nil
16
- val = self.send(self.class.const_get(:Identifier)) rescue @status[1]
16
+ val = self.send(self.class.const_get(:ConstProp)) rescue @status[1]
17
17
  group = Constant[group_name] || (group_name_alias.nil? ? nil : Constant[group_name_alias])
18
18
  unless group.nil?
19
19
  const = group.find { |k,v| k if v.eql?(val) }
@@ -35,18 +35,24 @@ module MIDIMessage
35
35
 
36
36
  module ClassMethods
37
37
 
38
+ def const(name)
39
+ key = const_get(:DisplayName) rescue nil
40
+ key = const_get(:UseConstants) rescue key
41
+ unless key.nil?
42
+ Constant.instance[key.to_s][name.to_s]
43
+ end
44
+ end
45
+
38
46
  def display_name(name)
39
47
  const_set(:DisplayName, name)
40
48
  end
41
49
 
42
- def use_constants(name)
50
+ def use_constants(name, options = {})
51
+ for_prop = options[:for]
52
+ const_set(:ConstProp, for_prop) unless for_prop.nil?
43
53
  const_set(:UseConstants, name)
44
54
  end
45
55
 
46
- def identifier(name)
47
- const_set(:Identifier, name)
48
- end
49
-
50
56
  end
51
57
 
52
58
  end
@@ -17,6 +17,11 @@ module MIDIMessage
17
17
  @data = [data_byte_1, data_byte_2]
18
18
  initialize_simple_message(0xF, status_nibble_2)
19
19
  end
20
+
21
+ def self.find(const_name, data_byte_1 = nil, data_byte_2 = nil)
22
+ c = const(const_name)
23
+ new(c, data_byte_1, data_byte_2)
24
+ end
20
25
 
21
26
  end
22
27
 
@@ -34,10 +39,15 @@ module MIDIMessage
34
39
  initialize_simple_message(0xF, id)
35
40
  end
36
41
 
42
+ def self.find(const_name)
43
+ c = const(const_name)
44
+ new(c)
45
+ end
46
+
37
47
  def id
38
48
  @status[1]
39
49
  end
40
50
 
41
51
  end
42
52
 
43
- end
53
+ end
data/lib/midi-message.rb CHANGED
@@ -4,7 +4,7 @@
4
4
  #
5
5
  module MIDIMessage
6
6
 
7
- VERSION = "0.0.1"
7
+ VERSION = "0.0.2"
8
8
 
9
9
  end
10
10
 
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: midi-message
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.1
5
+ version: 0.0.2
6
6
  platform: i686-linux
7
7
  authors:
8
8
  - Ari Russo
@@ -14,7 +14,7 @@ date: 2011-04-29 00:00:00 -04:00
14
14
  default_executable:
15
15
  dependencies: []
16
16
 
17
- description: MIDI Messages, objectified in Ruby.
17
+ description: MIDI messages, objectified in Ruby.
18
18
  email:
19
19
  - ari.russo@gmail.com
20
20
  executables: []
@@ -25,13 +25,13 @@ extra_rdoc_files: []
25
25
 
26
26
  files:
27
27
  - lib/midi-message.rb
28
- - lib/midi-message/system_exclusive.rb
29
- - lib/midi-message/channel_message.rb
28
+ - lib/midi-message/constant.rb
30
29
  - lib/midi-message/simple_message.rb
31
- - lib/midi-message/constants.rb
32
- - lib/midi-message/parser.rb
33
30
  - lib/midi-message/system_message.rb
34
- - lib/midi-message/constant.rb
31
+ - lib/midi-message/parser.rb
32
+ - lib/midi-message/constants.rb
33
+ - lib/midi-message/system_exclusive.rb
34
+ - lib/midi-message/channel_message.rb
35
35
  - LICENSE
36
36
  - README.rdoc
37
37
  has_rdoc: true
@@ -61,6 +61,6 @@ rubyforge_project: midi-message
61
61
  rubygems_version: 1.6.2
62
62
  signing_key:
63
63
  specification_version: 3
64
- summary: MIDI Messages in Ruby.
64
+ summary: MIDI messages, objectified in Ruby.
65
65
  test_files: []
66
66