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.