audio_stream 3.3.3 → 3.4.0
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 +4 -4
- data/.gitignore +2 -0
- data/examples/bench_fx.rb +89 -0
- data/examples/canon.wav +0 -0
- data/examples/example_options.rb +2 -0
- data/examples/{chorus.rb → fx_chorus.rb} +2 -7
- data/examples/fx_compressor.rb +34 -0
- data/examples/fx_convolution_reverb.rb +37 -0
- data/examples/fx_delay.rb +33 -0
- data/examples/{distortion.rb → fx_distortion.rb} +4 -8
- data/examples/fx_noise_gate.rb +33 -0
- data/examples/fx_phaser.rb +36 -0
- data/examples/fx_schroeder_reverb.rb +34 -0
- data/examples/fx_vocoder.rb +44 -0
- data/examples/impulse_shaker.wav +0 -0
- data/examples/impulse_shaker_bigroom.wav +0 -0
- data/examples/impulse_shaker_smallhall.wav +0 -0
- data/examples/tuner.rb +4 -3
- data/jupyter/band_pass_filter.ipynb +117 -0
- data/jupyter/biquad.ipynb +372 -0
- data/jupyter/equalizer.ipynb +198 -0
- data/lib/audio_stream/audio_input_device.rb +20 -3
- data/lib/audio_stream/audio_observable.rb +5 -0
- data/lib/audio_stream/audio_output_device.rb +20 -3
- data/lib/audio_stream/buffer.rb +22 -0
- data/lib/audio_stream/decibel.rb +8 -8
- data/lib/audio_stream/fx/a_gain.rb +2 -6
- data/lib/audio_stream/fx/all_pass_filter.rb +4 -2
- data/lib/audio_stream/fx/band_pass_filter.rb +4 -2
- data/lib/audio_stream/fx/biquad_filter.rb +8 -3
- data/lib/audio_stream/fx/chorus.rb +6 -5
- data/lib/audio_stream/fx/comb_filter.rb +4 -2
- data/lib/audio_stream/fx/convolution_reverb.rb +8 -5
- data/lib/audio_stream/fx/delay.rb +6 -5
- data/lib/audio_stream/fx/distortion.rb +4 -4
- data/lib/audio_stream/fx/equalizer_2band.rb +5 -3
- data/lib/audio_stream/fx/equalizer_3band.rb +7 -0
- data/lib/audio_stream/fx/graphic_equalizer.rb +4 -0
- data/lib/audio_stream/fx/hanning_window.rb +0 -9
- data/lib/audio_stream/fx/high_pass_filter.rb +4 -2
- data/lib/audio_stream/fx/high_shelf_filter.rb +6 -7
- data/lib/audio_stream/fx/low_pass_filter.rb +4 -2
- data/lib/audio_stream/fx/low_shelf_filter.rb +6 -7
- data/lib/audio_stream/fx/noise_gate.rb +5 -4
- data/lib/audio_stream/fx/panning.rb +2 -1
- data/lib/audio_stream/fx/peaking_filter.rb +6 -7
- data/lib/audio_stream/fx/phaser.rb +7 -6
- data/lib/audio_stream/fx/schroeder_reverb.rb +9 -10
- data/lib/audio_stream/fx/tremolo.rb +7 -5
- data/lib/audio_stream/rate.rb +30 -5
- data/lib/audio_stream/version.rb +1 -1
- metadata +23 -10
- data/examples/biquad.ipynb +0 -428
- data/examples/equalizer.ipynb +0 -233
@@ -3,24 +3,23 @@ module AudioStream
|
|
3
3
|
class SchroederReverb
|
4
4
|
|
5
5
|
# @param soundinfo [AudioStream::SoundInfo]
|
6
|
-
# @param
|
7
|
-
# @param
|
8
|
-
|
9
|
-
def initialize(soundinfo, time:, dry: -1.0, wet: -20.0)
|
6
|
+
# @param dry [AudioStream::Decibel | Float] dry gain
|
7
|
+
# @param wet [AudioStream::Decibel | Float] wet gain
|
8
|
+
def initialize(soundinfo, dry: -1.0, wet: -20.0)
|
10
9
|
@window_size = soundinfo.window_size
|
11
10
|
@combs = [
|
12
|
-
CombFilter.new(soundinfo, freq:
|
13
|
-
CombFilter.new(soundinfo, freq:
|
14
|
-
CombFilter.new(soundinfo, freq:
|
15
|
-
CombFilter.new(soundinfo, freq:
|
11
|
+
CombFilter.new(soundinfo, freq: Rate.msec(39.85), q: 0.871402),
|
12
|
+
CombFilter.new(soundinfo, freq: Rate.msec(36.10), q: 0.882762),
|
13
|
+
CombFilter.new(soundinfo, freq: Rate.msec(33.27), q: 0.891443),
|
14
|
+
CombFilter.new(soundinfo, freq: Rate.msec(30.15), q: 0.901117),
|
16
15
|
]
|
17
16
|
@allpasss = [
|
18
17
|
AllPassFilter.create(soundinfo, freq: Rate.msec(5.0).freq(soundinfo), q: BiquadFilter::DEFAULT_Q),
|
19
18
|
AllPassFilter.create(soundinfo, freq: Rate.msec(1.7).freq(soundinfo), q: BiquadFilter::DEFAULT_Q),
|
20
19
|
]
|
21
20
|
|
22
|
-
@dry = Decibel.
|
23
|
-
@wet = Decibel.
|
21
|
+
@dry = Decibel.db(dry).mag
|
22
|
+
@wet = Decibel.db(wet).mag
|
24
23
|
end
|
25
24
|
|
26
25
|
def process(input)
|
@@ -1,23 +1,25 @@
|
|
1
1
|
module AudioStream
|
2
2
|
module Fx
|
3
3
|
class Tremolo
|
4
|
+
# @param soundinfo [AudioStream::SoundInfo]
|
5
|
+
# @param freq [AudioStream::Rate | Float] Tremolo speed (0.0~)
|
6
|
+
# @param depth [Float] Tremolo depth (0.0~)
|
4
7
|
def initialize(soundinfo, freq:, depth:)
|
5
|
-
@
|
6
|
-
@freq = freq.to_f
|
8
|
+
@freq = Rate.freq(freq)
|
7
9
|
@depth = depth.to_f
|
8
10
|
@phase = 0
|
11
|
+
@period = @freq.sample_phase(soundinfo)
|
9
12
|
end
|
10
13
|
|
11
14
|
def process(input)
|
12
15
|
window_size = input.window_size
|
13
|
-
period = 2 * Math::PI * @freq / @samplerate
|
14
16
|
|
15
17
|
streams = input.streams.map {|stream|
|
16
18
|
stream.map.with_index {|f, i|
|
17
|
-
f * (1.0 + @depth * Math.sin((i + @phase) * period))
|
19
|
+
f * (1.0 + @depth * Math.sin((i + @phase) * @period))
|
18
20
|
}
|
19
21
|
}
|
20
|
-
@phase = (@phase + window_size) % (window_size / period)
|
22
|
+
@phase = (@phase + window_size) % (window_size / @period)
|
21
23
|
|
22
24
|
Buffer.new(*streams)
|
23
25
|
end
|
data/lib/audio_stream/rate.rb
CHANGED
@@ -47,6 +47,11 @@ module AudioStream
|
|
47
47
|
2.0 * Math::PI / sample(soundinfo)
|
48
48
|
end
|
49
49
|
|
50
|
+
def add(other, soundinfo)
|
51
|
+
other = self.class.sec(other)
|
52
|
+
self.class.new(sec: self.sec(soundinfo) + other.sec(soundinfo))
|
53
|
+
end
|
54
|
+
|
50
55
|
def *(other)
|
51
56
|
other = other.to_f
|
52
57
|
|
@@ -68,23 +73,43 @@ module AudioStream
|
|
68
73
|
end
|
69
74
|
|
70
75
|
def self.sec(v)
|
71
|
-
|
76
|
+
if self===v
|
77
|
+
v
|
78
|
+
else
|
79
|
+
new(sec: v)
|
80
|
+
end
|
72
81
|
end
|
73
82
|
|
74
83
|
def self.msec(v)
|
75
|
-
|
84
|
+
if self===v
|
85
|
+
v
|
86
|
+
else
|
87
|
+
new(sec: v*0.001)
|
88
|
+
end
|
76
89
|
end
|
77
90
|
|
78
91
|
def self.sample(v)
|
79
|
-
|
92
|
+
if self===v
|
93
|
+
v
|
94
|
+
else
|
95
|
+
new(sample: v)
|
96
|
+
end
|
80
97
|
end
|
81
98
|
|
82
99
|
def self.freq(v)
|
83
|
-
|
100
|
+
if self===v
|
101
|
+
v
|
102
|
+
else
|
103
|
+
new(freq: v)
|
104
|
+
end
|
84
105
|
end
|
85
106
|
|
86
107
|
def self.sync(v)
|
87
|
-
|
108
|
+
if self===v
|
109
|
+
v
|
110
|
+
else
|
111
|
+
new(sync: v)
|
112
|
+
end
|
88
113
|
end
|
89
114
|
|
90
115
|
|
data/lib/audio_stream/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: audio_stream
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yoshida Tetsuya
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-12-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -138,15 +138,28 @@ files:
|
|
138
138
|
- audio_stream.gemspec
|
139
139
|
- bin/console
|
140
140
|
- bin/setup
|
141
|
-
- examples/
|
142
|
-
- examples/
|
143
|
-
- examples/distortion.rb
|
144
|
-
- examples/equalizer.ipynb
|
141
|
+
- examples/bench_fx.rb
|
142
|
+
- examples/canon.wav
|
145
143
|
- examples/example_options.rb
|
144
|
+
- examples/fx_chorus.rb
|
145
|
+
- examples/fx_compressor.rb
|
146
|
+
- examples/fx_convolution_reverb.rb
|
147
|
+
- examples/fx_delay.rb
|
148
|
+
- examples/fx_distortion.rb
|
149
|
+
- examples/fx_noise_gate.rb
|
150
|
+
- examples/fx_phaser.rb
|
151
|
+
- examples/fx_schroeder_reverb.rb
|
152
|
+
- examples/fx_vocoder.rb
|
153
|
+
- examples/impulse_shaker.wav
|
154
|
+
- examples/impulse_shaker_bigroom.wav
|
155
|
+
- examples/impulse_shaker_smallhall.wav
|
146
156
|
- examples/lpf.rb
|
147
157
|
- examples/rec.rb
|
148
158
|
- examples/tremolo.rb
|
149
159
|
- examples/tuner.rb
|
160
|
+
- jupyter/band_pass_filter.ipynb
|
161
|
+
- jupyter/biquad.ipynb
|
162
|
+
- jupyter/equalizer.ipynb
|
150
163
|
- lib/audio_stream.rb
|
151
164
|
- lib/audio_stream/audio_bus.rb
|
152
165
|
- lib/audio_stream/audio_input.rb
|
@@ -208,7 +221,7 @@ metadata:
|
|
208
221
|
homepage_uri: https://github.com/yoshida-eth0/ruby-audio_stream
|
209
222
|
source_code_uri: https://github.com/yoshida-eth0/ruby-audio_stream
|
210
223
|
changelog_uri: https://github.com/yoshida-eth0/ruby-audio_stream
|
211
|
-
post_install_message:
|
224
|
+
post_install_message:
|
212
225
|
rdoc_options: []
|
213
226
|
require_paths:
|
214
227
|
- lib
|
@@ -223,8 +236,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
223
236
|
- !ruby/object:Gem::Version
|
224
237
|
version: '0'
|
225
238
|
requirements: []
|
226
|
-
rubygems_version: 3.
|
227
|
-
signing_key:
|
239
|
+
rubygems_version: 3.2.3
|
240
|
+
signing_key:
|
228
241
|
specification_version: 4
|
229
242
|
summary: AudioStream is a Digital Audio Workstation for CLI
|
230
243
|
test_files: []
|