I have a question about importing FIR filters from e.g. RePhase.
I'm trying to generate a relatively simple lowpass filter for a crossover. The curve looks like you'd expect it to look in RePhase.
There is a ported enclosure phase adjustment but the phase is fine otherwise. This shows the original filter and generated filter.
But when I import it into CamillaDSP, no matter what format I use, it shows the filter and impulse looking OK but the phase looks worse than the actual speaker measurement.
Settings for this particular export are:
Note that biquad frequency reponse plots look exactly as I'd expect.
Is this normal or am I missing something to get the proper results?
I'm trying to generate a relatively simple lowpass filter for a crossover. The curve looks like you'd expect it to look in RePhase.
There is a ported enclosure phase adjustment but the phase is fine otherwise. This shows the original filter and generated filter.

But when I import it into CamillaDSP, no matter what format I use, it shows the filter and impulse looking OK but the phase looks worse than the actual speaker measurement.

Settings for this particular export are:

Note that biquad frequency reponse plots look exactly as I'd expect.
Is this normal or am I missing something to get the proper results?
IIRC, when plotting phase CamillaDSP considers the inherent delay of the FIR filter which is why the phase looks so crazy. I remember being concerned when I saw that plot but when I actually measured the response it was fine.
Michael
Michael
Tried a few other things with the shairport-sync camilladsp using pipes. I just noticed that camilla does not respond to stop() or set_config() via web socket when airplay connection to shairport is stopped (no airplay active session). stop() and set_config() seem to work when airplay session is active.
The current implementation of the file backend wasn't designed to handle a stream that stops providing data. The main cases I had in mind were reading from a file on disk, and receiving on stdin. And for stdin I assumed the pipe would be closed when there is no data. Now if piping from an app that keeps the pipe open but doesn't send any data, then the capture thread gets stalled and that's why it can't react to any websocket commands. I plan to look into this after version 1.0 is finalized.
I have a question about importing FIR filters from e.g. RePhase.
...
Is this normal or am I missing something to get the proper results?
mdsimon2 is right. The phase includes the delay of the FIR filter, which means at wraps around a lot. Just ignore it! I tried making it smart to plot it nicely, but that turned out to be really (really!) challenging. I could never get it reliable.
Ok phew.
I did load the impulse response into REW and it looked good.
Maybe the right course while it isn't showing properly is tonight it and add a user-friendly notice that it is omitted deliberately?
Thanks guys.
I did load the impulse response into REW and it looked good.
Maybe the right course while it isn't showing properly is tonight it and add a user-friendly notice that it is omitted deliberately?
Thanks guys.
The current implementation of the file backend wasn't designed to handle a stream that stops providing data.
OK thanks for the explanation, yes probably an unusual use case. Will just use the standard config with Shairport doing the synchronization then or try the hook in shairport to restart camilladsp.
Yeah REW is dong some clever stuff to get the phase right. I think I just need to spend more time on it. When I do that I will also finish the group delay plot (which also relies on a well-behaved phase). That one is nearly finished.Ok phew.
I did load the impulse response into REW and it looked good.
Maybe the right course while it isn't showing properly is tonight it and add a user-friendly notice that it is omitted deliberately?
Thanks guys.
Something like this?

For now it just looks for the largest peak in the impulse response and uses that position as delay zero. I also added a group delay plot, which seems to work fine for all filters. Both phase and groupdelay become quite strange in the stopband of brickwall filters, but that's kindof expected as it mainly depends on numerical noise there.
It can be argued if it's really correct to remove the delay of the FIR filters for the phase plot. But when not removing it, then even if the plot is techically correct, it's still completely useless to look at...

For now it just looks for the largest peak in the impulse response and uses that position as delay zero. I also added a group delay plot, which seems to work fine for all filters. Both phase and groupdelay become quite strange in the stopband of brickwall filters, but that's kindof expected as it mainly depends on numerical noise there.
It can be argued if it's really correct to remove the delay of the FIR filters for the phase plot. But when not removing it, then even if the plot is techically correct, it's still completely useless to look at...
I'm trying to test another interface with Camilla. I took the config I've been using daily with my MOTU UltraLite-mk5, and made some very basic adjustments to the device and channel numbers, but I've ended up with someting that crashes every minute. This is the log of a crash:
What I don't understand is that the warning seem to relate to the playback side. Here's my config:
Can you point me in the right direction please? Many thanks.
Code:
ubuntu@ubuntu:/usr/local/etc/camilladsp/logs$ cat log2021-11-16T2137.txt
Nov 16 21:37:27.059 DEBG Read config file Some("/usr/local/etc/camilladsp/configRME192.yml"), module: camilladsp
Nov 16 21:37:27.079 DEBG Read raw data from: '/usr/local/etc/camilladsp/conv192.wav', format: FLOAT64LE, number of coeffs: 262144, module: camillalib::filters
Nov 16 21:37:27.082 DEBG Read wav file '/usr/local/etc/camilladsp/conv192.wav', format: FLOAT64LE, channel: 0 of 2, samplerate: 192000, length: 131072, module: camillalib::filters
Nov 16 21:37:27.099 DEBG Read raw data from: '/usr/local/etc/camilladsp/conv192.wav', format: FLOAT64LE, number of coeffs: 262144, module: camillalib::filters
Nov 16 21:37:27.102 DEBG Read wav file '/usr/local/etc/camilladsp/conv192.wav', format: FLOAT64LE, channel: 1 of 2, samplerate: 192000, length: 131072, module: camillalib::filters
Nov 16 21:37:27.102 DEBG Config is valid, module: camilladsp
Nov 16 21:37:27.102 DEBG Start websocket server on 0.0.0.0:5000, module: camillalib::socketserver
Nov 16 21:37:27.103 DEBG Wait for config, module: camilladsp
Nov 16 21:37:27.103 DEBG Config ready, module: camilladsp
Nov 16 21:37:27.103 DEBG Build new pipeline, module: camillalib::filters
Nov 16 21:37:27.103 DEBG Using channels [true, true], module: camilladsp
Nov 16 21:37:27.103 DEBG Buffer frames 16384, module: camillalib::alsadevice
Nov 16 21:37:27.103 DEBG Build from config, module: camillalib::filters
Nov 16 21:37:27.107 DEBG Capture: supported channels, min: 2, max: 2, list: [2], module: camillalib::alsadevice
Nov 16 21:37:27.107 DEBG Capture: setting channels to 2, module: camillalib::alsadevice
Nov 16 21:37:27.107 DEBG Capture: supported samplerates: Discrete([192000]), module: camillalib::alsadevice
Nov 16 21:37:27.107 DEBG Capture: setting rate to 192000, module: camillalib::alsadevice
Nov 16 21:37:27.107 DEBG Capture: supported sample formats: [S32LE], module: camillalib::alsadevice
Nov 16 21:37:27.108 DEBG Capture: setting format to S32LE, module: camillalib::alsadevice
Nov 16 21:37:27.108 DEBG Playback: supported channels, min: 8, max: 20, list: [8, 14, 16, 20], module: camillalib::alsadevice
Nov 16 21:37:27.108 DEBG Playback: setting channels to 20, module: camillalib::alsadevice
Nov 16 21:37:27.108 DEBG Playback: supported samplerates: Discrete([44100, 48000, 88200, 96000, 176400, 192000]), module: camillalib::alsadevice
Nov 16 21:37:27.108 DEBG Playback: setting rate to 192000, module: camillalib::alsadevice
Nov 16 21:37:27.108 DEBG Playback: supported sample formats: [S24LE3], module: camillalib::alsadevice
Nov 16 21:37:27.108 DEBG Playback: setting format to S24LE3, module: camillalib::alsadevice
Nov 16 21:37:27.108 DEBG Opening audio device "hw:CARD=Loopback,DEV=0" with parameters: HwParams { channels: Ok(2), rate: "Ok(192000) Hz", format: Ok(S32LE), access: Ok(RWInterleaved), period_size: "Ok(4096) frames", buffer_size: "Ok(32768) frames" }, SwParams(avail_min: Ok(4096) frames, start_threshold: Ok(0) frames, stop_threshold: Ok(32768) frames), module: camillalib::alsadevice
Nov 16 21:37:27.109 DEBG Audio device "hw:CARD=Loopback,DEV=0" successfully opened, module: camillalib::alsadevice
Nov 16 21:37:27.109 DEBG Capture thread ready to start, module: camilladsp
Nov 16 21:37:27.120 DEBG Read raw data from: '/usr/local/etc/camilladsp/conv192.wav', format: FLOAT64LE, number of coeffs: 262144, module: camillalib::filters
Nov 16 21:37:27.124 DEBG Read wav file '/usr/local/etc/camilladsp/conv192.wav', format: FLOAT64LE, channel: 0 of 2, samplerate: 192000, length: 131072, module: camillalib::filters
Nov 16 21:37:27.139 DEBG Conv conv-l is using 16 segments, module: camillalib::fftconv
Nov 16 21:37:27.147 DEBG a1=-1.838334102564905 a2=0.8504587169940455 b0=1 b1=-1.838334102564905 b2=0.8504587169940455, module: camillalib::biquad
Nov 16 21:37:27.147 DEBG a1=-1.9967604006840272 a2=0.996765639706586 b0=1 b1=-1.9967604006840272 b2=0.996765639706586, module: camillalib::biquad
Nov 16 21:37:27.148 DEBG Build from config, module: camillalib::filters
Nov 16 21:37:27.161 DEBG Read raw data from: '/usr/local/etc/camilladsp/conv192.wav', format: FLOAT64LE, number of coeffs: 262144, module: camillalib::filters
Nov 16 21:37:27.162 DEBG Read wav file '/usr/local/etc/camilladsp/conv192.wav', format: FLOAT64LE, channel: 1 of 2, samplerate: 192000, length: 131072, module: camillalib::filters
Nov 16 21:37:27.177 DEBG Conv conv-r is using 16 segments, module: camillalib::fftconv
Nov 16 21:37:27.185 DEBG a1=-1.838334102564905 a2=0.8504587169940455 b0=1 b1=-1.838334102564905 b2=0.8504587169940455, module: camillalib::biquad
Nov 16 21:37:27.186 DEBG a1=-1.9967604006840272 a2=0.996765639706586 b0=1 b1=-1.9967604006840272 b2=0.996765639706586, module: camillalib::biquad
Nov 16 21:37:27.186 DEBG build filters, waiting to start processing loop, module: camillalib::processing
Nov 16 21:37:27.188 DEBG Opening audio device "hw:CARD=II24066911,DEV=0" with parameters: HwParams { channels: Ok(20), rate: "Ok(192000) Hz", format: Ok(S243LE), access: Ok(RWInterleaved), period_size: "Ok(2048) frames", buffer_size: "Ok(16384) frames" }, SwParams(avail_min: Ok(2048) frames, start_threshold: Ok(6144) frames, stop_threshold: Ok(16384) frames), module: camillalib::alsadevice
Nov 16 21:37:27.189 DEBG Audio device "hw:CARD=II24066911,DEV=0" successfully opened, module: camillalib::alsadevice
Nov 16 21:37:27.189 DEBG Playback thread ready to start, module: camilladsp
Nov 16 21:37:27.189 DEBG Both capture and playback ready, release barrier, module: camilladsp
Nov 16 21:37:27.189 DEBG Supervisor loop starts now!, module: camilladsp
Nov 16 21:37:27.189 DEBG Starting playback loop, module: camillalib::alsadevice
Nov 16 21:37:27.189 DEBG Starting captureloop, module: camillalib::alsadevice
Nov 16 21:37:27.189 DEBG Processing loop starts now!, module: camillalib::processing
Nov 16 21:37:27.190 INFO Capture device supports rate adjust, module: camillalib::alsadevice
Nov 16 21:37:27.190 DEBG Starting capture, module: camillalib::alsadevice
Nov 16 21:37:27.260 INFO Starting playback from Prepared state, module: camillalib::alsadevice
Nov 16 21:37:28.563 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:28.957 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:29.351 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:29.745 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:30.139 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:30.533 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:30.927 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:31.321 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:31.714 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:32.108 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:32.424 WARN sample rate change detected, last rate was 108616.07786784055 Hz, module: camillalib::alsadevice
Nov 16 21:37:32.502 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:32.896 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:33.290 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:33.448 WARN sample rate change detected, last rate was 103981.84866854179 Hz, module: camillalib::alsadevice
Nov 16 21:37:33.684 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:34.078 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:34.472 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:34.520 WARN sample rate change detected, last rate was 99353.54971394426 Hz, module: camillalib::alsadevice
Nov 16 21:37:34.866 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:35.260 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:35.575 WARN sample rate change detected, last rate was 108698.61109147898 Hz, module: camillalib::alsadevice
Nov 16 21:37:35.653 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:36.047 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:36.441 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:36.599 WARN sample rate change detected, last rate was 103984.5862144952 Hz, module: camillalib::alsadevice
Nov 16 21:37:36.835 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:37.229 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:37.242 DEBG Current buffer level: 14909.100775193798, corrected capture rate: 99.825078125%, module: camillalib::audiodevice
Nov 16 21:37:37.242 DEBG Playback buffer level: 14909.100775193798, signal rms: [-1000.0, -1000.0, -1000.0, -1000.0, -1000.0, -1000.0, -1000.0, -1000.0, -51.264782, -52.044754, -1000.0, -1000.0, -1000.0, -1000.0, -1000.0, -1000.0, -1000.0, -1000.0, -1000.0, -1000.0], module: camillalib::alsadevice
Nov 16 21:37:37.242 DEBG SetSpeed message received, module: camilladsp
Nov 16 21:37:37.623 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:37.668 WARN sample rate change detected, last rate was 99640.66253364692 Hz, module: camillalib::alsadevice
Nov 16 21:37:38.017 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:38.411 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:38.726 WARN sample rate change detected, last rate was 108375.97953043395 Hz, module: camillalib::alsadevice
Nov 16 21:37:38.805 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:39.199 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:39.592 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:39.750 WARN sample rate change detected, last rate was 103987.11697108649 Hz, module: camillalib::alsadevice
Nov 16 21:37:39.986 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:40.380 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:40.774 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:40.820 WARN sample rate change detected, last rate was 99562.8868038393 Hz, module: camillalib::alsadevice
Nov 16 21:37:41.168 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:41.562 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:41.877 WARN sample rate change detected, last rate was 108462.13689675787 Hz, module: camillalib::alsadevice
Nov 16 21:37:41.956 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:42.350 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:42.744 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:42.901 WARN sample rate change detected, last rate was 103983.33961466742 Hz, module: camillalib::alsadevice
Nov 16 21:37:43.137 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:43.531 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:43.925 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:43.972 WARN sample rate change detected, last rate was 99492.76942632339 Hz, module: camillalib::alsadevice
Nov 16 21:37:44.319 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:44.713 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:45.028 WARN sample rate change detected, last rate was 108538.88921769423 Hz, module: camillalib::alsadevice
Nov 16 21:37:45.107 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:45.501 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:45.895 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:46.053 WARN sample rate change detected, last rate was 103984.55981607863 Hz, module: camillalib::alsadevice
Nov 16 21:37:46.289 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:46.683 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:47.077 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:47.124 WARN sample rate change detected, last rate was 99413.94241260685 Hz, module: camillalib::alsadevice
Nov 16 21:37:47.246 DEBG Current buffer level: 15116.48031496063, corrected capture rate: 99.8196875%, module: camillalib::audiodevice
Nov 16 21:37:47.247 DEBG Playback buffer level: 15116.48031496063, signal rms: [-1000.0, -1000.0, -1000.0, -1000.0, -1000.0, -1000.0, -1000.0, -1000.0, -55.98024, -56.549973, -1000.0, -1000.0, -1000.0, -1000.0, -1000.0, -1000.0, -1000.0, -1000.0, -1000.0, -1000.0], module: camillalib::alsadevice
Nov 16 21:37:47.247 DEBG SetSpeed message received, module: camilladsp
Nov 16 21:37:47.470 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:47.864 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:48.180 WARN sample rate change detected, last rate was 108628.97350147512 Hz, module: camillalib::alsadevice
Nov 16 21:37:48.258 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:48.652 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:49.046 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:49.204 WARN sample rate change detected, last rate was 103980.55319950747 Hz, module: camillalib::alsadevice
Nov 16 21:37:49.440 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:49.834 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:50.228 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:50.276 WARN sample rate change detected, last rate was 99343.91606551039 Hz, module: camillalib::alsadevice
Nov 16 21:37:50.622 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:51.015 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:51.331 WARN sample rate change detected, last rate was 108710.12759645536 Hz, module: camillalib::alsadevice
Nov 16 21:37:51.409 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:51.803 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:52.197 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:52.355 WARN sample rate change detected, last rate was 103990.48842467154 Hz, module: camillalib::alsadevice
Nov 16 21:37:52.591 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:52.985 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:53.379 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:53.424 WARN sample rate change detected, last rate was 99627.59350364588 Hz, module: camillalib::alsadevice
Nov 16 21:37:53.773 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:54.167 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:54.482 WARN sample rate change detected, last rate was 108382.2267780743 Hz, module: camillalib::alsadevice
Nov 16 21:37:54.561 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:54.954 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:55.348 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:55.506 WARN sample rate change detected, last rate was 103990.47339617302 Hz, module: camillalib::alsadevice
Nov 16 21:37:55.742 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:56.136 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:56.530 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:56.576 WARN sample rate change detected, last rate was 99555.52705034055 Hz, module: camillalib::alsadevice
Nov 16 21:37:56.924 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:57.251 DEBG Current buffer level: 15112.629921259842, corrected capture rate: 99.81979166666667%, module: camillalib::audiodevice
Nov 16 21:37:57.252 DEBG Playback buffer level: 15112.629921259842, signal rms: [-1000.0, -1000.0, -1000.0, -1000.0, -1000.0, -1000.0, -1000.0, -1000.0, -50.5444, -49.997208, -1000.0, -1000.0, -1000.0, -1000.0, -1000.0, -1000.0, -1000.0, -1000.0, -1000.0, -1000.0], module: camillalib::alsadevice
Nov 16 21:37:57.252 DEBG SetSpeed message received, module: camilladsp
Nov 16 21:37:57.318 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:57.633 WARN sample rate change detected, last rate was 108462.4197972666 Hz, module: camillalib::alsadevice
Nov 16 21:37:57.712 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:58.106 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:58.500 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:58.657 WARN sample rate change detected, last rate was 103987.53997736314 Hz, module: camillalib::alsadevice
Nov 16 21:37:58.893 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:59.287 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:59.681 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:37:59.728 WARN sample rate change detected, last rate was 99484.5594519432 Hz, module: camillalib::alsadevice
Nov 16 21:38:00.075 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:38:00.469 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:38:00.784 WARN sample rate change detected, last rate was 108541.70431775649 Hz, module: camillalib::alsadevice
Nov 16 21:38:00.863 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:38:01.257 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:38:01.651 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:38:01.809 WARN sample rate change detected, last rate was 103986.16730102418 Hz, module: camillalib::alsadevice
Nov 16 21:38:02.045 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:38:02.439 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:38:02.832 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:38:02.880 WARN sample rate change detected, last rate was 99412.64820095769 Hz, module: camillalib::alsadevice
Nov 16 21:38:03.226 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:38:03.620 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:38:03.935 WARN sample rate change detected, last rate was 108638.60970057512 Hz, module: camillalib::alsadevice
Nov 16 21:38:04.014 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:38:04.408 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:38:04.802 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:38:04.960 WARN sample rate change detected, last rate was 103982.92202360749 Hz, module: camillalib::alsadevice
Nov 16 21:38:05.196 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:38:05.590 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:38:05.984 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:38:06.032 WARN sample rate change detected, last rate was 99330.13558931928 Hz, module: camillalib::alsadevice
Nov 16 21:38:06.377 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:38:06.771 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:38:07.087 WARN sample rate change detected, last rate was 108715.70533651546 Hz, module: camillalib::alsadevice
Nov 16 21:38:07.165 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:38:07.255 DEBG Current buffer level: 15103.866141732284, corrected capture rate: 99.82002604166667%, module: camillalib::audiodevice
Nov 16 21:38:07.255 DEBG Playback buffer level: 15103.866141732284, signal rms: [-1000.0, -1000.0, -1000.0, -1000.0, -1000.0, -1000.0, -1000.0, -1000.0, -60.65212, -60.93553, -1000.0, -1000.0, -1000.0, -1000.0, -1000.0, -1000.0, -1000.0, -1000.0, -1000.0, -1000.0], module: camillalib::alsadevice
Nov 16 21:38:07.256 DEBG SetSpeed message received, module: camilladsp
Nov 16 21:38:07.559 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:38:07.953 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:38:08.111 WARN sample rate change detected, last rate was 103987.44767925265 Hz, module: camillalib::alsadevice
Nov 16 21:38:08.347 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:38:08.741 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:38:09.135 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:38:09.180 WARN sample rate change detected, last rate was 99629.77327028643 Hz, module: camillalib::alsadevice
Nov 16 21:38:09.529 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:38:09.923 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:38:10.238 WARN sample rate change detected, last rate was 108389.82157766876 Hz, module: camillalib::alsadevice
Nov 16 21:38:10.316 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:38:10.710 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:38:11.104 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:38:11.262 WARN sample rate change detected, last rate was 103995.0578989233 Hz, module: camillalib::alsadevice
Nov 16 21:38:11.498 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:38:11.892 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:38:12.286 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:38:12.332 WARN sample rate change detected, last rate was 99543.38333268101 Hz, module: camillalib::alsadevice
Nov 16 21:38:12.680 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:38:13.074 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:38:13.389 WARN sample rate change detected, last rate was 108474.89329923985 Hz, module: camillalib::alsadevice
Nov 16 21:38:13.468 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:38:13.862 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:38:14.255 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:38:14.413 WARN sample rate change detected, last rate was 103987.2896863877 Hz, module: camillalib::alsadevice
Nov 16 21:38:14.649 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:38:15.043 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:38:15.437 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:38:15.484 WARN sample rate change detected, last rate was 99462.83995693279 Hz, module: camillalib::alsadevice
Nov 16 21:38:15.831 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:38:16.225 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:38:16.540 WARN sample rate change detected, last rate was 108559.66666616531 Hz, module: camillalib::alsadevice
Nov 16 21:38:16.619 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:38:17.013 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:38:17.262 DEBG Current buffer level: 15100.015748031496, corrected capture rate: 99.82010416666667%, module: camillalib::audiodevice
Nov 16 21:38:17.262 DEBG Playback buffer level: 15100.015748031496, signal rms: [-1000.0, -1000.0, -1000.0, -1000.0, -1000.0, -1000.0, -1000.0, -1000.0, -51.486317, -52.628323, -1000.0, -1000.0, -1000.0, -1000.0, -1000.0, -1000.0, -1000.0, -1000.0, -1000.0, -1000.0], module: camillalib::alsadevice
Nov 16 21:38:17.262 DEBG SetSpeed message received, module: camilladsp
Nov 16 21:38:17.407 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:38:17.564 WARN sample rate change detected, last rate was 103990.18724626655 Hz, module: camillalib::alsadevice
Nov 16 21:38:17.801 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:38:18.194 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:38:18.588 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:38:18.636 WARN sample rate change detected, last rate was 99406.19203033276 Hz, module: camillalib::alsadevice
Nov 16 21:38:18.982 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:38:19.376 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:38:19.691 WARN sample rate change detected, last rate was 108636.28083268208 Hz, module: camillalib::alsadevice
Nov 16 21:38:19.770 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:38:20.164 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:38:20.558 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:38:20.716 WARN sample rate change detected, last rate was 103987.90450065501 Hz, module: camillalib::alsadevice
Nov 16 21:38:20.952 WARN Prepare capture device, module: camillalib::alsadevice
Nov 16 21:38:21.346 WARN Capture failed, error: ALSA function 'snd_pcm_readi' failed with error 'EPIPE: Broken pipe', module: camillalib::alsadevice
Nov 16 21:38:21.346 ERRO Capture error: ALSA function 'snd_pcm_readi' failed with error 'EPIPE: Broken pipe', module: camilladsp
Nov 16 21:38:21.346 DEBG Wait for playback thread to exit.., module: camilladsp
Nov 16 21:38:22.145 DEBG Restarting with new config, module: camilladsp
Nov 16 21:38:22.145 DEBG Wait for config, module: camilladsp
Nov 16 21:38:22.146 DEBG No config and not in wait mode, exiting!, module: camilladsp
What I don't understand is that the warning seem to relate to the playback side. Here's my config:
Code:
devices:
samplerate: 192000
chunksize: 8192
enable_rate_adjust: true
silence_threshold: -75
silence_timeout: 60.0
capture:
type: Alsa
channels: 2
device: "hw:CARD=Loopback,DEV=0"
format: S32LE
playback:
type: Alsa
channels: 20
device: "hw:CARD=II24066911,DEV=0"
format: S24LE3
mixers:
to20chan:
channels:
in: 2
out: 20
mapping:
- dest: 8
sources:
- channel: 0
gain: 0
inverted: false
- dest: 9
sources:
- channel: 1
gain: 0
inverted: false
filters:
vol:
type: Loudness
parameters:
ramp_time: 200.0
reference_level: -30.0
high_boost: 10.0
low_boost: 15.0
gain-pre:
type: Gain
parameters:
gain: -30.0
inverted: false
gain-post:
type: Gain
parameters:
gain: 27.0
inverted: false
conv-l:
type: Conv
parameters:
type: Wav
filename: /usr/local/etc/camilladsp/conv192.wav
channel: 0
conv-r:
type: Conv
parameters:
type: Wav
filename: /usr/local/etc/camilladsp/conv192.wav
channel: 1
pipeline:
- type: Mixer
name: to20chan
- type: Filter
channel: 8
names:
- gain-pre
- conv-l
- gain-post
- vol
- type: Filter
channel: 9
names:
- gain-pre
- conv-r
- gain-post
- vol
Can you point me in the right direction please? Many thanks.
Looks like something is running slowly and that it can't keep up with the 192kHz rate for some reason. Can you check CPU usage while it's running?
What system is this running on?
What system is this running on?
Running on a Pi4. There are no other changes from what it's doing before very successfully with the UltraLite device. How do I check CPU usage?
Here's the top report with the test device that's crashing. Usage seems much the same as with the UltraLite-mk5:
Code:
top - 22:52:07 up 5 min, 1 user, load average: 0.40, 0.51, 0.27
Tasks: 162 total, 1 running, 161 sleeping, 0 stopped, 0 zombie
%Cpu(s): 8.8 us, 0.9 sy, 0.0 ni, 89.4 id, 0.0 wa, 0.0 hi, 0.9 si, 0.0 st
MiB Mem : 7809.2 total, 7211.0 free, 315.9 used, 282.3 buff/cache
MiB Swap: 0.0 total, 0.0 free, 0.0 used. 7234.5 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2361 root -11 0 416568 27696 5300 S 36.8 0.3 0:57.45 camilladsp
2149 root 20 0 1273428 54944 22168 S 2.6 0.7 0:07.46 mono-sgen
2372 ubuntu 20 0 11872 3404 2680 R 1.0 0.0 0:02.54 top
21 root 20 0 0 0 0 S 0.7 0.0 0:00.41 ksoftirqd/1
16 root 20 0 0 0 0 I 0.3 0.0 0:00.37 kworker/0:1-events
454 root 20 0 0 0 0 I 0.3 0.0 0:00.56 kworker/2:3-events
2123 root 20 0 1366180 48480 20444 S 0.3 0.6 0:06.09 mono-sgen
1 root 20 0 165292 10508 6936 S 0.0 0.1 0:03.39 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.02 kthreadd
3 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_gp
4 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_par_gp
5 root 20 0 0 0 0 I 0.0 0.0 0:00.01 kworker/0:0-cgroup_destroy
6 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/0:0H-mmc_complete
7 root 20 0 0 0 0 I 0.0 0.0 0:00.08 kworker/u8:0-events_power_efficient
8 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 mm_percpu_wq
9 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_tasks_kthre
10 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_tasks_rude_
11 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_tasks_trace
12 root 20 0 0 0 0 S 0.0 0.0 0:00.22 ksoftirqd/0
13 root 20 0 0 0 0 I 0.0 0.0 0:00.21 rcu_preempt
14 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
15 root -51 0 0 0 0 S 0.0 0.0 0:00.00 idle_inject/0
17 root 20 0 0 0 0 S 0.0 0.0 0:00.00 cpuhp/0
18 root 20 0 0 0 0 S 0.0 0.0 0:00.00 cpuhp/1
19 root -51 0 0 0 0 S 0.0 0.0 0:00.00 idle_inject/1
20 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/1
22 root 20 0 0 0 0 I 0.0 0.0 0:00.00 kworker/1:0-events
23 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/1:0H-events_highpri
24 root 20 0 0 0 0 S 0.0 0.0 0:00.00 cpuhp/2
25 root -51 0 0 0 0 S 0.0 0.0 0:00.00 idle_inject/2
26 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/2
27 root 20 0 0 0 0 S 0.0 0.0 0:00.10 ksoftirqd/2
28 root 20 0 0 0 0 I 0.0 0.0 0:00.00 kworker/2:0-mm_percpu_wq
29 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/2:0H-kblockd
30 root 20 0 0 0 0 S 0.0 0.0 0:00.00 cpuhp/3
31 root -51 0 0 0 0 S 0.0 0.0 0:00.00 idle_inject/3
32 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/3
33 root 20 0 0 0 0 S 0.0 0.0 0:00.12 ksoftirqd/3
34 root 20 0 0 0 0 I 0.0 0.0 0:00.12 kworker/3:0-events_freezable
35 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/3:0H-kblockd
36 root 20 0 0 0 0 S 0.0 0.0 0:00.05 kdevtmpfs
37 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 netns
38 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 inet_frag_wq
39 root 20 0 0 0 0 I 0.0 0.0 0:00.03 kworker/2:1-mm_percpu_wq
johnanon: Does your Motu soundcard really allow opening 192/24/20? That's way above the isochronous bandwidth for bInterval=1. IMO we have already discussed it here https://www.diyaudio.com/forums/pc-...rossovers-correction-etc-223.html#post6768102
Sorted. I changed the interface's Class Compliant mode from 192/24/20 to 192/24/8 and this now works just fine. Sorry for the false alarm.
You're right that the MOTU doesn't operate at 192/24/20. If you want to operate it at 192/24, then you're limited to 10 channels, which is what I've been doing.
However, I'm testing an RME UCX II which does offer 192/24/20 according to the manual and confirmed by
However, it's clear from my test that this doesn't work in practice with the ALSA loop and CamillaDSP as set out in my config file. Maybe this is to do with "the isochronous bandwidth for bInterval=1" but could you please explain what that means please? Thanks
johnanon: Does your Motu soundcard really allow opening 192/24/20? That's way above the isochronous bandwidth for bInterval=1.
You're right that the MOTU doesn't operate at 192/24/20. If you want to operate it at 192/24, then you're limited to 10 channels, which is what I've been doing.
However, I'm testing an RME UCX II which does offer 192/24/20 according to the manual and confirmed by
Code:
cat /proc/asound/[DeviceName]/stream0
Now this is interesting. The basic USB isochronous transfer can send 1 packet every 125us microframe (bInterval=1) with maximum size 1024 bytes. That limits the number of channels at 192/24 to 14 (192000*3*14/8000 microframes = 1008 bytes per microframe).
The UCX II card claims to pass 20 channels. The isochronous transfer defines so called high-speed mode where up to 3 packets can be sent in each microframe, nicely explained in How to transfer data to USB isochronous endpoints - Windows drivers | Microsoft Docs . I have never seen an audio device using multiple packets per microframe. Also I do not know support status of the high-speed mode in stock UAC2 drivers (linux, win, OSX), although linux devels say it should work, the support should be in lower-layer usb-core driver and the snd-usb-audio driver should not care about this.
I wonder if UCX II is this kind of device. Please can you try playback of some generated stream 192/24/20 e.g. in sox directly to hw:X, and post the stream0 file? I wonder what the packet size will be. Also lsusb -v dump for the soundcard? Thanks a lot.
The UCX II card claims to pass 20 channels. The isochronous transfer defines so called high-speed mode where up to 3 packets can be sent in each microframe, nicely explained in How to transfer data to USB isochronous endpoints - Windows drivers | Microsoft Docs . I have never seen an audio device using multiple packets per microframe. Also I do not know support status of the high-speed mode in stock UAC2 drivers (linux, win, OSX), although linux devels say it should work, the support should be in lower-layer usb-core driver and the snd-usb-audio driver should not care about this.
I wonder if UCX II is this kind of device. Please can you try playback of some generated stream 192/24/20 e.g. in sox directly to hw:X, and post the stream0 file? I wonder what the packet size will be. Also lsusb -v dump for the soundcard? Thanks a lot.
Last edited:
Now this is interesting ... lsusb -v dump for the soundcard? Thanks a lot.
Thanks for the reply. Now I've had a few moments to do the above. The soundcard is set to 8 channels at the moment, if that's relevant.
Code:
Bus 001 Device 004: ID 2a39:3fd9 RME Fireface UCX II (24066911)
Couldn't open device, some information will be missing
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 239 Miscellaneous Device
bDeviceSubClass 2
bDeviceProtocol 1 Interface Association
bMaxPacketSize0 64
idVendor 0x2a39 RME
idProduct 0x3fd9
bcdDevice 3.01
iManufacturer 1 RME
iProduct 2 Fireface UCX II (24066911)
iSerial 3 39FD19CE0FE13C8
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 0x026d
bNumInterfaces 4
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xc0
Self Powered
MaxPower 100mA
Interface Association:
bLength 8
bDescriptorType 11
bFirstInterface 0
bInterfaceCount 3
bFunctionClass 1 Audio
bFunctionSubClass 0
bFunctionProtocol 32
iFunction 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 0
bInterfaceClass 1 Audio
bInterfaceSubClass 1 Control Device
bInterfaceProtocol 32
iInterface 0
AudioControl Interface Descriptor:
bLength 9
bDescriptorType 36
bDescriptorSubtype 1 (HEADER)
bcdADC 2.00
bCategory 8
wTotalLength 0x004b
bmControls 0x00
AudioControl Interface Descriptor:
bLength 8
bDescriptorType 36
bDescriptorSubtype 10 (CLOCK_SOURCE)
bClockID 1
bmAttributes 3 Internal programmable clock
bmControls 0x03
Clock Frequency Control (read/write)
bAssocTerminal 0
iClockSource 0
AudioControl Interface Descriptor:
bLength 17
bDescriptorType 36
bDescriptorSubtype 2 (INPUT_TERMINAL)
bTerminalID 3
wTerminalType 0x0101 USB Streaming
bAssocTerminal 0
bCSourceID 1
bNrChannels 20
bmChannelConfig 0x00000000
iChannelNames 0
bmControls 0x0000
iTerminal 0
AudioControl Interface Descriptor:
bLength 17
bDescriptorType 36
bDescriptorSubtype 2 (INPUT_TERMINAL)
bTerminalID 5
wTerminalType 0x0603 Line Connector
bAssocTerminal 0
bCSourceID 1
bNrChannels 20
bmChannelConfig 0x00000000
iChannelNames 0
bmControls 0x0000
iTerminal 0
AudioControl Interface Descriptor:
bLength 12
bDescriptorType 36
bDescriptorSubtype 3 (OUTPUT_TERMINAL)
bTerminalID 4
wTerminalType 0x0301 Speaker
bAssocTerminal 0
bSourceID 3
bCSourceID 1
bmControls 0x0000
iTerminal 0
AudioControl Interface Descriptor:
bLength 12
bDescriptorType 36
bDescriptorSubtype 3 (OUTPUT_TERMINAL)
bTerminalID 6
wTerminalType 0x0101 USB Streaming
bAssocTerminal 0
bSourceID 5
bCSourceID 1
bmControls 0x0000
iTerminal 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 0
bNumEndpoints 0
bInterfaceClass 1 Audio
bInterfaceSubClass 2 Streaming
bInterfaceProtocol 32
iInterface 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 1
bNumEndpoints 2
bInterfaceClass 1 Audio
bInterfaceSubClass 2 Streaming
bInterfaceProtocol 32
iInterface 0
AudioStreaming Interface Descriptor:
bLength 16
bDescriptorType 36
bDescriptorSubtype 1 (AS_GENERAL)
bTerminalLink 3
bmControls 0x00
bFormatType 1
bmFormats 0x00000001
PCM
bNrChannels 20
bmChannelConfig 0x00000000
iChannelNames 0
AudioStreaming Interface Descriptor:
bLength 6
bDescriptorType 36
bDescriptorSubtype 2 (FORMAT_TYPE)
bFormatType 1 (FORMAT_TYPE_I)
bSubslotSize 3
bBitResolution 24
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x02 EP 2 OUT
bmAttributes 5
Transfer Type Isochronous
Synch Type Asynchronous
Usage Type Data
wMaxPacketSize 0x030c 1x 780 bytes
bInterval 1
AudioStreaming Endpoint Descriptor:
bLength 8
bDescriptorType 37
bDescriptorSubtype 1 (EP_GENERAL)
bmAttributes 0x00
bmControls 0x00
bLockDelayUnits 0 Undefined
wLockDelay 0x0000
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 17
Transfer Type Isochronous
Synch Type None
Usage Type Feedback
wMaxPacketSize 0x0004 1x 4 bytes
bInterval 4
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 2
bNumEndpoints 2
bInterfaceClass 1 Audio
bInterfaceSubClass 2 Streaming
bInterfaceProtocol 32
iInterface 0
AudioStreaming Interface Descriptor:
bLength 16
bDescriptorType 36
bDescriptorSubtype 1 (AS_GENERAL)
bTerminalLink 3
bmControls 0x00
bFormatType 1
bmFormats 0x00000001
PCM
bNrChannels 16
bmChannelConfig 0x00000003
Front Left (FL)
Front Right (FR)
iChannelNames 0
AudioStreaming Interface Descriptor:
bLength 6
bDescriptorType 36
bDescriptorSubtype 2 (FORMAT_TYPE)
bFormatType 1 (FORMAT_TYPE_I)
bSubslotSize 3
bBitResolution 24
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x02 EP 2 OUT
bmAttributes 5
Transfer Type Isochronous
Synch Type Asynchronous
Usage Type Data
wMaxPacketSize 0x0270 1x 624 bytes
bInterval 1
AudioStreaming Endpoint Descriptor:
bLength 8
bDescriptorType 37
bDescriptorSubtype 1 (EP_GENERAL)
bmAttributes 0x00
bmControls 0x00
bLockDelayUnits 0 Undefined
wLockDelay 0x0000
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 17
Transfer Type Isochronous
Synch Type None
Usage Type Feedback
wMaxPacketSize 0x0004 1x 4 bytes
bInterval 4
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 3
bNumEndpoints 2
bInterfaceClass 1 Audio
bInterfaceSubClass 2 Streaming
bInterfaceProtocol 32
iInterface 0
AudioStreaming Interface Descriptor:
bLength 16
bDescriptorType 36
bDescriptorSubtype 1 (AS_GENERAL)
bTerminalLink 3
bmControls 0x00
bFormatType 1
bmFormats 0x00000001
PCM
bNrChannels 14
bmChannelConfig 0x00000003
Front Left (FL)
Front Right (FR)
iChannelNames 0
AudioStreaming Interface Descriptor:
bLength 6
bDescriptorType 36
bDescriptorSubtype 2 (FORMAT_TYPE)
bFormatType 1 (FORMAT_TYPE_I)
bSubslotSize 3
bBitResolution 24
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x02 EP 2 OUT
bmAttributes 5
Transfer Type Isochronous
Synch Type Asynchronous
Usage Type Data
wMaxPacketSize 0x0a4c 2x 588 bytes
bInterval 1
AudioStreaming Endpoint Descriptor:
bLength 8
bDescriptorType 37
bDescriptorSubtype 1 (EP_GENERAL)
bmAttributes 0x00
bmControls 0x00
bLockDelayUnits 0 Undefined
wLockDelay 0x0000
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 17
Transfer Type Isochronous
Synch Type None
Usage Type Feedback
wMaxPacketSize 0x0004 1x 4 bytes
bInterval 4
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 4
bNumEndpoints 2
bInterfaceClass 1 Audio
bInterfaceSubClass 2 Streaming
bInterfaceProtocol 32
iInterface 0
AudioStreaming Interface Descriptor:
bLength 16
bDescriptorType 36
bDescriptorSubtype 1 (AS_GENERAL)
bTerminalLink 3
bmControls 0x00
bFormatType 1
bmFormats 0x00000001
PCM
bNrChannels 8
bmChannelConfig 0x00000003
Front Left (FL)
Front Right (FR)
iChannelNames 0
AudioStreaming Interface Descriptor:
bLength 6
bDescriptorType 36
bDescriptorSubtype 2 (FORMAT_TYPE)
bFormatType 1 (FORMAT_TYPE_I)
bSubslotSize 3
bBitResolution 24
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x02 EP 2 OUT
bmAttributes 5
Transfer Type Isochronous
Synch Type Asynchronous
Usage Type Data
wMaxPacketSize 0x0258 1x 600 bytes
bInterval 1
AudioStreaming Endpoint Descriptor:
bLength 8
bDescriptorType 37
bDescriptorSubtype 1 (EP_GENERAL)
bmAttributes 0x00
bmControls 0x00
bLockDelayUnits 0 Undefined
wLockDelay 0x0000
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 17
Transfer Type Isochronous
Synch Type None
Usage Type Feedback
wMaxPacketSize 0x0004 1x 4 bytes
bInterval 4
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 2
bAlternateSetting 0
bNumEndpoints 0
bInterfaceClass 1 Audio
bInterfaceSubClass 2 Streaming
bInterfaceProtocol 32
iInterface 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 2
bAlternateSetting 1
bNumEndpoints 1
bInterfaceClass 1 Audio
bInterfaceSubClass 2 Streaming
bInterfaceProtocol 32
iInterface 0
AudioStreaming Interface Descriptor:
bLength 16
bDescriptorType 36
bDescriptorSubtype 1 (AS_GENERAL)
bTerminalLink 6
bmControls 0x00
bFormatType 1
bmFormats 0x00000001
PCM
bNrChannels 20
bmChannelConfig 0x00000000
iChannelNames 0
AudioStreaming Interface Descriptor:
bLength 6
bDescriptorType 36
bDescriptorSubtype 2 (FORMAT_TYPE)
bFormatType 1 (FORMAT_TYPE_I)
bSubslotSize 3
bBitResolution 24
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 5
Transfer Type Isochronous
Synch Type Asynchronous
Usage Type Data
wMaxPacketSize 0x030c 1x 780 bytes
bInterval 1
AudioStreaming Endpoint Descriptor:
bLength 8
bDescriptorType 37
bDescriptorSubtype 1 (EP_GENERAL)
bmAttributes 0x00
bmControls 0x00
bLockDelayUnits 0 Undefined
wLockDelay 0x0000
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 2
bAlternateSetting 2
bNumEndpoints 1
bInterfaceClass 1 Audio
bInterfaceSubClass 2 Streaming
bInterfaceProtocol 32
iInterface 0
AudioStreaming Interface Descriptor:
bLength 16
bDescriptorType 36
bDescriptorSubtype 1 (AS_GENERAL)
bTerminalLink 6
bmControls 0x00
bFormatType 1
bmFormats 0x00000001
PCM
bNrChannels 16
bmChannelConfig 0x00000000
iChannelNames 0
AudioStreaming Interface Descriptor:
bLength 6
bDescriptorType 36
bDescriptorSubtype 2 (FORMAT_TYPE)
bFormatType 1 (FORMAT_TYPE_I)
bSubslotSize 3
bBitResolution 24
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 5
Transfer Type Isochronous
Synch Type Asynchronous
Usage Type Data
wMaxPacketSize 0x0270 1x 624 bytes
bInterval 1
AudioStreaming Endpoint Descriptor:
bLength 8
bDescriptorType 37
bDescriptorSubtype 1 (EP_GENERAL)
bmAttributes 0x00
bmControls 0x00
bLockDelayUnits 0 Undefined
wLockDelay 0x0000
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 2
bAlternateSetting 3
bNumEndpoints 1
bInterfaceClass 1 Audio
bInterfaceSubClass 2 Streaming
bInterfaceProtocol 32
iInterface 0
AudioStreaming Interface Descriptor:
bLength 16
bDescriptorType 36
bDescriptorSubtype 1 (AS_GENERAL)
bTerminalLink 6
bmControls 0x00
bFormatType 1
bmFormats 0x00000001
PCM
bNrChannels 14
bmChannelConfig 0x00000000
iChannelNames 0
AudioStreaming Interface Descriptor:
bLength 6
bDescriptorType 36
bDescriptorSubtype 2 (FORMAT_TYPE)
bFormatType 1 (FORMAT_TYPE_I)
bSubslotSize 3
bBitResolution 24
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 5
Transfer Type Isochronous
Synch Type Asynchronous
Usage Type Data
wMaxPacketSize 0x0a4c 2x 588 bytes
bInterval 1
AudioStreaming Endpoint Descriptor:
bLength 8
bDescriptorType 37
bDescriptorSubtype 1 (EP_GENERAL)
bmAttributes 0x00
bmControls 0x00
bLockDelayUnits 0 Undefined
wLockDelay 0x0000
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 2
bAlternateSetting 4
bNumEndpoints 1
bInterfaceClass 1 Audio
bInterfaceSubClass 2 Streaming
bInterfaceProtocol 32
iInterface 0
AudioStreaming Interface Descriptor:
bLength 16
bDescriptorType 36
bDescriptorSubtype 1 (AS_GENERAL)
bTerminalLink 6
bmControls 0x00
bFormatType 1
bmFormats 0x00000001
PCM
bNrChannels 8
bmChannelConfig 0x00000000
iChannelNames 0
AudioStreaming Interface Descriptor:
bLength 6
bDescriptorType 36
bDescriptorSubtype 2 (FORMAT_TYPE)
bFormatType 1 (FORMAT_TYPE_I)
bSubslotSize 3
bBitResolution 24
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 5
Transfer Type Isochronous
Synch Type Asynchronous
Usage Type Data
wMaxPacketSize 0x0258 1x 600 bytes
bInterval 1
AudioStreaming Endpoint Descriptor:
bLength 8
bDescriptorType 37
bDescriptorSubtype 1 (EP_GENERAL)
bmAttributes 0x00
bmControls 0x00
bLockDelayUnits 0 Undefined
wLockDelay 0x0000
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 3
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 1 Audio
bInterfaceSubClass 3 MIDI Streaming
bInterfaceProtocol 0
iInterface 2
MIDIStreaming Interface Descriptor:
bLength 7
bDescriptorType 36
bDescriptorSubtype 1 (HEADER)
bcdADC 1.00
wTotalLength 0x0061
MIDIStreaming Interface Descriptor:
bLength 9
bDescriptorType 36
bDescriptorSubtype 3 (MIDI_OUT_JACK)
bJackType 1 Embedded
bJackID 3
bNrInputPins 1
baSourceID( 0) 2
BaSourcePin( 0) 1
iJack 4
MIDIStreaming Interface Descriptor:
bLength 6
bDescriptorType 36
bDescriptorSubtype 2 (MIDI_IN_JACK)
bJackType 2 External
bJackID 2
iJack 4
MIDIStreaming Interface Descriptor:
bLength 9
bDescriptorType 36
bDescriptorSubtype 3 (MIDI_OUT_JACK)
bJackType 1 Embedded
bJackID 7
bNrInputPins 1
baSourceID( 0) 6
BaSourcePin( 0) 1
iJack 5
MIDIStreaming Interface Descriptor:
bLength 6
bDescriptorType 36
bDescriptorSubtype 2 (MIDI_IN_JACK)
bJackType 2 External
bJackID 6
iJack 5
MIDIStreaming Interface Descriptor:
bLength 6
bDescriptorType 36
bDescriptorSubtype 2 (MIDI_IN_JACK)
bJackType 1 Embedded
bJackID 1
iJack 4
MIDIStreaming Interface Descriptor:
bLength 9
bDescriptorType 36
bDescriptorSubtype 3 (MIDI_OUT_JACK)
bJackType 2 External
bJackID 4
bNrInputPins 1
baSourceID( 0) 1
BaSourcePin( 0) 1
iJack 4
MIDIStreaming Interface Descriptor:
bLength 6
bDescriptorType 36
bDescriptorSubtype 2 (MIDI_IN_JACK)
bJackType 1 Embedded
bJackID 5
iJack 5
MIDIStreaming Interface Descriptor:
bLength 9
bDescriptorType 36
bDescriptorSubtype 3 (MIDI_OUT_JACK)
bJackType 2 External
bJackID 8
bNrInputPins 1
baSourceID( 0) 5
BaSourcePin( 0) 1
iJack 5
Endpoint Descriptor:
bLength 9
bDescriptorType 5
bEndpointAddress 0x07 EP 7 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
bRefresh 0
bSynchAddress 0
MIDIStreaming Endpoint Descriptor:
bLength 6
bDescriptorType 37
bDescriptorSubtype 1 (GENERAL)
bNumEmbMIDIJack 2
baAssocJackID( 0) 1
baAssocJackID( 1) 5
Endpoint Descriptor:
bLength 9
bDescriptorType 5
bEndpointAddress 0x86 EP 6 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
bRefresh 0
bSynchAddress 0
MIDIStreaming Endpoint Descriptor:
bLength 6
bDescriptorType 37
bDescriptorSubtype 1 (GENERAL)
bNumEmbMIDIJack 2
baAssocJackID( 0) 3
baAssocJackID( 1) 7
And here's one of the other things you asked for. Are these helpful?... post the stream0 file?
Code:
ubuntu@ubuntu:/usr/local/etc/camilladsp/logs$ sudo cat /proc/asound/II24066911/stream0
RME Fireface UCX II (24066911) at usb-0000:01:00.0-1.3, high speed : USB Audio
Playback:
Status: Stop
Interface 1
Altset 1
Format: S24_3LE
Channels: 20
Endpoint: 0x02 (2 OUT) (ASYNC)
Rates: 44100, 48000, 88200, 96000, 176400, 192000
Data packet interval: 125 us
Bits: 24
Sync Endpoint: 0x82 (2 IN)
Sync EP Interface: 1
Sync EP Altset: 1
Implicit Feedback Mode: No
Interface 1
Altset 2
Format: S24_3LE
Channels: 16
Endpoint: 0x02 (2 OUT) (ASYNC)
Rates: 44100, 48000, 88200, 96000, 176400, 192000
Data packet interval: 125 us
Bits: 24
Sync Endpoint: 0x82 (2 IN)
Sync EP Interface: 1
Sync EP Altset: 2
Implicit Feedback Mode: No
Interface 1
Altset 3
Format: S24_3LE
Channels: 14
Endpoint: 0x02 (2 OUT) (ASYNC)
Rates: 44100, 48000, 88200, 96000, 176400, 192000
Data packet interval: 125 us
Bits: 24
Channel map: FL FR -- -- -- -- -- -- -- -- -- -- -- --
Sync Endpoint: 0x82 (2 IN)
Sync EP Interface: 1
Sync EP Altset: 3
Implicit Feedback Mode: No
Interface 1
Altset 4
Format: S24_3LE
Channels: 8
Endpoint: 0x02 (2 OUT) (ASYNC)
Rates: 44100, 48000, 88200, 96000, 176400, 192000
Data packet interval: 125 us
Bits: 24
Channel map: FL FR -- -- -- -- -- --
Sync Endpoint: 0x82 (2 IN)
Sync EP Interface: 1
Sync EP Altset: 4
Implicit Feedback Mode: No
Capture:
Status: Stop
Interface 2
Altset 1
Format: S24_3LE
Channels: 20
Endpoint: 0x81 (1 IN) (ASYNC)
Rates: 44100, 48000, 88200, 96000, 176400, 192000
Data packet interval: 125 us
Bits: 24
Interface 2
Altset 2
Format: S24_3LE
Channels: 16
Endpoint: 0x81 (1 IN) (ASYNC)
Rates: 44100, 48000, 88200, 96000, 176400, 192000
Data packet interval: 125 us
Bits: 24
Interface 2
Altset 3
Format: S24_3LE
Channels: 14
Endpoint: 0x81 (1 IN) (ASYNC)
Rates: 44100, 48000, 88200, 96000, 176400, 192000
Data packet interval: 125 us
Bits: 24
Channel map: FL FR FC LFE RL RR FLC FRC RC SL SR TC TFL TFC
Interface 2
Altset 4
Format: S24_3LE
Channels: 8
Endpoint: 0x81 (1 IN) (ASYNC)
Rates: 44100, 48000, 88200, 96000, 176400, 192000
Data packet interval: 125 us
Bits: 24
Channel map: FL FR FC LFE RL RR FLC FRC
Thanks. Please can you post lsusb -v when switched to 20 channels (so that we see the USB config for the 20ch mode, and stream0 when 20ch are being played (so that all relevant info is shown)? Thanks.
The above lsusb lists 20 channels/24bits altsetting, with 760bytes maxpacketsize. That means max. samplerate 760*8000/20/3=104kHz. Which is the value logged by camillaDSP. It looks as if the soundcard did not adjust its channels count for the samplerates and indeed allowed 192kHz/20ch/24bits, with many samples being lost due to the insufficient bandwidth. That would hint at a buggy firmware.
I am really interested in the stream0 for 20 channels playing, and whether the produced sound is OK. If testing with a tone, please use some non-rounded frequency so that the dropped samples (if any) do not amount to full periods of the sine signal (e.g. 8kHz signal would not exhibit any problem if any number of microframes were lost as there is exactly one period of the sine signal per microframe. Thanks.
I am really interested in the stream0 for 20 channels playing, and whether the produced sound is OK. If testing with a tone, please use some non-rounded frequency so that the dropped samples (if any) do not amount to full periods of the sine signal (e.g. 8kHz signal would not exhibit any problem if any number of microframes were lost as there is exactly one period of the sine signal per microframe. Thanks.
- Home
- Source & Line
- PC Based
- CamillaDSP - Cross-platform IIR and FIR engine for crossovers, room correction etc