[LAU] turning a consumer soundcard into "prosumer" w/ quasi-balanced outs

Niels Mayer nielsmayer at gmail.com
Mon Jun 28 08:48:58 UTC 2010


While cluing-myself before I commit soldery on working electronics, I
finally figured out what is going on with the Dynex dx-sc51 from
earlier in this thread.... I was investigating whether I could perform
my I2S-vampirism experiment on the soundcard least likely to cause
sadness and loss at it's untimely departure -- my Dynex dx-sc51....
(see http://old.nabble.com/digital-upgrade-of-older-equipment-via-I2S-with-jitter-attenuating-S-PDIF-receiver-evaluation-board----td28997419.html
).

Before I butcher the card any further -- which would be to add a
stereo balanced out to the db50xg DAC that I've already tapped into --
 I wanted to document where I'm at, and post some links to MIDI files
rendered using the NEC XR385 (Yamaha db50xg/MU-10 clone) in a Terratec
DMX6Fire -- from 2003 -- versus a Dynex dx-sc51 (from 2009) with worse
noise specs, most of which appears to be DC-offset.

However, please note, just with the trivial analog modification,
there's a dramatic improvement in sound, with the analog-modded
synth-card in the cheaper "consumer" dynex ($0.99 on ebay) sounding
better than a "prosumer" Terratec DMX6Fire 24/96 ($20.00 on ebay).
Noise be damned, because it's all DC-offset. Jnoisemeter says the
terratec+yamaha have a -75db noise floor regardless of "DC" filter. At
about the same estimated amplification level (+12db) the dynex+yamaha
have -74.5db noise floor as long as DC filtering is on. But -34.5db
without DC filtering and otherwise "flat" response (!).

Despite the DC offset (which was also present, more asymmetrically
between channels, before the modification), the sound improvement
comes from getting rid of unnecessary analog buffering and decoupling
-- I've bypassed THREE 10uF series capacitors, a BJT op-amp, numerous
series resistors, several 0.1uF bypass capacitors -- no need since
there's a known load and short connection needed between the DAC and
the Codec of the soundcard. Replaced it all with a single 100uF
capacitor. Now the bass thumps properly again, and the fundamental
tone is back and back without a "rounded" attack. As bonus, removing
the synth-card's output buffer op-amp solves the problem of outputting
too much volume and making the sound less distinct and clear. Now I
can make useful gain adjustments on the dynex's capture-gain in
alsamixer -- the normal  +9-+12db of gain to get the digital levels up
to 0db is right in the middle of the 0-22.50db of analog amplification
provided by the codec. Before I had to turn down the MIDI volume to
prevent clipping. Now I can adjust the capture gain upwards of +9db if
I want to see clipping on the loudest of publicly available MIDI
files. So ultimately, the modification allows you to make optimum use
of the dynamic range of the 16bit/44.1K digital source of the synth.

The Dynex's analog section is predicated on something I didn't expect
to find with a "modern" soundchip like the Via ICE VT1723 -- "Via ICE
VT1616 6-Channel AC97 Codec with S/PDIF." -- AC97 means that the
analog section is running at 48K, no matter what. The strange
low-frequency artifacts presented in the .png's I posted earlier were
perhaps the result of resampling from 44.1->48K (?), and a huge
DC-offset that is either the result of a bug in
alsa-driver-1.0.23/alsa-kernel/pci/ice1712/ice1712.c (used for
snd-ice1724) or a leaky capacitor, or the need for a shunt resistor to
ground (next mod, along with using --
http://www.rdlnet.com/pdf/Data_Sheets/sta-1.pdf -- sent into
"floating" balanced output.).

With intention to improve the sound, I completely bypass the NEC
XR385's analog output section that decouples the DAC output with an
op-amp ( http://www.datasheetcatalog.org/datasheet/nec/UPC4570.pdf )
delivering unnecessary gain, distortion, and clipping-potential to the
synth's output. That is, the analog outputs of the AK4510 (
http://electro-music.com/forum/phpbb-files/ak4510_codec_683.pdf ) are
connected to the cut-off, 8cm end of a  shielded 4-pin analog-cd cable
normally found in consumer pc's to connect the cd-rom sound --
bypassing the 10uF capacitors on both input and output side of the
synth-card's uPC4570 opamp.  On the Dynex card, I plug the 4-pin
connector into the 4-pin analog-cd input. In the original design, the
dynex's 10uF bypass caps fed into the codec; I replaced with the
freshest 100uF 16v capacitor I had laying around that would fit. There
was also an RC filter composed of microscopic surface-mounted 330 ohm
resistor and 0.1uF to ground that I removed off the CD input. In
summary, the synth's AK4510 outputs straight through 8cm shielded
cable, to 100uF cap, and on to VT1616...  .  I left the 10uF ground
coupling capacitor and it's 0.1uF bypass between the synth-card and
the analog cd in.

The original files were recorded at 44.1k: per spec-sheet AK4510 codec
uses  "11.2896Mhz" MCLK (@256fs), for an fs=44.1Khz, SCLK=1.4112Mhz
(@32fs)" , where 11.2896Mhz * 3 = 33.8688Mhz: the crystal near the
main Yamaha VLSI is == 33.868Mhz., meaning the Yamaha's sample rate is
44.1K.

Recording at 48K, as was done on all files below named
"*on-analog-modded-dynex*", is thus a waste of space. It was done to
bypass any resampling that would happen by running the codec other
than the prescribed AC97 48k.... so it's not a fair comparison, but
also, I don't think a higher bit-rate is all that happened to the
sound on the dynex -- it's also a combined reduction of all the
op-amps and capacitors in the signal path. All files were encoded with
"oggenc -q 10":

http://nielsmayer.com/npm/Intelligent-Summer-on-analog-modded-dynex+12db.ogg
http://nielsmayer.com/npm/Intelligent_Summer.ogg	
(orig http://www.megatrade.ru/Midi/Isummer.zip -> Intelligent Summer.mid)

http://nielsmayer.com/npm/Is_god_-_Free_demo_Copyright_Yamaha_-on-analog-modded-dynex+12db.ogg
http://nielsmayer.com/npm/Is_god_-_Free_demo_Copyright_Yamaha_-_XG.ogg	
(orig http://www.blueman.name/Jazz.php -> Is god - Free demo Copyright
Yamaha - XG.mid
NOTE: demo of the guitar sound capabilities extolled in
http://en.wikipedia.org/wiki/Yamaha_XG )

http://nielsmayer.com/npm/Skyline_Herbie_Hancock_on_analog-modded-dynex+13.50db.ogg	http://nielsmayer.com/npm/Skyline_Herbie_Hancock_TG300B.ogg
(orig from http://www.blueman.name/Jazz.php -> "Skyline\ -\ Herbie\
Hancock\ -\ TG300B.mid" )

http://nielsmayer.com/npm/chpn_op53-on-analog-modded-dynex+13.50db.ogg	
http://nielsmayer.com/npm/chpn_op53_coggie.ogg
(orig http://www.piano-midi.de/midis/chopin/chpn_op53.mid )

-- Niels
http://nielsmayer.com

PS: TODO: investigate whether
alsa-driver-1.0.23/alsa-kernel/pci/ice1712/ice1712.c has a bug in that
the following feature of the VT1616 codec (
http://www.datasheetarchive.com/pdf-datasheets/Datasheets-3/DSA-48587.pdf
 ) is being ignored:

> "VT1616 codec has capability to remove DC offset:
> Vendor Reserved Register (Index 5Ah)
> 	
> BPDC: ADC DC-offset Removal Control
> The default setting of “0” ensures that the circuit is disabled at power up. When set to “1”, the DC-
> offset cancellation circuit will be enabled. This helps to maximize recording quality by removing
> white noise.
>
> DC: DC-offset Removal Capability
> This read only bit indicates that the codec incorporates DC-offset removal hardware."


More information about the Linux-audio-user mailing list