[linux-audio-user] aplay+pcmplugins as a soundfile convertor

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: <linux-audio-user@...>
Date: Monday, February 14, 2005 - 1:32 pm

Hello,

I was asked to convert some audio files that we got sent on cd. The
files had the extension .sd2, and a description saying "44100 stereo 24
bit". Obviously the files were just the data fork of sound designer 2
files. I could reproduce them perfectly with aplay -r 44100 -f S24_3BE
-c 2, but when I wanted to convert the files, I found sox could not deal
with 24 bit, and sndfile-convert needs files with a header (as far as I
understand). So I used an approach that you might find useful.

I thought, if aplay can play them, and alsa pcm plugins can do format
conversion.. why not use those?

The asoundrc below creates a device called cdaudiofile, of type plug,
that takes care of the format conversion. It's slave is a device of type
file, called stdoutfile, that writes to the standard out and has a
snd-dummy device as slave. (Is there another way to do that without
loading snd-dummy? I tried plug: null, but that didn't work)

The result is clear: using device cdaudiofile for playback, will do the
format conversion, and write the audio to the stdout:

(create card 1, which is dummy)
$ modprobe snd-dummy

(convert to raw S16LE)

$ aplay -D cdaudiofile -r 44100 -f S24_3BE -c 2 file.raw > cdaudiofile.raw

(convert and pipe through sox to create a wav file)
$ aplay -D cdaudiofile -r 44100 -f S24_3BE -c 2 file.raw
| sox -r 44100 -c 2 -s -w -t raw - cdaudiofile.wav

It made me really appreciate the flexibility and elegance of alsa.

maarten

----/etc/asound.conf----

pcm.stdoutfile {
type file
slave {
pcm "hw:1,0"
}
file 1
}

pcm.cdaudiofile {
type plug
slave {
pcm "stdoutfile"
format S16_LE
rate 44100
channels 2
}
}

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

This is the only confirmed message in this thread.