synthesizer 1.3.0 → 1.3.1

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
  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