midi-message 0.3.1 → 0.3.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|