A music programming language for musicians. :notes:
Installation | Docs | Changelog | Contributing
Alda is a text-based programming language for music composition. It allows you to compose and play back music using only your text editor and the command line.
piano:
o3
g8 a b > c d e f+ g | a b > c d e f+ g4
g8 f+ e d c < b a g | f+ e d c < b a g4
<< g1/>g/>g/b/>d/g
For more examples, see these example scores.
The language's design equally favors aesthetics, flexibility and ease of use.
(Why compose music this way instead of in a graphical sheet music notation program? See [this blog post][alda-blog-post] for a brief history and rationale.)
[alda-blog-post]: https://blog.djy.io/alda-a-manifesto-and-gentle-introduction/
Features
- Easy to understand, markup-like syntax.
- Designed for musicians who don't know how to program, as well as programmers
- A score is a text file that can be played using the
aldacommand-line tool. - Interactive REPL lets you enter Alda code and hear the
- Supports writing music
- Create MIDI music using any of the instruments in the [General MIDI Sound
[gm-sound-set]: http://www.midi.org/techspecs/gm1sound.php
Planned
If you'd like to help, come on in -- the water's fine!
- Run Alda in the browser
- Define and use waveform synthesis instruments
- Export to MusicXML for interoperability with other music software
- Improve Raspberry Pi support
Installation
See [the official website][alda-install] for instructions to install the latest release of Alda.
[alda-install]: https://alda.io/install
Building from source
Another option is to build Alda from source. Alda consists of two components: the client (written in Go) and the player (written in Kotlin/Java).
# Clone the repo
git clone https://github.com/alda-lang/alda.git
cd alda
Build the client and player executables
client/bin/build
player/bin/build
The executables are built in client/target and player/target, and the output of the build commands shows you the path to the built executables, which include builds for various OS/arch combinations.
For more details, see the READMEs in the client and player directories.
Demo
For an overview of available commands and options:
alda --help
To play a file containing Alda code:
alda play --file examples/bachcellosuiteno1.alda
To play arbitrary code at the command line:
alda play --code "piano: c6 d12 e6 g12~4"
To start an interactive Alda REPL session:
alda repl
Documentation
Alda's documentation can be found here.
Contributing
We'd love your help -- Pull Requests welcome!
For more details on how you can contribute to Alda, see CONTRIBUTING.md.
Another way you can contribute is by [sponsoring Dave][gh-sponsor] in the
future development of Alda.
[gh-sponsor]: https://github.com/sponsors/daveyarwood
Support, Discussion, Camaraderie
Slack: Joining the Alda Slack group is quick and painless. Come say hi!
Reddit: Subscribe to the /r/alda subreddit, where you can discuss all things Alda and share your Alda scores!
License
Copyright © 2012-2026 Dave Yarwood et al
Distributed under the Eclipse Public License version 2.0.