Re: [hatari-devel] Improved YM2149 sound |
[ Thread Index |
Date Index
| More lists.tuxfamily.org/hatari-devel Archives
]
On 06/05/2012 21:41, David Savinkoff wrote:
To correct misleading typo in my previous explanation.
See (Correction).
****
Quartet mode represents the output voltage stripped of high frequency
AC component, but DC component remains.
The Quartet math model is:
(MaxVol*WARP) / (2.0 + 1.0/( 1/Ra + 1/Rb + 1/Rc))
or
(MaxVol*WARP) / (1.0 + 0.5/( 1/Ra + 1/Rb + 1/Rc)) (Wrong)
(MaxVol*WARP*0.5) / (1.0 + 0.5/( 1/Ra + 1/Rb + 1/Rc)) (Correction)
Note that the 1.0 represents the normalized 1k resistor. 0.5 represents
50% duty cycle for the parallel resistors being summed (this effectively
doubles the pull-up resistance).
David
Hello
sorry for late replay, had very few time lately.
Regarding the description of the math model in this mail and the
previous one, could you add it to sound.c as a comment ? I think it
would be great to keep those details in the sources too, not just in the
mailing list.
Then, regarding the "-1" correction you do for Quartet mode, I think it
should be inside a block with :
if ( reg7 & 0x3f == 0x38 ) /* all tones are ON, noises are OFF */
{
for each voice : do vol=vol-1 if per==0
}
or maybe better :
if ( ( reg7 & 0x3f == 0x38 ) && ( per==0 for all 3 voices ) )
{
for each voice : do vol=vol-1
}
If not, you could have a case when a "normal" (non sample) music is
played on voiceA and voiceB and voiceC goes to per==0 at one point. In
that case, I don't think we should emulate Quartet mode and do the DC
correction ; Paulo's table are only valid when all 3 voices are ON with
per=0 at the same time.
What do you think ?
In the meantime, I commit your patch, we can modify it later.
Nicolas