top | item 17528293

Ask HN: How do I standardize my music specification so people can use it?

5 points| 4nof | 7 years ago

I have a music notation I am making called HexNoteG9, where 0-9 are modifiers and a-f are notes, 9 is the note g.

This is Twinkle Twinkle Little Star: 24 | this sets default note to a 2^2 quarter note

24 c c g g a a 1g f f e e d d 1c g g f f e e 1d g g f f e e 1d c c g g a a 1g f f e e d d 1c

now , just replace all g's with 9's and you have hex. The 1's are 1/2^1 = 1/2 notes

I have an example of minuet played in HexNoteG9 as well as more details on the modifiers, how to do rests, octaves, sharps, flats, dotted half notes, dynamics, looping, and comments: https://drive.google.com/file/d/1atnHKK4mbMjGrJFFhCk76e9YaTAkiv5y/view?usp=sharing

I want to make a specification that is peer reviewed similar to how the JSON specification looks https://tools.ietf.org/html/rfc7159

My end goal is to standardize a specification so that other people can adopt and use it. It would be nice to build tools off of this with other people.

6 comments

order

shoo|7 years ago

not directly answering your question -- how does HexNoteG9 compare with existing alternative music notations?

do any of those alternatives have standards for machine-readable notation?

edit:

one way to get started would be to put together your own first draft of the specification, with examples, on a place where others can easily read it and suggest improvements (e.g. it could start off being a file in a git repo hosted on github.com, say ).

answering my own question:

some random alternatives might include:

MIDI -- https://www.midi.org/specifications

LilyPond -- https://en.wikipedia.org/wiki/LilyPond#Overview_of_input_syn...

GUIDO -- https://github.com/grame-cncm/guidolib/blob/dev/doc/GUIDO-Mu...

MusicXML -- http://w3c.github.io/musicxml/

RTTTL (RingTone Text Transfer Language) -- http://www.panuworld.net/nuukiaworld/download/nokix/rtttl.ht...

4nof|7 years ago

MIDI has short messages that requires a translator for storing information into the format or an extreme familiarity with the signals and bits. It does not hold quarter notes/beats but rather ppq or parts per quarter note in ticks. It is complex. I cannot write MIDI on pen and paper and understand it later without a very large table of what each byte does. HexNoteG9 requires a much smaller table, and it is human readable, 9-f being notes.

LilyPond as well as ABC notation cannot be stored in an int array, which makes moving things back and forth more difficult.

GUIDO looks cool and looks similar to an earlier format I tried using strings to store data. It looks fully featured, but it is not hex.

MusicXML takes a bunch of time writing tags. If I were to write it out by hand, it would require more tags and more lines than hex.

RTTTL : I'm not sure how to do dotted quarter notes, tied 8th to a dotted triplet. It seems similar to a text2Midi solution I created earlier, except my solution accounts for those edge cases.

I took your suggestion on getting started and put it into a github readme: https://github.com/fornof/hexNoteG9/blob/master/README.md