devalang 0.2.0

Write music with code. Devalang is a domain-specific language (DSL) for sound designers and music hackers. Compose, automate, and control sound — in plain text.
Documentation
# =================
# Effects
# =================
# You can define chained effects that execute in sequence for synth and triggers.
#
# Synth Syntax:
# `let mySynth = synth <waveform> -> <effect_function>(<effect_parameters>) -> ...`
#
# Note Syntax:
# `<synth_name> -> note(<note_value) -> <effect_function>(<effect_parameters>) -> ...`
#
# Trigger Syntax:
# `let myTrigger = .<trigger_name> <optional_duration> -> <effect_function>(<effect_parameters>) -> ...`

# Load bank for the trigger below
bank devaloop.808 as myBank

# Applying effects to a synth
let mySynth = synth saw
    -> lfo({
        rate: "1/2",
        depth: 1.0,
        waveform: "triangle",
        target: "pitch",
        semitones: 3.0,
    })
    -> dist({
        amount: 1.0,
        mix: 0.5
    })
    -> reverb({
        size: 1.0,
        mix: 1.0
    })

# Apply and play synth notes
mySynth -> note(C4)
        -> velocity(100)
        -> duration(1000)
        -> pan(1.0)

mySynth -> note(C5)
        -> velocity(100)
        -> duration(1000)
        -> pan(-1.0)

# Define a trigger with multiple chained effects
let myTrigger = .myBank.snare auto
    -> reverse(true)
    -> speed(2.0)
    -> dist({
        amount: 1.0,
        mix: 0.5
    })
    -> reverb({
        size: 1.0,
        decay: 0.1,
        mix: 0.5
    })
    -> reverb({
        size: 1.0,
        decay: 0.1,
        mix: 0.5
    })
    -> reverb({
        size: 1.0,
        decay: 0.1,
        mix: 0.5
    })

# Play the trigger
.myTrigger