patch 0.4.17 → 0.4.18

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