π¦ Devalang (CORE) β Compose music with code
Devalang is a tiny domain-specific language (DSL) for music makers, sound designers, and audio hackers. Compose loops, control samples, render and play audio β all in clean, readable text.
Whether you're building a track, shaping textures, or performing live, Devalang helps you think in rhythms. Itβs designed to be simple, expressive, and fast β because your ideas shouldnβt wait.
From studio sketches to live sets, Devalang gives you rhythmic control β with the elegance of code.
π§ Alpha Notice π§
Includes synthesis, playback, and rendering features, but is still in early development.
Currently, Devalang CLI is only available for Windows. Linux and macOS binaries will be added in future releases via cross-platform builds.
π Quick Access
- βΆοΈ Playground
- π Documentation
- π§© VSCode Extension
- π¨ Prettier Plugin
- π Changelog
- π‘ Examples
- π Project Website
- π¦ Devalang CLI on npm
β±οΈ Try it now !
Try Devalang in your browser
Have a look at the Playground to try Devalang directly in your browser
Try Devalang CLI
# Install Devalang CLI globally
# Create a new Devalang project
Create a new Devalang file src/index.deva in the project directory:
# src/index.deva
group main:
let lead = synth sine {
attack: 0,
decay: 100,
sustain: 100,
release: 100
}
# Global automation for this synth (applies to subsequent notes)
automate lead:
param volume {
0% = 0.0
100% = 1.0
}
param pan {
0% = -1.0
100% = 1.0
}
param pitch {
0% = -12.0
100% = 12.0
}
lead -> note(C4, {
duration: 400,
velocity: 0.8,
automate: { pan: { 0%: -1.0, 100%: 0.0 } }
})
lead -> note(E4, { duration: 400 })
lead -> note(G4, { duration: 600, glide: true, target_freq: 659.25 })
lead -> note(B3, { duration: 400, slide: true, target_amp: 0.3 })
for i in [1, 2, 3]:
lead -> note(C5, { duration: 200 })
# Play the lead
call main
And the best part ? You can play it directly from the command line:
# Play the Devalang file
# Play the Devalang file with watch mode
# LIVE mode (repeat the playback + watch mode)
π You can now hear your Devalang code in action
For more examples, check out the examples directory
β Why Devalang ?
- πΉ Prototype audio ideas without opening a DAW, even VSCode
- π» Integrate sound into code-based workflows
- ποΈ Control audio parameters through readable syntax
- π§ͺ Build musical logic with variables and conditions
- π Create complex patterns with ease
π Features
- π΅ Audio Engine: Integrated audio playback and rendering
- π§© Module system for importing and exporting variables between files
- π¦ Addon manager for managing external banks, plugins and more
- π Structured AST generation for debugging and future compilation
- π’ Basic data types: strings, numbers, booleans, maps, arrays
- ποΈ Watch mode for
build,checkandplaycommands - π Project templates for quick setup
- ποΈ Custom samples: easily load and trigger your own audio files
- π Looping and grouping: create complex patterns with ease
π Documentation
Please refer to the online documentation for detailed information on syntax, features, and usage examples
π§― Known issues
- No smart modules yet, all groups, variables, and samples must be explicitly imported where used
- No support yet for cross-platform builds (Linux, macOS)
π§ͺ Roadmap Highlights
For more info, see docs/ROADMAP.md
- β³ Other statements (e.g
function,pattern, ...) - β³ Cross-platform support (Linux, macOS)
- β³ More built-in instruments (e.g. snare, hi-hat, etc.)
π‘οΈ License
MIT β see LICENSE
π€ Contributing
Contributions, bug reports and suggestions are welcome !
Feel free to open an issue or submit a pull request.
For more info, see docs/CONTRIBUTING.md.
π’ Contact
Feel free to reach out for any inquiries or feedback.
π§ contact@devaloop.com