devalang 0.0.1-alpha.14

Write music like code. Devalang is a domain-specific language (DSL) for sound designers and music hackers. Compose, automate, and control sound β€” in plain text.
Documentation

Rust TypeScript Node.js

Project Status Version License: MIT Platform

npm crates

VSCode Extension

🦊 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

⏱️ 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

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:

# src/index.deva

group myLead:
    let mySynth = synth sine {
        attack: 0,
        decay: 100,
        sustain: 100,
        release: 100
    }

    mySynth -> note(C4, {
        duration: 400,
        velocity: 0.7,
        glide: true
    })

    mySynth -> note(G4, {
         duration: 600,
         slide: true
    })

# Play the lead

call myLead

And the best part ? You can play it directly from the command line:

# 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.

❓ 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 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