Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
How can I simply convert audio from Devialet to Linux command line?
#1
`lsusb -d 28d4:0008` shows me that the Expert Pro is connected to the computer as 

1) How can I simply copy audio from Devialet to Linux command line blindly? And in Which format is this?

*1 I expect an answer on the form `cat /dev/someDev > ~/currentRecording-$(date).what`
Reply
#2
The Devialet USB chip is XMOS. USB is a standard and I guess something like arecord will save output from this device. It's most likely PCM. Try it and look at the format of the saved file.
*
Devialetless!
Roon, ROCK/Audiolense XO/Music on NAS/EtherRegen/RoPieee/USPCB/ISORegen/USPCB/Sound Devices USBPre2/Tannoy GOLD 8
250 Pro CI, MicroRendu(1.4), Mutec MC-3+USB
Reply
#3
In which gives me:

Code:
$ arecord -L | tail -n 9
sysdefault:CARD=E20
    Expert Pro USB Audio 2.0, USB Audio
    Default Audio Device
front:CARD=E20,DEV=0
    Expert Pro USB Audio 2.0, USB Audio
    Front output / input
usbstream:CARD=E20
    Expert Pro USB Audio 2.0
    USB Stream Output

Which in turn made me try the following:
Code:
$ arecord -d 10 -D usbstream:CARD=E20 --disable-resample --disable-format -t raw output.raw
ALSA lib pcm_usb_stream.c:503:(_snd_pcm_usb_stream_open) Unknown field hint
arecord: main:831: audio open error: Invalid argument

This gave me no error and empty output( 15 MB of zeroes )
Code:
$ arecord -d 10 -D default -f S32_LE -r192000 -c 2 -t raw output.raw
Recording raw data 'output.raw' : Signed 32 bit Little Endian, Rate 192000 Hz, Stereo
$ ls -lAh output.raw
-rw-r--r-- 1 user user 15M Jul 27 08:43 output.raw

The entire file has zeroes only; minor snippet below, I can hear music from the turntable through the Devialet Expert Pro, so this must be the wrong `-D`?
I also tried `default:0`, `default:1`, `default:2`, as individual values for `-D` none of those options suffixed `:[0-9]` work.
Code:
0025eda0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0025edb0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0025edc0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0025edd0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0025ede0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0025edf0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0025ee00: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0025ee10: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0025ee20: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0025ee30: 0000 0000 0000 0000 0000 0000 0000 0000  ................

This works to a certain extent
Code:
arecord -d 10 -D sysdefault:CARD=E20 -f S32_LE -r192000 -c 2 -t raw output.raw
Random range of lines from output.raw below
Code:
005088d0: 0000 5cf6 0000 9cf7 0000 04f7 0000 1ef8  ..\.............
005088e0: 0000 8cf7 0000 66f8 0000 e8f7 0000 76f8  ......f.......v.
005088f0: 0000 12f8 0000 57f8 0000 0af8 0000 18f8  ......W.........
00508900: 0000 daf7 0000 c6f7 0000 8df7 0000 6ef7  ..............n.
00508910: 0000 32f7 0000 19f7 0000 d6f6 0000 cbf6  ..2.............
00508920: 0000 84f6 0000 87f6 0000 42f6 0000 4df6  ..........B...M.
00508930: 0000 0ef6 0000 1af6 0000 e4f5 0000 e8f5  ................
00508940: 0000 b9f5 0000 b0f5 0000 83f5 0000 6af5  ..............j.
00508950: 0000 39f5 0000 11f5 0000 d7f4 0000 a2f4  ..9.............
00508960: 0000 5ef4 0000 1ef4 0000 d6f3 0000 8df3  ..^.............
00508970: 0000 49f3 0000 fdf2 0000 c7f2 0000 7cf2  ..I...........|.
00508980: 0000 5df2 0000 18f2 0000 14f2 0000 def1  ..].............
I also tried the following
Code:
$ arecord -d 10 -D sysdefault:CARD=E20 -f DSD_U32_LE -r192000 -c 2 -t raw output.raw
Recording raw data 'output.raw' : Direct Stream Digital, 4-byte (x32), little endian, oldest bits in MSB, Rate 192000 Hz, Stereo
arecord: set_params:1352: Sample format non available
Available formats:
- S8
- U8
- S16_LE
- S16_BE
- U16_LE
- U16_BE
- S24_LE
- S24_BE
- U24_LE
- U24_BE
- S32_LE
- S32_BE
- U32_LE
- U32_BE
- FLOAT_LE
- FLOAT_BE
- FLOAT64_LE
- FLOAT64_BE
- MU_LAW
- A_LAW
- IMA_ADPCM
- S20_LE
- S20_BE
- U20_LE
- U20_BE
- S24_3LE
- S24_3BE
- U24_3LE
- U24_3BE
- S20_3LE
- S20_3BE
- U20_3LE
- U20_3BE
- S18_3LE
- S18_3BE
- U18_3LE
- U18_3BE
What is the default format of this device?
How unprocessed is it possible to tap this information?
Reply
#4
How about using Audacity as a first step to record from the Devialet? It might be able to work out the format automatically and then tell you what it is.
Roon (Mac Mini), Wilson Benesch Full Circle, Expert 1000 Pro CI, Kaiser Chiara
Warwickshire, UK
Reply
#5
You can also look in /proc/asound, maybe /proc/asound/card0/pcm0c/info while playing and see if it displays a sample rate and other information

EDIT: cat /proc/asound/card0/stream0 may be better...
*
Devialetless!
Roon, ROCK/Audiolense XO/Music on NAS/EtherRegen/RoPieee/USPCB/ISORegen/USPCB/Sound Devices USBPre2/Tannoy GOLD 8
250 Pro CI, MicroRendu(1.4), Mutec MC-3+USB
Reply
#6
(27-Jul-2021, 18:25)thumb5 Wrote: How about using Audacity as a first step to record from the Devialet?  It might be able to work out the format automatically and then tell you what it is.

It imports quite fine using Audacity -> File -> Import Raw( with these specs: Signed 32 bit Little Endian, Rate 192000 Hz, Stereo, ) I just find it strange that every 2 words always is 0x0000 and the opposite 2 words of the same long word contains data.

This however does not explain why there is 16 bits of data within the 32 bits available, when there should be 24 bits spent out of those 32. According to: /proc/asound/card2/stream0 Format: S32_LE, Channels: 2, Rates: 44100, 48000, 88200, 96000, 176400, 192000, Bits: 24

In other words I would expect some data where I put the Xs in the below example; or byte swapped? as BE and LE are no longer part of my active vocabulary: XX00 or 00XX
Code:
00508970: 00XX 49f3 00XX fdf2 00XX c7f2 00XX 7cf2  ................
Reply
#7
(27-Jul-2021, 20:31)ogs Wrote: You can also look in /proc/asound, maybe /proc/asound/card0/pcm0c/info while playing and see if it displays a sample rate and other information

EDIT: cat /proc/asound/card0/stream0 may be better...

Code:
$ find /proc/asound/ -iname E20
/proc/asound/E20
$ ls -lAh /proc/asound/E20
lrwxrwxrwx 1 root root 5 Jul 28 22:28 /proc/asound/E20 -> card2
Code:
$ exa -T /proc/asound/card2
Unable to determine time zone: No such file or directory (os error 2) <- All FSes can't be ZFS ... ;-p
/proc/asound/card2
├── id
├── pcm0c
│  ├── info
│  └── sub0
│     ├── hw_params
│     ├── info
│     ├── status
│     └── sw_params
├── pcm0p
│  ├── info
│  └── sub0
│     ├── hw_params
│     ├── info
│     ├── status
│     └── sw_params
├── stream0
├── usbbus
├── usbid
└── usbmixer
Code:
$ cat /proc/asound/card2/stream0
DEVIALET Expert Pro USB Audio 2.0 at usb-0000:00:14.0-2, high speed : USB Audio

*** Removed some stuff here for the purpose of this post ***

Capture:
  Status: Stop
  Interface 2
    Altset 1
    Format: S32_LE
    Channels: 2
    Endpoint: 0x82 (2 IN) (ASYNC)
    Rates: 44100, 48000, 88200, 96000, 176400, 192000
    Data packet interval: 125 us
    Bits: 24
    Channel map: FL FR
Reply
#8
Did you play vinyl while checking this? Status is Stop so nothing is transferred...
*
Devialetless!
Roon, ROCK/Audiolense XO/Music on NAS/EtherRegen/RoPieee/USPCB/ISORegen/USPCB/Sound Devices USBPre2/Tannoy GOLD 8
250 Pro CI, MicroRendu(1.4), Mutec MC-3+USB
Reply
#9
(29-Jul-2021, 07:53)ogs Wrote: Did you play vinyl while checking this? Status is Stop so nothing is transferred...

Yes, the music played and when I record using `arecord -d 10 -D default -f S32_LE -r192000 -c 2 -t raw output.raw` and it records as described 16 bits out of 32 contains the expected music, the 8 bits are missing; while 24 announced - 16 recorded in the 32 bit file as pr this example:
Code:
005088d0: 0000 5cf6 0000 9cf7 0000 04f7 0000 1ef8  ..\.............
005088e0: 0000 8cf7 0000 66f8 0000 e8f7 0000 76f8  ......f.......v.
005088f0: 0000 12f8 0000 57f8 0000 0af8 0000 18f8  ......W.........
00508900: 0000 daf7 0000 c6f7 0000 8df7 0000 6ef7  ..............n.
00508910: 0000 32f7 0000 19f7 0000 d6f6 0000 cbf6  ..2.............
00508920: 0000 84f6 0000 87f6 0000 42f6 0000 4df6  ..........B...M.
00508930: 0000 0ef6 0000 1af6 0000 e4f5 0000 e8f5  ................
00508940: 0000 b9f5 0000 b0f5 0000 83f5 0000 6af5  ..............j.
00508950: 0000 39f5 0000 11f5 0000 d7f4 0000 a2f4  ..9.............
00508960: 0000 5ef4 0000 1ef4 0000 d6f3 0000 8df3  ..^.............
00508970: 0000 49f3 0000 fdf2 0000 c7f2 0000 7cf2  ..I...........|.
00508980: 0000 5df2 0000 18f2 0000 14f2 0000 def1  ..].............
I take for granted that theses values are 0x0000f65c, 0x0000f79c, 0x0000f704, 0x0000f81e; for the first line, in which to me looks like S16 casted to S32,
for 24 bit I expect values in the range: 0x00000000 through 0x00ffffff as S24 recorded in S32 space.
Reply
#10
(29-Jul-2021, 10:24)ggt667 Wrote: ...looks like S16 casted to S32

To me it looks like it's a 16-bit value zero-extended to 32 bits, not sign-extended.
Roon (Mac Mini), Wilson Benesch Full Circle, Expert 1000 Pro CI, Kaiser Chiara
Warwickshire, UK
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)