Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: How do I standardize my music specification so people can use it?
5 points by 4nof on July 14, 2018 | hide | past | favorite | 6 comments
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.




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


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


Guess next question is: what's the motivation for it? Where do you see use cases for it that currently use ad-hoc formats or badly-fitting ones?


As a musician and a programmer, I'm looking for ways to produce music without a staff on paper or in a text message, and produce music programatically with easy I/O to a synthesizer or to other functions in code. ABC notation comes close to what I want - it can be done in a text message, but I/O requires parsing and storing into objects to do anything with it. basic HexnoteG9 can be read in as little as 1 case statement viewing the last place.

I used LMMS and have taken a look at AbletonLive - both require heavy use of the mouse to get anything setup for music generation. My plan is to start at the bottom of the stack - sending notes through hex , and build on that so an artist could go in and edit the hex notes if they really wanted to, that it would be more readable than midi, and then the changes would show up in the layer above the hexnotes with buttons, sliders, a staff, and general UI.


maybe of interest -- https://vimeo.com/22798433


I made a heroku app to start this: https://hexnote.herokuapp.com/public/




Join us for AI Startup School this June 16-17 in San Francisco!

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

Search: