Package Exports
- @devaloop/devalang
- @devaloop/devalang/out-tsc/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@devaloop/devalang) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
πΆ Devalang
Compose music with code β structured, expressive, and fast.
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.
π§ v0.0.1-alpha.13 Notice π§
NEW: Devalang is available in your browser at playground.devalang.com !
NEW: Online documentation is now available at docs.devalang.com
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 !
You can also have a look at the Playground to try Devalang directly in your browser
# Install Devalang CLI globally
npm install -g @devaloop/devalang
# Create a new Devalang project
devalang init --name my-project --template minimal
cd my-projectCreate a new Devalang file src/index.deva in the project directory:
# src/index.deva
group myLead:
let mySynth = synth sine
mySynth -> note(C4, { duration: 400 })
mySynth -> note(G4, { duration: 600 })
# Play the lead
call myLeadAnd 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
- π» Integrate sound into code-based workflows
- ποΈ Control audio parameters through readable syntax
- π§ͺ Build musical logic with variables and conditions
Producer, coder, or both β Devalang gives you musical structure, instantly.
π Features
- π΅ Audio Engine: Integrated audio playback and rendering
- π§© Module system for importing and exporting variables between files
- π 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.
π’ Contact
π§ contact@devaloop.com