Tonnetz Navigation MIDI
Hello dear Forum,
For an experimental church organ piece I would like to use Joysticks as controllers to generate MIDI notes controlling the organ, this is already working so far. Now I would also like to be able to generate harmonic chord progressions with the Joysticks.
For that I would like to navigate through harmonic structures based on the Tonnetz, which I find very useful because of its triad-based logic. In the bach.tonnetz external object, the layout is pretty much there, but the operational logic is quite different from what I need. I can't figure out a way to create the thing I want, maybe someone has a hint or a helpful tip how to achieve this:
A Tonnetz structure where I can navigate through with a dot (similar to nodes), and the triangle in which the dot is in defines the three MIDI notes that are outputted. A bonus would be to be able to extend the range of notes being played by the closest fourth note (outside of the triangle).
I would be super happy for any hints on creating such a tool or tips which objects to look into! :)
nobody there? :(
i would use lcd/jit.lcd or mgraphics and create a canvas for the "net". (it is of course also possible with image files or GL.)
for hexagons you can find certain integer values for the corner positions which gives you an almost perfect approximation of equilaterality (that word hopefully exists?)
both, the outdated lcd object and a jit.matrix, support a range of keyboard and mouse control outputs so that you always know where the mouse is and what it does.
then i would create a second canvas in a similar fashion which shows all the figures for the usual tonnetz-chords and make them selectable toggles.
imho it is important to strictly split up such complex tasks into "GUI here, logic there" or you quickly lose overview and interest.
the tonnetz logic itself is doable, one could for example build it around [coll]s with the root keys listed. then one would navigate through its weird two and a half dimensions by using TWO counters/indexes for every move.
e.g. from initial button 0 0 to its righ-top neighbour you would add + 1, + 1.
at the end there would be a master coll which translates the button IDs into the desired note numbers.