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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 57cdbd5fc6c84c49884f573ebc4d307c6d2da26a
4
- data.tar.gz: 7920f3af576d962866a3336db4e21911128be09b
3
+ metadata.gz: 3bf0c19c03991900fbce579cb0a487e6e9dd99bb
4
+ data.tar.gz: ae5597d6bd0acc94be816b9938bd3a05a79ec047
5
5
  SHA512:
6
- metadata.gz: e0e4dc8bf364aa9442a2eba2ef92ce9008fb35d71370d8478dc61210bf7b89af367a0cca3bc5971a4c18b55aa08090b768638c5f2bb67738d4b4ea983e7d4da0
7
- data.tar.gz: 756b93eaef61822913acb9e178fa893fa695ac04a3b1698ff7a5e8855b8ba103ff2b8b2ac8f7f4b2397ccf98d2a83f96f34f7a0d714ed9498f0a81d7d4af0f31
6
+ metadata.gz: 8186c00bb4003a46ed142e005b188cf2fc2b989b9ce50a3e09c722fdd20b095602c79edcdda473c7ae854e375a3688062761151893b19033567561a3d8e00ce8
7
+ data.tar.gz: 2d4098b380b720c8aaabe491f9c4e9190f503abd3d6ddcba5facc30be0cf87f675722f00b3704deaffa61c94124426f7b4a444236799c2e488f160e7da04ba41
@@ -37,6 +37,6 @@ require "patch/em_patch"
37
37
 
38
38
  module Patch
39
39
 
40
- VERSION = "0.4.17"
40
+ VERSION = "0.4.18"
41
41
 
42
42
  end
@@ -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
- if !action[:midi].nil?
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
- MIDIMessage::ControlChange.new(channel, index, value)
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
- properties = {
85
- :index => index,
86
- :patch_name => patch_name,
87
- :value => value
88
- }
89
- ::Patch::Message.new(properties)
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 == to
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)
@@ -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
@@ -23,6 +23,7 @@
23
23
  :midi:
24
24
  :channel: 0
25
25
  :index: 1
26
+ :scale: !ruby/range 1..127
26
27
  :osc:
27
28
  :address: /1/rotaryD
28
29
  :scale: !ruby/range 0..1.0
@@ -32,19 +32,60 @@ class Patch::IO::MIDI::MessageTest < Minitest::Test
32
32
 
33
33
  context ".to_patch_messages" do
34
34
 
35
- setup do
36
- @message = MIDIMessage::ControlChange.new(0, 0, 127)
37
- @result = ::Patch::IO::MIDI::Message.to_patch_messages(@patches.first, @message)
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
- should "have correct values" do
41
- refute_nil @result
42
- refute_empty @result
43
- message = @result.first
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
@@ -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 = 100
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.17
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-07-08 00:00:00.000000000 Z
11
+ date: 2015-09-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest