Alda – Text-Based Programming Language for Music Composition

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
  • Sonic Pi

    Code. Music. Live.

    I'm glad to see more of these things. It's like a different take on Orca (https://github.com/hundredrabbits/Orca/) or SonicPi (https://sonic-pi.net/).

    All of these are super fun.

    But, it feels like we are missing an amazing EDITOR to go with these LANGUAGES.

    For example, when "live coding" I've not yet seen a great editor that could simulate what options there are for the next measure.

    I can do this with two turntables and a mixer. When I used to DJ, I can put a record on the other deck, listen to the beat, mix and match it, adjust the treble/bass, even the tempo and merge it in WITHOUT anyone hearing those experiments. I was always worried about timing it correctly, and when you shift to the other deck, sometimes is was great and sometimes is was terrible, which is what you get out of live music.

    I wish there were good editors that would permit me to enter in the chords and notes I want (like all these tools do), and at the same time, give me a window into insights like "adding this next chord progression would take it into a more jazzy realm" or "if you spread these notes over two measures and drop them an octave it will get really interesting." I suppose it is a lot to ask a computer to make those qualitative analyses of the music, but it seems like at least it could gather up some options. Computers are good at pattern matching.

    And, I've also yet to see these editors offering a way to collaborate, either in person, or over the internet. With a shared language and networks, we can do this. Timing is the biggest thing, but music has a consistent tempo (so your collaboration might not arrive in this measure, but we could guarantee it enters the composition on the next measure).

    I remember a FOSCON with _why (the lucky stiff). He came with a band to FreeGeek in Portland, and did this interactive music thing, where he put up a ruby program that all the attendees to the event could attach to with their own IRB session. And, then people could collaborate on the performance with him. It didn't go well. A veteran Perl programmer said "it was like watching a train wreck" (Perl people were pretty jealous of Ruby at that moment). It didn't go well, indeed, but it was so a fascinating idea to try and I wish there were more examples of this kind of thing. That would be such a great way to teach music.

  • alda

    A music programming language for musicians. :notes:

    Looks like a previous version was mostly a Clojure DSL, but the latest major version no longer is. There are variables and other useful features we know from other programming languages that aren't mentioned on the landing page.

    Of course there are also varying definitions of what a programming language is. For instance, I consider CSS to be a programming language, but I know many people disagree with that position (and that's okay). I personally don't think that a "programming language" must be a general-purpose, turing-complete language. Alda seems to be a non-general purpose, turing-incomplete language. At this point though, we're maybe getting into semantics a bit.

    Syntax change: https://github.com/alda-lang/alda/blob/master/doc/alda-2-mig...

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

  • chords2midi

    Create MIDI files from numerical chord progressions!

    I ended up creating a lighter version of this for one my projects, https://github.com/Miserlou/chords2midi

    I think that something that Alda looks like it lacks right now is doing things around intervals rather than notes, as transpositions and key changes will be very tedious without embedded knowledge of intervals.

    The whole thing is based around a Python library called Mingus, which I think gives you most of what you'd ever need to build a music programming project.

    https://bspaans.github.io/python-mingus/

  • awesome-livecoding

    All things livecoding

    Without commenting on Alda specifically, people should understand that it's just one member of this list of highly overlapping (but also interestingly distinct) tools:

    https://github.com/toplap/awesome-livecoding

    "All things live coding : A curated list of live coding languages and tools"

  • miti

    miti is a musical instrument textual interface. Basically, its MIDI, but with human-readable text. :musical_note:

    I love these text-based languages for music composition. Its something that is approaching a gap in music composition in real-life vs via computer. In real-life you can tell your bandmates to "just play a I V IV in C" and they get it. But we are still not quite at a place where we can tell a computer that exact phrase and get something useful. I love how close these text-based languages are getting though!

    I've actually made my own musical language too - called miti [1], which is just one of many others including textbeat [2], foxdot [3], sonic-pi [4], chuck [5], and melrose [6]. Each has their own goals and capabilities.

    - [1] https://github.com/schollz/miti

    - [2] https://github.com/flipcoder/textbeat

    - [3] https://foxdot.org/

    - [4] https://sonic-pi.net/

    - [5] https://chuck.cs.princeton.edu/

    - [6] https://github.com/emicklei/melrose

  • textbeat

    🎹 plaintext music sequencer and midi shell, with vim playback and the powers of music theory 🥁

    I love these text-based languages for music composition. Its something that is approaching a gap in music composition in real-life vs via computer. In real-life you can tell your bandmates to "just play a I V IV in C" and they get it. But we are still not quite at a place where we can tell a computer that exact phrase and get something useful. I love how close these text-based languages are getting though!

    I've actually made my own musical language too - called miti [1], which is just one of many others including textbeat [2], foxdot [3], sonic-pi [4], chuck [5], and melrose [6]. Each has their own goals and capabilities.

    - [1] https://github.com/schollz/miti

    - [2] https://github.com/flipcoder/textbeat

    - [3] https://foxdot.org/

    - [4] https://sonic-pi.net/

    - [5] https://chuck.cs.princeton.edu/

    - [6] https://github.com/emicklei/melrose

  • melrose

    interactive programming of melodies, producing MIDI

    I love these text-based languages for music composition. Its something that is approaching a gap in music composition in real-life vs via computer. In real-life you can tell your bandmates to "just play a I V IV in C" and they get it. But we are still not quite at a place where we can tell a computer that exact phrase and get something useful. I love how close these text-based languages are getting though!

    I've actually made my own musical language too - called miti [1], which is just one of many others including textbeat [2], foxdot [3], sonic-pi [4], chuck [5], and melrose [6]. Each has their own goals and capabilities.

    - [1] https://github.com/schollz/miti

    - [2] https://github.com/flipcoder/textbeat

    - [3] https://foxdot.org/

    - [4] https://sonic-pi.net/

    - [5] https://chuck.cs.princeton.edu/

    - [6] https://github.com/emicklei/melrose

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

  • Orca

    Esoteric Programming Language

    I'm glad to see more of these things. It's like a different take on Orca (https://github.com/hundredrabbits/Orca/) or SonicPi (https://sonic-pi.net/).

    All of these are super fun.

    But, it feels like we are missing an amazing EDITOR to go with these LANGUAGES.

    For example, when "live coding" I've not yet seen a great editor that could simulate what options there are for the next measure.

    I can do this with two turntables and a mixer. When I used to DJ, I can put a record on the other deck, listen to the beat, mix and match it, adjust the treble/bass, even the tempo and merge it in WITHOUT anyone hearing those experiments. I was always worried about timing it correctly, and when you shift to the other deck, sometimes is was great and sometimes is was terrible, which is what you get out of live music.

    I wish there were good editors that would permit me to enter in the chords and notes I want (like all these tools do), and at the same time, give me a window into insights like "adding this next chord progression would take it into a more jazzy realm" or "if you spread these notes over two measures and drop them an octave it will get really interesting." I suppose it is a lot to ask a computer to make those qualitative analyses of the music, but it seems like at least it could gather up some options. Computers are good at pattern matching.

    And, I've also yet to see these editors offering a way to collaborate, either in person, or over the internet. With a shared language and networks, we can do this. Timing is the biggest thing, but music has a consistent tempo (so your collaboration might not arrive in this measure, but we could guarantee it enters the composition on the next measure).

    I remember a FOSCON with _why (the lucky stiff). He came with a band to FreeGeek in Portland, and did this interactive music thing, where he put up a ruby program that all the attendees to the event could attach to with their own IRB session. And, then people could collaborate on the performance with him. It didn't go well. A veteran Perl programmer said "it was like watching a train wreck" (Perl people were pretty jealous of Ruby at that moment). It didn't go well, indeed, but it was so a fascinating idea to try and I wish there were more examples of this kind of thing. That would be such a great way to teach music.

  • mmlgui

    GUI for ctrmml

    Indeed, MML is mentioned here: https://blog.djy.io/alda-a-manifesto-and-gentle-introduction...

    This is another interactive MML project worth checking out: https://github.com/superctr/mmlgui

  • homebrew-lilypond

    Discontinued Install LilyPond from homebrew/core instead of this tap: https://formulae.brew.sh/formula/lilypond

    Have you checked out the unofficial Homebrew tap `nwhetsell/lilypond` [1]?

    It has a `lilypond` formula that has worked fine for me. Beware though that it installs some kind of TeX repository sized 7 GB.

    [1]: https://github.com/nwhetsell/homebrew-lilypond

  • extempore

    A cyber-physical programming environment

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts