banjo 0.0.3 → 0.0.4

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: c3c8b4a3d76f825ce4ed6e3530a046f1f14c2842
4
- data.tar.gz: b3934b768ff3391be3b4dae71d84e4868aaf8a6a
3
+ metadata.gz: 25a2db070a4d537dd0f0507fa271e5b1392861d3
4
+ data.tar.gz: 2f9d961e602991034a2a90445b9c6b369390cfa1
5
5
  SHA512:
6
- metadata.gz: 2125321edbdf759281a505206e50838bcb95568e2c027c1855c7490df31296f5e3bd4a4bb221961e9b0c13adae62d23f82c819a1de48d8692df9cfda117f649f
7
- data.tar.gz: dbf2a5bc685b1f46f44e8e139de50d72a6725c65762f0d9519594b6e59d65158583392caffbb938c9ca7a4f14f26accf9d60bdac69166b3c398438aade0be11d
6
+ metadata.gz: 7b98de3fd1fb5692a6ca401bfe86ec02dc35e2fb0596fc54853d77b6ca774881aac35304c8c50c8ad39e475c15038f953b92cb8817be048d954b29066b595619
7
+ data.tar.gz: b657cff30587dbac401d57dbb6656b2060150c634f95660b9ba67b1fe49e1e9763e871072aba129149672f9376e9dee58fc1c82494e838fa0130e349aafa6874
@@ -18,8 +18,9 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- spec.add_dependency "unimidi", "~> 0.3.3"
21
+ spec.add_dependency "unimidi", "0.3.3"
22
22
  spec.add_dependency "eventmachine", "~> 1.0.3"
23
+ spec.add_dependency "rubysl-yaml", "2.0.0"
23
24
 
24
25
  spec.add_development_dependency "bundler", "~> 1.3"
25
26
  spec.add_development_dependency "rake"
@@ -14,9 +14,15 @@ module Banjo
14
14
  attr_accessor :tempo
15
15
  attr_accessor :ticks_per_beat
16
16
  attr_accessor :ticks_per_period
17
+ attr_accessor :loop_count
17
18
  end
18
19
 
19
20
  def self.load_channels
21
+ load_channels!
22
+ rescue Exception
23
+ end
24
+
25
+ def self.load_channels!
20
26
  Dir['./channels/*.rb'].each do |file|
21
27
  load file
22
28
  end
@@ -29,21 +35,31 @@ module Banjo
29
35
  puts "Beat every: #{tempo_in_ms}"
30
36
 
31
37
  EventMachine.run do
32
- n = 0
38
+ tick = 0
39
+ self.loop_count = 0
40
+
33
41
  EM.add_periodic_timer(tempo_in_ms) do
34
- begin
35
- Banjo.load_channels
36
- end
42
+ Banjo.load_channels if tick == 0
37
43
 
38
44
  Banjo::Channel.channels.each do |klass|
39
- channel = klass.new(n)
45
+ channel = klass.new(tick)
40
46
  channel.perform
41
47
  end
42
48
 
43
- n < (ticks_per_period - 1) ? n += 1 : n = 0
49
+ tick = update_counters(tick)
44
50
  end
45
51
 
46
52
  puts "Banjo Reactor started..."
47
53
  end
48
54
  end
55
+
56
+ def self.update_counters(tick)
57
+ if tick < (ticks_per_period - 1)
58
+ tick += 1
59
+ else
60
+ puts self.loop_count += 1
61
+ tick = 0
62
+ end
63
+ tick
64
+ end
49
65
  end
@@ -7,6 +7,10 @@ module Banjo
7
7
  0
8
8
  end
9
9
 
10
+ def midi_channels
11
+ [0x90, 0x80]
12
+ end
13
+
10
14
  def self.channels
11
15
  @channels ||= []
12
16
  end
@@ -30,8 +34,8 @@ module Banjo
30
34
  end
31
35
  end
32
36
 
33
- def mod_note(mod, note, offset = 0, velocity = 50)
34
- play_note(note, velocity, DEFAULT_DURATION) if ((tick + offset) % mod == 0)
37
+ def mod_note(mod, note, offset = 0, velocity = 50, duration = DEFAULT_DURATION)
38
+ play_note(note, velocity, duration) if ((tick + offset) % mod == 0)
35
39
  end
36
40
 
37
41
  def play_note(note, velocity = 50, duration = DEFAULT_DURATION)
@@ -46,6 +50,10 @@ module Banjo
46
50
  output.puts 0xE0, 0, value
47
51
  end
48
52
 
53
+ def sustain(value = 0)
54
+ output.puts 0xB0, 0x40, value
55
+ end
56
+
49
57
  def arpeggio(notes, velocity = 50)
50
58
  step = (1.0 * Banjo.ticks_per_period / notes.size).round
51
59
  notes.each_with_index do |note, index|
@@ -58,9 +66,9 @@ module Banjo
58
66
  end
59
67
 
60
68
  def play_note!(note, velocity = 50, duration = DEFAULT_DURATION)
61
- output.puts(0x80, note, velocity)
69
+ output.puts(midi_channels[0], note, velocity)
62
70
  sleep(duration)
63
- output.puts(0x90, note, velocity)
71
+ output.puts(midi_channels[1], note, velocity)
64
72
  end
65
73
  end
66
74
  end
@@ -1,3 +1,3 @@
1
1
  module Banjo
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
metadata CHANGED
@@ -1,83 +1,97 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: banjo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Padilla
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-10-18 00:00:00.000000000 Z
11
+ date: 2014-04-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: unimidi
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - '='
18
18
  - !ruby/object:Gem::Version
19
19
  version: 0.3.3
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - '='
25
25
  - !ruby/object:Gem::Version
26
26
  version: 0.3.3
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: eventmachine
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: 1.0.3
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: 1.0.3
41
+ - !ruby/object:Gem::Dependency
42
+ name: rubysl-yaml
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '='
46
+ - !ruby/object:Gem::Version
47
+ version: 2.0.0
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '='
53
+ - !ruby/object:Gem::Version
54
+ version: 2.0.0
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: bundler
43
57
  requirement: !ruby/object:Gem::Requirement
44
58
  requirements:
45
- - - ~>
59
+ - - "~>"
46
60
  - !ruby/object:Gem::Version
47
61
  version: '1.3'
48
62
  type: :development
49
63
  prerelease: false
50
64
  version_requirements: !ruby/object:Gem::Requirement
51
65
  requirements:
52
- - - ~>
66
+ - - "~>"
53
67
  - !ruby/object:Gem::Version
54
68
  version: '1.3'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: rake
57
71
  requirement: !ruby/object:Gem::Requirement
58
72
  requirements:
59
- - - '>='
73
+ - - ">="
60
74
  - !ruby/object:Gem::Version
61
75
  version: '0'
62
76
  type: :development
63
77
  prerelease: false
64
78
  version_requirements: !ruby/object:Gem::Requirement
65
79
  requirements:
66
- - - '>='
80
+ - - ">="
67
81
  - !ruby/object:Gem::Version
68
82
  version: '0'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: rr
71
85
  requirement: !ruby/object:Gem::Requirement
72
86
  requirements:
73
- - - '>='
87
+ - - ">="
74
88
  - !ruby/object:Gem::Version
75
89
  version: '0'
76
90
  type: :development
77
91
  prerelease: false
78
92
  version_requirements: !ruby/object:Gem::Requirement
79
93
  requirements:
80
- - - '>='
94
+ - - ">="
81
95
  - !ruby/object:Gem::Version
82
96
  version: '0'
83
97
  description: MIDI looper designed for live performances
@@ -87,8 +101,8 @@ executables: []
87
101
  extensions: []
88
102
  extra_rdoc_files: []
89
103
  files:
90
- - .gitignore
91
- - .travis.yml
104
+ - ".gitignore"
105
+ - ".travis.yml"
92
106
  - Gemfile
93
107
  - LICENSE.txt
94
108
  - README.md
@@ -111,17 +125,17 @@ require_paths:
111
125
  - lib
112
126
  required_ruby_version: !ruby/object:Gem::Requirement
113
127
  requirements:
114
- - - '>='
128
+ - - ">="
115
129
  - !ruby/object:Gem::Version
116
130
  version: '0'
117
131
  required_rubygems_version: !ruby/object:Gem::Requirement
118
132
  requirements:
119
- - - '>='
133
+ - - ">="
120
134
  - !ruby/object:Gem::Version
121
135
  version: '0'
122
136
  requirements: []
123
137
  rubyforge_project:
124
- rubygems_version: 2.0.3
138
+ rubygems_version: 2.2.0
125
139
  signing_key:
126
140
  specification_version: 4
127
141
  summary: MIDI looper designed for live performances