Muzikus - a music theory training program

Muzikus:


Muzikus is a music theory training program. It was inspired by the musikus MS-DOS Programs I got in school.

This project heavily relies on dvui, which is an excellent gui lib.
I am not a gui programmer. I usually work on high performance scientific applications. So please forgive my lack of knowledge in UI Design.

This project is not finished, but only a first version with its first feature: a note name trainer for various clefs. There is (hopefully) more to come. Unfortunately I don’t have much time to work on it.

The music theory codes have an extensive testsuite to make sure that every corner case is covered. Also I like when tests turn green and they all pass. More tests, more passing, more happiness for me :slight_smile: .

I am open to critique regarding my code. I know that it is not perfect, and I’m still experimenting, on how to structure stuff to make it more easily extendable.

I hope you like the program and check it out on Codeberg: https://codeberg.org/SpinTensor/muzikus

Supported Zig versions

Muzikus is written in zig 0.16.

“AI” / LLM usage disclosure

Every line in muzikus was written by me.
Human contributors are welcome, although I have very limited time to review PRs. Sorry.
There will be no “AI” or LLM contributions in the foreseeable future.

16 Likes

Oh, I was actually looking for something like this! I want to play with music again, but this time more focused on creating instead of following notes. Can’t wait for some of the planned features, but no pressure. My piano is collecting dust for a few years now, it can wait a bit longer. (:

1 Like

Are you using musescore font?

I was thinking about it, and I tried, but musical glyphs are very weird when you want to typeset them. If I remember correctly the glyphs origin is not consistently defined, so you would need to have special offsets for every glyph you want to draw.
In the end I decided to go with PNGs of glyphs that I need (not from leland font (musescore), but sort of self drawn). This way I can incorporate the Glyphs directly into the binary and do not rely on external assets, that would need to be shipped with the application.

maybe, you’ll find this doodad somehow useful

i’ve started to adjust xjiss for 0.16, but… not much time for doing that, alas :frowning:

1 Like