deftones 0.1.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 +7 -0
- data/.yardopts +5 -0
- data/CHANGELOG.md +12 -0
- data/LICENSE.txt +21 -0
- data/README.md +197 -0
- data/Rakefile +8 -0
- data/examples/poly_chord.rb +14 -0
- data/examples/render_sampler.rb +16 -0
- data/examples/render_sequence.rb +13 -0
- data/examples/render_synth.rb +18 -0
- data/lib/deftones/analysis/analyser.rb +162 -0
- data/lib/deftones/analysis/dc_meter.rb +56 -0
- data/lib/deftones/analysis/fft.rb +128 -0
- data/lib/deftones/analysis/meter.rb +83 -0
- data/lib/deftones/analysis/waveform.rb +93 -0
- data/lib/deftones/component/amplitude_envelope.rb +8 -0
- data/lib/deftones/component/biquad_filter.rb +7 -0
- data/lib/deftones/component/channel.rb +109 -0
- data/lib/deftones/component/compressor.rb +64 -0
- data/lib/deftones/component/convolver.rb +99 -0
- data/lib/deftones/component/cross_fade.rb +67 -0
- data/lib/deftones/component/envelope.rb +160 -0
- data/lib/deftones/component/eq3.rb +73 -0
- data/lib/deftones/component/feedback_comb_filter.rb +75 -0
- data/lib/deftones/component/filter.rb +75 -0
- data/lib/deftones/component/follower.rb +55 -0
- data/lib/deftones/component/frequency_envelope.rb +24 -0
- data/lib/deftones/component/gate.rb +46 -0
- data/lib/deftones/component/lfo.rb +88 -0
- data/lib/deftones/component/limiter.rb +11 -0
- data/lib/deftones/component/lowpass_comb_filter.rb +43 -0
- data/lib/deftones/component/merge.rb +45 -0
- data/lib/deftones/component/mid_side_compressor.rb +43 -0
- data/lib/deftones/component/mid_side_merge.rb +53 -0
- data/lib/deftones/component/mid_side_split.rb +54 -0
- data/lib/deftones/component/mono.rb +8 -0
- data/lib/deftones/component/multiband_compressor.rb +70 -0
- data/lib/deftones/component/multiband_split.rb +133 -0
- data/lib/deftones/component/one_pole_filter.rb +71 -0
- data/lib/deftones/component/pan_vol.rb +26 -0
- data/lib/deftones/component/panner.rb +75 -0
- data/lib/deftones/component/panner3d.rb +322 -0
- data/lib/deftones/component/solo.rb +56 -0
- data/lib/deftones/component/split.rb +47 -0
- data/lib/deftones/component/volume.rb +31 -0
- data/lib/deftones/context.rb +213 -0
- data/lib/deftones/core/audio_block.rb +82 -0
- data/lib/deftones/core/audio_node.rb +262 -0
- data/lib/deftones/core/clock.rb +91 -0
- data/lib/deftones/core/computed_signal.rb +69 -0
- data/lib/deftones/core/delay.rb +44 -0
- data/lib/deftones/core/effect.rb +66 -0
- data/lib/deftones/core/emitter.rb +51 -0
- data/lib/deftones/core/gain.rb +39 -0
- data/lib/deftones/core/instrument.rb +109 -0
- data/lib/deftones/core/param.rb +31 -0
- data/lib/deftones/core/signal.rb +452 -0
- data/lib/deftones/core/signal_operator_methods.rb +73 -0
- data/lib/deftones/core/signal_operators.rb +138 -0
- data/lib/deftones/core/signal_shapers.rb +83 -0
- data/lib/deftones/core/source.rb +213 -0
- data/lib/deftones/core/synced_signal.rb +88 -0
- data/lib/deftones/destination.rb +132 -0
- data/lib/deftones/draw.rb +100 -0
- data/lib/deftones/dsp/biquad.rb +129 -0
- data/lib/deftones/dsp/delay_line.rb +41 -0
- data/lib/deftones/dsp/helpers.rb +25 -0
- data/lib/deftones/effect/auto_filter.rb +92 -0
- data/lib/deftones/effect/auto_panner.rb +57 -0
- data/lib/deftones/effect/auto_wah.rb +98 -0
- data/lib/deftones/effect/bit_crusher.rb +38 -0
- data/lib/deftones/effect/chebyshev.rb +36 -0
- data/lib/deftones/effect/chorus.rb +73 -0
- data/lib/deftones/effect/distortion.rb +22 -0
- data/lib/deftones/effect/feedback_delay.rb +38 -0
- data/lib/deftones/effect/freeverb.rb +11 -0
- data/lib/deftones/effect/frequency_shifter.rb +89 -0
- data/lib/deftones/effect/jc_reverb.rb +11 -0
- data/lib/deftones/effect/modulation_control.rb +159 -0
- data/lib/deftones/effect/phaser.rb +72 -0
- data/lib/deftones/effect/ping_pong_delay.rb +40 -0
- data/lib/deftones/effect/pitch_shift.rb +156 -0
- data/lib/deftones/effect/reverb.rb +71 -0
- data/lib/deftones/effect/stereo_widener.rb +34 -0
- data/lib/deftones/effect/tremolo.rb +52 -0
- data/lib/deftones/effect/vibrato.rb +47 -0
- data/lib/deftones/event/callback_behavior.rb +61 -0
- data/lib/deftones/event/loop.rb +53 -0
- data/lib/deftones/event/part.rb +51 -0
- data/lib/deftones/event/pattern.rb +94 -0
- data/lib/deftones/event/sequence.rb +87 -0
- data/lib/deftones/event/tone_event.rb +77 -0
- data/lib/deftones/event/transport.rb +276 -0
- data/lib/deftones/instrument/am_synth.rb +56 -0
- data/lib/deftones/instrument/duo_synth.rb +68 -0
- data/lib/deftones/instrument/fm_synth.rb +60 -0
- data/lib/deftones/instrument/membrane_synth.rb +60 -0
- data/lib/deftones/instrument/metal_synth.rb +61 -0
- data/lib/deftones/instrument/mono_synth.rb +88 -0
- data/lib/deftones/instrument/noise_synth.rb +56 -0
- data/lib/deftones/instrument/pluck_synth.rb +41 -0
- data/lib/deftones/instrument/poly_synth.rb +96 -0
- data/lib/deftones/instrument/sampler.rb +97 -0
- data/lib/deftones/instrument/synth.rb +60 -0
- data/lib/deftones/io/buffer.rb +352 -0
- data/lib/deftones/io/buffers.rb +77 -0
- data/lib/deftones/io/recorder.rb +89 -0
- data/lib/deftones/listener.rb +120 -0
- data/lib/deftones/music/frequency.rb +128 -0
- data/lib/deftones/music/midi.rb +206 -0
- data/lib/deftones/music/note.rb +58 -0
- data/lib/deftones/music/ticks.rb +106 -0
- data/lib/deftones/music/time.rb +209 -0
- data/lib/deftones/music/transport_time.rb +94 -0
- data/lib/deftones/music/unit_helpers.rb +30 -0
- data/lib/deftones/offline_context.rb +46 -0
- data/lib/deftones/portaudio_support.rb +112 -0
- data/lib/deftones/source/am_oscillator.rb +42 -0
- data/lib/deftones/source/fat_oscillator.rb +49 -0
- data/lib/deftones/source/fm_oscillator.rb +47 -0
- data/lib/deftones/source/grain_player.rb +198 -0
- data/lib/deftones/source/karplus_strong.rb +51 -0
- data/lib/deftones/source/noise.rb +99 -0
- data/lib/deftones/source/omni_oscillator.rb +175 -0
- data/lib/deftones/source/oscillator.rb +74 -0
- data/lib/deftones/source/player.rb +228 -0
- data/lib/deftones/source/players.rb +133 -0
- data/lib/deftones/source/pulse_oscillator.rb +38 -0
- data/lib/deftones/source/pwm_oscillator.rb +49 -0
- data/lib/deftones/source/tone_buffer_source.rb +136 -0
- data/lib/deftones/source/tone_oscillator_node.rb +65 -0
- data/lib/deftones/source/user_media.rb +519 -0
- data/lib/deftones/version.rb +5 -0
- data/lib/deftones.rb +542 -0
- metadata +221 -0
data/lib/deftones.rb
ADDED
|
@@ -0,0 +1,542 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
begin
|
|
4
|
+
require "portaudio"
|
|
5
|
+
rescue LoadError
|
|
6
|
+
nil
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
begin
|
|
10
|
+
require "wavify/errors"
|
|
11
|
+
require "wavify/core/format"
|
|
12
|
+
require "wavify/core/duration"
|
|
13
|
+
require "wavify/core/sample_buffer"
|
|
14
|
+
require "wavify/codecs/base"
|
|
15
|
+
require "wavify/codecs/wav"
|
|
16
|
+
rescue LoadError
|
|
17
|
+
nil
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
require_relative "deftones/version"
|
|
21
|
+
require_relative "deftones/portaudio_support"
|
|
22
|
+
require_relative "deftones/context"
|
|
23
|
+
require_relative "deftones/offline_context"
|
|
24
|
+
require_relative "deftones/dsp/helpers"
|
|
25
|
+
require_relative "deftones/dsp/delay_line"
|
|
26
|
+
require_relative "deftones/dsp/biquad"
|
|
27
|
+
require_relative "deftones/event/callback_behavior"
|
|
28
|
+
require_relative "deftones/event/transport"
|
|
29
|
+
require_relative "deftones/event/tone_event"
|
|
30
|
+
require_relative "deftones/event/loop"
|
|
31
|
+
require_relative "deftones/event/part"
|
|
32
|
+
require_relative "deftones/event/sequence"
|
|
33
|
+
require_relative "deftones/event/pattern"
|
|
34
|
+
require_relative "deftones/music/note"
|
|
35
|
+
require_relative "deftones/music/unit_helpers"
|
|
36
|
+
require_relative "deftones/music/frequency"
|
|
37
|
+
require_relative "deftones/music/midi"
|
|
38
|
+
require_relative "deftones/music/time"
|
|
39
|
+
require_relative "deftones/music/transport_time"
|
|
40
|
+
require_relative "deftones/music/ticks"
|
|
41
|
+
require_relative "deftones/destination"
|
|
42
|
+
require_relative "deftones/draw"
|
|
43
|
+
require_relative "deftones/listener"
|
|
44
|
+
require_relative "deftones/io/buffer"
|
|
45
|
+
require_relative "deftones/io/buffers"
|
|
46
|
+
require_relative "deftones/io/recorder"
|
|
47
|
+
require_relative "deftones/core/audio_block"
|
|
48
|
+
require_relative "deftones/core/audio_node"
|
|
49
|
+
require_relative "deftones/core/emitter"
|
|
50
|
+
require_relative "deftones/core/signal_operator_methods"
|
|
51
|
+
require_relative "deftones/core/source"
|
|
52
|
+
require_relative "deftones/core/signal"
|
|
53
|
+
require_relative "deftones/core/synced_signal"
|
|
54
|
+
require_relative "deftones/core/computed_signal"
|
|
55
|
+
require_relative "deftones/core/signal_operators"
|
|
56
|
+
require_relative "deftones/core/signal_shapers"
|
|
57
|
+
require_relative "deftones/core/clock"
|
|
58
|
+
require_relative "deftones/core/delay"
|
|
59
|
+
require_relative "deftones/core/gain"
|
|
60
|
+
require_relative "deftones/core/param"
|
|
61
|
+
require_relative "deftones/core/instrument"
|
|
62
|
+
require_relative "deftones/core/effect"
|
|
63
|
+
require_relative "deftones/source/oscillator"
|
|
64
|
+
require_relative "deftones/source/noise"
|
|
65
|
+
require_relative "deftones/source/user_media"
|
|
66
|
+
require_relative "deftones/source/pulse_oscillator"
|
|
67
|
+
require_relative "deftones/source/fm_oscillator"
|
|
68
|
+
require_relative "deftones/source/am_oscillator"
|
|
69
|
+
require_relative "deftones/source/fat_oscillator"
|
|
70
|
+
require_relative "deftones/source/pwm_oscillator"
|
|
71
|
+
require_relative "deftones/source/omni_oscillator"
|
|
72
|
+
require_relative "deftones/source/karplus_strong"
|
|
73
|
+
require_relative "deftones/source/player"
|
|
74
|
+
require_relative "deftones/source/players"
|
|
75
|
+
require_relative "deftones/source/grain_player"
|
|
76
|
+
require_relative "deftones/source/tone_buffer_source"
|
|
77
|
+
require_relative "deftones/source/tone_oscillator_node"
|
|
78
|
+
require_relative "deftones/component/envelope"
|
|
79
|
+
require_relative "deftones/component/amplitude_envelope"
|
|
80
|
+
require_relative "deftones/component/frequency_envelope"
|
|
81
|
+
require_relative "deftones/component/filter"
|
|
82
|
+
require_relative "deftones/component/biquad_filter"
|
|
83
|
+
require_relative "deftones/component/follower"
|
|
84
|
+
require_relative "deftones/component/feedback_comb_filter"
|
|
85
|
+
require_relative "deftones/component/lfo"
|
|
86
|
+
require_relative "deftones/component/lowpass_comb_filter"
|
|
87
|
+
require_relative "deftones/component/one_pole_filter"
|
|
88
|
+
require_relative "deftones/component/volume"
|
|
89
|
+
require_relative "deftones/component/panner"
|
|
90
|
+
require_relative "deftones/component/panner3d"
|
|
91
|
+
require_relative "deftones/component/convolver"
|
|
92
|
+
require_relative "deftones/component/pan_vol"
|
|
93
|
+
require_relative "deftones/component/solo"
|
|
94
|
+
require_relative "deftones/component/channel"
|
|
95
|
+
require_relative "deftones/component/cross_fade"
|
|
96
|
+
require_relative "deftones/component/merge"
|
|
97
|
+
require_relative "deftones/component/mid_side_compressor"
|
|
98
|
+
require_relative "deftones/component/mid_side_merge"
|
|
99
|
+
require_relative "deftones/component/mid_side_split"
|
|
100
|
+
require_relative "deftones/component/mono"
|
|
101
|
+
require_relative "deftones/component/multiband_compressor"
|
|
102
|
+
require_relative "deftones/component/multiband_split"
|
|
103
|
+
require_relative "deftones/component/split"
|
|
104
|
+
require_relative "deftones/component/eq3"
|
|
105
|
+
require_relative "deftones/component/compressor"
|
|
106
|
+
require_relative "deftones/component/limiter"
|
|
107
|
+
require_relative "deftones/component/gate"
|
|
108
|
+
require_relative "deftones/analysis/fft"
|
|
109
|
+
require_relative "deftones/analysis/waveform"
|
|
110
|
+
require_relative "deftones/analysis/analyser"
|
|
111
|
+
require_relative "deftones/analysis/meter"
|
|
112
|
+
require_relative "deftones/analysis/dc_meter"
|
|
113
|
+
require_relative "deftones/effect/modulation_control"
|
|
114
|
+
require_relative "deftones/effect/distortion"
|
|
115
|
+
require_relative "deftones/effect/bit_crusher"
|
|
116
|
+
require_relative "deftones/effect/chebyshev"
|
|
117
|
+
require_relative "deftones/effect/feedback_delay"
|
|
118
|
+
require_relative "deftones/effect/ping_pong_delay"
|
|
119
|
+
require_relative "deftones/effect/reverb"
|
|
120
|
+
require_relative "deftones/effect/freeverb"
|
|
121
|
+
require_relative "deftones/effect/jc_reverb"
|
|
122
|
+
require_relative "deftones/effect/chorus"
|
|
123
|
+
require_relative "deftones/effect/phaser"
|
|
124
|
+
require_relative "deftones/effect/tremolo"
|
|
125
|
+
require_relative "deftones/effect/vibrato"
|
|
126
|
+
require_relative "deftones/effect/auto_filter"
|
|
127
|
+
require_relative "deftones/effect/auto_panner"
|
|
128
|
+
require_relative "deftones/effect/auto_wah"
|
|
129
|
+
require_relative "deftones/effect/frequency_shifter"
|
|
130
|
+
require_relative "deftones/effect/pitch_shift"
|
|
131
|
+
require_relative "deftones/effect/stereo_widener"
|
|
132
|
+
require_relative "deftones/instrument/synth"
|
|
133
|
+
require_relative "deftones/instrument/mono_synth"
|
|
134
|
+
require_relative "deftones/instrument/fm_synth"
|
|
135
|
+
require_relative "deftones/instrument/am_synth"
|
|
136
|
+
require_relative "deftones/instrument/duo_synth"
|
|
137
|
+
require_relative "deftones/instrument/noise_synth"
|
|
138
|
+
require_relative "deftones/instrument/pluck_synth"
|
|
139
|
+
require_relative "deftones/instrument/membrane_synth"
|
|
140
|
+
require_relative "deftones/instrument/metal_synth"
|
|
141
|
+
require_relative "deftones/instrument/sampler"
|
|
142
|
+
require_relative "deftones/instrument/poly_synth"
|
|
143
|
+
|
|
144
|
+
module Deftones
|
|
145
|
+
class Error < StandardError; end
|
|
146
|
+
class MissingRealtimeBackendError < Error; end
|
|
147
|
+
|
|
148
|
+
class << self
|
|
149
|
+
def context
|
|
150
|
+
@context ||= Context.new
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
def start(use_realtime: true)
|
|
154
|
+
context.start(use_realtime: use_realtime)
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
def output
|
|
158
|
+
context.output
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
def set_context(new_context)
|
|
162
|
+
raise ArgumentError, "context is required" if new_context.nil?
|
|
163
|
+
|
|
164
|
+
@context&.stop if @context && @context != new_context
|
|
165
|
+
@context = new_context
|
|
166
|
+
Destination.reset!
|
|
167
|
+
self
|
|
168
|
+
end
|
|
169
|
+
|
|
170
|
+
def get_context
|
|
171
|
+
context
|
|
172
|
+
end
|
|
173
|
+
|
|
174
|
+
def destination
|
|
175
|
+
Destination.node(context: context)
|
|
176
|
+
end
|
|
177
|
+
|
|
178
|
+
def get_destination
|
|
179
|
+
destination
|
|
180
|
+
end
|
|
181
|
+
|
|
182
|
+
def draw
|
|
183
|
+
Draw.instance
|
|
184
|
+
end
|
|
185
|
+
|
|
186
|
+
def get_draw
|
|
187
|
+
draw
|
|
188
|
+
end
|
|
189
|
+
|
|
190
|
+
def listener
|
|
191
|
+
@listener ||= Listener.new
|
|
192
|
+
end
|
|
193
|
+
|
|
194
|
+
def get_listener
|
|
195
|
+
listener
|
|
196
|
+
end
|
|
197
|
+
|
|
198
|
+
def now
|
|
199
|
+
context.current_time
|
|
200
|
+
end
|
|
201
|
+
|
|
202
|
+
def transport
|
|
203
|
+
@transport ||= Event::Transport.new
|
|
204
|
+
end
|
|
205
|
+
|
|
206
|
+
def get_transport
|
|
207
|
+
transport
|
|
208
|
+
end
|
|
209
|
+
|
|
210
|
+
def render(duration:, sample_rate: Context::DEFAULT_SAMPLE_RATE, channels: 2,
|
|
211
|
+
buffer_size: Context::DEFAULT_BUFFER_SIZE, &block)
|
|
212
|
+
ctx = OfflineContext.new(
|
|
213
|
+
duration: duration,
|
|
214
|
+
sample_rate: sample_rate,
|
|
215
|
+
channels: channels,
|
|
216
|
+
buffer_size: buffer_size
|
|
217
|
+
)
|
|
218
|
+
block&.call(ctx)
|
|
219
|
+
ctx.render
|
|
220
|
+
end
|
|
221
|
+
|
|
222
|
+
def offline(duration:, sample_rate: Context::DEFAULT_SAMPLE_RATE, channels: 2,
|
|
223
|
+
buffer_size: Context::DEFAULT_BUFFER_SIZE, &block)
|
|
224
|
+
render(duration: duration, sample_rate: sample_rate, channels: channels, buffer_size: buffer_size, &block)
|
|
225
|
+
end
|
|
226
|
+
|
|
227
|
+
def Offline(duration:, sample_rate: Context::DEFAULT_SAMPLE_RATE, channels: 2,
|
|
228
|
+
buffer_size: Context::DEFAULT_BUFFER_SIZE, &block)
|
|
229
|
+
offline(duration: duration, sample_rate: sample_rate, channels: channels, buffer_size: buffer_size, &block)
|
|
230
|
+
end
|
|
231
|
+
|
|
232
|
+
def render_to_file(path, duration:, format: nil, **options, &block)
|
|
233
|
+
ctx = OfflineContext.new(duration: duration, **options)
|
|
234
|
+
block&.call(ctx)
|
|
235
|
+
ctx.render_to_file(path, format: format)
|
|
236
|
+
end
|
|
237
|
+
|
|
238
|
+
def loaded
|
|
239
|
+
true
|
|
240
|
+
end
|
|
241
|
+
|
|
242
|
+
def immediate
|
|
243
|
+
now
|
|
244
|
+
end
|
|
245
|
+
|
|
246
|
+
def version
|
|
247
|
+
VERSION
|
|
248
|
+
end
|
|
249
|
+
|
|
250
|
+
def reset!
|
|
251
|
+
@context&.stop
|
|
252
|
+
@context = nil
|
|
253
|
+
Destination.reset!
|
|
254
|
+
Draw.reset!
|
|
255
|
+
@listener = nil
|
|
256
|
+
@transport = nil
|
|
257
|
+
end
|
|
258
|
+
|
|
259
|
+
def portaudio_available?
|
|
260
|
+
Deftones::PortAudioSupport.available?
|
|
261
|
+
end
|
|
262
|
+
|
|
263
|
+
def wavify_available?
|
|
264
|
+
!!defined?(Wavify::Core::SampleBuffer) && !!defined?(Wavify::Codecs::Wav)
|
|
265
|
+
end
|
|
266
|
+
|
|
267
|
+
def supported?
|
|
268
|
+
true
|
|
269
|
+
end
|
|
270
|
+
|
|
271
|
+
def connect_series(*nodes)
|
|
272
|
+
nodes.each_cons(2) { |source, destination_node| source.connect(destination_node) }
|
|
273
|
+
nodes.last
|
|
274
|
+
end
|
|
275
|
+
|
|
276
|
+
def connect(source, destination_node, output_index: 0, input_index: 0)
|
|
277
|
+
source.connect(destination_node, output_index: output_index, input_index: input_index)
|
|
278
|
+
destination_node
|
|
279
|
+
end
|
|
280
|
+
|
|
281
|
+
def disconnect(source, destination_node = nil)
|
|
282
|
+
source.disconnect(destination_node)
|
|
283
|
+
source
|
|
284
|
+
end
|
|
285
|
+
|
|
286
|
+
def connect_signal(source, destination_node)
|
|
287
|
+
source.connect(destination_node)
|
|
288
|
+
destination_node
|
|
289
|
+
end
|
|
290
|
+
|
|
291
|
+
def fan_in(destination_node, *sources)
|
|
292
|
+
sources.each { |source| source.connect(destination_node) }
|
|
293
|
+
destination_node
|
|
294
|
+
end
|
|
295
|
+
|
|
296
|
+
def db_to_gain(value)
|
|
297
|
+
10.0**(value.to_f / 20.0)
|
|
298
|
+
end
|
|
299
|
+
|
|
300
|
+
def gain_to_db(value)
|
|
301
|
+
gain = value.to_f
|
|
302
|
+
return -Float::INFINITY if gain <= 0.0
|
|
303
|
+
|
|
304
|
+
20.0 * Math.log10(gain)
|
|
305
|
+
end
|
|
306
|
+
|
|
307
|
+
def ftom(value)
|
|
308
|
+
Frequency.to_midi(value)
|
|
309
|
+
end
|
|
310
|
+
|
|
311
|
+
def mtof(value)
|
|
312
|
+
Note.to_frequency(Note.from_midi(value))
|
|
313
|
+
end
|
|
314
|
+
|
|
315
|
+
def interval_to_frequency_ratio(value)
|
|
316
|
+
2.0**(value.to_f / 12.0)
|
|
317
|
+
end
|
|
318
|
+
|
|
319
|
+
def is_array(value)
|
|
320
|
+
value.is_a?(Array)
|
|
321
|
+
end
|
|
322
|
+
|
|
323
|
+
def is_boolean(value)
|
|
324
|
+
value == true || value == false
|
|
325
|
+
end
|
|
326
|
+
|
|
327
|
+
def is_defined(value)
|
|
328
|
+
!value.nil?
|
|
329
|
+
end
|
|
330
|
+
|
|
331
|
+
def is_function(value)
|
|
332
|
+
value.respond_to?(:call)
|
|
333
|
+
end
|
|
334
|
+
|
|
335
|
+
def is_note(value)
|
|
336
|
+
Note.to_midi(value)
|
|
337
|
+
true
|
|
338
|
+
rescue StandardError
|
|
339
|
+
false
|
|
340
|
+
end
|
|
341
|
+
|
|
342
|
+
def is_number(value)
|
|
343
|
+
value.is_a?(Numeric)
|
|
344
|
+
end
|
|
345
|
+
|
|
346
|
+
def is_object(value)
|
|
347
|
+
return false if value.nil? || is_array(value) || is_string(value) || is_number(value) || is_boolean(value)
|
|
348
|
+
|
|
349
|
+
true
|
|
350
|
+
end
|
|
351
|
+
|
|
352
|
+
def is_string(value)
|
|
353
|
+
value.is_a?(String)
|
|
354
|
+
end
|
|
355
|
+
|
|
356
|
+
def is_undef(value)
|
|
357
|
+
value.nil?
|
|
358
|
+
end
|
|
359
|
+
|
|
360
|
+
def master
|
|
361
|
+
destination
|
|
362
|
+
end
|
|
363
|
+
|
|
364
|
+
def frequency(value)
|
|
365
|
+
Music::Frequency.new(value)
|
|
366
|
+
end
|
|
367
|
+
|
|
368
|
+
def midi(value)
|
|
369
|
+
Music::Midi.new(value)
|
|
370
|
+
end
|
|
371
|
+
|
|
372
|
+
def time(value)
|
|
373
|
+
Music::Time.new(value)
|
|
374
|
+
end
|
|
375
|
+
|
|
376
|
+
def ticks(value, transport: self.transport)
|
|
377
|
+
Music::Ticks.new(value, transport: transport)
|
|
378
|
+
end
|
|
379
|
+
|
|
380
|
+
def transport_time(value, transport: self.transport)
|
|
381
|
+
Music::TransportTime.new(value, transport: transport)
|
|
382
|
+
end
|
|
383
|
+
|
|
384
|
+
alias wavefile_available? wavify_available?
|
|
385
|
+
alias supported supported?
|
|
386
|
+
alias dbToGain db_to_gain
|
|
387
|
+
alias gainToDb gain_to_db
|
|
388
|
+
alias getContext get_context
|
|
389
|
+
alias getDestination get_destination
|
|
390
|
+
alias getDraw get_draw
|
|
391
|
+
alias getListener get_listener
|
|
392
|
+
alias getTransport get_transport
|
|
393
|
+
alias setContext set_context
|
|
394
|
+
alias connect connect
|
|
395
|
+
alias disconnect disconnect
|
|
396
|
+
alias connectSeries connect_series
|
|
397
|
+
alias connectSignal connect_signal
|
|
398
|
+
alias fanIn fan_in
|
|
399
|
+
alias intervalToFrequencyRatio interval_to_frequency_ratio
|
|
400
|
+
alias isArray is_array
|
|
401
|
+
alias isBoolean is_boolean
|
|
402
|
+
alias isDefined is_defined
|
|
403
|
+
alias isFunction is_function
|
|
404
|
+
alias isNote is_note
|
|
405
|
+
alias isNumber is_number
|
|
406
|
+
alias isObject is_object
|
|
407
|
+
alias isString is_string
|
|
408
|
+
alias isUndef is_undef
|
|
409
|
+
alias transportTime transport_time
|
|
410
|
+
end
|
|
411
|
+
|
|
412
|
+
AudioNode = Core::AudioNode
|
|
413
|
+
ToneAudioNode = Core::AudioNode
|
|
414
|
+
Effect = Core::Effect
|
|
415
|
+
Emitter = Core::Emitter
|
|
416
|
+
Gain = Core::Gain
|
|
417
|
+
Delay = Core::Delay
|
|
418
|
+
Clock = Core::Clock
|
|
419
|
+
Param = Core::Param
|
|
420
|
+
Signal = Core::Signal
|
|
421
|
+
SyncedSignal = Core::SyncedSignal
|
|
422
|
+
Abs = Core::Abs
|
|
423
|
+
Add = Core::Add
|
|
424
|
+
AudioToGain = Core::AudioToGain
|
|
425
|
+
EqualPowerGain = Core::EqualPowerGain
|
|
426
|
+
GainToAudio = Core::GainToAudio
|
|
427
|
+
GreaterThan = Core::GreaterThan
|
|
428
|
+
GreaterThanZero = Core::GreaterThanZero
|
|
429
|
+
Modulo = Core::Modulo
|
|
430
|
+
Multiply = Core::Multiply
|
|
431
|
+
Negate = Core::Negate
|
|
432
|
+
Normalize = Core::Normalize
|
|
433
|
+
Pow = Core::Pow
|
|
434
|
+
Scale = Core::Scale
|
|
435
|
+
ScaleExp = Core::ScaleExp
|
|
436
|
+
Subtract = Core::Subtract
|
|
437
|
+
WaveShaper = Core::WaveShaper
|
|
438
|
+
Zero = Core::Zero
|
|
439
|
+
Oscillator = Source::Oscillator
|
|
440
|
+
Noise = Source::Noise
|
|
441
|
+
UserMedia = Source::UserMedia
|
|
442
|
+
PulseOscillator = Source::PulseOscillator
|
|
443
|
+
FMOscillator = Source::FMOscillator
|
|
444
|
+
AMOscillator = Source::AMOscillator
|
|
445
|
+
FatOscillator = Source::FatOscillator
|
|
446
|
+
PWMOscillator = Source::PWMOscillator
|
|
447
|
+
OmniOscillator = Source::OmniOscillator
|
|
448
|
+
Player = Source::Player
|
|
449
|
+
Players = Source::Players
|
|
450
|
+
BufferSource = Source::ToneBufferSource
|
|
451
|
+
GrainPlayer = Source::GrainPlayer
|
|
452
|
+
ToneBufferSource = Source::ToneBufferSource
|
|
453
|
+
ToneOscillatorNode = Source::ToneOscillatorNode
|
|
454
|
+
Envelope = Component::Envelope
|
|
455
|
+
AmplitudeEnvelope = Component::AmplitudeEnvelope
|
|
456
|
+
FrequencyEnvelope = Component::FrequencyEnvelope
|
|
457
|
+
BiquadFilter = Component::BiquadFilter
|
|
458
|
+
FeedbackCombFilter = Component::FeedbackCombFilter
|
|
459
|
+
Filter = Component::Filter
|
|
460
|
+
Follower = Component::Follower
|
|
461
|
+
LFO = Component::LFO
|
|
462
|
+
LowpassCombFilter = Component::LowpassCombFilter
|
|
463
|
+
OnePoleFilter = Component::OnePoleFilter
|
|
464
|
+
Volume = Component::Volume
|
|
465
|
+
Panner = Component::Panner
|
|
466
|
+
Panner3D = Component::Panner3D
|
|
467
|
+
Convolver = Component::Convolver
|
|
468
|
+
PanVol = Component::PanVol
|
|
469
|
+
Solo = Component::Solo
|
|
470
|
+
Channel = Component::Channel
|
|
471
|
+
CrossFade = Component::CrossFade
|
|
472
|
+
Merge = Component::Merge
|
|
473
|
+
MidSideCompressor = Component::MidSideCompressor
|
|
474
|
+
MidSideMerge = Component::MidSideMerge
|
|
475
|
+
MidSideSplit = Component::MidSideSplit
|
|
476
|
+
Mono = Component::Mono
|
|
477
|
+
MultibandCompressor = Component::MultibandCompressor
|
|
478
|
+
MultibandSplit = Component::MultibandSplit
|
|
479
|
+
Split = Component::Split
|
|
480
|
+
EQ3 = Component::EQ3
|
|
481
|
+
Compressor = Component::Compressor
|
|
482
|
+
Limiter = Component::Limiter
|
|
483
|
+
Gate = Component::Gate
|
|
484
|
+
Analyser = Analysis::Analyser
|
|
485
|
+
Meter = Analysis::Meter
|
|
486
|
+
FFT = Analysis::FFT
|
|
487
|
+
Waveform = Analysis::Waveform
|
|
488
|
+
DCMeter = Analysis::DCMeter
|
|
489
|
+
Distortion = Effects::Distortion
|
|
490
|
+
BitCrusher = Effects::BitCrusher
|
|
491
|
+
Chebyshev = Effects::Chebyshev
|
|
492
|
+
FeedbackDelay = Effects::FeedbackDelay
|
|
493
|
+
PingPongDelay = Effects::PingPongDelay
|
|
494
|
+
Reverb = Effects::Reverb
|
|
495
|
+
Freeverb = Effects::Freeverb
|
|
496
|
+
JCReverb = Effects::JCReverb
|
|
497
|
+
Chorus = Effects::Chorus
|
|
498
|
+
Phaser = Effects::Phaser
|
|
499
|
+
Tremolo = Effects::Tremolo
|
|
500
|
+
Vibrato = Effects::Vibrato
|
|
501
|
+
AutoFilter = Effects::AutoFilter
|
|
502
|
+
AutoPanner = Effects::AutoPanner
|
|
503
|
+
AutoWah = Effects::AutoWah
|
|
504
|
+
FrequencyShifter = Effects::FrequencyShifter
|
|
505
|
+
PitchShift = Effects::PitchShift
|
|
506
|
+
StereoWidener = Effects::StereoWidener
|
|
507
|
+
Synth = Instrument::Synth
|
|
508
|
+
MonoSynth = Instrument::MonoSynth
|
|
509
|
+
FMSynth = Instrument::FMSynth
|
|
510
|
+
AMSynth = Instrument::AMSynth
|
|
511
|
+
DuoSynth = Instrument::DuoSynth
|
|
512
|
+
NoiseSynth = Instrument::NoiseSynth
|
|
513
|
+
PluckSynth = Instrument::PluckSynth
|
|
514
|
+
MembraneSynth = Instrument::MembraneSynth
|
|
515
|
+
MetalSynth = Instrument::MetalSynth
|
|
516
|
+
Sampler = Instrument::Sampler
|
|
517
|
+
PolySynth = Instrument::PolySynth
|
|
518
|
+
Buffer = IO::Buffer
|
|
519
|
+
Buffers = IO::Buffers
|
|
520
|
+
ToneAudioBuffer = IO::Buffer
|
|
521
|
+
ToneAudioBuffers = IO::Buffers
|
|
522
|
+
Recorder = IO::Recorder
|
|
523
|
+
BaseContext = Context
|
|
524
|
+
Note = Music::Note
|
|
525
|
+
Frequency = Music::Frequency
|
|
526
|
+
FrequencyClass = Music::Frequency
|
|
527
|
+
Midi = Music::Midi
|
|
528
|
+
MidiClass = Music::Midi
|
|
529
|
+
Ticks = Music::Ticks
|
|
530
|
+
TicksClass = Music::Ticks
|
|
531
|
+
Time = Music::Time
|
|
532
|
+
TimeClass = Music::Time
|
|
533
|
+
TransportTime = Music::TransportTime
|
|
534
|
+
TransportTimeClass = Music::TransportTime
|
|
535
|
+
Transport = Event::Transport
|
|
536
|
+
ToneEvent = Event::ToneEvent
|
|
537
|
+
Loop = Event::Loop
|
|
538
|
+
Part = Event::Part
|
|
539
|
+
Sequence = Event::Sequence
|
|
540
|
+
Pattern = Event::Pattern
|
|
541
|
+
Master = Destination
|
|
542
|
+
end
|