30 comments

[ 2.0 ms ] story [ 80.9 ms ] thread
I've been using this for a couple months now.

Setup was perfect, as per the instructions without anything weird popping up (which has happened on every other Pi project I've done)

Streaming FLAC from a network drive was jumpy, so I bought a USB drive to plug in which is loaded with my FLACs.

The Pi is plugged into a Scot Nixon USB Chibi DAC, and then a Rotel 1080 pre and power amp.

I did some A/B tests comparing the Pi to an Airport Express running RCA's directly into the pre amp, and the difference is huge. Lower noise floor, much better separation, and a lot of detail. I'd suggest anyone who's wondering should give it a go. Also the mPad app on iPad and iPhone works perfectly.

Have you managed to get it working with Spotify?
Given I have an Airport Express as well - no. My PyFi is just for FLACs, I still use the Express for radio/spotify/soundcloud.
If spotify support is needed www.mopidy.com is probably the way to go. It implements the mpd protocol and plays local files, spotify and others.
I happen to have a bunch of FiiO E10s a E07K-E09 combo and a raspberry sitting idle. I can't even begin to tell how excited I am. I'll test this tonight (that'll be, in 7 hours) and hopefully give an update on how things went.
After an hour of testing, I'd say it has some rough edges but audio-quality-wise, it beats my windows 8 based setup (used e07k which is amplified by e09 in both). It must have been bit-perfect but this feels more spacious and punchy, even. Maybe its the geekiness affecting my opinion. Haven't yet tested the e07k on my mac mini though.
Great reuse of MPd/c instead of writing something else homemade.

I wonder why this isnt more easier, people love to listen to music, from various sources to various speakers, sometimes I want to play it perhaps on my phone whats available on the raspfi, and sometimes to play what is on the phone but not on the NAS/usb-stick through the raspfi connected speakers (without attaching wire to the phone), and this solution seems to falter here... and sometimes I would like to give control of the playlist to a friends phone, or play the music on his device through mine. Why are these scenarios so difficult to do, it is 2013 and we have all the pieces? And yet it is such a hassle. (How come everything sucks so much?)

Ive been trying for years now, without success. Its always some library or quirk thats missing. Tomahawk-player is the best I came so far, together with DLNA, but it doesnt have a good android client yet.

Hi, I'm RaspyFi founder. The points you made are exactly what we have in mind for future releses: 1- multiple users playlist 2- multiroom support

Some of the things you mentioned can be already done. A friend of you can enqueue songs on raspyfi's playlist. The PI can handle 10 simoultaneus clients connected, that means also collaborative play queue. Hope you're enjoying RaspyFi

If you need anyone to help be your test-dummy for multiroom support, I'd be happy to help. Up until last week I was just going to buy 4 20w-amps & 4 Pis to power my 4 rooms, but I recently got ambitious and want to see if I can have just 1 Pi rule them all...
Would it be possible to add a kind of auto-discover of a web-interface to control the RaspFi? So that friends/guests dont have to install a client or any other app, just by what is bundled on an android, I believe most already have some kind of DLNA, Samsung S3 has it, but they call it Kies or ShareAll or something. So a guest would discover the RaspFi, and control it/manage it like any other dlna device. Do we need to develop some kind of adapter between dlna - mpd?
I run an open source airplay server on my raspberry. It doesn't do everything that you listed and is without android support, but it makes it amazingly simple to stream music from the phone and computer.
I'm not familiar with using DACs to connect my digital gear to speakers. How noticeable is the sound quality differnce?

I've used a 3.5mm to RCA cable to connect my computer to external speakers before - is there something about the Raspberry Pi that would make this cable a bad choice, or is using a DAC just an overall better choice for good sound quality?

DAC=Digital Analog Converter. You are using a DAC in your computer (onboard sound card probably) when you connect from the PC to your speakers but it will be a very cheap DAC and the reproduction of the analogue signal won't be as accurate as a more expensive DAC. Some people with pricey headphones will buy a pricey DAC. Otherwise you are coupling nice headphones to a crappy onboard sound card DACs which is a bit of a mismatch.
OTOH, I've had decent luck improving the sound of a cheap ($15-20) pair of headphones with a mid-range USB DAC.
Some people say the onboard RPi sound is poor. They either use cheap USB soundcards, or USB DACs.

I get the impression that these people are not "golden ear hifi idiots" but are calm, sensible, people reporting actually hearable noise.

Musician (keyboard/synth) and ex Electrical Engineer here.

As usual, it depends.

In this case on how good the DAC and filtering is on the Pi. All an external DAC does is move the concern away from the computer's built in DAC therefore avoiding any noise and obvious distortion. It costs only a few $ so I'd imagine the DAC/filtering is crap on the Pi.

However, if it sounds ok to you, it probably is ok. This is the main thing as listening is subjective.

You can spend a fortune on making it sound better quality but there is little return on this. Most of it is just prattery and rip off merchants.

From a recording versus listening point of view: don't worry too much. The content is more important than the device reproducing it. Also the device that produced the sound initially and the device that recorded it isn't necessarily all that good quality and neither was the mixer monkey who compressed it to fuck.

Yes, if it sounds ok, it's probably ok. But nevertheless, let me annoy everyone with a few technical details:

Directly connected audio on the Raspberry PI is through a PWM output and connected low-pass filter. It's implemented as a 10-bit timer (or so...) that overflows at the audio sample rate (e.g. 48kHz), and the control value for the PWM are the audio samples that are fed to the PWM block via DMA.

http://www.raspberrypi.org/wp-content/uploads/2012/02/BCM283... (page 138)

http://www.raspberrypi.org/wp-content/uploads/2012/10/Raspbe... (page 2, lower right)

Basially this means that...

1. audio sample rate is limited to 48kHz because of the sample-rate/number-of-bits tradeoff (it is not a real problem at all, but looks weak in a "audio DAC" comparison)

2. dynamic range is limited to 60dB, around the quality of cassette tapes because we only have 10 PWM bits

3. the PWM signal (square-waves) will have many high-order harmonics which are not filtered well by the simple RC lowpass. Some of it might be mixed back into the audible range by nonlinearities in your amplifier or your loudspeakers, or at least waste power and unnecessarily heat up your amplifier. Especially with Class-D (?) switched amplifiers this might be audible.

Ok that is pants then :)

thanks for the technical information.

So the Pi's DAC is 10 bit? Am I understanding this correctly?
I've checked the output with a scope: It's indeed a PWM signal, but not the canonical PWM with fixed frequency and varying duty-cycle but something more sophisticated. PWM nevertheless, probably there's some shaping being done by the Videocore-Code (through which the audio data is routed).

I've tested the output with a sound-card (M-Audio Delta 44, via a Yamaha MV12/4 Mixing console as preamp) that has (at the test-settings) a noise-floor of ~-130dB/Hz. If I let the raspberry-pi play a sine-wave, I get harmonics at ~60-66dB down from full-scale.

I suspect that this is unshaped quantization noise, so this would compare the suspicion that the PWM resolution is 11 or 12 bit.

Here's a screenshot of a frequency analyzer plugin running while recording the audio output of the RPI, for comparison I put in the same sine being played by the 16bit DAC of my mobile phone, here the harmonics are down -90dB or more.

https://picasaweb.google.com/lh/photo/fWlV5aan-94e9GOpXJaLm9...

Sinewave has been generated with the command

   $ sox -n -t wav - synth 60 sine 1013.0  | aplay
on the raspberry pi.
Pi has a pretty poor, noisy DAC. For anyone that cares enough to set something like this up, they'll probably spring for an outboard DAC.
For some reason I misread the title and thought this was going to be an article criticizing the new product
Doesn't the RPI have a HDMI port? Can you pull digital audio from there? Ie why the need for a USB dac?

Also, any chance of an arm port of some room correction dsp software?

Basically because you need a DAC somewhere. If I want to put speakers around my house, I don't want to run a full receiver with HDMI and a DAC to do so. I want a small, low powered device I can plug into a small T-amp and some speakers. That's why the DAC has to bet there.
Answering myself:

"Yes, it's possible indeed. To use HDMI output on Raspberry Pi, instead of the analog jack just type (in SSH) amixer cset numid=3 2 or sudo amixer cset numid=3 2 (without a USB DAC plugged in ) " http://www.raspyfi.com/forum/wish-list/hdmi-out-to-use-recei...

Bits are bits - plug the hdmi into your receiver and you are done. Not sure why there is such a focus on USB dacs on the site...

I agree, the sound quality difference in an Audiophile setup will be phenomenal between a USB source and a HDMI Source for the same lossless track played. Thumbs up for HDMI.
Most modern audiophile DACS have asynchronous USB inputs, and hardly any have HDMI. I assume that is because the designers of the DACs all think USB works better than HDMI for high quality 2 channel audio.