Re: Genetic Programming and Analog to Midi
By John Rhodes, forwarded by Robbie Rhodes
My brother John is an industrial designer and manufacturing engineer at Hewlett-Packard in Vancouver, Wash. He reports here about his own experience with genetic evolution.
-- Robbie Rhodes
attachment:
> From: "John D. Rhodes" <jrhodes@teleport.com> > To: rhodes@foxtail.com (Robbie Rhodes) > Date: Sun, 5 Nov 1995 09:43:02 +0000
Hi, Rob. This thread is fascinating. Thanks for copying me on it.
Larry Smith sounds pretty sharp. The "evaluator" he speaks of, of course, *is* the crux of the genetic programming problem. Here are a couple of additional thoughts:
#1. It seems to me genetic programming could be used to develop the evaluator.
#2. I would use a sampled-sound library (from the target music box [or piano] if possible) instead of a MIDI synth.
More on #1, genetic programming: I played with a Mac-based program at Oregon Museum of Science and Industry some 5-6 years ago which produced computer shape/color "globs" in a series of generations. The program was written by a geneticist, who wanted to illustrate genetics principles to his students. It operated roughly as follows:
I first imagined a target object which I wanted to selectively breed. Let's say it was a symmetrical butterfly shape, black, with large yellow spots.
The program presented me with a field of 8 roughly circular, randomly color-speckled shapes. I selected a "breeding pair" from this field of 8, based on resemblance to the target object. This pair then produced 8 new offspring, and I (playing god) again selected the next breeding pair. It was surprising how rapidly I could produce relatively arbitrary shape/color targets.
The underlying genetic traits, I speculate, were things like: symmetry, perimeter roughness, color "globbiness" (i.e., speckles or patches), color preferences, aspect ratio, etc.
So, how 'bout using this approach to develop the evaluator: Start with the genetic traits -- which must be both *quantifiable* and *controllable*. Maybe -- and this gets tough: it's like specifying position based on rate-of-change of acceleration! -- how to employ number and complexity of "voices"; harmony rules; dictionary of standard moves; etc. Then let "god" grade the evaluator on its ability to converge on target sounds. We evolve the evaluator!
[ John is declaring that the programmer_person is actively guiding the evolution of the evaluator. Hmmm ... does the buck stop here? --Rob]
More on item #2:
a. I assume the objective is to create sheet music of the original performance, not simply produce a combination of MIDI-notes/voices which "sounds like" the original. So let's get the "sounds-like" out of way with sampled notes, and concentrate on combining the notes to produce the target timing and harmony. [ No: the major objective is something like Midi control of a dynamic waveform synthesizer. --Rob]
b. I think you should be able to extract samples of *individual* notes from a disk recording. Take advantage of the slight attack descrepencies on simultaneous notes. Once you have the attack/decay signature isolated for a given note, you should be able to remove it from a chord (within reason) to assist isolating the signature of other notes.
Further thoughts:
Computer scientists (like some manufacturing automation engineers I work with) sometimes produce overly-complex solutions by attempting to program/automate everything. Some problems (e.g. pattern recognition) are extremely tough to find programmatic solutions for; but humans (in fact, most animals) are *extremely* good at pattern recognition -- in more than the visual domain, I should add. So, swallow some inventor's pride, save lots of time, and put a human in the loop.
For example, Rob, you and brother Doug can listen to a piano recording and play it by ear and write out the notation. You are bringing far more to bear on the problem than simple aural analysis. You are including: how many notes can one hand play, what is the intended harmony, how would one voice this, etc. Use your knowledge to supplement (and teach) the program.
-- John |
(Message sent Mon 6 Nov 1995, 03:23:06 GMT, from time zone GMT-0800.) |
|
|