Module: Wavify

Defined in:
lib/wavify.rb,
lib/wavify/cli.rb,
lib/wavify/dsl.rb,
lib/wavify/audio.rb,
lib/wavify/errors.rb,
lib/wavify/dsp/lfo.rb,
lib/wavify/version.rb,
lib/wavify/adapters.rb,
lib/wavify/sequencer.rb,
lib/wavify/codecs/raw.rb,
lib/wavify/codecs/wav.rb,
lib/wavify/dsp/filter.rb,
lib/wavify/codecs/aiff.rb,
lib/wavify/codecs/base.rb,
lib/wavify/codecs/flac.rb,
lib/wavify/core/format.rb,
lib/wavify/core/stream.rb,
lib/wavify/dsp/effects.rb,
lib/wavify/dsp/effects.rb,
lib/wavify/dsp/envelope.rb,
lib/wavify/dsp/headroom.rb,
lib/wavify/core/duration.rb,
lib/wavify/dsp/processor.rb,
lib/wavify/dsp/automation.rb,
lib/wavify/dsp/effects/eq.rb,
lib/wavify/dsp/oscillator.rb,
lib/wavify/codecs/registry.rb,
lib/wavify/sequencer/track.rb,
lib/wavify/sequencer/engine.rb,
lib/wavify/codecs/ogg_vorbis.rb,
lib/wavify/dsp/effects/delay.rb,
lib/wavify/sequencer/pattern.rb,
lib/wavify/core/sample_buffer.rb,
lib/wavify/dsp/effects/chorus.rb,
lib/wavify/dsp/effects/phaser.rb,
lib/wavify/dsp/effects/reverb.rb,
lib/wavify/dsp/loudness_meter.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/sequencer/note_sequence.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/dsl.rbs,
sig/dsp.rbs,
sig/core.rbs,
sig/audio.rbs,
sig/codecs.rbs,
sig/stream.rbs,
sig/wavify.rbs,
sig/effects.rbs,
sig/sequencer.rbs

Overview

Wavify is a pure Ruby audio processing toolkit with immutable transforms, multiple codecs, DSP primitives, and a small sequencing DSL.

Defined Under Namespace

Modules: Adapters, Codecs, Core, DSL, DSP, Sequencer Classes: Audio, BufferConversionError, CLI, CodecNotFoundError, DSPError, Error, FormatError, InvalidFormatError, InvalidNoteError, InvalidParameterError, InvalidPatternError, ProcessingError, SequencerError, StreamError, UnsupportedFormatError

Constant Summary collapse

VERSION =

Gem version string (Semantic Versioning).

Returns:

  • (String)
"0.2.0"
Effects =

Convenience alias for DSP::Effects.

Returns:

DSP::Effects

Class Method Summary collapse

Class Method Details

.build(output_path = nil, format: Core::Format::CD_QUALITY, tempo: 120, beats_per_bar: 4, swing: 0.5, default_bars: 1, random_seed: Random.new_seed, safe_paths: false) { ... } ⇒ Audio

Renders audio from the DSL and optionally writes it to disk.

Parameters:

  • output_path (String, nil) (defaults to: nil)
  • format (Core::Format) (defaults to: Core::Format::CD_QUALITY)
  • tempo (Numeric) (defaults to: 120)
  • beats_per_bar (Integer) (defaults to: 4)
  • default_bars (Integer) (defaults to: 1)
  • format: (Core::Format) (defaults to: Core::Format::CD_QUALITY)
  • tempo: (Numeric) (defaults to: 120)
  • beats_per_bar: (Integer) (defaults to: 4)
  • swing: (Numeric) (defaults to: 0.5)
  • default_bars: (Integer) (defaults to: 1)
  • random_seed: (Integer) (defaults to: Random.new_seed)

Yields:

Yield Returns:

  • (void)

Returns:



1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
# File 'lib/wavify/dsl.rb', line 1131

def build(output_path = nil, format: Core::Format::CD_QUALITY, tempo: 120, beats_per_bar: 4, swing: 0.5, default_bars: 1,
          random_seed: Random.new_seed, safe_paths: false, &block)
  song = DSL.build_definition(
    format: format,
    tempo: tempo,
    beats_per_bar: beats_per_bar,
    swing: swing,
    default_bars: default_bars,
    random_seed: random_seed,
    safe_paths: safe_paths,
    &block
  )

  audio = song.render(default_bars: default_bars)
  audio.write(output_path) if output_path
  audio
end

.ms(value) ⇒ Wavify::Core::Duration

Parameters:

  • value (Numeric)

    milliseconds

Returns:



43
44
45
# File 'lib/wavify.rb', line 43

def self.ms(value)
  Core::Duration.new(value.to_f / 1000.0)
end

.seconds(value) ⇒ Wavify::Core::Duration

Parameters:

  • value (Numeric)

Returns:



37
38
39
# File 'lib/wavify.rb', line 37

def self.seconds(value)
  Core::Duration.new(value)
end