In the early 1980s, after the first IBM PCs came out, I had this
brilliant idea of making my own rolls. Using BASIC programming language,
I figured out that creating a roll was just a two-dimensional array --
the first was the note and the second was the length of the note.
Then came to figuring out how to code it. That took some time. The
obvious was the notes, 1 to 88. The second part took experimenting.
A hole note was 1, half note was .50, etc. Then came the timing,
meaning the speed. This part is sketchy because of the time that has
passed, but I believe I set it up to be at a speed of 80 take the note
value times 8 (or speed / 10 ).
The data file was a bunch of comma-delimited arrays ending in 99.
A simple chord was 10, 1, 40, 1, 52, 1, 99. Oops! What about rests?
They were 0. So a chord with a half note repeating in the chord 10, 1,
40, .5, 40, 0, 40, .5, 52, 1, 99. Now, just read the music and
transcribe into a data file.
Now comes the hard part. I had a wide (132 column) dot-matrix printer
but, natively, a pitch of 10, 12 or 15 chars per inch and as we all know
the tracker bar is 9 chars (holes) per inch. Oh, what to do! I know
(yuck), I'll put the printer in graphics mode -- dot by dot. It took
days, but I finally got it the print a square for each hole in the
tracker bar in the right place.
But wait! Rolls scroll from top to bottom and the printer goes from the
bottom to top. Easy fix: just count backwards, 88 to 1, and scroll up.
Now that the notes are done, I need to code for the roll width. Done.
Alas, there need to be coding for the blank paper at the end _and_ for
the leader in front _plus_ to beginning "triangle" and the "tab" Done.
So now the completed roll will be printed, on plain no-waxed shelf
paper: the beginning, the music and the ending with marking on it where
to cut for the width of the roll.
Now that the roll is done, cut to the width of the normal roll and,
using an X-acto knife cut out the slots (or hand punching). Voila!
I made four rolls, all from sheet music that was not available normally.
But did I stop there? Of course not, being the computer geek that I
was and still am.
Now that I have all the basics in place, I want to get it to play on my
PC. For those of you that remember back that far, there was no such
thing as a sound card, only the PC speaker (and, for geeks, the BASIC
"PLAY" command)
The first step was to get the image of a player piano. It the time,
it was only CGA graphics or 3 colors. Done. Now, in graphics mode,
get the piano roll to appear and scroll down. That took trickery
because, natively, scrolling up was normal. Done.
Getting it to play was a major challenge. Setup a row of dots for the
tracker bar. When the coded note hits that spot, play the note. Done.
But, how to play chords (the "PLAY" was only designed to play one note
at a time.) Okay, just play the notes really fast and short. Now, we
have simulated chords. Done.
But wait! What about the keys? Store a graphic image of a key up and
a key down. So, now when the note is played, the keys move with the
notes.
But, alas, Microsoft killed BASIC in favor of Visual Basic and I never
learned it.
Duaine Hechler
St. Louis, Missouri
http://www.hechlerpianoandorgan.com/
|