Module: Wavify::DSP::Effects
- Defined in:
- lib/wavify/dsp/effects.rb,
lib/wavify/dsp/effects/eq.rb,
lib/wavify/dsp/effects/delay.rb,
lib/wavify/dsp/effects/chorus.rb,
lib/wavify/dsp/effects/phaser.rb,
lib/wavify/dsp/effects/reverb.rb,
lib/wavify/dsp/effects/flanger.rb,
lib/wavify/dsp/effects/limiter.rb,
lib/wavify/dsp/effects/tremolo.rb,
lib/wavify/dsp/effects/vibrato.rb,
lib/wavify/dsp/effects/auto_pan.rb,
lib/wavify/dsp/effects/expander.rb,
lib/wavify/dsp/effects/bitcrusher.rb,
lib/wavify/dsp/effects/compressor.rb,
lib/wavify/dsp/effects/distortion.rb,
lib/wavify/dsp/effects/noise_gate.rb,
lib/wavify/dsp/effects/effect_base.rb,
lib/wavify/dsp/effects/effect_chain.rb,
lib/wavify/dsp/effects/soft_limiter.rb,
lib/wavify/dsp/effects/podcast_chain.rb,
lib/wavify/dsp/effects/stereo_widener.rb,
lib/wavify/dsp/effects/mastering_chain.rb,
lib/wavify/dsp/effects/envelope_controlled_effect.rb,
sig/effects.rbs
Overview
Built-in audio effects namespace.
Defined Under Namespace
Classes: AutoPan, Bitcrusher, Chorus, Compressor, Delay, Distortion, EQ, EffectBase, EffectChain, Expander, Flanger, Limiter, MasteringChain, NoiseGate, Phaser, PodcastChain, Reverb, SoftLimiter, StereoWidener, Tremolo, Vibrato
Constant Summary collapse
- BUILTIN_EFFECTS =
{ delay: Delay, reverb: Reverb, chorus: Chorus, distortion: Distortion, compressor: Compressor, limiter: Limiter, soft_limiter: SoftLimiter, noise_gate: NoiseGate, tremolo: Tremolo, vibrato: Vibrato, flanger: Flanger, phaser: Phaser, bitcrusher: Bitcrusher, expander: Expander, auto_pan: AutoPan, stereo_widener: StereoWidener, eq: EQ, mastering_chain: MasteringChain, podcast_chain: PodcastChain }.freeze
Class Method Summary collapse
-
.build(name, **params) ⇒ Object
Builds a registered effect instance.
-
.register(name, factory = nil, &block) ⇒ Class, #call
Registers an effect class or factory under a DSL-friendly name.
- .registered_effects ⇒ Hash<Symbol, Object>
-
.unregister(name) ⇒ Object
Removes a custom effect or restores a built-in implementation.
Class Method Details
.build(name, **params) ⇒ Object
Builds a registered effect instance.
84 85 86 87 88 89 90 91 92 93 |
# File 'lib/wavify/dsp/effects.rb', line 84 def build(name, **params) key = normalize_effect_name!(name) factory = registry_mutex.synchronize { registry[key] } raise InvalidParameterError, "unsupported effect: #{key}" unless factory effect = factory.is_a?(Class) ? factory.new(**params) : factory.call(**params) return effect if effect.respond_to?(:process) || effect.respond_to?(:call) || effect.respond_to?(:apply) raise InvalidParameterError, "registered effect #{key} must build a processor" end |
.register(name, factory = nil, &block) ⇒ Class, #call
Registers an effect class or factory under a DSL-friendly name.
58 59 60 61 62 63 64 |
# File 'lib/wavify/dsp/effects.rb', line 58 def register(name, factory = nil, &block) key = normalize_effect_name!(name) value = factory || block raise InvalidParameterError, "effect factory must be a Class or callable object" unless effect_factory?(value) registry_mutex.synchronize { registry[key] = value } end |
.registered_effects ⇒ Hash<Symbol, Object>
96 97 98 |
# File 'lib/wavify/dsp/effects.rb', line 96 def registered_effects registry_mutex.synchronize { registry.dup.freeze } end |
.unregister(name) ⇒ Object
Removes a custom effect or restores a built-in implementation.
67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/wavify/dsp/effects.rb', line 67 def unregister(name) key = normalize_effect_name!(name) registry_mutex.synchronize do previous = registry[key] if BUILTIN_EFFECTS.key?(key) registry[key] = BUILTIN_EFFECTS.fetch(key) else registry.delete(key) end previous end end |