patch 0.4.17 → 0.4.18
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.
- checksums.yaml +4 -4
- data/lib/patch.rb +1 -1
- data/lib/patch/io/midi/message.rb +15 -11
- data/lib/patch/io/midi/output.rb +1 -1
- data/test/config/patches.yml +1 -0
- data/test/io/midi/message_test.rb +51 -10
- data/test/io/midi/output_test.rb +2 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3bf0c19c03991900fbce579cb0a487e6e9dd99bb
|
4
|
+
data.tar.gz: ae5597d6bd0acc94be816b9938bd3a05a79ec047
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8186c00bb4003a46ed142e005b188cf2fc2b989b9ce50a3e09c722fdd20b095602c79edcdda473c7ae854e375a3688062761151893b19033567561a3d8e00ce8
|
7
|
+
data.tar.gz: 2d4098b380b720c8aaabe491f9c4e9190f503abd3d6ddcba5facc30be0cf87f675722f00b3704deaffa61c94124426f7b4a444236799c2e488f160e7da04ba41
|
data/lib/patch.rb
CHANGED
@@ -64,11 +64,12 @@ module Patch
|
|
64
64
|
# @param [::Patch::Message] patch_message
|
65
65
|
# @return [::MIDIMessage::ControlChange, nil]
|
66
66
|
def to_midi_message(action, patch_message)
|
67
|
-
|
67
|
+
unless action[:midi].nil?
|
68
68
|
index = action[:midi][:index] || patch_message.index
|
69
69
|
channel = action[:midi][:channel] || 0
|
70
|
-
value = get_midi_value_from_action(action, patch_message)
|
71
|
-
|
70
|
+
unless (value = get_midi_value_from_action(action, patch_message)).nil?
|
71
|
+
MIDIMessage::ControlChange.new(channel, index, value)
|
72
|
+
end
|
72
73
|
end
|
73
74
|
end
|
74
75
|
|
@@ -80,13 +81,14 @@ module Patch
|
|
80
81
|
# @return [::Patch::Message, nil]
|
81
82
|
def to_patch_message(action, index, patch_name, midi_message)
|
82
83
|
if action[:midi][:channel].nil? || action[:midi][:channel] == midi_message.channel
|
83
|
-
value = get_patch_values_from_action(action, midi_message)
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
84
|
+
unless (value = get_patch_values_from_action(action, midi_message)).nil?
|
85
|
+
properties = {
|
86
|
+
:index => index,
|
87
|
+
:patch_name => patch_name,
|
88
|
+
:value => value
|
89
|
+
}
|
90
|
+
::Patch::Message.new(properties)
|
91
|
+
end
|
90
92
|
end
|
91
93
|
end
|
92
94
|
|
@@ -96,7 +98,9 @@ module Patch
|
|
96
98
|
# @param [Range] to
|
97
99
|
# @return [Fixnum]
|
98
100
|
def get_value(value, from, to)
|
99
|
-
if from
|
101
|
+
if !from.member?(value) # filter out values that are out of scale
|
102
|
+
nil
|
103
|
+
elsif from == to
|
100
104
|
value
|
101
105
|
else
|
102
106
|
Scale.transform(value).from(from).to(to)
|
data/lib/patch/io/midi/output.rb
CHANGED
@@ -27,7 +27,7 @@ module Patch
|
|
27
27
|
patch_messages = [patch_messages].flatten
|
28
28
|
messages = ::Patch::IO::MIDI::Message.to_midi_messages(patch, patch_messages)
|
29
29
|
unless messages.empty?
|
30
|
-
bytes = messages.map(&:to_a)
|
30
|
+
bytes = messages.map(&:to_a).flatten
|
31
31
|
@device.puts(*bytes)
|
32
32
|
end
|
33
33
|
messages
|
data/test/config/patches.yml
CHANGED
@@ -32,19 +32,60 @@ class Patch::IO::MIDI::MessageTest < Minitest::Test
|
|
32
32
|
|
33
33
|
context ".to_patch_messages" do
|
34
34
|
|
35
|
-
|
36
|
-
|
37
|
-
|
35
|
+
context "not filtered" do
|
36
|
+
|
37
|
+
setup do
|
38
|
+
@message = MIDIMessage::ControlChange.new(0, 0, 127)
|
39
|
+
@result = ::Patch::IO::MIDI::Message.to_patch_messages(@patches.first, @message)
|
40
|
+
end
|
41
|
+
|
42
|
+
should "have correct values" do
|
43
|
+
refute_nil @result
|
44
|
+
refute_empty @result
|
45
|
+
message = @result.first
|
46
|
+
|
47
|
+
assert_equal ::Patch::Message, message.class
|
48
|
+
assert_equal 0, message.index
|
49
|
+
assert_equal 5, message.value
|
50
|
+
end
|
51
|
+
|
38
52
|
end
|
39
53
|
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
54
|
+
context "filtered" do
|
55
|
+
|
56
|
+
context "pass" do
|
57
|
+
|
58
|
+
setup do
|
59
|
+
@message = MIDIMessage::ControlChange.new(0, 1, 127)
|
60
|
+
@result = ::Patch::IO::MIDI::Message.to_patch_messages(@patches.first, @message)
|
61
|
+
end
|
62
|
+
|
63
|
+
should "have correct values" do
|
64
|
+
refute_nil @result
|
65
|
+
refute_empty @result
|
66
|
+
message = @result.first
|
67
|
+
|
68
|
+
assert_equal ::Patch::Message, message.class
|
69
|
+
assert_equal 1, message.index
|
70
|
+
assert_equal 5, message.value
|
71
|
+
end
|
72
|
+
|
73
|
+
end
|
74
|
+
|
75
|
+
context "reject" do
|
76
|
+
|
77
|
+
setup do
|
78
|
+
@message = MIDIMessage::ControlChange.new(0, 1, 0)
|
79
|
+
@result = ::Patch::IO::MIDI::Message.to_patch_messages(@patches.first, @message)
|
80
|
+
end
|
81
|
+
|
82
|
+
should "have no messages" do
|
83
|
+
refute_nil @result
|
84
|
+
assert_empty @result
|
85
|
+
end
|
86
|
+
|
87
|
+
end
|
44
88
|
|
45
|
-
assert_equal ::Patch::Message, message.class
|
46
|
-
assert_equal 0, message.index
|
47
|
-
assert_equal 5, message.value
|
48
89
|
end
|
49
90
|
|
50
91
|
end
|
data/test/io/midi/output_test.rb
CHANGED
@@ -25,9 +25,9 @@ class Patch::IO::MIDI::OutputTest < Minitest::Test
|
|
25
25
|
setup do
|
26
26
|
@message = Patch::Message.new
|
27
27
|
@message.index = 0
|
28
|
-
@message.value =
|
28
|
+
@message.value = 5
|
29
29
|
@message.patch_name = @patch.name
|
30
|
-
@output.device.expects(:puts).once
|
30
|
+
@output.device.expects(:puts).once.with(0xB0, 0x00, 0x7F)
|
31
31
|
end
|
32
32
|
|
33
33
|
teardown do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: patch
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.18
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ari Russo
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-09-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: minitest
|