Go Down

Topic: New library for PWM playback from SD cards: SimpleSDAudio (Read 45 times) previous topic - next topic

Tuttut

Hello,

1)
it would work with 20 MHz, but not better regarding stereo playback at full rate, because this is just a matter of free cycles. But with 20 MHz fullrate will be 78kHz, so just a little better. I think the next improvement I will make is to use a 256R-R network to go from 8 bit to 16 bit with just another port and 3 resistors.

2)
I don't find the circuit for the audio output. Increasing bit resolution is always about decreasing PWM frequency, the only way around is to use either a AVR with high-speed PWM (like Elm-Chan did with ATtiny85) or combining two PWM outputs.

WilliamK Govinda

Quote
I think the next improvement I will make is to use a 256R-R network to go from 8 bit to 16 bit with just another port and 3 resistors.


Niiice, I wonder about that.

Plus, I wonder about the ATtiny85 too.

Thanks!  8)

WilliamK Govinda

Question about the ATtiny85, as I also use those and have a few to test out, what kind of bit-depth are we talking with those? I'm not talking about SD card playback, just internal flash playback, as I'm doing another project, and all I need is to be able to play a single drum sound from the ATtiny85, but I need better quality, as better possible. ;-)

Thanks again!  :smiley-mr-green:

WilliamK Govinda

Maybe this could help you getting 16-bit using 2 PWM outputs?

http://embeddednewbie.blogspot.com.br/2011/02/review-of-arduino-dac-solutions.html

Resistor/PWM hybrid DAC

This is a good explanation on how to combine two PWM outputs in order to double the bit resolution. So combining two 8-bit arduino PWM outputs you can get a 16-bit PWM output! Remember Arduino's limits if you plan on going down this road. I mean, the Atmega chip is just 8-bit...


Tuttut

#14
Jul 16, 2012, 11:47 pm Last Edit: Jul 17, 2012, 12:05 am by Tuttut Reason: 1
Hi,
now I tried the 16-bit thing with the R256-R DAC and it gives a big advantage. It is not as good as you would expect from 16-Bit because it is hard to get rid of all those digital noise in such a circuit. The problem with all those circuits is to keep away the digital noise from supply from audio output. As long as a digital output pin that is supplied from uC is used, you also hear all the uC noise. Maybe it gets better if you decouple the uC better or use something like a buffer. But simply said, using just those two additional resistors you get rid of those hiss noise. After playing a little bit around it seems that most noise comes from the USB port - maybe you get acceptable results by using battery power.

What I did is the following: I set the following mode in software:
Code: [Select]
SdPlay.init(SSDA_MODE_HALFRATE | SSDA_MODE_STEREO)

Then I prepared my file with the following modified batch-file:
Code: [Select]

@echo off
cd %~dp0
mkdir converted
FOR %%A IN (%*) DO sox %%A --norm=-1 -e unsigned-integer -b 16 -r 31250 -c 1 -t raw "converted\%%~nA.ahd"  
pause


Connections I made:
Code: [Select]

Pin 9  ----[220k]------+
                      |  100nF
Pin 10 -[1k trimmer]---+---||----[10k]--AudioOut--[1k]--GND


With trimmer the sound can adjusted for minimum hiss, I prepared also a special audio-file for easier trimming.

Go Up