6 ms·
Show HN: ÆTHRA – Writing Music as Code
Hi HN
I’m building ÆTHRA — a programming language designed specifically for composing music and emotional soundscapes.
Instead of focusing on general-purpose programming, ÆTHRA is a pure DSL where code directly represents musical intent: tempo, mood, chords, progression, dynamics, and instruments.
The goal is to make music composition feel closer to writing a story or emotion, rather than manipulating low-level audio APIs.
Key ideas:
- Text-based music composition
- Chords and progressions as first-class concepts
- Time, tempo, and structure handled by the language
- Designed for ambient, cinematic, emotional, and minimal music
- Interpreter written in C# (.NET)
Example ÆTHRA code (simplified):
tempo 60
instrument guitar
chord Am for 4
chord F for 4
chord C for 4
chord G for 4
This generates a slow, melancholic progression suitable for ambient or cinematic scenes.
ÆTHRA currently:
- Generates WAV audio
- Supports notes, chords, tempo, duration, velocity
- Uses a simple interpreter (no external DAWs or MIDI tools)
- Is intentionally minimal and readable
What it is NOT:
- Not a DAW replacement
- Not MIDI-focused
Why I made it:
I wanted a language where music is the primary output — not an afterthought. Something between code, emotion, and sound design.
The project is open-source and early-stage (v0.8). I’m mainly looking for:
- Feedback on the language design
- Ideas for musical features worth adding
- Thoughts from people into PL design, audio, or generative art
Repo: <https://github.com/TanmayCzax/AETHRA https://github.com/TanmayCzax/AETHRA>
Thanks for reading — happy to answer questions or discuss ideas.
- worik 9mo agoHow does this relate to existing systems? E.g. Csound
- CzaxTanmay 9mo agoCsound. ÆTHRA Harder. Easier More mature. Less mature Made with C. Made with C#
- Apreche 9mo agoHow does this compare to https://strudel.cc/ https://strudel.cc/ ?
- riedel 9mo agoThis is very much fun. Since I do not know what I am doing I simply ran Gemini on it to add a beat to pyramid song demo [0]. Is there music repls with LLM assistants built-in? [0] https://strudel.cc/#Ci8vICJQeXJhbWlkIFNvbmcgKFJhdyBBYnN0cmFjdCAtIEZpeGVkKSIKc2V0Y3BzKDEwNC82MC80KQoKY29uc3Qgc3BsaXQgPSByZWdpc3Rlcignc3BsaXQnLCAoZGVmbHQsIGNhbGxiYWNrLCBwYXQpID0%2BIGNhbGxiYWNrKGRlZmx0Lm1hcCgoZCxpKT0%2BIHBhdC53aXRoVmFsdWUoKHYpPT57CiAgY29uc3QgaXNvYmogPSB2LnZhbHVlICE9PSB1bmRlZmluZWQ7IGNvbnN0IHZhbHVlID0gaXNvYmogPyB2LnZhbHVlIDogdjsKICBjb25zdCByZXN1bHQgPSBBcnJheS5pc0FycmF5KHZhbHVlKT8oaTx2YWx1ZS5sZW5ndGg%2FdmFsdWVbaV06ZCk6KGk9PTA%2FdmFsdWU6ZCk7CiAgcmV0dXJuIChpPT0wICYmIGlzb2JqKSA%2FIHsuLi52LHZhbHVlOnJlc3VsdH0gOiByZXN1bHQ7IH0pKSkpOwoKbGV0IGNociA9IHtYOiJmIzIsYyMzLGEjMyxjIzQsZiM0IiwgWToiZzIsZDMsYjMsZDQsZiM0IiwgWjoiYTIsZTMsYTMsYyM0LGYjNCIsIEo6ImcyLGQzLGIzLGQ0LGc0IiwgSzoiZiMyLGMjMyxhIzMsYyM0LGc0IiwKICAgICAgICAgICBWOiJmIzIsYyMzLGEzLGMjNCxmIzQiLCBXOiJlMixiMixnIzMsYjMsZiM0In0KCi8vIFBJQU5POiBBZGRlZCBhZ2dyZXNzaXZlIG1hc2tpbmcgZm9yIHRoZSAicGF1c2VzIgpwaWFubzogIjxbaTEgaTIgaTMgaTRdIG9vb29oIFt2MSB2Ml0hNCBvb29vaEAyIFt2MSB2Ml0hMyBbdjEgdjNdIFt2MyB2Ml0gW2kxIGkyIGkzIGkyXSBbaTMgaTIgaTMgaTJdIGVuZD4vOCIucGlja1Jlc3RhcnQoCiB7aTE6YDxbW1g6LjYgWDouOF1AMyBZOi41QDIgW1o6LjUgWjouNV1AM10%2BLzJgLCBpMjogYDxbW1o6LjQgWTouNF1AMyBZOi4zQDIgW0o6LjYgSjouOV1AM10%2BLzJgLCAKICBpMzpgPFtbSzouOCBYOi42XUAzIFk6LjVAMiBbWjouNSBaOi41XUAzXT4vMmAsIGk0OiBgPFtbWjouNCBZOi40XUAzIFk6LjRAMiBbWTouNCBZOi43XUAzXT4vMmAsCiAgb29vb2g6YDxbW1ggWF1AMyBZQDIgW1ogWl1AM10gW1taIFldQDMgWUAyIFtYIFhdQDNdIFtbWCBYXUAzIFlAMiBbWiBaXUAzXSBbW1ogWV1AMyBZQDIgW1kgWV1AM10%2BLzJgLAogIHYxOmA8W1tYIFhdQDMgWUAyIFtaIFpdQDNdIFtbWiBZXUAzIFlAMiBbWCBYXUAzXT4vMmAsCiAgdjI6YDxbW1YgVl1AMyBXQDIgW1cgV11AM10gW1tZIFldQDMgWUAyIFtZIFldQDNdPi8yYCwKICB2MzpgPFtbViBWXUAzIFdAMiBbVyBXXUAzXSBbW1kgWV1AMyBYQDIgW1ggWF1AM10%2BLzJgLAogIGVuZDpgPFg6MT4vOGAsIAogfSkuc3BsaXQoWzAsLjVdLCh4KT0%2BeFswXS5waWNrT3V0KGNocikudmVsb2NpdHkoeFsxXSkpLm5vdGUoKS5waWFubygpCiAgLmdhaW4oMC42KSAKICAubWFzaygiPDEgWzEgMF0gMSAwPiIpIC8vIEZvcmNlcyB0aGUgbWVsb2R5IHRvIGN1dCBvdXQgYXQgdGhlIGVuZCBvZiBiYXJzCiAgLnJvb20oLjQpLmxwZigxMDAwKQoKLy8gLS0tIFJBVyBJTlRFUk5BTCBCRUFUIC0tLQpkcnVtczogc3RhY2soCiAgLy8gSGVhdnkgS2ljawogIHMoImJkIFt%2BIGJkXSBiZEAyIH4gYmQgW34gYmRdIH4iKS5iYW5rKCJkcnVtcyIpLnZlbG9jaXR5KDEuNCkuc2hhcGUoMC40KSwKICAvLyBTbmFyZSArIFJpbSAKICBzKCJ%2BIFtzbjoxLCByaW06MV0gfiBbc246MSoyXSB%2BIHNuOjEgfiBbcmltOjE%2FMC41XSIpLnZlbG9jaXR5KDEuMykuZGVsYXkoMC4wNSkuY3J1c2goNCksCiAgLy8gQnJhc2ggSGktaGF0cwogIHMoImhoKjE2PzAuNyIpLmJhbmsoInJvbGFuZHRyODA4IikudmVsb2NpdHkoIjAuOCAwLjQgMSAwLjYiKS5jcnVzaCgyKQopLnNsb3coMikuZ2FpbigxLjUpLmRpc3RvcnQoMC4xKQoKLy8gR3JpdHR5IEJhc3MKYmFzczogIjxbZiMxQDMgZzFAMiBhMUAzXSBbYTFAMyBnMUAyIGcxQDNdPiIucygic2F3IikubHBmKDEzMCkuZ2FpbigwLjcpLnNoYXBlKDAuNikKCm9vb29oOiAiPH4gMCB%2BQDQgMEAyIH5AOD4vOCIucGlja1Jlc3RhcnQoWwogICI8ZiM1QDExIGU1Oi0yIGcjNTo0IGU1Oi00IFtmIzU6MiB%2BXSBbfiBnIzUgZTVdIGYjNUA0IGcjNSBmIzUgZTUgZDUgYyM1QDUgfkAzPio0IgogIF0pLnNwbGl0KFswLDBdLCh4KT0%2BeFswXS5wZW52KHhbMV0pKS5wYXR0KDAuMDQpLnMoInRyaWFuZ2xlIikuYXR0YWNrKC4wOCkucmVsZWFzZSguMDgpLm5vdGUoKS5nYWluKDAuMikubWFzaygiPDEhNyAwPiIpCg%3D%3D https://strudel.cc/#Ci8vICJQeXJhbWlkIFNvbmcgKFJhdyBBYnN0cmFj...
- sumul 9mo agoThanks for sharing. I’m a musician and programmer, so I’m squarely in what I’d expect is your target audience. Since you’re posting an early version for feedback, here are some of my broadest initial thoughts. From your README’s philosophy section: “You describe what you want to feel — ÆTHRA handles how it sounds.” But the rest of the documentation doesn’t yet feel aligned to that vision. The closest you get to that is when you describe your example chord progression as melancholic, but you as the composer already happened to know that this particular progression provides the feeling you have in mind. I love the idea of a high level way to programmatically or idiomatically describe how music should feel, especially how the composition should evolve over time (perhaps even in surprising ways that are beyond current tools). I hope as you progress that you’re able to find innovative ways to build toward that vision. The current feature set feels like it would be considerably more convenient in a GUI environment. Again, I hope that as you continue to build, it becomes more obvious why this is a language and not a visual synthesis/composition tool. A little audio output demo would go a very long way in potentially getting me interested in playing around with this. Good luck!
- CzaxTanmay 9mo agoThanks bro. I am happy that you liked it I am very happy that you supported me
- jesuslop 9mo agoI loved to build backing tracks for guitar in Band-in-a-box, just from the chord progression and some settings. Leveraged little effort to interesting results. And the idea of a DSL is super. But I dunno how would you stand comparisons with audio rendered by pro DAW software loaded with a production quality sound library such as Hollywood Strings or similar if you render the audio yourself.
- ako 9mo agoDSL for backing tracks: https://github.com/ako/backing-tracks https://github.com/ako/backing-tracks
- ssttoo 9mo agoHa, I was just playing with making a simple pad in webaudio and it evolved into a progression-playing backing track tool (vanilla html/js/css page). It would appear there are a lot of us in the Venn intersection of programmer/guitarist/practice time alone enjoyers.
- Nekorosu 9mo agoI clicked the link but missed the show. I'd like to revisit the project when there is something to look at and listen to.
- mellosouls 9mo agoCool project. There are people making a living streaming live-coded music, eg: DJ Dave Making dance music with code https://youtube.com/shorts/5OYiOGxHxTQ https://youtube.com/shorts/5OYiOGxHxTQ Perhaps you could reach out to some of them if you feel yours adds something they might find useful.
- deleted 9mo ago[deleted]
- CzaxTanmay 9mo agoPeople have been comparing it to Strudel, so I wanted to clearly explain the difference. ÆTHRA vs Strudel (in short): ÆTHRA is output-oriented: you write a script → run it → get a WAV file. Strudel is performance-oriented: it’s browser-based live coding focused on real-time pattern manipulation. Key differences: Export ÆTHRA has built-in WAV export (one click). Strudel doesn’t natively export audio files; users usually record output manually. Execution model ÆTHRA renders audio offline (deterministic, no glitches). Strudel runs in real time via the Web Audio API. Use cases ÆTHRA: game music, background scores, generative assets, scripting music like code. Strudel: live coding, experimentation, performance. Environment ÆTHRA runs locally (currently Windows). Strudel runs entirely in the browser. Both tools are free, and they’re not trying to solve the same problem. ÆTHRA is meant to feel closer to a music compiler, while Strudel feels closer to a live instrument. ÆTHRA is early (v0.8), but it already supports tempo, ADSR, chords, scales, loops, echo/reverb, live preview, and WAV export. I will update AETHRA soon and make it very powerful to reach v1.0
- HelloNurse 9mo ago> ÆTHRA is output-oriented: you write a script → run it → get a WAV file. You are competing with traditional noninteractive usage of CSound. What do you think you can do better than CSound? More generally, what are the peculiar and valuable ÆTHRA features that you want to develop well? The current language is relatively verbose and readable (more suitable for live coding than for a "music compiler"), but somewhat simplistic and ad hoc on the notation side (e.g. no separate tracks, parts etc.) and not very general on the sound synthesis and processing side (e.g. fixed waveforms and keywords for effects).
- rudderdev 9mo agoHow to use it? Why does it not have any guide on how to use it?
- CzaxTanmay 9mo agoNo problem I will tell you and after telling you I will also add a guide AETHRA How to use it? First go to the GitHub link I gave you in the post. Download AETHRA or clone it. After downloading go to the folder named 'AETHRA' then go to bin then RELEASE and then to Net 10 Windows Folder. You will get an exe named AETHRA v0.8. After that start your Music Journey. To get all it's commands go to the GitHub project and read the README. You will get a built in AETHRA script, if it is working you are ready to go! Thanks for your comment -Tanmay Czax
- acron0 9mo agoPlease can you link to a video of it being used?
- CzaxTanmay 9mo agoYes. I will upload after some days
- auchester 9mo ago[dead]
- ThinkBeat 9mo agoSome samples of the DSL code and what they sound like would be a good addition. (Or it is already there and I could not find it)
- CzaxTanmay 9mo agoIt is present in the GitHub AETHRA app
- HelloNurse 9mo agoYes, but it is a meaningless syntax sampler. Good examples should be complete music pieces and they should be commented: where is important information? How are the numbers computed? How are commands organized? What is the practical workflow for making changes?
- 1718627440 9mo agoAre you aware of SonicPi? Are you aware of Lilypond?
- CzaxTanmay 9mo agoBro you can Choose Sonic Pi if you need a mature, extensively documented system with a large community Choose Aethra if you prefer a fresh, specialized language designed to make composing music easier, prioritizing readable, less technical code and coding pain
- 1718627440 9mo agoI didn't want to point out that any personal preference, I only wanted you to know about other projects, that you might gain insights from. If I needed to create audio as part of an application I have been using SoX.
- CzaxTanmay 9mo agoExample music (very basic, you can make way better) made using AETHRA -- https://audio.com/czax-studio/audio/aethra-example https://audio.com/czax-studio/audio/aethra-example
- CzaxTanmay 9mo agoExample code -- @Tempo(60) @Scale("Minor") @Reverb(0.7, 0.5) @Chord("A3 C4 E4", 4, 0.6) @FadeOut(5) Official Website -- https://aethralang.pages.dev/ https://aethralang.pages.dev/
- playlistwhisper 9mo agoThe main challenge lies in helping someone articulate their own emotions, feelings, and musical intentions. Personally, I find this difficult to achieve on my own. Structured dimensions can certainly support a music project, but they may lack effectiveness if there is no clear understanding of the intended objective from the outset. Nice project! Thanks for sharing. I would say that a robust qualification process may constitutes the primary added value of your project. Much like a sales representative who can methodically understand a prospect’s needs, it may be worth helping users clarify their internal feelings first. Exploring how other scientific or artistic disciplines address this challenge could also be valuable.
- joshcsimmons 9mo agobiggest pet-peeve on strudel - no "type"checking for chord names, like what if I write "Xm" as a chord - I should be aware of this in the REPL. Does AETHRA solve?
- CzaxTanmay 9mo agoIf you mean 'Xm' as any chord like Gm or Cm instead of 'X' then yes, ÆTHRA can kind of solve it.
- CzaxTanmay 8mo agoHELLO EVERYONE, I UPDATED AETHRA VERSION 0.8 TO VERSION 1.0 THE LANGUAGE NOW HAS BETTER EXAMPLE SUPPORT, COMMANDS AND CROSS PLATFORM CAPABILITY GITHUB REPO :- SAME AS THE OLD ONE