midi-message 0.3.1 → 0.3.2
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.
- data/README.rdoc +1 -1
- data/lib/midi-message/system_message.rb +23 -3
- data/lib/midi-message.rb +2 -2
- data/lib/midi.yml +1 -0
- data/test/test_short_message.rb +1 -1
- data/test/test_system_message.rb +71 -0
- metadata +4 -3
data/README.rdoc
CHANGED
@@ -2,6 +2,22 @@
|
|
2
2
|
#
|
3
3
|
|
4
4
|
module MIDIMessage
|
5
|
+
|
6
|
+
#
|
7
|
+
# MIDI System message
|
8
|
+
#
|
9
|
+
module SystemMessage
|
10
|
+
|
11
|
+
# In the case of something like SystemCommon.new(0xF2, 0x00, 0x08), the first nibble F is redundant because
|
12
|
+
# all system messages start with 0xF and it can be assumed.
|
13
|
+
# However, the this method looks to see if this has occurred and strips the redundancy
|
14
|
+
# @param [Integer] byte The byte to strip of a redundant 0xF
|
15
|
+
# @return [Integer] The remaining nibble
|
16
|
+
def strip_redundant_nibble(byte)
|
17
|
+
byte > 0xF ? (byte & 0x0F) : byte
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
5
21
|
|
6
22
|
#
|
7
23
|
# MIDI System-Common message
|
@@ -9,6 +25,7 @@ module MIDIMessage
|
|
9
25
|
class SystemCommon
|
10
26
|
|
11
27
|
include ShortMessage
|
28
|
+
include SystemMessage
|
12
29
|
use_display_name 'System Common'
|
13
30
|
|
14
31
|
attr_reader :data
|
@@ -16,9 +33,10 @@ module MIDIMessage
|
|
16
33
|
def initialize(*a)
|
17
34
|
options = a.last.kind_of?(Hash) ? a.pop : {}
|
18
35
|
@const = options[:const]
|
19
|
-
|
20
|
-
|
21
|
-
initialize_short_message(0xF,
|
36
|
+
id = @const.nil? ? a.shift : @const.value
|
37
|
+
id = strip_redundant_nibble(id)
|
38
|
+
initialize_short_message(0xF, id)
|
39
|
+
@data = [a[0], a[1]]
|
22
40
|
end
|
23
41
|
|
24
42
|
end
|
@@ -29,12 +47,14 @@ module MIDIMessage
|
|
29
47
|
class SystemRealtime
|
30
48
|
|
31
49
|
include ShortMessage
|
50
|
+
include SystemMessage
|
32
51
|
use_display_name 'System Realtime'
|
33
52
|
|
34
53
|
def initialize(*a)
|
35
54
|
options = a.last.kind_of?(Hash) ? a.pop : {}
|
36
55
|
@const = options[:const]
|
37
56
|
id = @const.nil? ? a[0] : @const.value
|
57
|
+
id = strip_redundant_nibble(id)
|
38
58
|
initialize_short_message(0xF, id)
|
39
59
|
end
|
40
60
|
|
data/lib/midi-message.rb
CHANGED
@@ -11,7 +11,7 @@ module MIDIMessage
|
|
11
11
|
module Process
|
12
12
|
end
|
13
13
|
|
14
|
-
VERSION = "0.3.
|
14
|
+
VERSION = "0.3.2"
|
15
15
|
|
16
16
|
end
|
17
17
|
|
@@ -37,4 +37,4 @@ require "midi-message/process/processor"
|
|
37
37
|
require "midi-message/event/note"
|
38
38
|
require "midi-message/process/filter"
|
39
39
|
require "midi-message/process/limit"
|
40
|
-
require "midi-message/process/transpose"
|
40
|
+
require "midi-message/process/transpose"
|
data/lib/midi.yml
CHANGED
data/test/test_short_message.rb
CHANGED
@@ -0,0 +1,71 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'helper'
|
4
|
+
|
5
|
+
class SystemMessageTest < Test::Unit::TestCase
|
6
|
+
|
7
|
+
include MIDIMessage
|
8
|
+
include TestHelper
|
9
|
+
|
10
|
+
def test_system_common
|
11
|
+
msg = SystemCommon.new(0x2, 0x00, 0x08)
|
12
|
+
assert_equal("Song Position Pointer", msg.name)
|
13
|
+
assert_equal(0xF, msg.status[0])
|
14
|
+
assert_equal(0x2, msg.status[1])
|
15
|
+
assert_equal(0x00, msg.data[0])
|
16
|
+
assert_equal(0x08, msg.data[1])
|
17
|
+
assert_equal([0xF2, 0x00, 0x08], msg.to_a)
|
18
|
+
assert_equal("F20008", msg.to_bytestr)
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_system_common_redundant
|
22
|
+
msg = SystemCommon.new(0xF2, 0x00, 0x08)
|
23
|
+
assert_equal("Song Position Pointer", msg.name)
|
24
|
+
assert_equal(0xF, msg.status[0])
|
25
|
+
assert_equal(0x2, msg.status[1])
|
26
|
+
assert_equal(0x00, msg.data[0])
|
27
|
+
assert_equal(0x08, msg.data[1])
|
28
|
+
assert_equal([0xF2, 0x00, 0x08], msg.to_a)
|
29
|
+
assert_equal("F20008", msg.to_bytestr)
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_system_common_constant
|
33
|
+
msg = SystemCommon["Song Position Pointer"].new(0x00, 0x08)
|
34
|
+
assert_equal("Song Position Pointer", msg.name)
|
35
|
+
assert_equal(0xF, msg.status[0])
|
36
|
+
assert_equal(0x2, msg.status[1])
|
37
|
+
assert_equal(0x00, msg.data[0])
|
38
|
+
assert_equal(0x08, msg.data[1])
|
39
|
+
assert_equal([0xF2, 0x00, 0x08], msg.to_a)
|
40
|
+
assert_equal("F20008", msg.to_bytestr)
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_system_realtime
|
44
|
+
msg = SystemRealtime.new(0x8)
|
45
|
+
assert_equal("Clock", msg.name)
|
46
|
+
assert_equal(0xF, msg.status[0])
|
47
|
+
assert_equal(0x8, msg.status[1])
|
48
|
+
assert_equal([0xF8], msg.to_a)
|
49
|
+
assert_equal("F8", msg.to_bytestr)
|
50
|
+
end
|
51
|
+
|
52
|
+
def test_system_realtime_redundant
|
53
|
+
msg = SystemRealtime.new(0xF8)
|
54
|
+
assert_equal("Clock", msg.name)
|
55
|
+
assert_equal(0xF, msg.status[0])
|
56
|
+
assert_equal(0x8, msg.status[1])
|
57
|
+
assert_equal([0xF8], msg.to_a)
|
58
|
+
assert_equal("F8", msg.to_bytestr)
|
59
|
+
end
|
60
|
+
|
61
|
+
def test_system_realtime_constant
|
62
|
+
msg = SystemRealtime["Clock"].new
|
63
|
+
assert_equal("Clock", msg.name)
|
64
|
+
assert_equal(0xF, msg.status[0])
|
65
|
+
assert_equal(0x8, msg.status[1])
|
66
|
+
assert_equal([0xF8], msg.to_a)
|
67
|
+
assert_equal("F8", msg.to_bytestr)
|
68
|
+
end
|
69
|
+
|
70
|
+
end
|
71
|
+
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: midi-message
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2012-09-17 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: MIDI messages, objectified in Ruby
|
15
15
|
email:
|
@@ -45,6 +45,7 @@ files:
|
|
45
45
|
- test/test_processor.rb
|
46
46
|
- test/test_short_message.rb
|
47
47
|
- test/test_system_exclusive.rb
|
48
|
+
- test/test_system_message.rb
|
48
49
|
- test/test_transpose.rb
|
49
50
|
- LICENSE
|
50
51
|
- README.rdoc
|
@@ -69,7 +70,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
69
70
|
version: 1.3.6
|
70
71
|
requirements: []
|
71
72
|
rubyforge_project: midi-message
|
72
|
-
rubygems_version: 1.8.
|
73
|
+
rubygems_version: 1.8.23
|
73
74
|
signing_key:
|
74
75
|
specification_version: 3
|
75
76
|
summary: MIDI messages, objectified in Ruby
|