Design Decisions Involved
IR vs Visible Laser Beam
Again at first we always
wanted people to be able to see the string. At first we thought that IR
beam is visible (doh 100x). The problems with IR are easily recognized:
1) You can't see it. 2) IR Laser is very hard to find. Usually, commercial
laser comes in visible spectrum of light, such as laser pointers (which
we used). Some exception use is for CD-ROM reading where they are using
UV Laser, but again, if you can't see it how are you going to debug it?
Single vs Multithread
Polling is best done with
single threading. Problem with single threading a.k.a DOS mode, is simple:
you can't do anything while this thread is running. This is not what we
want. We want user to have full control of their computer even when this
program is running. That's why multithread its used in here. Since the
note assigned to each "fret" is user-determined, we want to use multithread
so user can change the settings on the fly without restarting the program
each time they want to change it.
Some amazed K-12 kids were
trying our guitar, while Soer (left),
Adam (2nd to the right),
and me (right) waiting for more visitors
Buffered vs Non-Buffered Interface
We choose buffered interface
because of our fear that the data will get lost if it came in a very fast
sequence. Please note that due to the 4 bits interface limitation, we can
only get a data for a string at a time. This means you can't pluck all
strings at the same time (see Future Developments
for details). Unfortunately, the fear was proven to be true. In multithreading
OS like Windows 9x, the polling speed is greatly reduced, because
the thread must share it's valuable processor time with other threads.
The side effect of buffered interface is that sometimes you can hear the
sound played a few seconds lagging the event when string is plucked (Note:
One expo visitor asked, "Wow, it couldn't keep up with my hand?")
MS DirectX vs OPL FM programming vs
Windows MIDI API
First one is not used because
I dont have a clean, crisp sample of guitar sound.
Second one is not used because
the quality is not acceptable (with simple programming).
The last one is used because
it's easy and sounds pretty good on my SB Live!.
Can't get any easier than
this, eh ?
|