Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Show HN: ÆTHRA – Writing Music as Code
80 points by CzaxTanmay 17 hours ago | hide | past | favorite | 21 comments
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>

Thanks for reading — happy to answer questions or discuss ideas.





Are you aware of SonicPi? Are you aware of Lilypond?

Thanks 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!


Thanks bro. I am happy that you liked it I am very happy that you supported me

How does this compare to https://strudel.cc/ ?

This 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/#Ci8vICJQeXJhbWlkIFNvbmcgKFJhdyBBYnN0cmFj...


Have you heard of Switch-Angel? If not, check out https://www.youtube.com/shorts/hbZb1Q0mM7k (to pick one) for a taste of what Strudel is capable of in "real time".

It’s been a lot of fun watching her subscriber count go through the roof. She’s outrageously talented.

It’s also funny because usually it’s hard to reproduce what a musician does. I can listen to someone play guitar, but there’s so much nuance to how it’s played that you need to be pretty good to reproduce it.

But so much of her music is code, and she shows you the code, so she’s really teaching you how to reproduce what she’s doing perfectly. It’s awesome for learning.


I made one a couple weeks ago, it also has visuals. You can use a key or use a local LLM running right in the browser. I'll drop it online somewhere, maybe do a Show HN. Would you like me to email you when I do?

People 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


  >  Æ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).


Some 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)

I 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.

Ha, 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.


Cool project. There are people making a living streaming live-coded music, eg:

DJ Dave

Making dance music with code

https://youtube.com/shorts/5OYiOGxHxTQ

Perhaps you could reach out to some of them if you feel yours adds something they might find useful.


How to use it? Why does it not have any guide on how to use it?

No 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


I clicked the link but missed the show. I'd like to revisit the project when there is something to look at and listen to.

Please can you link to a video of it being used?

Yes. I will upload after some days

How does this relate to existing systems?

E.g. Csound




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: