midi-message 0.4.4 → 0.4.5

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.
@@ -1,71 +1,65 @@
1
- #!/usr/bin/env ruby
1
+ require "helper"
2
2
 
3
- require 'helper'
4
-
5
- class SystemMessageTest < Test::Unit::TestCase
6
-
7
- include MIDIMessage
8
- include TestHelper
3
+ class SystemMessageTest < Minitest::Test
9
4
 
10
5
  def test_system_common
11
- msg = SystemCommon.new(0x2, 0x00, 0x08)
6
+ msg = MIDIMessage::SystemCommon.new(0x2, 0x00, 0x08)
12
7
  assert_equal("Song Position Pointer", msg.name)
13
8
  assert_equal(0xF, msg.status[0])
14
9
  assert_equal(0x2, msg.status[1])
15
10
  assert_equal(0x00, msg.data[0])
16
11
  assert_equal(0x08, msg.data[1])
17
12
  assert_equal([0xF2, 0x00, 0x08], msg.to_a)
18
- assert_equal("F20008", msg.to_bytestr)
13
+ assert_equal("F20008", msg.to_bytestr)
19
14
  end
20
15
 
21
16
  def test_system_common_redundant
22
- msg = SystemCommon.new(0xF2, 0x00, 0x08)
17
+ msg = MIDIMessage::SystemCommon.new(0xF2, 0x00, 0x08)
23
18
  assert_equal("Song Position Pointer", msg.name)
24
19
  assert_equal(0xF, msg.status[0])
25
20
  assert_equal(0x2, msg.status[1])
26
21
  assert_equal(0x00, msg.data[0])
27
22
  assert_equal(0x08, msg.data[1])
28
23
  assert_equal([0xF2, 0x00, 0x08], msg.to_a)
29
- assert_equal("F20008", msg.to_bytestr)
24
+ assert_equal("F20008", msg.to_bytestr)
30
25
  end
31
26
 
32
- def test_system_common_constant
33
- msg = SystemCommon["Song Position Pointer"].new(0x00, 0x08)
27
+ def test_system_common_constant
28
+ msg = MIDIMessage::SystemCommon["Song Position Pointer"].new(0x00, 0x08)
34
29
  assert_equal("Song Position Pointer", msg.name)
35
30
  assert_equal(0xF, msg.status[0])
36
31
  assert_equal(0x2, msg.status[1])
37
32
  assert_equal(0x00, msg.data[0])
38
33
  assert_equal(0x08, msg.data[1])
39
34
  assert_equal([0xF2, 0x00, 0x08], msg.to_a)
40
- assert_equal("F20008", msg.to_bytestr)
35
+ assert_equal("F20008", msg.to_bytestr)
41
36
  end
42
37
 
43
- def test_system_realtime
44
- msg = SystemRealtime.new(0x8)
38
+ def test_system_realtime
39
+ msg = MIDIMessage::SystemRealtime.new(0x8)
45
40
  assert_equal("Clock", msg.name)
46
41
  assert_equal(0xF, msg.status[0])
47
42
  assert_equal(0x8, msg.status[1])
48
43
  assert_equal([0xF8], msg.to_a)
49
- assert_equal("F8", msg.to_bytestr)
50
- end
44
+ assert_equal("F8", msg.to_bytestr)
45
+ end
51
46
 
52
- def test_system_realtime_redundant
53
- msg = SystemRealtime.new(0xF8)
47
+ def test_system_realtime_redundant
48
+ msg = MIDIMessage::SystemRealtime.new(0xF8)
54
49
  assert_equal("Clock", msg.name)
55
50
  assert_equal(0xF, msg.status[0])
56
51
  assert_equal(0x8, msg.status[1])
57
52
  assert_equal([0xF8], msg.to_a)
58
- assert_equal("F8", msg.to_bytestr)
59
- end
53
+ assert_equal("F8", msg.to_bytestr)
54
+ end
60
55
 
61
- def test_system_realtime_constant
62
- msg = SystemRealtime["Clock"].new
56
+ def test_system_realtime_constant
57
+ msg = MIDIMessage::SystemRealtime["Clock"].new
63
58
  assert_equal("Clock", msg.name)
64
59
  assert_equal(0xF, msg.status[0])
65
60
  assert_equal(0x8, msg.status[1])
66
61
  assert_equal([0xF8], msg.to_a)
67
- assert_equal("F8", msg.to_bytestr)
68
- end
62
+ assert_equal("F8", msg.to_bytestr)
63
+ end
69
64
 
70
65
  end
71
-
metadata CHANGED
@@ -1,15 +1,95 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: midi-message
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.4
4
+ version: 0.4.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ari Russo
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-27 00:00:00.000000000 Z
12
- dependencies: []
11
+ date: 2015-01-03 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: minitest
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '5.5'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 5.5.0
23
+ type: :development
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '5.5'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 5.5.0
33
+ - !ruby/object:Gem::Dependency
34
+ name: mocha
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '1.1'
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: 1.1.0
43
+ type: :development
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: '1.1'
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: 1.1.0
53
+ - !ruby/object:Gem::Dependency
54
+ name: rake
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - "~>"
58
+ - !ruby/object:Gem::Version
59
+ version: '10.4'
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: 10.4.2
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: '10.4'
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: 10.4.2
73
+ - !ruby/object:Gem::Dependency
74
+ name: shoulda-context
75
+ requirement: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - "~>"
78
+ - !ruby/object:Gem::Version
79
+ version: '1.2'
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: 1.2.1
83
+ type: :development
84
+ prerelease: false
85
+ version_requirements: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '1.2'
90
+ - - ">="
91
+ - !ruby/object:Gem::Version
92
+ version: 1.2.1
13
93
  description: Objects and classes for dealing with MIDI messages.
14
94
  email:
15
95
  - ari.russo@gmail.com
@@ -24,9 +104,9 @@ files:
24
104
  - lib/midi-message/constant.rb
25
105
  - lib/midi-message/context.rb
26
106
  - lib/midi-message/message.rb
107
+ - lib/midi-message/messages.rb
27
108
  - lib/midi-message/note_message.rb
28
109
  - lib/midi-message/parser.rb
29
- - lib/midi-message/short_message.rb
30
110
  - lib/midi-message/system_exclusive.rb
31
111
  - lib/midi-message/system_message.rb
32
112
  - lib/midi-message/type_conversion.rb
@@ -34,9 +114,9 @@ files:
34
114
  - test/constants_test.rb
35
115
  - test/context_test.rb
36
116
  - test/helper.rb
117
+ - test/message_test.rb
37
118
  - test/mutability_test.rb
38
119
  - test/parser_test.rb
39
- - test/short_message_test.rb
40
120
  - test/system_exclusive_test.rb
41
121
  - test/system_message_test.rb
42
122
  homepage: http://github.com/arirusso/midi-message
@@ -1,137 +0,0 @@
1
- module MIDIMessage
2
-
3
- # Common behavior amongst all Message types
4
- module ShortMessage
5
-
6
- include MIDIMessage # this enables ..kind_of?(MIDIMessage)
7
-
8
- attr_reader :name,
9
- :status,
10
- :verbose_name
11
-
12
- # Initialize the message status
13
- # @param [Fixnum] status_nibble_1 The first nibble of the status
14
- # @param [Fixnum] status_nibble_2 The second nibble of the status
15
- def initialize_short_message(status_nibble_1, status_nibble_2)
16
- @status = [status_nibble_1, status_nibble_2]
17
- populate_using_const
18
- end
19
-
20
- # Byte array representation of the message eg [0x90, 0x40, 0x40] for NoteOn(0x40, 0x40)
21
- # @return [Array<Fixnum>] The array of bytes in the MIDI message
22
- def to_a
23
- data = @data.nil? ? [] : [@data[0], @data[1]]
24
- [(@status[0] << 4) + @status[1], *data].compact
25
- end
26
- alias_method :to_byte_a, :to_a
27
- alias_method :to_byte_array, :to_a
28
- alias_method :to_bytes, :to_a
29
-
30
- # String representation of the message's bytes eg "904040" for NoteOn(0x40, 0x40)
31
- # @return [String] The bytes of the message as a string of hex bytes
32
- def to_hex_s
33
- TypeConversion.numeric_byte_array_to_hex_string(to_a)
34
- end
35
- alias_method :to_bytestr, :to_hex_s
36
-
37
- protected
38
-
39
- def self.included(base)
40
- base.send(:extend, ClassMethods)
41
- end
42
-
43
- def update
44
- populate_using_const
45
- end
46
-
47
- private
48
-
49
- # This will populate message metadata with information gathered from midi.yml
50
- def populate_using_const
51
- const_group_name = self.class.display_name
52
- group_name_alias = self.class.constant_name
53
- property = self.class.constant_property
54
- value = self.send(property) unless property.nil?
55
- value ||= @status[1] # default property to use for constants
56
- group = ConstantGroup[group_name_alias] || ConstantGroup[const_group_name]
57
- unless group.nil?
58
- const = group.find_by_value(value)
59
- unless const.nil?
60
- @const = const
61
- @name = @const.nil? ? const.key : @const.key
62
- @verbose_name = "#{self.class.display_name}: #{@name}"
63
- end
64
- end
65
- end
66
-
67
- module ClassMethods
68
-
69
- # Find a constant value in this class's group for the passed in key
70
- # @param [String] name The constant key
71
- # @return [String] The constant value
72
- def get_constant(name)
73
- key = constant_name || display_name
74
- unless key.nil?
75
- group = ConstantGroup[key]
76
- group.find(name)
77
- end
78
- end
79
-
80
- def display_name
81
- const_get("DISPLAY_NAME") if const_defined?("DISPLAY_NAME")
82
- end
83
-
84
- def constant_map
85
- const_get("CONSTANT") if const_defined?("CONSTANT")
86
- end
87
-
88
- def constant_name
89
- constant_map.keys.first unless constant_map.nil?
90
- end
91
-
92
- def constant_property
93
- constant_map[constant_name] unless constant_map.nil?
94
- end
95
-
96
- # This returns a MessageBuilder for the class, preloaded with the selected const
97
- # @param [String, Symbol] const_name The constant key to use to build the message
98
- # @return [MIDIMessage::MessageBuilder] A MessageBuilder object for the passed in constant
99
- def [](const_name)
100
- const = get_constant(const_name.to_s)
101
- MessageBuilder.new(self, const) unless const.nil?
102
- end
103
-
104
- end
105
-
106
- end
107
-
108
- class MessageBuilder
109
-
110
- # @param [MIDIMessage] klass The message class to build
111
- # @param [String] const The constant to build the message with
112
- def initialize(klass, const)
113
- @klass = klass
114
- @const = const
115
- end
116
-
117
- def new(*a)
118
- a.last.kind_of?(Hash) ? a.last[:const] = @const : a.push(:const => @const)
119
- @klass.new(*a)
120
- end
121
-
122
- end
123
-
124
- # Shortcuts for dealing with message status
125
- module Status
126
-
127
- # The value of the Status constant with the name status_name
128
- # @param [String] status_name The key to use to look up a constant value
129
- # @return [String] The constant value that was looked up
130
- def self.[](status_name)
131
- const = Constant.find("Status", status_name)
132
- const.value unless const.nil?
133
- end
134
-
135
- end
136
-
137
- end