6 ms·
Programming languages used for music
- 3ds 10mo agoIt's missing "Strudel" and "tidal cycles"
- rhdunn 10mo agoSee e.g. https://www.youtube.com/@Switch-Angel/videos https://www.youtube.com/@Switch-Angel/videos for examples of strudel in action to create trance music.
- jackkinsella 10mo agoMusicabc 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/ https://abc.hieuthi.com/
- philprx 10mo agoStrudel.cc ?
- rausr 10mo agoI recently tripped over Dogalog (live-coding with prolog-like code), which could be an addition: https://danja.github.io/dogalog/ https://danja.github.io/dogalog/
- benrutter 10mo agoLooks 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 https://github.com/zoejane/awesome-music-programming
- ofalkaed 10mo agoMost 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 10mo agoNo Sonic Pi, which is a Ruby dialect?
- 1313ed01 10mo agoSonic 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 10mo agoYeah, 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 10mo agoCsound (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 10mo agoI 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_rTaNDweXe6PX4CXSGq4iEWYC https://www.youtube.com/watch?v=yRzsOOiJ_p4&list=PLPYzvS8A_r...
- hellobluelings 10mo agoThere 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 10mo agoAlmost an esolang, but orca is an amazing example of spatial programming for music production (GH https://github.com/hundredrabbits/Orca https://github.com/hundredrabbits/Orca and video https://www.youtube.com/watch?v=gSFrBFBd7vY https://www.youtube.com/watch?v=gSFrBFBd7vY to see it in action)
- lovich 10mo agoIs 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/ 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 10mo agoYeah it's from 100r https://100r.co/site/projects.html https://100r.co/site/projects.html!
- listenfaster 10mo ago‘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 10mo agoMy 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 10mo agoThat 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 10mo agosee also https://github.com/toplap/awesome-livecoding https://github.com/toplap/awesome-livecoding
- ako 10mo agoYesterday 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 10mo agoThe 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 10mo agoSure, 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/heads/main/examples/jazz-swing.btml 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.
- ako 10mo agoFull vibe coded project: https://github.com/ako/backing-tracks https://github.com/ako/backing-tracks
- isodev 10mo agoDepending 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.
- shevy-java 10mo agoI 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 10mo agoever tried Pd or max?
- rerdavies 10mo agoSuperCollider also has some traction, and is in the same genre as max and pd.
- nablaone 10mo agoClaude 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 10mo agoStrudel 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/ https://strudel.cc/workshop/getting-started/
- chaosprint 10mo agoRelevant to this discussion - my project Glicol (https://glicol.org https://glicol.org) addresses this space. Currently working on a no_std rewrite, demo coming next year :)
- heuermh 10mo agoCurious, 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://daisy.audio/hardware/, https://github.com/electro-smith/libDaisy https://github.com/electro-smith/libDaisy
- chaosprint 10mo agoof course I already got a poc a while ago: https://github.com/chaosprint/daisy-rust-playground https://github.com/chaosprint/daisy-rust-playground but for now my main mcu is rp2350
- heuermh 10mo agoAwesome, will check it out!
- sandebert 10mo agoSwitch Angel live-code using Strudel. Really impressive and interesting stuff. https://youtu.be/aPsq5nqvhxg https://youtu.be/aPsq5nqvhxg
- NeutralForest 10mo agoI'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™.
- AStrangeMorrow 10mo agoYeah 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
- deleted 10mo ago[deleted]
- george_____t 10mo agoJust 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.
- loxs 10mo agoIs there feature parity? Strudel might be ahead by now?
- lagniappe 10mo agoThe 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 10mo ago
- bebb 10mo agoThere was one on HN a few weeks ago, tailored towards loops: https://news.ycombinator.com/item?id=46072280 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 10mo agoI use SQL for music: https://github.com/ClickHouse/NoiSQL https://github.com/ClickHouse/NoiSQL
- yowlingcat 10mo agoVery 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__ 10mo agoThere 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 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 https://datamuseum.dk/aa/gier/30000644.html
- gdelfino01 10mo agoThere is some sound and music functionality in the Wolfram Language: http://reference.wolfram.com/language/guide/SoundAndSonification.html http://reference.wolfram.com/language/guide/SoundAndSonifica...
- olpad 10mo agoA few months ago I outlined a spec for a new modern programming language inspired by LilyPond I call Capo. I haven’t done anything with it yet but the idea is that it compiles to MNX, which is the (still in development) successor to MusicXML, becoming a language that could be used as a scripting language in any program that supports MNX or as a standalone text-based music tool. Thought this group might find it interesting: https://github.com/Capo-Lang/capo https://github.com/Capo-Lang/capo
- ofalkaed 10mo agoCan you give a rundown on how it differs from lilypond? What deficiencies you are addressing?
- olpad 10mo agoIt’s mostly just for fun, but lilypond has a bit of outdated syntax in modern programming terms. The main difference though is that lilypond compiles to music engraving, whereas capo compiles to a more universal file format that can then be used to engrave, or inserted into another file, or opened in another program.
- Blackthorn 10mo agoIn 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 10mo agoWhen 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.)
- quantpunk 10mo agoI learned programming with csound in the 90s but for me, Pyo and Librosa means there is no reason for a specialized language outside of python. There is value in what has already been built for these languages but once you move beyond that, life is so much easier to just use python. Cecilia5 is a great example of that being rewritten from csound to pyo.
- veunes 10mo agoCsound is funny because it's everywhere in the lineage, but relatively few people seem to arrive at it organically now
- fnordlord 10mo agoI 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 10mo agoyou 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 10mo agoWould 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 10mo agoyou 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.
- Slow_Hand 10mo agoI had no idea! And I'm learning Javascript, so that's a nice coincidence. I was deep into Max/MSP around 2010 and made a personal vow to leave it alone. The potential to reinvent the wheel and build tools instead of completing records was too much. Now I'm in a more mature place, so I could see myself diving back into it eventually.
- yakshaving_jgt 10mo agoHaskell is also a popular choice for music production and live music performance. https://youtu.be/XYe8AKYPUYc?si=ZYP4QM5FLn00-5u6 https://youtu.be/XYe8AKYPUYc?si=ZYP4QM5FLn00-5u6
- heuermh 10mo agoI 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 10mo agoI'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 10mo agoI 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 https://github.com/heuermh/lick
- afandian 10mo agoWow that's a serious amount of work! I might take another look.
- asupkay 10mo agoThere's a community in NYC called Livecode that hosts in person events for programming music and it's awesome
- incanus77 10mo agoSurprised no mention of Alda. I’ve only tinkered with it, but it’s clever: https://alda.io/ https://alda.io/
- listenfaster 10mo agoVery creative guy operating this site (look at this! https://timthompson.com/spacepalette/ 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/ https://club.tidalcycles.org/
- veunes 10mo agoIt's kind of nice that both modes coexist
- turboladen 10mo agoIt’s quite new, but I’ve been interested to try out this Rust-y syntax language that compiles to SuperCollider: https://vibelang.org/ https://vibelang.org/
- hmokiguess 10mo agoOh 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.
- turboladen 10mo agoIIRC on r/rust.
- dmd 10mo agoAnd 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 10mo agoI saw a post about the SKOAR language here on HN in late 2015: https://news.ycombinator.com/item?id=10180423 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 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 10mo agoi 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 10mo agohave 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 10mo agoto 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 10mo agoI 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 10mo agocombine 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.
- tempaccsoz5 10mo agoTheir structure in the markup can be a bit confusing imo - something more like a <figcaption> inside a <figure> or a <legend> inside a <fieldset> would be much nicer imo. The spec even mentions [0] that you're allowed to use <div>s to group dt/dd pairs for styling purposes. [0]: https://html.spec.whatwg.org/multipage/grouping-content.html#the-dl-element https://html.spec.whatwg.org/multipage/grouping-content.html...
- mike_ivanov 10mo agoOpus Modus (mentioned there) is quite notably Common Lisp
- iansteyn 10mo agoSonic 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.
- jweather 10mo agoSonic Pi is by far the most accessible way to play with these tools. It's designed to teach music and coding to kids and has great starter tutorials, and a ton of depth as well. Check it out!
- rriley 10mo agoGreat 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 https://git.sr.ht/~rabbits/orca
- anondawg55 10mo agoMax is great.
- bthallplz 10mo agoIt isn't mentioned there, but you all might be interested in the python music libraries called SCAMP: https://scamp.marcevanstein.com https://scamp.marcevanstein.com I learned about it after stumbling across the creator's short, fun videos showing it being used: https://youtube.com/playlist?list=PL_yUKG0GRuliL65l_qEG1uwCC03X4jioL&si=qGyUTSW-T9dKBrfY https://youtube.com/playlist?list=PL_yUKG0GRuliL65l_qEG1uwCC... ("Python Music Shorts")
- brendanr 10mo agoMusic Lab by Code.org is a Blockly-based experience, built for K-12 education, at https://code.org/music https://code.org/music. It's open source, and we wrote some technical documentation at https://github.com/code-dot-org/code-dot-org/blob/600ebafa524bb0299b77662ddb5ed86906ff8b47/apps/src/music/README.md https://github.com/code-dot-org/code-dot-org/blob/600ebafa52.... There were a bunch of interesting aspects to this project. One of my favorite things was developing the user programming model. Organizing your music using functions is very powerful.
- xiaohanyu 10mo agoThe best demo for music programming language demo I can found is: https://www.youtube.com/watch?v=yY1FSsUV-8c&t=374s https://www.youtube.com/watch?v=yY1FSsUV-8c&t=374s, The concert programmer.
- veunes 10mo agoThis list is such a time capsule in the best way