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
-
.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.
-
.effect(name, factory = nil, &block) ⇒ Class, #call
Registers an effect factory for DSL
effect :nameusage. -
.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.
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.
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: , swing: swing, 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.
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.
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: , swing: swing, default_bars: , random_seed: random_seed, safe_paths: safe_paths, &block ).validate!(deep: deep) end |