synthesizer 1.3.0 → 1.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/examples/step_editor.rb +1 -3
- data/lib/audio_stream/audio_input_step_editor.rb +19 -2
- data/lib/synthesizer/mono_synth.rb +2 -4
- data/lib/synthesizer/note.rb +26 -2
- data/lib/synthesizer/version.rb +1 -1
- data/synthesizer.gemspec +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a6b5babc21ba2481f2cf0370c25c7442a4aa00301e32d478ebae892eeb626d3e
|
4
|
+
data.tar.gz: 273962e36325e5c1fe5bdfa87e1cc2e2ef6a2300d2d2430621cd05aa851fb66b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 69bb9792278dc5f35f83e5ebd7c178aa03f5cf65d6eb5c8a7d3c909a7e829b8c5694f4f77ffd1a6cf783ad99c23f3d3cc357f78651c4d2e1376ab5ae6141c7cf
|
7
|
+
data.tar.gz: a611b6b6a02ba4603edb0acd18a211f1dbc39325fe5908250ca10aebba0a4501f7c597ec1f49546c0b6ee646c6c6a0d4ff31243569f80c0475872d31d4585a95
|
data/examples/step_editor.rb
CHANGED
@@ -11,13 +11,27 @@ module AudioStream
|
|
11
11
|
@soundinfo = synth.soundinfo
|
12
12
|
end
|
13
13
|
|
14
|
+
def connect
|
15
|
+
@connected = true
|
16
|
+
super
|
17
|
+
end
|
18
|
+
|
19
|
+
def disconnect
|
20
|
+
if @connected
|
21
|
+
@connected = false
|
22
|
+
|
23
|
+
if @connection
|
24
|
+
@connection.kill
|
25
|
+
@connection = nil
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
14
30
|
def each(&block)
|
15
31
|
Enumerator.new do |y|
|
16
|
-
|
17
32
|
events = Hash.new {|h, k| h[k]=[]}
|
18
33
|
|
19
34
|
fps = @soundinfo.samplerate.to_f / @soundinfo.window_size
|
20
|
-
|
21
35
|
@step_editor.events.each {|event|
|
22
36
|
pos = event[0]
|
23
37
|
events[(pos * fps).to_i] << event
|
@@ -25,6 +39,9 @@ module AudioStream
|
|
25
39
|
|
26
40
|
catch :break do
|
27
41
|
Range.new(0, nil).each {|i|
|
42
|
+
if !@connected
|
43
|
+
throw :break
|
44
|
+
end
|
28
45
|
if events.has_key?(i)
|
29
46
|
events[i].each {|event|
|
30
47
|
type = event[1]
|
@@ -31,6 +31,7 @@ module Synthesizer
|
|
31
31
|
end
|
32
32
|
|
33
33
|
def next
|
34
|
+
buf = nil
|
34
35
|
if @perform
|
35
36
|
buf = @perform.next
|
36
37
|
|
@@ -38,11 +39,8 @@ module Synthesizer
|
|
38
39
|
if @perform.released?
|
39
40
|
@perform = nil
|
40
41
|
end
|
41
|
-
|
42
|
-
buf
|
43
|
-
else
|
44
|
-
AudioStream::Buffer.float(@soundinfo.window_size, @soundinfo.channels)
|
45
42
|
end
|
43
|
+
buf || AudioStream::Buffer.float(@soundinfo.window_size, @soundinfo.channels)
|
46
44
|
end
|
47
45
|
|
48
46
|
# @param note [Synthesizer::Note]
|
data/lib/synthesizer/note.rb
CHANGED
@@ -1,6 +1,30 @@
|
|
1
1
|
module Synthesizer
|
2
2
|
class Note
|
3
3
|
NOTE_TABLE = [:"C", :"C#/Db", :"D", :"D#/Eb", :"E", :"F", :"F#/Gb", :"G", :"G#/Ab", :"A", :"A#/Bb", :"B"].freeze
|
4
|
+
NOTE_NAME_TABLE = {
|
5
|
+
:"C" => 0,
|
6
|
+
:"C#/Db" => 1,
|
7
|
+
:"C#" => 1,
|
8
|
+
:"Db" => 1,
|
9
|
+
:"D" => 2,
|
10
|
+
:"D#/Eb" => 3,
|
11
|
+
:"D#" => 3,
|
12
|
+
:"Eb" => 3,
|
13
|
+
:"E" => 4,
|
14
|
+
:"F" => 5,
|
15
|
+
:"F#/Gb" => 6,
|
16
|
+
:"F#" => 6,
|
17
|
+
:"Gb" => 6,
|
18
|
+
:"G" => 7,
|
19
|
+
:"G#/Ab" => 8,
|
20
|
+
:"G#" => 8,
|
21
|
+
:"Ab" => 8,
|
22
|
+
:"A" => 9,
|
23
|
+
:"A#/Bb" => 10,
|
24
|
+
:"A#" => 10,
|
25
|
+
:"Bb" => 10,
|
26
|
+
:"B" => 11
|
27
|
+
}.freeze
|
4
28
|
|
5
29
|
attr_reader :num
|
6
30
|
|
@@ -21,10 +45,10 @@ module Synthesizer
|
|
21
45
|
end
|
22
46
|
|
23
47
|
def self.create(name, octave)
|
24
|
-
name = name.
|
48
|
+
name = name.to_sym
|
25
49
|
octave = octave.to_i
|
26
50
|
|
27
|
-
note_index =
|
51
|
+
note_index = NOTE_NAME_TABLE[name]
|
28
52
|
if !note_index
|
29
53
|
raise Error, "not found note name: #{name}"
|
30
54
|
end
|
data/lib/synthesizer/version.rb
CHANGED
data/synthesizer.gemspec
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: synthesizer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yoshida Tetsuya
|
@@ -58,14 +58,14 @@ dependencies:
|
|
58
58
|
requirements:
|
59
59
|
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 1.2.
|
61
|
+
version: 1.2.3
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: 1.2.
|
68
|
+
version: 1.2.3
|
69
69
|
description: Synthesizer implemented in Ruby.
|
70
70
|
email:
|
71
71
|
- yoshida.eth0@gmail.com
|