Now the language / compiler itself has been working quite well and I've been dogfooding it for like six months now. The next thing is an IDE-style editor where you can import a song and write the notation following it. Making THAT has been quite the journey. Here's a screenshot for good measure: https://i.imgur.com/EmlqlrM.png
Oh dude, I love this. I've been working on an interactive music thingy (https://trebel.la, it's sort of gamified but more designed to structure practice sessions for serious classical musicians) and struggling with the ABC vs. MusicXML choice.
Like most people in the space I'm using ABC for LLM generation (e.g. generating sightreading exercises and etudes) but MusicXML for processing and rendering the output. Would be nice to have something somewhere in between the over-simplified ABC and overly verbose MusicXML.
> Would be nice to have something somewhere in between the over-simplified ABC and overly verbose MusicXML.
Hard agree.
Early on I actually tried to write my drum charts directly in ABC Notation but it wasn’t a great fit. Then I made a simple parser for my language that outputs ABC because I thought it would be simpler but I found it to be very limiting, so now I use Vexflow’s low level API for rendering. I found it to be more customizable than ABC with a nice JS / TS API. It’s good for my use case (rendering) but ofc it doesn’t work as a save format.
I'm building an iOS app (with plan user-base of 1) to help me structure my (I wish they were) weekly drumming sessions. My idea is to have "lessons" that have more "patterns" and I choose a lesson and practice those patterns logging the bpm's i can do (that 186bpm from your example is just wild for me). I am a beginner-intermediate so lots to learn for me. I use musical notation. If anybody interested in it let me know.
Very cool. I'm working on something similar, for composing songs with both note-playing instruments and drum instruments. The format is TOML-based, and for melody I was inspired by strudel, but I had considered using ABC notation as well. The home page has an example of the format, and some demo songs: https://songformat.com
I definitely considered stuff like that but in the end decided to have every note spelled out.
I might reconsider though! Right now it's really annoying to have reaaally long lines of `kd/2` ad infinitum to write double bass.
I'm split between three options right now:
1. Just add multipliers like you did (`kd/2 * 16`), but I feel that makes it less "music" and more "program".
2. Special syntax sugar just for well known patterns that are repeated in many songs, like `dkdk` expands to a full bar of double bass, or xxx expands to one full bar of 8th notes on the hi-hats.
3. Have the user define custom pattern on their own, like `xxx = x x x x x x x x`, like C macros.
Maybe 10 years ago I started to build Guitar Hero style game with real electric drums, initially to teach myself drumming. The idea was to extract drum information from real songs (so I was exploring a DSL as well). I guess modern AIs could be used to implement this much quicker.
I love this. This was always an idea I had in my head, because spinning up MuseScore just to write down some beats was so annoying. Glad someone already came up with the solution! Do you plan to release the compiler(uh, rasterizer/renderer)?
Yes, having to deal with MuseScore was one of the reasons I started to work on this. I'm glad you picked up on it.
I definitely want to release it as an open source project, but there's still quite a bit of stuff left to do before I can. The biggest blocker is copyrighted material. There's a ton of copyrighted material in the test suite (oops), so I need to clean that up before releasing.
Also I want more demo songs that are not copyrighted before releasing, and so far all the songs I notated for myself are copyrighted, so that will probably take a while as well.
Also the IDE-style editor needs a lot of polishing before I'm ok having other people use it.
There's still a lot of stuff in the language itself I want to decide (what if I wanted to change time signatures in the middle of a song?), but I'm okay with releasing the project before that stuff is done. The two biggest things I have to do before thinking of releasing this is getting rid of copyrighted material in the codebase, and polishing the IDE. But I definitely want to release it!
It's intended for drummers, but I wouldn't rule out anybody. It can generate sound, and I'm even using some nicer sounding samples I found on the internet, so using it for composition is realistic.
But the main use case I'm going for is my own: making sheet music for drum practice.
Forget the DSL part for a second and what this can do is: it can render sheet music, play the corresponding sound and display the same music as a rhythm game.
People writing sheet music with pencil on paper don't need any of that so I'd say this software would be pointless for them. I'd say this leans heavily on hobbyists or beginners, like I said the main use case is my own, and I'm no professional drummer.
This is not a sales pitch, it's just a small project I've been having fun building for myself :)
I've been making a DSL for writing sheet music specifically for drums as raw text, inspired by ABC Notation (but of course just for drums).
Now writing this I noticed that it's kind of complicated to explain and having a landing page would make my life so much easier.
But the gist of it is, you write notation that looks like this: https://gist.github.com/Luigi123/945af7e5cc8dfbfd186f0a99754... and it renders sheet music in PDF, and also allows you to play the same music as a game (DrumMania / DTXMania style).
Now the language / compiler itself has been working quite well and I've been dogfooding it for like six months now. The next thing is an IDE-style editor where you can import a song and write the notation following it. Making THAT has been quite the journey. Here's a screenshot for good measure: https://i.imgur.com/EmlqlrM.png