Welcome, Guest
Username: Password: Remember me

NOTE: This is a "Community" forum. Please be mindful that community members are here to help as part of a community effort. We therefore appreciate your effort in keeping this forum a happy place!

If you have a specific issue (e.g. hardware, failure) and want help from our support team, please use our tech support portal (Support menu - > Contact Us).
Thanks a lot of your help in making a better community.

TOPIC: bug: card doesn't inform SR change thru ASIO

bug: card doesn't inform SR change thru ASIO 4 years 4 months ago #25869

I try to use the usbStreamer as in/out card for software 2x8 crossover with external toslink source:
External PCM stream source->usbStreamer toslink stereo input->AudioVero AcourateConvolver software->usbStreamer 8 channel i2s output->8 channel DAC...
But unfortunately it does not work properly.
I have written the letter to Uli (mastermind behind the AudioVero), and he answered that problem is miniDSP drivers not-100% compatibility to ASIO specification. See my report (italic) to Uli and his answers/explanations (bold):

My system is Windows 7 x64 Professional SP1, i5 Core 3.3Ghz, 8Gb RAM, 240Gb SSD, usbStreamer on USB3 Renesas controller.
Some features of (AC+usbStreamer) do not work properly:
1) Automatic SR switching according to soundcard ASIO input (the main feature i'm interested in).
Initially (after start) it sounds ok.
But after input soundard's SR change the output sound becomes distorted.
When the input's SR returns to initial value, then output sound as well as returns to not distorted one.
I'm not sure, is it due to AC's bug or soundcard's driver or firmware one, but the AC selects uncorrect clock source.

By principle AC can only communicate to the Asio driver by the functions of the Asio interface specification. Indeed the interface specification includes functions like AsioGetClocksource, AsioSetClocksource, AsioGetSamplerate and so on. Surprisingly 99.9% of all Asio drivers do not fulfill the specification requirements. In your case AC does not get any information that the samplerate has changed and thus the sound gets distorted

My soundcard has ASIO "miniDSP UAC2 control panel",
with "Clock source" tab, with two mutualy excluding options: "Internal clock" and "TOSLINK clock".
I have toggled to "TOSLINK clock", as i use this input with external source.
It's interesting, that the "Clock selection" button in AC shows "Clocksource selection: not available" (wich is not true, as i said above).
(If toggled to "Internal clock" it nether oputput sound at all, nor receive input stream, for all SRs not equal to initial one)

The control panel of the soundcard lists two clock sources but the Asio driver does not. There is no interface by the control panel and thus the application program like AC cannot get the required information
a) which clock source is selected
b) which samplerate is active in case of the external clock source


So i have opened 2 windows: "-AcorateConvolver-" and "miniDSP UAC2 control panel", started AC,
then streamed the sounds with different SRs into soundcard TOSLINK input, to watch the changes on those windows
The obvious problem is AC locks to soundcard "Internal clock" (wich in turn sticks to different values with unclear logic), not the input stream clock.
And as soon as TOSLINK input SR becomes not equal to "Internal clock" SR, i get distrorted sound.
The value of SR of checked "TOSLINK clock" in "miniDSP UAC2 control panel" reflects all the changes of output stream in real time,
but AC continues to paly sticked to value shown in "Internal clock"...

I have already explained the reason. You can ask MiniDSP why they do not forward the information thru Asio ...

By the way, this "Internal clock" value locks to actual "TOSLINK clock" value by toggling clock selection from "TOSLINK clock" to "Internal clock" and back again in control panel (only if AC is stopped, and when there is a PCM signal on corresponding TOSLINK input).

In case of internal clock selection the PC becomes the clock master. But then the application, e.g. media player has to select the samplerate by AsioSetSamplerate. See a bit more below
...
Select AcourateAsio as target device in the media player. Select AcourateAsio as sound source in AC, also usually select virtual in 1/2 as input channels in AC. Then play a track.
You can play tracks of different samplerates and AC will switch properly. Of course the internal clock must be selected before in the soundcard control panel.

BR
Uli Br├╝ggemann
AudioVero
Last Edit: 4 years 4 months ago by Dmitry Nevozhay. Reason: color highlighting
The administrator has disabled public write access.

bug: card doesn't inform SR change thru ASIO 4 years 4 months ago #25876

  • devteam
  • devteam's Avatar
  • Online
  • Administrator
  • Posts: 8764
  • Thank you received: 1155
  • Karma: 165
Hello Dmitry

Let's see how we can help. The issue is most likely down to the clock domain. Let us explain starting from some basics:
- On the USBStreamer, we only have "ONE" clock domain both for inputs and outputs. A clock domain is defined by LRCLK (I2S running at the sample rate) and TOSLINK.
- So this mean that we can't handle to have INPUT stream and OUTPUT Stream to be at different frequencies. i.e. when you switch, you will indeed not be able to get the same sample rate and it will be the issue because input and outputs sample rate aren't matching.

The reason for that noise is because you have no "ASRC" between these 2 sources.
e.g. 44.1k input source from your TOSLINK device selected as clock source, if you select 48k or 96k for the output sample rate, indeed you'll get garbled sound. You need an ASRC in your path. (i.e. software ASRC).
Does this make sense?

As for the ASIO control panel, not sure to be honest. We're not very knowledgeable with Acourate.. We can ask our driver supplier (Thesycon) any reason for this...
miniDSP, building a DSP community one board at a time.
The administrator has disabled public write access.

bug: card doesn't inform SR change thru ASIO 4 years 4 months ago #25879

Hello, devteam.
the idea of one clock domain for inputs and outputs is clear for me, as it is documented.
And the only reason of my software approach was indeed to avoid any ASRC on the path from source to DAC.
So this is exactly what i need.
Physicaly there are two clocks: one "internal" on the board, and another "external" on external toslink source (so your ONE clock domain is being switched between this two clocks, as we see in control panel).

But as Uli described, when external SR changes, usbStramer's ASIO driver does not inform AC client about that via ASIO API, as it should to. Neither about switching between internal<->externa clocks, nor switching between different values of externalk clock ("which samplerate is active in case of the external clock source")

You can check this by downloading AC fully functional trial,
feeding it from toslink with different SR| stream, as i described to Uli, and see what happens.
www.audiovero.de/en/acourateconvolver.php
The administrator has disabled public write access.

bug: card doesn't inform SR change thru ASIO 4 years 4 months ago #25900

Hi. I have learned the ASIO driver SDK from Steinberg's ASIO SDK 2.3.
(It's free available at Steinberg Audio's site. But all my findings are valid at least since ASIO SDK 2.0 released 16 years ago).

1) The implementation of function
ASIOError ASIOGetClockSources(ASIOClockSource *clocks, long *numSources);
should return the pointer to array of 2 ASIOClockSource structs:
a) for I2S channels = internal clock source. Kinda {0, -1, -1, ASIOFalse, "USBStreamer Internal Clock\n"}
b) for TOSLINK/SPDIF channels = external clock source. Kinda {1, 8, 0, ASIOTrue, "USBStreamer TOSLINK Clock\n"}
(see page 17 of 50)

2) When sampling rate changes while using external clock source, the ASIO driver should inform ASIO host application (i.e. AudioConvolver in my case) via callback function:
void (*sampleRateDidChange) (ASIOSampleRate sRate);
(see page 29 of 50)

sampleRateDidChange() informs the host application that the driver detected a sample rate
change. Usually only used for an external clock source which changes its sample rate.
(see page 9 of 50).

It seems that usbStreamer ASIO driver does not comply with requirements mentioned above (1 & 2)
The administrator has disabled public write access.

bug: card doesn't inform SR change thru ASIO 4 years 4 months ago #25953

  • devteam
  • devteam's Avatar
  • Online
  • Administrator
  • Posts: 8764
  • Thank you received: 1155
  • Karma: 165
Thanks for the follow up Dmitry

As mentioned we have zero control over the ASIO driver (licensed from another 3rd party) however we'll investigate with them to see what's the issue. Like any firmware + software issue, we'll have a look at what's involved here. Thanks for your patience.

DevTeam
miniDSP, building a DSP community one board at a time.
The administrator has disabled public write access.

bug: card doesn't inform SR change thru ASIO 4 years 3 months ago #26090

Hi!
Have you scheduled the terms for investigation of this issue with the Thesycon?
Any progress?
The administrator has disabled public write access.

bug: card doesn't inform SR change thru ASIO 4 years 3 months ago #26420

Hi DevTeam,
one month left since my bug report..

Could you inform the status of resolving my issue?
The administrator has disabled public write access.

bug: card doesn't inform SR change thru ASIO 4 years 3 weeks ago #27829

Hi! More then 3 monthes left since my request for driver bug fix. :angry:
What's the progress?
The administrator has disabled public write access.

bug: card doesn't inform SR change thru ASIO 4 years 2 weeks ago #28007

  • devteam
  • devteam's Avatar
  • Online
  • Administrator
  • Posts: 8764
  • Thank you received: 1155
  • Karma: 165
@ Dmitry

Sorry for missing your thread here. After few talks with Thesycon, we established that the driver wasn't able to support this feature. We've asked Thesycon to see if they can include it in future release. We're not sure of their timeline I'm afraid.. :-(

Devteam
miniDSP, building a DSP community one board at a time.
The administrator has disabled public write access.

bug: card doesn't inform SR change thru ASIO 3 years 4 months ago #32077

devteam wrote:
@ Dmitry

Sorry for missing your thread here. After few talks with Thesycon, we established that the driver wasn't able to support this feature. We've asked Thesycon to see if they can include it in future release. We're not sure of their timeline I'm afraid.. :-(

Devteam

Hi! Would you inform the current status of fixing the asio' spec compliance bug by Thesycon in "future release"?
Is it released and fixed?
The administrator has disabled public write access.

bug: card doesn't inform SR change thru ASIO 3 years 4 months ago #32220

  • devteam
  • devteam's Avatar
  • Online
  • Administrator
  • Posts: 8764
  • Thank you received: 1155
  • Karma: 165
Hi,
Unfortunately no fix from Thesycon. We don't have control over their driver development as we mentioned before in few post.. Not sure if that's 100% obvious (maybe lost in translation. :-( miniDSP and Thesycon are 2 complete different entities. We can ask them for a feature, we have zero control over "forcing" them to do so.. :-(

Devteam
miniDSP, building a DSP community one board at a time.
The administrator has disabled public write access.

bug: card doesn't inform SR change thru ASIO 3 years 4 months ago #32229

I'm client of minidsp, I've paid for your product so I can require to fulfill the standard compliance of that product. you are client of thesycon, you have paid them for driver customization or/and sublicensing, so you can and you should to force them to fulfill asio standard's requirements. As I understand the typical client-vendor relationships and obligations.
The administrator has disabled public write access.
Moderators: devteam