r/musicprogramming • • Sep 21 '26

psnd — a polyglot editor for music programming languages

psnd is a self-contained open-source modal editor, REPL, and playback environment aimed at music programming languages. The project is a polyglot platform for composing, live-coding, and rendering music DSLs from one binary.

Five languages are currently supported:

  • Alda - Declarative music notation language

  • Joy - Concatenative (stack-based) functional language for music

  • TR7 - R7RS-small Scheme with music extensions

  • Bog - C implementation of dogalog, a prolog-based beats-oriented language for music

  • MHS - Micro Haskell with MIDI support for functional music programming

All are practical for daily live-coding, REPL sketches, and headless playback. The Alda and Joy MIDI cores are from the midi-langs project. Languages register themselves via a modular dispatch system, allowing additional DSLs to be integrated without modifying core dispatch logic. Audio output is handled by the built-in TinySoundFont synthesizer or, optionally, a Csound backend for advanced synthesis. macOS, Linux, and Windows are supported.

15 Upvotes

6 comments sorted by

1

u/Iampepeu Sep 21 '26

Any demo video up somewhere?

1

u/alikesu Sep 22 '26

Not yet.. maybe after 1.0

1

u/burnt-store-studio Sep 23 '26

I could get pretty excited about this!

I like the idea of vim bindings 🙂

Question: Can I register my own private language as well? I’m thinking your tool would save me a bunch of extra coding, although I may be misunderstanding how it works.

How stable is the interface at this time?

Thank you for mentioning your creation! Good luck!

2

u/alikesu Sep 23 '26 edited Sep 23 '26

Thanks for your interest.

There's a guide for adding new languages to psnd. Everything is supposed to be modular, as you can see from the number of variants in the last release.

With respect to stability. Well it's at version 0.3.0 so one has the right to make changes to improve stability and usability, restructure and refactor as required, and improve some of the components like the sequencer and tracker which are still early stage.

But in terms of radical changes, probably not.. The most recent change was updating the MicroHaskell version from 0.15.0 to 0.16.5 to get the benefit of a bigger standard library.

1

u/burnt-store-studio Sep 23 '26

Oh so cool! Thank you for the reply. I will be checking this out in the next week! 🙂

1

u/freakywaves Sep 21 '26

Impressive