<div align="center">
<img src="https://devalang.com/images/devalang-logo-min.png" alt="Devalang Logo" width="100" />
</div>









[](https://marketplace.visualstudio.com/items?itemName=devaloop.devalang-vscode)
# π¦ 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](https://playground.devalang.com)
- [π Documentation](https://docs.devalang.com)
- [π§© VSCode Extension](https://marketplace.visualstudio.com/items?itemName=devaloop.devalang-vscode)
- [π¨ Prettier Plugin](https://www.npmjs.com/package/@devaloop/prettier-plugin-devalang)
- [π Changelog](./docs/CHANGELOG.md)
- [π‘ Examples](./examples/)
- [π Project Website](https://devalang.com)
- [π¦ Devalang CLI on npm](https://www.npmjs.com/package/@devaloop/devalang)
## β±οΈ Try it now !
### Try Devalang in your browser
> Have a look at the [Playground](https://playground.devalang.com) to try Devalang directly in your browser
### Try Devalang CLI
```bash
# Install Devalang CLI globally
npm install -g @devaloop/devalang
# Create a new Devalang project
devalang init --name my-project --template minimal
cd my-project
```
Create a new Devalang file `src/index.deva` in the project directory:
```deva
# 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:
```bash
# Play the Devalang file
devalang play
# Play the Devalang file with watch mode
devalang play --watch
# LIVE mode (repeat the playback + watch mode)
devalang play --repeat
```
### π You can now hear your Devalang code in action
> For more examples, check out the [examples directory](./examples/)
## β 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`, `check` and `play` commands
- π **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](https://docs.devalang.com) 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](./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](./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](./docs/CONTRIBUTING.md).
## π’ Contact
Feel free to reach out for any inquiries or feedback.
π§ [contact@devaloop.com](mailto:contact@devaloop.com)