Paulo Moura Guedes wrote:
> On Thursday 11 December 2008 01:20:23 stan wrote:
> > Paulo Moura Guedes wrote:
> > > I'm trying to get bit perfect output out of my linux box, but I can't
> > > find much
> > > info on the web. I'm using ALSA.
I think you are somewhat confused. ALSA is a low level
interface between user space and the kernel/hardware. You
can do whatever you want if you write the software to do it
with alsa. But alsa is *not* Foobar2000. For that you have
to use a player. Alsa provides a simple player called aplay
and a device called hw that does no alteration on the sound
stream it receives. It sounds like exactly what you want.
To use it type at the command line,
aplay -lLv
This will give you a list of your sound devices and sub
devices. Select the sound device number. Then look for the
subdevice number that has IEC958 in it.
Put that into a command that looks like
aplay -Dhw:device#,subdevice# file-to-play-here.
By my understanding of how aplay and alsa works that should
stream the raw input from the file to the digital hw device
without any alteration whatsoever. You can look for more
information by typing aplay -h or man aplay
To use a more sophisticated player, you will have to do
research on the available players and see what configuration
of alsa they expose.
> > >
> > >
> > > Some questions:
> > >
> > >
> > > - does Linux/ALSA features dynamic sample rates?
> >
> > yes. You can specify whatever rate you want and it will
> > happen. eg 57,325 frames/second.
>
>
> I meant "dynamic", e.g., if my FLAC file has a sample rate of 96KHz,
> that will be used, but if next I play a 44.1KHz file it would dynamicaly
> changes to 44.1.
This has nothing to do with alsa. alsa does what the player
tells it to do. All files play at the rate they are encoded
at in most players. I use xmms and when a file plays it
tells me the rate (usually 44,100). But the *player* is
telling alsa what rate to play at. alsa couldn't care less.
It just does what you tell it to.
> >
> > > - is it possible to set the bit-depth? (in my case to 24 bit)
> >
> > yes, but your card has to support it. Most new cards have
> > internal processing larger than 24 bits
>
>
> I have a Benchmark DAC1 which supports 24 bit.
> Were can I set the bit-depth?
>
It is set via an api call to the alsa interface. The player
will set that depth when it opens alsa to play. It gets
this depth from the encoded sound.
>
> > > - what other variables do i have to consider in order to get bit
> > > transparent ouput,
> > > i.e., no resampling at all?
Did you read the article at the links you provided?
> >
> > Use only hardware rates supported by your card.
>
>
> You mean sample-rates?
yes. Otherwise the card has to resample.
>
>
> > You can
> > ensure this by using plughw as your device instead of
> > default. That converts from the audio application sound
> > format to the sound card internal format, but does no
> > resampling. You can avoid even the conversion if you make
> > sure the audio is in the format that your sound device uses
> > internally.
>
>
> Can you elaborate?
I thought this was elaborated. ;-) The article you pointed
to had a list of things to worry about.
quoting"...
To maintain quality during digital-audio playback, the
following criteria must be accounted for:
* Sample-rate capabilities
* Word-length capabilities
* Digital volume control capabilities
* DSP and plug-ins
* Dither
* Multiple application mixing/exclusivity
These qualities are not completely independent of each
other. For instance, 'sample-rate conversion' can be evoked
because of 'multiple application mixing'. Also, 'digital
volume control capabilities' are closely related to
'word-length capabilities' and 'dither'. Other relationships
exist as well, and it is encouraged to read more on each
subject.
..."
For instance, let's suppose that you have audio in 32 bit
floating point format. You decide you want to get it as bit
perfect digital output (as bill said, why are you using a
sound card at all, why not send the data stream to your
external DAC?) The trouble is that sound devices process
your sound internally on hardware that is predefined. What
if the bus in your sound device expects to receive 24 bit
signed integer samples? Then your digitally pristine sound
from storage has to be converted from 32 bit float to 24 bit
signed integer. You are no longer bit perfect. Ditto for
supported hardware rates. If you ask for a rate, say
88,200, that the hardware in your sound card does not
natively support, it has to be resampled to the rate. As
Bill said, this is very costly either in time or quality.
High quality means it takes lots of time. Hiqh speed means
it is low quality.
What I said above is that if you use the plughw device it
automatically does this conversion to the card's internal
format for you, but won't change the sample rate.
I've sent hw output to a sound device that was in the wrong
format, and as you would expect the result wasn't
harmonious. :-)
>
>
> Thanks,
> Paulo
The long and short of it is that alsa is as bit perfect as
you ask it to be and as the device and digitial input it is
using is. The method I outlined above, or close facsimile
thereof, should be able to prove it to your satisfaction.
------------------------------------------------------------------------------
SF.Net email is Sponsored by MIX09, March 18-20, 2009 in Las Vegas, Nevada.
The future of the web can't happen without you. Join us at MIX09 to help
pave the way to the Next Web now. Learn more and register at
http://ad.doubleclick.net/clk;208669438;13503038;i?http://2009.visitmix.com/
_______________________________________________
Alsa-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/alsa-user