Login
Search for:


Previous | Next

From: Crown (all posts)
Date: 1998-05-26
Subject: Re: 2 Levente...
Hi,

>your WAVE CONVERTERS and was suprized by its quality... Did you get
>those $ff11 values by using a scope or whatever? Are more PSEUDO VOLUME
>LEVELS (Do ya know what I mean?) possible?
I've measured the $ff11 levels using a scope way back in 1986 or around,
and also remeasured it about a month ago. Actually the value which comes out at the video connector, is not a good measure point, as it goes through a capacitor before it, and that slowly turns the level signal into level 0 (Mike: this was the the same cause why I couldn't check the levels with simply digitizing it on PC), so we had to measure it directly from the pin of the TED (well not directly,
as it's safer if you measure it after resistor R8.), where it stays level. Each sound generator, can emit 9 different levels. The amplitude difference is equal between them, but if you turn both generators on the amplitude level will double. So writing $94 equals $B2 in the main level. (There are some difference in the sygnals because the noise but I will talk about that later). So level 0 can be achived by writing
$00 $80 $90 $A0 $B0 $C0 $E0 $F0 $01-$0f $81-$8f into $ff11.
Level 1 is $91 $A1, Level 2 is $92 $A2 $B1, Level 3 is $93 $A3,
Level 4 is $94 $A4 $B2, etc.. Level 8 is $98 $A8 $B4. (if you turn on the noise generator that doesn't affect the output, as it always emits level 0 sygnal, and also generator two has priority over it.)
The next level is level 10 and it is $B5, the difference between level 8 and level 10 is double than the diff between Level 7 and Level 8,
and this diff is the same between the next levels.
Level 12 is $B6
Level 14 is $B7
Level 16 is $B8, $B9 $BA ... $BF So there is 13 different levels can be outputted by the TED.
Now about the noise. These level sygnals are not straight level lines.
There is a low amplitude triangle wave is imposed on it, and it comes from the Clock Generator, it's freq is 1.6Mhz. If I zoomed it closer I also could see the noise from the dot-clock, so one triangle consist of 8 parts, and the noise from the dot-clock is a very low amplitude diminishing sinus wave. (In an emulator these noises can't be emulated because of the high freq, and in a PC there are also noise sources, so I would say, for emulating we should see this lines level.) The higher the output level, also the amplitude of the noise is higher, and in the highest level the noise itself nearly covers the level distant between two lower levels. Also if the output comes from two generator and not one (like for example in level
4 $94 $B2), the noise is higher on the sygnal which was originated from two source.

The quality of a WAVE player can be improved by some of the following methods I can think of. Well the most easier is to reduce the noise,
by guaranteeing that the write into $ff11 are happening at equal cycle distant, and I think this was what Levente did. Well you need the exact cycle map for this, but we have that already, so this can be done.
An other way is using pseudo-levels, somekind of a method which was described in one of the C-hacking magz. You have to double the $ff11
write freq, and if you switch between two levels than you will hear it as the level between them. (This introduces noise, but if the switching freq is high enough than this is acceptable) Actually I used a similar technique in Iron Maiden Demo to emulate the
3 channel voices with a low switch freq.
There is one more way, and I don't know if this was ever tried on a Plus4 or on a C64. Some of you might have heard digitized sounds on the PC-s 1 bit speaker. Well actually they were 8-bit samples.
This method works the following, one loop takes 256 cycles, we take the 8-bit sampled value, and keep the output in level 1 for so many cycles as the sampled value is, than keep the output for the remaining cycles in level 0. I guess the Plus4 is just not fast enough for this, but this should be verified (maybe with lower bit-sample rate). In the C64 with SID it should be possible, as you can set the impulse length of a square wave which would just do the above mentioned ($D402 $D403), and as there is 3 generator and this can be set separately, there should be possible to play
3 digital channels independently. Anyone used this on the C64?

I've seen/heard some very good digital players on Plus4. One was done by Pigmy, it played three digital channel sampled musics. I had this, but it seems that it is lost, as some of my disks didn't survived. Also I've seen a synth like prg done by Boomby and some other guys, which used very high quality Amiga samples, but I think this was never released.

Tibor Biczo / Crown of GOTU

Copyright © Plus/4 World Team, 2001-2024