snd_dice: Clicking artifacts with TC StudioKonnekt 48
Scott Bahling
sbahling at suse.com
Wed May 6 17:56:37 CEST 2020
Hi Takashi,
On Sat, 2020-02-22 at 10:25 +0900, Takashi Sakamoto wrote:
> Hi,
>
> On Thu, Feb 20, 2020 at 09:34:02PM +0100, Mathias Buhr wrote:
> > Hi,
> >
> > thanks to this group, both of my firewire interfaces are (almost)
> > working! Big thank you!
> >
> > While the TC Konnekt 24D works fine (playback and recording), the
> > StudioKonnekt 48 produces clicking artifacts during playback when using
> > snd_dice. This interface is working flawless on Windows and on a
> > Jack/FFADO combination. This artifact occurs in all use cases (alsa via
> > aplay, pulseaudio and jack) and does not seem to be in recorded streams.
> > After recording the playback with another device, it looks like the
> > level of the artifact is scaling with the signal and its interval is
> > interestingly 256ms. Is there anything I can do to further debug this
> > issue? Capture firewire packets? I would love to get this device fully
> > working.
> >
> > I'm using kernel version 5.5.4 but this issue has been there for a long
> > time.
> >
> > Thanks,
> >
> > Mathias
>
> Yes. ALSA dice driver brings the issue to your unit regardless of XRUNs.
> I can see this issue for recent 5 years (so long time).
>
> At present, ALSA dice driver is designed with the expectation that the
> devices performs 'clock-recovery' with timestamp in isochronous packets
> transmitted by the driver. The driver transfers PCM frames with
> timestamps as exactly the same number as configured sampling rate; e.g.
> 48,000 frames/sec or 44,096/44,104 frames/sec.
>
> However, many devices including yours don't perform it actually. For
> example, all of devices from TC Electronics don't perform it:
>
> - Konnekt 24D (Dice II STD ASIC)
> - Konnekt 8 (Dice II STD ASIC)
> - Konnkt Live (Dice II STD ASIC)
> - Studio Konnekt 48 (DICE II STD and DICE Mini ASICs)
> - Impact Twin (DICE II STD ASIC)
> - Desktop Konnekt 6 (DICE Mini ASIC)
> - Digital Konnekt 32 (DICE II STD)
>
>
> They work with sampling clock independent of the timestamp from driver.
> Thus it's not possible to synchronize multiple devices on the same
> IEEE 1394 bus (this is against the 'myth' that the devices can be
> synchronized for its internal sampling, but it's the fact).
>
> Instead, the device expects the driver to perform the 'clock-recovery'
> and transfer PCM frames as mostly the same as the calculated sampling
> rate. Even if the device is configured to handle 48,000 PCM frames per
> second, the device actually handles less or more PCM frames; e.g.
> 47,988, 47,992 or 48,008, 48,016. Unfortunately, current ALSA dice
> driver is not designed to work for it. In device internal, it handles
> surplus PCM frames or the lack of PCM frames for several seconds, then
> causes noisy sound I guess.
I was just about to start a thread related to a very similar issue I'm
seeing with my Tascam FW-1884. But in my case I'm only running one
device/clock source. Could the clock-recovery issue also be affecting a
single FW-1884 device?
In my case I'm witnessing exactly one frame being dropped at a consistent
interval of about 240ms at 96000 frames per second and 480ms at 48000 frames
per second.
> The libffado2 is programmed for the 'clock-recovery'. On the other hand,
> it includes design mistake to aggregate several types of devices and give
> abstracted device to applications such as jackd. When considering the
> above design of actual hardware, the design is not good since each actual
> hardware works independent sampling clocks.
I have not tried FFADO yet. I will see if the issue goes away with FFADO.
Best Regards,
Scott
More information about the Alsa-devel
mailing list