Yes, TED is not the best PSG in the world. Well, ok, it
is likely one of the worst. Still, if you have a Commodore Plus/4, C16
or 264, you might occasionally find yourself programming something on
it, that also produces some squeaks. In that case, this little file kit
might be helpful to make it squeak right.
Those few gates devoted to producing sounds in TED definitely were not
designed by a musician. It is all plain terrible, and there are
numerous ways how this thing could have been made much better and more
musical still in about those 30-40 flipflops. 10 bits for frequency..?
Common volume for all voices? No bass/low keys reachable at all? Oh no...
Original table (Pages 1 and 2)
misses any semitones and contains no information about error (offset)
from the desired musical note, as well as misses any higher notes (even
though they are terribly off they should have been there - the included
high ones are not much better tuned anyways). It also misses
frequencies for PAL TED, even though they doesn't differ much.
Here are properly calculated tables with all semitones that are
available (64 out of 88) on TED, both for PAL and NTSC, along with
information on how
much the produced note will be off. There are also PRG files for V.3.5
Commodore Basic, that contain note frequencies as 64-entry DATA lists,
and can
be directly transferred into Plus/4 for instant musical programming joy.
Key numbers in txt files refer to 88-key piano keys. Program DATA lists
start with A (La) because it is around the lowest normally achievable frequency in TED.
Only lowermost 45 semitones are good (within +/-5cents) for both PAL and
NTSC. To obtain tables for use with machine code routines, just POKE
them in format and to the area of your liking.
|
As the the frequency gets higher, achieved tuning in
TED becomes significantly worse. Just a few cents is the absolute limit
for good tuning. However, sometimes a slight variance from perfect
tuning may give an instrument some weird twist personality.
The included error value in cents can be used to compensate for the
poor tuning, if cpu load is not a problem. For example, it can be used
as dithering coefficient or a improvised fractional part that controls
rapid switching between the value in table and a neighbour value. Also,
it can be used as base fractional base frequency for vibrato, that will make the tuning rather good.
If I will have some time for it, I will add a fractional part column to
the programming table, so that you can use it as-is for the mentioned
methods.
Page currently under construction. I will post some sound examples of
using random, fm-pwm and a vibrato used for tuning correction.