[Coco] 1bit hsync nasties....

Simon Jonassen simon at roust-it.dk
Fri Jan 24 13:41:28 EST 2014


Hi Steve !

Thanks for the input.... 

Any input from anyone with more experience with the coco than I currently
have is welcomed !

I will try the 16bit + add thing....

The irq now takes 58 cycles no matter what - so that forces 2 lines
(7875Hz)......

So we should have more than 32% cpu power to play with....

As for the waveform, well the emulator doesn't output what the real coco
does....

I have tried this on the real coco this evening... I see what you mean about
the $f0.... $d0 sounded MUCH better (i suppose that $80 would level it out
even more)

If my posts are sporadic, it's because I have a very flaky DSL line at the
moment.... It stays online for 1..2 mins before trying to reconnect....

/Simon :-)

 

-----Oprindelig meddelelse-----
Fra: coco-bounces at maltedmedia.com [mailto:coco-bounces at maltedmedia.com] På
vegne af Steve
Sendt: 24. januar 2014 02:11
Til: CoCoList for Color Computer Enthusiasts
Emne: Re: [Coco] 1bit hsync nasties....

Simon ,

Well, you are really down two octaves then.  One from changing the code to
use to use every other H-sync and the other from an error thinking that
Octave 5 Note B was  493.883 Hz, when it's really octave 4 Note B.  
So the top end is only Octave 3 Note B.  Not much of an octave range for
playing music.

If the code is still taking 75 out of 114 clock cycles (two H-syncs), then
the leftover CPU time for real work is only 34.2% or only about 1/3 of the
CPU.  Still too costly in a Video Game and why it was rarely used (if ever)
back in the day.

Since you are taking more then one H-sync, why does you try the summation
trick to put the notes in perfect key?  It code something like this...

Sum            ldd #000    ;Sum store in this code
freq            addd #0    ;store the sub added for the freq here
                    std >Sum+1    ;save sum back for then pass
                    bnc  Skipflip   ;skip if over carry over
                    lda $ff20         ;flip the sound DAC
                    xor #$80
                    sta $ff20
SkipFlip

For the Note C in octave 3 (130.813 Hz), you use the following math for the
number to add to the sum...

65536 / (7875 / note / 2)    for this note, 65536 / (7875/130.83 /2) for 
a freq(adder)=2177.

What does all this do?

This lets our timing loop be 30.10 units long.  About 10% of the time, the
normal delay of 30 units will be extended by one to make up for the 
off timing.   The best part is there no reloading of the count down 
timer.  You just keep adding till you get an carry to show its time to flip
the Audio DAC.

But my real problem is how it sounds. It's just a bunch low beeps or playing
the scale.  How about a real song?  Maybe it will sound better to this old
Sound engineer if it plays a familiar tune.

The other problem with the sound is all distortion in the waveform.
See: http://www.coco4.com/images/7875waveform.jpg

You will note of the waveform distortions at each transition and how it
create harmonics and a real pain to these ears.  Try fliping the DCA with
$80 or $90 in place of $F0.  This should remove some of the problems in the
transitions.  Remember there is capacitor tied to the output of the DAC and
it does not take Kindly to big swings on the out.

It good to see you trying to push things along.  But remember, us old time
CoCo programmers have tried many of these roads before and found that some
of them were dead ends.  So, if one does not work out then there are other
roads to travel.

Steve


On 1/23/2014 1:58 PM, Simon Jonassen wrote:
> Hey guys !
>
> was contemplating if i should share todays 8 bit madness or not....
>
> well, here goes:
>
> the hsync music players irq has been refactored to intentionally use 
> 58+ cycles every pass (no best/worst case scenario anymore), so that 
> means it skips an hsync so the irq fequency is now 15750/2 (7875Hz)
>
> yes the music player loses 1 octave, but we now have about 40% free 
> cpu time to do other stuff.....
>
> this is a playback of the new irq routine:
>
> http://www.roust-it.dk/coco/sock/7875hz.wav
>
> if you have trouble loading this, it's because my DSL line is sick at 
> the moment.... getting it serviced tomorrow.....
>
> /Simon :-)
>
>
> --
> Coco mailing list
> Coco at maltedmedia.com
> http://five.pairlist.net/mailman/listinfo/coco


--
Coco mailing list
Coco at maltedmedia.com
http://five.pairlist.net/mailman/listinfo/coco
-----
Ingen virus fundet i denne meddelelse.
Kontrolleret af AVG - www.avg.com
Version: 2012.0.2247 / Virusdatabase: 3681/6527 - Udgivelsesdato: 23-01-2014




More information about the Coco mailing list