[HN Gopher] Programming languages used for music
       ___________________________________________________________________
        
       Programming languages used for music
        
       Author : ofalkaed
       Score  : 219 points
       Date   : 2025-12-20 18:40 UTC (2 days ago)
        
 (HTM) web link (timthompson.com)
 (TXT) w3m dump (timthompson.com)
        
       | jackkinsella wrote:
       | Musicabc has some really nice JS and Obsidian plugins that
       | essentially allow you to create little scrapbooks of musical
       | ideas in markdown that are also playable as sound and viewable as
       | sheet music.
       | 
       | https://abc.hieuthi.com/
        
       | philprx wrote:
       | Strudel.cc ?
        
       | rausr wrote:
       | I recently tripped over Dogalog (live-coding with prolog-like
       | code), which could be an addition:
       | https://danja.github.io/dogalog/
        
       | benrutter wrote:
       | Looks interesting, but I think it's a little dated- sadly most of
       | the links I tried on this page don't seem to be active anymore?
       | 
       | Here's a currently active list on github in case somebody's left
       | needing a fix of music programming:
       | https://github.com/zoejane/awesome-music-programming
        
         | ofalkaed wrote:
         | Most of the languages on the list have not been maintained in
         | decades with many being for functionally extinct if not
         | completely extinct systems. It is not really a list meant to
         | guide you to a language to use, it is more about
         | historical/academic interest.
        
       | opminion wrote:
       | No Sonic Pi, which is a Ruby dialect?
        
         | 1313ed01 wrote:
         | Sonic Pi is SuperCollider, but using Ruby instead of the
         | default sclang language. Overtone is similar (and possibly
         | originally by the same developer, iirc?) but using Clojure, and
         | is also missing from the list.
        
           | iLemming wrote:
           | Yeah, that's some glaring omissions - not including Sam
           | Aaron's work makes me distrust the whole list. SonicPi is
           | fundamental for teaching kids music and programming and
           | Overtone is just mind-blowing - I watched people DJing music
           | while evaling things in Emacs, that looked sick.
        
       | lynx97 wrote:
       | Csound (I think v3) was the first music language I played with,
       | back in the early 90s, under DOS even. Back then, running in
       | real-time wasn't a thing. Generate a WAV file and play it after
       | the program finished. Later, at the end of the 90s, I remember
       | playing with CLM/CM, in common lisp.
       | 
       | But the most productive experience was definitely SuperCollider.
       | I can only recommend giving it a try. Its real-time sound
       | synthesis architecture is great. Basically works sending
       | timestamped OSC messages AOT (usually 0.2s). It also has a very
       | interesting way of building up so-called SynthDefs from code into
       | a DAG. I always wondered if a modern rewrite of the same
       | architecture using JIT/AOT technology would be useful. But I
       | digress... SC3 is a great platform to play with sound
       | synthesis... Give it a try if you find the time.
        
         | whilenot-dev wrote:
         | I can vouch for the tutorial series from Eli Fieldsteel[0] for
         | getting into SuperCollider and audio synthesis in general. If
         | you were ever curious on how to bridge the gap between signal
         | processing and music theory through mathematical operations, I
         | think this is one of the best series out there.
         | 
         | [0]:
         | https://www.youtube.com/watch?v=yRzsOOiJ_p4&list=PLPYzvS8A_r...
        
       | hellobluelings wrote:
       | There is also literate programming for music, right? Just like
       | Donald Knuth describes it in his literate programming approach?
       | See for example the videos by Fauci etc. They say things like eh
       | eh, pause then play music using items such as a pen, there is
       | even a conductor. Very entertaining. Is that true? Or just my
       | imagination?
        
       | azath92 wrote:
       | Almost an esolang, but orca is an amazing example of spatial
       | programming for music production (GH
       | https://github.com/hundredrabbits/Orca and video
       | https://www.youtube.com/watch?v=gSFrBFBd7vY to see it in action)
        
         | lovich wrote:
         | Is this the one from the hippie(non perjorative) group living
         | off a boat?
         | 
         | If it's the same, it's one that if I win the lottery I'd spend
         | my time learning along with this tool from Imogen
         | https://mimugloves.com/
         | 
         | I don't think I'd ever produce something worth listening to,
         | but if I won the lottery, why would I care beyond my own
         | enjoyment?
        
           | NeutralForest wrote:
           | Yeah it's from 100r https://100r.co/site/projects.html!
        
           | listenfaster wrote:
           | 'Your own enjoyment' is a rich reward. My unsolicited advice:
           | Try making a mess with it everyday for a week / month / year
           | and see if you don't start to appreciate something in what
           | you make. Orca is a brilliant piece of work.
        
             | lovich wrote:
             | My own enjoyment was predicated on the money side. If I was
             | independently wealthy I'd be splitting my time between this
             | and gem faceting as hobbies
        
         | elxr wrote:
         | That screenshot is super interesting, never seen anything like
         | it.
         | 
         | It's giving me some ideas for a TUI video editor using that
         | grid interface. What a cool project.
        
       | jarmitage wrote:
       | see also https://github.com/toplap/awesome-livecoding
        
       | ako wrote:
       | Yesterday i used Claude Code to define and implement a YAML based
       | DSL for playing backing tracks. I can ask an LLM to generate this
       | DSL for any well known song, and it will include chord
       | progression, lyrics, bass, drums, strumming pattern, etc. It's a
       | go command line tool that plays the DSL via midi, and displays
       | the chords, strumming patterns, and lyrics. Also does export to
       | Strudel.
        
         | shevy-java wrote:
         | The problem I see is: people are not going to use a project
         | that is AI generated for long really, unless they do it just
         | for a one-off task. I'd like to constantly generate new music.
         | I also have ideas based on existing music so I want to adjust
         | this, but do so programmatically, and that seems ... hard.
        
           | ako wrote:
           | Sure, for something big code needs more review and
           | validation. But this is just a small command line tool that
           | allows you to ask an LLM to generate a DSL to play a backing
           | track: https://raw.githubusercontent.com/ako/backing-
           | tracks/refs/he...
           | 
           | Not a big commitment from a user, and nothing lost if it
           | doesn't work as hoped.
           | 
           | I'm just positively surprised how quickly you can create a
           | prototype for these sorts of ideas with Claude Code. This is
           | literally just a few hours of vibe-coding.
        
         | isodev wrote:
         | Depending on the source music, there are many aspects of this
         | that normally require a license with a records company or some
         | proxy. Especially the lyrics part. Be careful not to get into
         | very expensive trouble. Just because the LLM can do it, doesn't
         | mean it's ok to do it.
        
           | ako wrote:
           | Yes, I noticed that Claude Code silently refused to generate
           | lyrics for some songs i requested. Benefit of this approach
           | is that anybody can quickly generate a YAML file for a
           | backing track, no need to share it anywhere.
        
             | isodev wrote:
             | I think the problem is that the artist doesn't get anything
             | with this approach. If you really want to use someone
             | else's music/artworks/lyrics, just buy it.
        
               | rerdavies wrote:
               | Most artists don't sell backing tracks though.
        
               | ako wrote:
               | It's not like this is very unique, YouTube has tons of
               | training and backing track videos, which is what i
               | typically use. And artist don't sell it in a way that can
               | be consumed for guitar practice easily.
        
       | shevy-java wrote:
       | I kind of want to create music programmatically but so far it has
       | been way too difficult. I also can barely find anything useful
       | via oldschool google search anymore. I am almost stuck like with
       | MIDI here ...
        
         | virgil_disgr4ce wrote:
         | ever tried Pd or max?
        
           | rerdavies wrote:
           | SuperCollider also has some traction, and is in the same
           | genre as max and pd.
        
         | nablaone wrote:
         | Claude code is good at coding and music theory. IMHO, there is
         | not need for a dedicated language.
         | 
         | BTW. I've played with LLM in sound design tasks recently. Vibe
         | coded MCP server for Waldorf Blofeld gave me good results.
         | Sorry, no demo.
        
         | elxr wrote:
         | Strudel is my favorite, it has pretty syntax, and their
         | interactive guide (with inline REPL) is extremely well done
         | too.
         | 
         | https://strudel.cc/workshop/getting-started/
        
       | 3ds wrote:
       | It's missing "Strudel" and "tidal cycles"
        
         | rhdunn wrote:
         | See e.g. https://www.youtube.com/@Switch-Angel/videos for
         | examples of strudel in action to create trance music.
        
       | chaosprint wrote:
       | Relevant to this discussion - my project Glicol
       | (https://glicol.org) addresses this space. Currently working on a
       | no_std rewrite, demo coming next year :)
        
         | heuermh wrote:
         | Curious, would the rewrite allow for building on hardware
         | platforms such as the Daisy?
         | 
         | Or maybe it is already possible, to be fair I haven't looked
         | closely.
         | 
         | https://daisy.audio/hardware/, https://github.com/electro-
         | smith/libDaisy
        
           | chaosprint wrote:
           | of course I already got a poc a while ago:
           | 
           | https://github.com/chaosprint/daisy-rust-playground
           | 
           | but for now my main mcu is rp2350
        
             | heuermh wrote:
             | Awesome, will check it out!
        
       | sandebert wrote:
       | Switch Angel live-code using Strudel. Really impressive and
       | interesting stuff.
       | 
       | https://youtu.be/aPsq5nqvhxg
        
         | NeutralForest wrote:
         | I've watched a couple of her stuff, it's really inspiring and
         | feels very cosy, like a slice of Internet that lives on its own
         | and creates without being too bothered about the Algorithm(tm).
        
         | AStrangeMorrow wrote:
         | Yeah love her stuff. And honestly the voice description is part
         | of the music flow at this point.
         | 
         | I feel like that's kinda how people imagined navigating
         | whatever cyber domain when the first big cyberpunk novels came
         | out
        
         | george_____t wrote:
         | Just to add some context, Strudel is TidalCycles ported from
         | Haskell to JS. IMO, Haskell is a much nicer language for this
         | stuff. Hopefully, now that GHC can output WebAssembly, someone
         | can build a web-based music programming environment around the
         | original TidalCycles instead.
        
         | lagniappe wrote:
         | The person in that video really has an ear for synthesis. I've
         | spent quite some time watching all the strudel videos and this
         | creator consistently shows the best skill across genres.
        
         | ar_lan wrote:
         | This was epic, and reminded me of the magic of programming when
         | I first found a video game maker at a wee 11 years old.
         | 
         | Writing code to make music feels so natural to me (a musically
         | inept, but proficient coder) and this breaks down so many
         | barriers.
         | 
         | I wonder how Cursor fares with Strudel so far.
        
         | AlexB138 wrote:
         | This is pretty incredible to watch. I initially thought she
         | must be pulling some kind of trick to make that look so fluid,
         | but the fact that she is making very small typos and correcting
         | them as she goes make it look very believable. This is really
         | the first time I've watched someone use one of these tools and
         | it feel like a musician using a new kind of instrument.
        
           | sandebert wrote:
           | Yeah, she's got several videos, and shorts, where she does
           | this. It's clear she really, really understands how to do
           | what she wants to achieve!
        
             | AlexB138 wrote:
             | Yeah, I'm watching more. These are incredible. I really
             | like how she describes what she's doing in tempo with the
             | music as she does it. The description is basically part of
             | the performance. Really unique and engaging approach.
        
             | cowsaymoo wrote:
             | If you go back to the older videos she has like a decade of
             | experience messing around with modular synths to make music
             | live that is actually listenable.
             | 
             | She is also a main developer on the strudel project. If you
             | want to contribute, it is open source:
             | 
             | https://codeberg.org/uzu/strudel
        
             | junon wrote:
             | As a producer, wow. She can visualize the outcome she wants
             | without ever seeing much at all. That takes a ton of skill.
             | Insanely impressive video.
        
           | empath75 wrote:
           | I think the videos are done live, but she plans them out, she
           | isn't just winging it.
        
         | theossuary wrote:
         | This is one of my all-time favorite YouTube videos, and it's of
         | her coding music - https://youtu.be/iu5rnQkfO6M
        
       | bebb wrote:
       | There was one on HN a few weeks ago, tailored towards loops:
       | https://news.ycombinator.com/item?id=46072280
       | 
       | One interesting feature is it has built-in vibe coding, to
       | produce an LLM-generated loop program to start one's creative
       | journey.
        
       | zX41ZdbW wrote:
       | I use SQL for music: https://github.com/ClickHouse/NoiSQL
        
         | yowlingcat wrote:
         | Very cool! Found this note interesting:
         | 
         | ```
         | 
         | Limitations
         | 
         | I haven't, yet, found a good way to implement filters (low-
         | pass, high-pass, band-pass, etc.). It does not have Fourier
         | transform, and we cannot operate on the frequency domain.
         | However, the moving average can suffice as a simple filter.
         | 
         | ```
         | 
         | I wonder if there's a way to implement the FFT using subqueries
         | and OVER/partitioning? That would create a lot of room for some
         | interesting stuff to happen, specifically making it
         | easy/possible to implement filters, compression, reverberation,
         | and other kinds of effects.
         | 
         | Two other primitives that would be valuable to figure out: 1.
         | How to implement FM/phase distortion. You can basically
         | implement a whole universe of physical modeling if you get
         | basic 6 op sine wave primitives right with FM + envelopes. 2.
         | Sampling/resampling - given clickhouse should do quite well
         | with storing raw sample data, being able to sample/resample
         | opens up a whole world of wavetable synthesis algorithms, as
         | well as vocal editing, etc.
         | 
         | Honestly, although the repo's approach is basic, I think the
         | overall approach is wonderful and have wanted to be able to use
         | SQL to write music for a while. I've spent a lot of time
         | writing music in trackers, and being able to use SQL feels like
         | it would be one of the few things that could spiritually be a
         | successor to it. I've looked at other live coding languages,
         | many of which are well built and have been used by talented
         | people to make good music (such as Tidal, Strudel, etc). But
         | all of it seems like a step down in language from SQL. I'd
         | rather have their capabilities accessible from SQL than have to
         | use another language and its limitations just to get those
         | capabilities.
         | 
         | Food for thought -- thanks for the interesting and thoughtful
         | work!
        
       | erk__ wrote:
       | There was a music language made for the Danish GIER machine, made
       | in 1971 (at least the 2nd edition of the handbook is from there)
       | 
       | The handbook for the language is sadly only in Danish so it might
       | not be super interesting: https://datamuseum.dk/bits/30002486
       | 
       | Here is the code for movement 1 and 2 of Eine Kleine Nachtmusik:
       | https://datamuseum.dk/aa/gier/30000644.html
        
       | gdelfino01 wrote:
       | There is some sound and music functionality in the Wolfram
       | Language:
       | 
       | http://reference.wolfram.com/language/guide/SoundAndSonifica...
        
       | Blackthorn wrote:
       | In order, the most popular ones of these are probably
       | 
       | * Max. It's built into a popular DAW, and is shockingly capable
       | as an actual programming language too. The entire editor for the
       | Haken line of products is written in Max.
       | 
       | * Pure Data or Supercollider.
       | 
       | * Csound.
       | 
       | Not ordering things like Scala or LilyPond that are much more
       | domain-specific.
        
         | why-o-why wrote:
         | When I was first introduced to Max it was on a Mac SE in 1989,
         | and I really only used it for saving & restoring patches (on my
         | SY77 and U110) until someone walked me through how it really
         | worked. I didn't understand what it could do, and I rejected it
         | at first because it was too open-ended for me to see utility.
         | Lol. How things changed after that.
         | 
         | What really blows my mind is that I wasn't at all put off by
         | the tiny little Mac monitor, it just seemed normal. No way I
         | could work with such a small b&w screen today I'd go mad.
         | (weirdly I feel less creative than i did in the 1980's and NOW
         | i have near infinite recording & mixing options. The irony.)
        
       | fnordlord wrote:
       | I really hope that Max becomes fully accessible in a text based
       | format one day. It's so cool and I've spent a few months randomly
       | through the years building neat plugins for Ableton but, for me,
       | it would be so much stickier if it was code. Especially now with
       | AI assistance, Claude can still be helpful but it hallucinates a
       | lot harder when trying to describe visual code.
        
         | scragz wrote:
         | you can get the LLM to output max patches in JSON and copy
         | paste directly into max. it was pretty decent at it when I
         | tried and would probably be even better with relevant recent
         | documentation in context.
        
         | Slow_Hand wrote:
         | Would love to see this, as someone who has been heavily using
         | Live since 2006 and is finally getting into proper coding in
         | middle-age. Having a way to augment Live in a text-based coding
         | format would be greatly welcome.
         | 
         | While I'm not holding my breath, Ableton the company are
         | transitioning into a steward-ownership model in which the
         | stewards will have decision rights over the company. So I have
         | hope that it will continue to grow in ways that are less
         | affected by market considerations and that are a little more
         | opinionated and specialized. Not to mention that Ableton own
         | Cycling 74 (creators of Max/MSP).
         | 
         | So it's not out of the realm of possibility.
        
           | dr-smooth wrote:
           | you can use Javascript with Max. It's a bit unwielding in its
           | handling of multi-JS-file projects, but it can be done.
           | 
           | Not everything in Max is exposed to your code, but you really
           | can do a lot from the JS side of things.
        
       | yakshaving_jgt wrote:
       | Haskell is also a popular choice for music production and live
       | music performance.
       | 
       | https://youtu.be/XYe8AKYPUYc?si=ZYP4QM5FLn00-5u6
        
       | heuermh wrote:
       | I have been using ChucK for a long time. Like others here, I
       | appreciate Max/Pure Sound but would rather use my text editor.
       | Delay delay;       LPF filter;       Reverb reverb;       Gain
       | feedback;              adc => delay => filter => reverb => dac;
       | filter => feedback => delay;
        
         | afandian wrote:
         | I'm curious what you did with it? I spent a little time with
         | ChucK with the Oxford Laptop Orchestra (as was) which was an
         | offshoot from the Princeton one. I was there as a technologist,
         | not a musician. Always had a soft spot but never found myself
         | using it again.
        
           | heuermh wrote:
           | I mostly use it for learning things. How does this guitar
           | pedal effect work? Why does this Eurorack module sound so
           | good? How can I drive this MIDI instrument from this OSC
           | controller? etc.
           | 
           | Ideally there would be an easy path from ChucK to
           | implementing all of these things in hardware but I haven't
           | quite got there yet.
           | 
           | https://github.com/heuermh/lick
        
             | afandian wrote:
             | Wow that's a serious amount of work! I might take another
             | look.
        
       | asupkay wrote:
       | There's a community in NYC called Livecode that hosts in person
       | events for programming music and it's awesome
        
         | yogurtboy wrote:
         | This sounds sick! I wonder if there's something similar in
         | Seattle.
        
           | wbeckler wrote:
           | Here's a list of global locations:
           | https://livecode.nyc/network
        
       | incanus77 wrote:
       | Surprised no mention of Alda. I've only tinkered with it, but
       | it's clever:
       | 
       | https://alda.io/
        
       | listenfaster wrote:
       | Very creative guy operating this site (look at this!
       | https://timthompson.com/spacepalette/) though it looks like it's
       | been idle the past 4 years or so? The live-coding community
       | around tidal cycles will point you to a the fruit of missing
       | projects like tidal-cycles and strudel. A strong inviting
       | community: https://club.tidalcycles.org/
        
       | turboladen wrote:
       | It's quite new, but I've been interested to try out this Rust-y
       | syntax language that compiles to SuperCollider:
       | https://vibelang.org/
        
         | hmokiguess wrote:
         | Oh wow, first I hear of this one, quite interesting! How did
         | you come across it? The vscode extension seems quite neat too,
         | excited to try it out.
        
       | dmd wrote:
       | And at least 5 times a year someone designs a new one where it is
       | _painfully_ obvious that they 're almost entirely unaware that
       | anyone has ever designed one before - or if you're very lucky,
       | maybe they've heard of ABC.
        
       | jim_lawless wrote:
       | I saw a post about the SKOAR language here on HN in late 2015:
       | 
       | https://news.ycombinator.com/item?id=10180423
       | 
       | In the comments, I saw reference to MML ( Music Macro Language
       | ... not exactly what I think the MML is on the list. ) Here's the
       | one referenced in the HN post.
       | 
       | https://en.wikipedia.org/wiki/Music_Macro_Language
       | 
       | At the time, I built a small interpreter that included MML as an
       | embedded language, but I don't think I have the (Windows)
       | binaries handy.
        
       | mackeye wrote:
       | i was transcribing some songs for violin after picking it back up
       | (mostly metal, which i have to take some liberties with to sound
       | good on a violin + kick drum :> ), and thought about writing a
       | language (maybe a rust steel module) to hand the typesetting for
       | me, as writing out & erasing e.g. slurs can take a while. but
       | lilypond really is good enough that there wasn't much about it
       | i'd want to change, either syntactically or semantically (as
       | really, i only need a very small subset of it). any language i do
       | write, if i choose to, would probably use it as a backend --- its
       | rendering is very good :)
        
         | c_hastings wrote:
         | have you figured out a good tool flow for going from music to
         | transcription?
         | 
         | I've used ai.splitter to generate stems, but need to go and
         | identify tones and notes before plotting on to a sheet of
         | music. I'm looking at doing this as a beginning cello student.
        
           | mackeye wrote:
           | to be honest, i've been playing violin for a number of years
           | and my strategy is still to listen to a part of the song,
           | rewind until i can play it (even if slowly), then write that
           | down. some of the pieces i want to write down are twin-guitar
           | pieces, where i need to (generally) choose the melodic guitar
           | over the harmonic. i haven't found AI good at that, but,
           | thinking now, i haven't tried it in years, so it may have
           | gotten good enough? sorry for the lack of much insight, lol.
           | (for metal, finding tabs online can at least help with the
           | rhythm, so i just need to try and transcribe the notes &
           | flourishes).
        
       | scelerat wrote:
       | I love seeing a Definition List (DL/DT/DD html tags) in the wild.
       | Often more hassle than its worth to make them appear the way you
       | want, but semantically pleasing and underused.
        
         | TheRealPomax wrote:
         | combine it with a <details> and <summary> inside the <dd> and a
         | little CSS checkbox toggle for JS-less "show all details"/"hide
         | all details" and it's pure gold.
        
       | mike_ivanov wrote:
       | Opus Modus (mentioned there) is quite notably Common Lisp
        
       | iansteyn wrote:
       | Sonic Pi is missing imo. (Some have mentioned Strudel, it's a
       | similar live-coding music platform). Admittedly Ruby-based, but
       | it seems some of the other ones on the list are libraries/forms
       | of other langs too.
        
       | rriley wrote:
       | Great compilation. The ".cgi" in the URL clearly tells me this is
       | an old collection of links :-)
       | 
       | Another fun esoteric music language missing in the comments is
       | ORCA: https://git.sr.ht/~rabbits/orca
        
       ___________________________________________________________________
       (page generated 2025-12-22 23:00 UTC)