Non-discrete piano roll

Forbidden Music - Piano roll


I am interested in microtonal music, perhaps not so much because I'd like to find the perfect harmonies, or somehow fix music, but because I am also interested in those intervals that sounds strange to my western ears. I was particuarly in love with using a sequence of overtones as notes. The biggest reason I decided to go on and create this project -which had been lingering in my mind for some time- was that working with alternative tuning systems on a piano roll was very disorienting. And I really love to use piano rolls. I came to the realization very soon that a piano roll would not constrain music to 12 tones if it werent' because all the music communication protocols were hard-wired for 12 tones composition. After creating few tools that I deemed easier to implement than this piano roll idea (namely Sine Desk, Tuning Explorer, Universal Tuner, and the experiments with harps), I reasized that tere was no going around any more.

On a side note, I'd like to start understanding musical tone not in terms of whether they are or not 12tet, because that way of saying establishes the predominance of 12 tones. This predominance comes from historical reasons and feels pretty arbitrary to me. The same happens with the terms xenharmonic and microtonal. Both terms imply the predominance of something. I do not have, however another widely known term to use instead.


The design of this experiment came about quite organically. On my bachelor studies I had to work a lot with graphic design and CAD tools, which I enjoyed a lot. If it's possible to add a note on any place in a two-dimensional space, in order to create order, it's also necessary to have configurable constraints; or snaps, as you would have on Adobe Illustrator, for example. These snaps or constraints help the user place visual elements in alignment with other elements.

Constraints and snaps are not the same: a snap rounds down an arbitrary position (i.e. the mouse pointer's x,y coordinates) into points of interest (e.g. an intersection, the middle of a line). A constraint on the other hand, does not allow the placement of something in other place than those points of interest. In parametric CAD software, a constrain would also be kept afterwards; meaning that, if the point of interest is changed, everything that has been attached to that constraint would move too. In this project I wished to have something more like a constraint, but due to the extreme complexity of implementing that, especially inb terms of program efficiency. I settled to something between the snap and the constrain. In this program, if you enable the constraints, it will only allo placement of the notes in points of interest. However, if the notes that generated said points of interest are moved, this will not cause changes on the notes that had been placed over said points of interest.

Autocad and Rhino, both have a set of buttons that allows the user to enable or disable these constraints or snaps individually. That was literally translated into this project by the constrain toggle buttons.


The resulting web experiment has some limitations and caveats in terms of processor use and timing precision because is built on web technologies. It is however, very interesting and fun to use, and effectively has facilitated me creating small musical pieces with satisfactory strange harmonies. I have learnt that the composing in the basis of mathematical relationships works in quite a different way than composing on 12 tones. In this way, it proved the concept of facilitating microtonal composition by means of snaps or constraints.

After the firtst experiences using it, the importance of the relationship between space and tone became apparent; whereas on a scala (or by other means) mapped keyboard interface, the spatial relationship is lost, on this graphical tool, there is a direct relationship between tone and vertical position. Thanks to this factor, I could realize that perception of tone and space are not so direct; because expressively a tone might sound darker than another tone which is lower, when placed after some note. Basically the same which occurs in 12tet when placing a note beyond the distance of one octave; what becomes important is the frequency relationship in modulus to 1 octave between notes. I am left with the challenge of expressing the relationships between notes with a clearer textual explanation than what I currently have. A good start would be the representation writing them down as friendlier fractions.

I have also created a downloadable version, that I can use to ship more sample libraries, which would be otherwise expensive to offer with the online version. This downloadable version is shipped using Tauri. Tauri offers an interesting path for development: taking the calculation of the heavier processes into Rust programming language (which could be a good excuse to learn it in practice), which also would produce separation of the calculations from the main thread, which is the current greatest performance problem of the app.

More examples

Feel free to leave comments in any of the linked websites.