Module: Wavify::DSL

Defined in:
lib/wavify/dsl.rb,
sig/dsl.rbs

Overview

Declarative music-building DSL that compiles to sequencer tracks and audio.

Defined Under Namespace

Classes: ArrangementBuilder, Builder, SongDefinition, TrackBuilder, TrackDefinition

Class Method Summary collapse

Class Method Details

.build_definition(format:, tempo: 120, beats_per_bar: 4, swing: 0.5, default_bars: 1, random_seed: Random.new_seed, safe_paths: false) { ... } ⇒ SongDefinition

Public DSL entry that returns a compiled SongDefinition.

Parameters:

  • format (Wavify::Core::Format)
  • tempo (Numeric) (defaults to: 120)
  • beats_per_bar (Integer) (defaults to: 4)
  • default_bars (Integer) (defaults to: 1)
  • format: (Core::Format)
  • 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:



1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
# File 'lib/wavify/dsl.rb', line 1080

def build_definition(format:, tempo: 120, beats_per_bar: 4, swing: 0.5, default_bars: 1,
                     random_seed: Random.new_seed, safe_paths: false, &block)
  Builder.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
  )
end

.effect(name, factory = nil, &block) ⇒ Class, #call

Registers an effect factory for DSL effect :name usage.

Parameters:

  • name (Symbol, String)
  • factory (Class, #call) (defaults to: nil)
  • params (Object)

Returns:

  • (Class, #call)


1116
1117
1118
# File 'lib/wavify/dsl.rb', line 1116

def effect(name, factory = nil, &block)
  Wavify::Effects.register(name, factory, &block)
end

.validate(format:, tempo: 120, beats_per_bar: 4, swing: 0.5, default_bars: 1, random_seed: Random.new_seed, safe_paths: false, deep: false) { ... } ⇒ true

Validates a DSL block without rendering audio.

Parameters:

  • format: (Core::Format)
  • 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:

  • (true)


1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
# File 'lib/wavify/dsl.rb', line 1097

def validate(format:, tempo: 120, beats_per_bar: 4, swing: 0.5, default_bars: 1,
             random_seed: Random.new_seed, safe_paths: false, deep: false, &block)
  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
  ).validate!(deep: deep)
end