๐ฆ Devalang โ Write music with code
Devalang is a compact domain-specific language (DSL) for music makers, sound designers, and creative coders. Compose loops, control samples, synthesize audio, and render your ideas โ all in clean, readable text.
Whether you're prototyping a beat, building generative music, or performing live, Devalang gives you rhythmic precision with the elegance of code.
From studio sketches to live sets, Devalang puts musical ideas into motion.
๐ v0.1.0 - Complete Rewriting
NEW: Devalang Playground V2.0 is now available โ Try it in your browser!
๐ Quick Access
- โถ๏ธ Playground โ Try Devalang in your browser
- ๐ Documentation โ Complete language reference
- ๐งฉ VSCode Extension โ Syntax highlighting & snippets
- ๐ Changelog โ Version history
- ๐ก Examples
- ๐ Website โ Project homepage
- ๐ฆ npm Package
- ๐ฆ Rust Crate
โก Quick Start
Try in Your Browser
Launch the Playground to try Devalang without installing anything.
Install via npm (Recommended)
Install via Cargo (Rust)
Create Your First Project
# Initialize a new project
# Navigate to the project
# Check syntax
# Build audio files
# Play audio (live mode)
๐ต Your First Devalang Script
Create a file hello.deva:
# Set the tempo
bpm 120
# Load a bank of sounds (make sur you have the bank installed)
bank devaloop.808 as drums
# Create a simple kick pattern
pattern kickPattern with drums.kick = "x--- x--- x--- x---"
# Define a synth and a melody
let mySynth = synth saw
# Define a melody using a group to organize notes
group myMelody:
mySynth -> note(C5)
-> duration(500)
mySynth -> note(E5)
-> duration(500)
mySynth -> note(G5)
-> duration(500)
# Play the melody
spawn myMelody
# Play the kick pattern
spawn kickPattern
Build the audio
# Build to WAV
# Output: ./output/audio/hello.wav
Play the audio
# Play the audio file
# Play live (repeats and watch until stopped)
๐ Features
๐ต Core Language
- โ Lexer & Parser โ Complete tokenization and AST generation
- โ Patterns โ Rhythmic notation with swing, humanize, velocity
- โ Synths โ Built-in synthesizers with ADSR envelopes
- โ Filters โ Lowpass, highpass, bandpass audio filtering
- โ Effects โ Reverb, delay, distortion, drive, chorus
- โ
Variables โ
let,const,varwith scoping - โ Groups & Spawn โ Organize and parallelize execution
- โ
Loops & Conditions โ
for,if,elsecontrol flow - โ Triggers โ Conditional audio triggering
- โ
Events โ Event system with
onandemit
๐ ๏ธ CLI Tools
- โ
devalang initโ Scaffold new projects (3 templates) - โ
devalang buildโ Compile to WAV/MIDI - โ
devalang checkโ Validate syntax - โ
devalang playโ Audio playback - โ
devalang addonโ Manage addons (install, list, discover) - โ
devalang login/logoutโ Authentication - โ
devalang telemetryโ Privacy controls
๐ WASM API
- โ
render_audio()โ Browser audio rendering - โ
render_midi_array()โ MIDI export - โ
debug_render()โ Debug information - โ
parse()โ Parse Devalang code - โ TypeScript types included
๐ฆ Output Formats
- โ WAV โ 16/24/32-bit audio export
- โ MIDI โ Standard MIDI file export
- โ MP3/FLAC โ Planned
๐ฏ Performance
- โก Fast builds โ 7-10ms for typical projects
- โก Low latency โ Optimized audio engine
- โก Release builds โ 5-6x faster than debug
๐ Learning Resources
- โ Online Docs โ Complete language reference
- โ VSCode Extension โ Syntax highlighting
๐ก Why Devalang?
- ๐น Prototype audio ideas without opening a DAW
- ๐ป Integrate sound into code-based workflows
- ๐๏ธ Control audio parameters with readable syntax
- ๐งช Build musical logic with variables and conditions
- ๐ Create patterns with expressive notation
- ๐จ Live code with fast iteration cycles
- ๐ฆ Version control your music with git
๐ Documentation
- Complete syntax reference
- API documentation
- WASM integration guide
- CLI command reference
- Advanced tutorials
- Best practices
๐ง Development
Build from Source
# Clone the repository
# Build CLI (Rust)
# Build WASM
# Build TypeScript
# Run tests
๐ค Contributing
We welcome contributions! See CONTRIBUTING.md for guidelines.
Ways to Contribute
- ๐ Report bugs via GitHub Issues
- ๐ก Suggest features in discussions
- ๐ Improve docs with pull requests
- ๐ต Share examples of your creations
- ๐งช Write tests for new features
๐ License
MIT License โ See LICENSE for details.
Copyright (c) 2025 Devaloop