Possible bug with ASIO interfaces with CVS Build

You're new to the LinuxSampler world? You don't know where to start and nothing works? Here's the place to ask for help.
Post Reply
ggoodesa
Advanced User
Posts: 116
Joined: Thu Aug 14, 2008 6:48 pm

Possible bug with ASIO interfaces with CVS Build

Post by ggoodesa » Wed Feb 11, 2009 7:19 am

Hi,
I'm running into an issue when using a computer with multiple ASIO devices. Using my Dec 22nd CVS build in WindowsXP I can succesfully use Fantasia/LinuxSampler when there is one ASIO driver in the system OR when the ASIO driver that I'm using with Fantasia is alphabetically before all the other ASIO drivers (i.e when using ASIO4ALL on a system that has other ASIO drivers, as ASIO4ALL starts with 'A' which is before KX-ASIO).

When attempting to use an ASIO driver that is alphabetically later than another ASIO driver, linuxsampler incorrectly picks up the first device as the CARD description (i.e. when trying to use KX-ASIO the ASIO4ALL Card description seems to be being used in the linuxsampler terminal). See the AudioOutputDeviceAsio::ParameterCard::DefaultAsString='ASIO4ALL v2' string in the following example

Has anyone else experienced this issue?

GrahamG

Console Output showing confused ASIO interface (This is just the beginning of the console text, if you need more let me know):
Init ASIO Jack
Before ASIOGetChannels()
Before ASIOGetBufferSize()
ASIO_OpenAndQueryDeviceInfo: InputChannels = 4
ASIO_OpenAndQueryDeviceInfo: OutputChannels = 4
ASIOCanSampleRate: possible sample rate = 44100
channelInfos[0].type (sampleformat) = 18
channelInfos[1].type (sampleformat) = 18
channelInfos[2].type (sampleformat) = 18
channelInfos[3].type (sampleformat) = 18
ASIO_OpenAndQueryDeviceInfo: driver opened.
AudioOutputDeviceAsio::ParameterSampleRate::PossibilitiesAsInt
ASIO_OpenAndQueryDeviceInfo driverName='JackRouter' current='JackRouter'
asioDriver ALREADY OPENED, DOING NOTHING !
AudioOutputDeviceAsio::ParameterSampleRate::PossibilitiesAsInt samplerate[0]=441
00
AudioOutputDeviceAsio::AudioOutputDeviceAsio constructor
ASIO_OpenAndQueryDeviceInfo driverName='JackRouter' current='JackRouter'
Before ASIO_loadAsioDriver('JackRouter')
ASIO_loadAsioDriver: trying to load 'JackRouter'
Stop ASIO Jack
Stop ASIO Jack
Destructor
no message buffer overruns
Constructor
Before ASIOInit()
Init ASIO Jack
Before ASIOGetChannels()
Before ASIOGetBufferSize()
ASIO_OpenAndQueryDeviceInfo: InputChannels = 4
ASIO_OpenAndQueryDeviceInfo: OutputChannels = 4
ASIOCanSampleRate: possible sample rate = 44100
channelInfos[0].type (sampleformat) = 18
channelInfos[1].type (sampleformat) = 18
channelInfos[2].type (sampleformat) = 18
channelInfos[3].type (sampleformat) = 18
ASIO_OpenAndQueryDeviceInfo: driver opened.
AudioOutputDeviceAsio::AudioOutputDeviceAsio: after ASIO_OpenAndQueryDeviceInfo
AudioOutputDeviceAsio::AudioOutputDeviceAsio: after ASIOSetSampleRate
AudioOutputDeviceAsio::AudioOutputDeviceAsio: after ASIOOutputReady
asioMessages selector=7 value=0
AudioOutputDeviceAsio::AudioOutputDeviceAsio: after ASIOCreateBuffers
AudioOutputDeviceAsio::Play() !
Start ASIO Jack
AudioOutputDeviceAsio::SampleRate value=44100
AudioOutputDeviceAsio::ParameterCard::PossibilitiesAsString:
getAsioDriverNames: ASIO driver list already loaded, doing returning cached list
.
AudioOutputDeviceAsio::ParameterCard::DefaultAsString='ASIO4ALL v2'
AudioOutputDeviceAsio::ParameterCard::PossibilitiesAsString:
getAsioDriverNames: ASIO driver list already loaded, doing returning cached list
.
AudioOutputDeviceAsio::ParameterCard::DefaultAsString='ASIO4ALL v2'
AudioOutputDeviceAsio::ParameterCard::PossibilitiesAsString:
getAsioDriverNames: ASIO driver list already loaded, doing returning cached list
.
AudioOutputDeviceAsio::ParameterCard::DefaultAsString='ASIO4ALL v2'
AudioOutputDeviceAsio::ParameterCard::PossibilitiesAsString:
getAsioDriverNames: ASIO driver list already loaded, doing returning cached list
.
AudioOutputDeviceAsio::ParameterCard::DefaultAsString='ASIO4ALL v2'
AudioOutputDeviceAsio::ParameterChannels::DefaultAsInt
ASIO_OpenAndQueryDeviceInfo driverName='ASIO4ALL v2' current='JackRouter'
driverName != currentAsioDriverName , new asio driver specified, opening device

ggoodesa
Advanced User
Posts: 116
Joined: Thu Aug 14, 2008 6:48 pm

Re: Possible bug with ASIO interfaces with CVS Build

Post by ggoodesa » Tue Mar 10, 2009 2:24 pm

Hi,
I would like to know if ANYONE else has experienced this issue as it is preventing me from working on/completing a community project for Virtual Theater Pipe Organs in Windows. We need to use Jackd with the Jack ASIO interface and cannot do so.
GrahamG

sbenno
Developer
Posts: 80
Joined: Wed Jan 23, 2008 8:30 pm

Re: Possible bug with ASIO interfaces with CVS Build

Post by sbenno » Tue Mar 24, 2009 3:53 pm

Hi Graham,
sorry for the late answer.
Question: did older LinuxSampler version work correctly (picking the right ASIO driver) for you ? (for example the official old windows release).
if yes then probably it is due to some changes that were made in the ASIO code. (I wrote the original driver but haven't touched it further).
Andreas any thoughts ?

ggoodesa
Advanced User
Posts: 116
Joined: Thu Aug 14, 2008 6:48 pm

Re: Possible bug with ASIO interfaces with CVS Build

Post by ggoodesa » Tue Mar 24, 2009 7:16 pm

Hi Benno,
As far as I can recall when I first ran into this issue the original windows release version worked fine. Take a look at the comments in the bug ticket, I think I mentioned that there. I'm at work now so will try the original version again when I get home and double confirm then. Thanks!
GrahamG

Andreas
Developer
Posts: 214
Joined: Sun Feb 03, 2008 8:33 am

Re: Possible bug with ASIO interfaces with CVS Build

Post by Andreas » Tue Mar 24, 2009 7:54 pm

sbenno wrote:if yes then probably it is due to some changes that were made in the ASIO code. (I wrote the original driver but haven't touched it further).
Andreas any thoughts ?
The ASIO code (AudioOutputDeviceAsio.cpp/.h) has almost not been touched at all since your version. The only change is a trivial memory handling fix (delete => delete[] for an array).

ggoodesa
Advanced User
Posts: 116
Joined: Thu Aug 14, 2008 6:48 pm

Re: Possible bug with ASIO interfaces with CVS Build

Post by ggoodesa » Tue Mar 24, 2009 7:56 pm

Hi again,
Yes, in the original release version for Windows (0.5.1), ASIO works fine with more than one ASIO device when using the ASIO device that is second in alphabetical order. So the assumption is that something 'new' has either messed the ASIO driver up or is not reference properly by the ASIO driver.
GrahamG

ggoodesa
Advanced User
Posts: 116
Joined: Thu Aug 14, 2008 6:48 pm

Re: Possible bug with ASIO interfaces with CVS Build

Post by ggoodesa » Tue Apr 07, 2009 6:05 pm

Hi,
Andreas posted two patches to the bug (#117) that apparently were part of the original release. Applying them to the CVS version of LinuxSampler has allowed me to use the (alphabetically ordered) second ASIO device. Still doing some testing but so far it's looking good.
GrahamG

Post Reply