Lex,
It was a pleasure seeing you last week, and congratulations again on your
new circumstances!
Its hard to know how much either of us will be able to invest in this
project, but our conversation (and several others I’ve had subsequently)
convince me that it would be good if we could go forward. I think we want a third collaborator--a
really good and eager coder and perhaps you’ll find one in a student. But even before that, I find myself thinking
about how we might proceed.
I find myself thinking about a project that would be easy (and cheap) for
us to begin with, yet open-ended enough that it could expand indefinitely if
circumstances and results warrant. We
might produce a visualization to a simple melody and then as the music
progresses, the visualization would become increasingly rich, interesting,
innovative, etc. Thus, the piece (like
the project) begins easily yet aesthetically, gets more interesting (and
difficult) as it goes along, and at all times points the way toward further
developments.
(I can do the early 3D programming I’m about to describe. I don’t know how to generate sounds using
the same, but can can certainly figure it out eventually. Meanwhile, we can fake it (or better) by
putting you at the keyboard and accompanying the visualization.)
First, here’s a short-cut depiction of
the kind of scheme I have in mind.
Don’t try to understand it now.
A simple visual python program that generates the screen shots illustrated.
from visual import *
def shownote(time,noteheight):
return
sphere(x=time,y=noteheight,z=time)
#notes=[0,1,2,3,4,5,6,7]
# do re me fa so la ti do
notes=[0,1,2,1,2,1,2,2,
1,2,3,3,2,1,2,2,2,2,
2,2,3,4,4,3,4,4,4,3,4,4,
3,3,4,5,5,4,3,5,5,5,5,
4,4,0,1,2,3,4,5,5,
5,5,1,2,3,4,5,6,6,
6,6,2,3,4,5,6,7,7]
for t in range(len(notes)):
shownote(time=t,noteheight=notes[t])

Now, our feature presentation:
We begin with a single note, voiced by a single instrument, and accompanied
by the appearance of a sphere floating in the middle of the screen space. As the note sounds, the sphere slowly
recedes left and away.
A second note follows; it “explains” and builds on what preceded it.
The note is a lower pitch, same duration.
It’s the second note of Pachelbel’s canon, the musical piece I nominate for
this first exercise. (Familiar,
attractive, starts simply with notes of constant duration, builds expectations,
etc.)
With the second note, a second sphere appears at mid screen;
Because of the first sphere’s backward drift, the new sphere floats closer
and looms larger.
Because of the first sphere’s drift, part of it can be seen behind the new
sphere.
The vertical Y-axis placement of each sphere respects conventional music
notation, so the new sphere is “downset” from the first.
The new sphere (and all subsequent spheres) drift toward the same vanishing
point. (The effect recalls the opening
credits of Star Wars.)
As the remaining notes of the theme play out one by one, we introduce some
other visual conventions.
thin lines receding into the distance reproduce the horizontal lines of
conventional music notation.
Spheres are colored as per my prior octave-respecting proposal.
When the theme repeats, a second voice is introduced. So spheres begin appearing in pairs.
The two voices (streams of spheres) are parallel to each other.
On the third iteration (if I remember Pachelbel correctly), half and
quarter notes are introduced.
Shorter notes are “squashed” on the temporal dimension.
At this point, we can overlay your memory-augmented
notation on this visualization. The
notes that should “linger” in memory might have larger diameter, or brighter
luminance, etc.
And then, of course, as we get more sophisticated,
polyphony produces landscapes rather than just spheres, etc.
Perhaps this is enough to get the conversation
going….
As you may see from the python program the list of notes[]
is encodes the melody (with mistakes, I know).
àWhat’s the conventional numerical encoding?