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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ba89ee2f086cd7828b8a8f56ac0afaaed912b6140171972ea0a79de35116a8d2
4
- data.tar.gz: 74ac5e12ea76f79b4d03a3181f24a97901c6381a8f8f7c4f34894f212f234438
3
+ metadata.gz: a6b5babc21ba2481f2cf0370c25c7442a4aa00301e32d478ebae892eeb626d3e
4
+ data.tar.gz: 273962e36325e5c1fe5bdfa87e1cc2e2ef6a2300d2d2430621cd05aa851fb66b
5
5
  SHA512:
6
- metadata.gz: 2fbda5f5c4e4a5f13744ce84f1ba210cc5cf5ae264d4b24b0106650949b8e03d1a2ef24767d832febfd5770dda7805797fccf798a0015be99884371cedb75572
7
- data.tar.gz: a8aa71eeaca0a941c2b0c7edadaa67610d44084afa7808a4a6488a622be0ab457025339d843854261ad7950f4e03510750feed62fae3083851023d01ca05f982
6
+ metadata.gz: 69bb9792278dc5f35f83e5ebd7c178aa03f5cf65d6eb5c8a7d3c909a7e829b8c5694f4f77ffd1a6cf783ad99c23f3d3cc357f78651c4d2e1376ab5ae6141c7cf
7
+ data.tar.gz: a611b6b6a02ba4603edb0acd18a211f1dbc39325fe5908250ca10aebba0a4501f7c597ec1f49546c0b6ee646c6c6a0d4ff31243569f80c0475872d31d4585a95
@@ -15,9 +15,7 @@ synth = PolySynth.new(
15
15
  oscillators: [
16
16
  Oscillator.new(
17
17
  shape: Shape::SquareSawtooth,
18
- uni_num: ModulationValue.new(4)
19
- .add(Modulation::Lfo.new(
20
- )),
18
+ uni_num: 4,
21
19
  uni_detune: 0.1,
22
20
  ),
23
21
  ],
@@ -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]
@@ -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.to_s
48
+ name = name.to_sym
25
49
  octave = octave.to_i
26
50
 
27
- note_index = NOTE_TABLE.index(name)
51
+ note_index = NOTE_NAME_TABLE[name]
28
52
  if !note_index
29
53
  raise Error, "not found note name: #{name}"
30
54
  end
@@ -1,3 +1,3 @@
1
1
  module Synthesizer
2
- VERSION = "1.3.0"
2
+ VERSION = "1.3.1"
3
3
  end
data/synthesizer.gemspec CHANGED
@@ -30,5 +30,5 @@ Gem::Specification.new do |spec|
30
30
  spec.add_development_dependency "rake", "~> 12.0"
31
31
  spec.add_development_dependency "minitest", "~> 5.0"
32
32
 
33
- spec.add_dependency "audio_stream", ">= 1.2.2"
33
+ spec.add_dependency "audio_stream", ">= 1.2.3"
34
34
  end
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.0
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.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.2
68
+ version: 1.2.3
69
69
  description: Synthesizer implemented in Ruby.
70
70
  email:
71
71
  - yoshida.eth0@gmail.com