Hacker Newsnew | past | comments | ask | show | jobs | submit | bdenckla's commentslogin

This is a fun read but IMO it falls into the common trap of trying to formalize concepts in music theory based on a representation too close to traditional music notation. A notable consequence of this trap is that the author has to do a lot of distracting work to handle enharmonics, and yet still has arbitrary limits on number of flats and sharps. In other words, he has to do a lot of distracting work, and still all that work doesn't yield a general system.

In my opinion (and experience) it is better to do a little work "up front" and "in the back" to convert to the line-of-fifths representation since that is more friendly to formalization. In other words you can take input in traditional musical notation and give output in traditional musical notation, but "in the middle," formalization should be done in the line-of-fifths representation.

Above I have used "formalize" to mean something like "mathematicize" (if that's a word) or "be precise" or "be able to compute" or "be able to express in a programming language (like Python)". For example, I consider the line-of-fifths representation to be a good one in which to formalize music theory because in line-of-fifths representation, transposition can simply be formalized as integer addition, and integer addition needs no further explanation or formalization, i.e. it can be taken as sort of axiomatic.

Here's another way of putting it: if you wanted to be able to add Roman numeral strings, would you write code that directly operated on the Roman numeral strings, or would you first convert to a compute-friendly representation like integers, and then do your adding from there? No doubt there are tradeoffs involved, but I tend to think that it is usually worth it to move to a compute-friendly representation, both with Roman numerals and music notation.

An added benefit of line-of-fifths representation is it provides a good basis to formalize many important historical European tuning systems.


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

Search: