> I have been experimenting with a program call Autoscore, which will
> notate music on the computer screen as it is played into the
> microphone. [snip] The problem with this program is that it can
> only record one note at a lime, so sometimes you get a harmony out
> instead of melody.
This is what we software types like to call a "non-trivial" problem, Bea.
Music is the very essence of analog information, and it can be a very
tough job to feed an arbitrary wave form into a computer and have the
machine sort out the frequencies and determine what notes are being hit.
It _can_ be done -- the Navy and Air Force do much the same thing with
radar signatures -- but it is very far from easy.
I can think of two approaches -- and when I get my new computer later this
year, trying this stuff out is one of the things I plan to do with it,
but this is strictly theory off the top of my head, now =) -- one is an
empirical approach, the other is "clever".
The empirical approach is to find some way to sort out the wave form.
Oscilloscopes do this in an analog manner, but the idea is to note the
all the frequencies that exceed a certain amplitude and use that to
determine the notes. The trick here is sorting out harmonic frequencies,
and playing the input in an anechoic chamber -- a box lined with old egg
cartons, for instance -- may help this. You might also be able to do this
electronically with some sort of comb filter, though that is out of _my_
range of expertise.
A variation of the empirical approach might be more productive.
_Analyze_ the box. Digitize the notes one at a time by playing them
manually. Then rig up a bank of microswitches you can use as a tracker
bar to read out the cylinder or disk as it is spun against the switches.
The advantage to this method is that it is guaranteed to work, and it
will produce (hopefully) a perfect record using no more than your current
software -- having identified the notes played individually, you need only
know the pin pattern. But this does require some physical work with the
box (though perhaps not a full disassembly) -- you can't just work with a
recording or just play the box.
The "clever" method has more potential for digitizing a music box with no
fancy-shmancy hardware, but it's tougher. The basic idea is to give the
computer a music box voice as close to the target box as possible. Then
you digitize the target selection as a wav file. Then the computer uses
the voice to build a new wav file that is as close to the digitized box
as it can get. The idea here is that if the box plays an A and G at the
same time, the probability is that the program will, somehow, select A
and G simultaneously as the closest match. To accomplish this, the
system will build up a table of notes that are used to select from the
stored voice, and this table is your desired output. We discussed this
in the digest some time ago, where I speculated that a genetic algorithm
would be an ideal choice for this job. You might check back issues of
the digest. The end result of this would be a midi file that exactly
reproduced the box.
Of the several approaches, I think the second, with microswitch sensors,
is the best way. It may be a bit of a hardware hat trick to build it -
but maybe not as much of one as the genetic algorithm, which is something
of a software hat trick.
regards,
Larry Smith
|