I am developing an Android application to interface directly with the Edirol UA 25 as a USB device. I am endeavoring to pull the raw samples from the device, and I am verifying my work by saving them as a wav file, which I can listen to.

Unfortunately, all my attempts so far have produced only noise. Am I doing this at all correctly? Does the hardware's audio streaming interface output something other than a stream of raw samples? Do the samples come big-endian for byte order? How about for bit order?


I have made attempts against all interfaces and endpoints on the Edirol. I'm just reading the data in, then writing it to a file, reformatting as necessary (see below), then adding a WAV header (using ffmpeg).

In fact, because my initial experiments produced only noise, I have attempted a lot of different formats:

FORMATS=(alaw f32be f32le f64be f64le mulaw s16be s16le s24be s24le s32be s32le s8 u16be u16le u24be u24le u32be u32le u8)

for fmt in "${FORMATS[@]}"; do
    for chan in "${CHANNELS[@]}"; do
        ffmpeg -f $fmt -ar 48k -ac $chan -i "$1" "$1.$fmt.$chan.wav"
        ./byte-swap.out "$1" "$2" "$1.swap.pcm"
        ffmpeg -f $fmt -ar 48k -ac $chan -i "$1.swap.pcm" "$1.swap.$fmt.$chan.wav"