Bug 117 - Wrong ASIO interface loaded when using multiple ASIO drivers
Summary: Wrong ASIO interface loaded when using multiple ASIO drivers
Status: CLOSED FIXED
Alias: None
Product: LinuxSampler
Classification: Unclassified
Component: other (show other bugs)
Version: SVN Trunk
Hardware: PC Windows XP
: P2 critical
Assignee: Christian Schoenebeck
URL:
Depends on:
Blocks:
 
Reported: 2009-02-11 08:45 CET by Graham Goode
Modified: 2009-11-01 18:03 CET (History)
0 users

See Also:


Attachments
disable windows memory locking (796 bytes, patch)
2009-04-05 17:54 CEST, Andreas Persson
Details
update of the asio device (6.98 KB, patch)
2009-04-05 17:59 CEST, Andreas Persson
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Graham Goode 2009-02-11 08:45:25 CET
I'm using the CVS source of Dec 22nd 2008, built with MinGW/MSYS on WinXP Prof.
Linuxsampler and Fantasia-0.8a-cvs6.jar work fine with one ASIO device, but when
there is more than one ASIO device on the computer and the second device is
selected in the Audio device creation in Fantasia, the first device is
incorrectly loaded and cannot be accessed. The device order is alphabetical.

For example, on my laptop I have Jackdmp with the Jack ASIO device driver and
the ASIO4ALL v2.9 driver. When selecting ASIO4ALL, everything works fine. When
selecting Jack ASIO, the linuxsampler console reports that ASIO4ALL has been
loaded, but the ASIO4ALL configuration interface is not activated.
The same error happens when attempting to use the KX-ASIO drivers when either
ASIO4ALL or Jack ASIO are installed.

Here is the linuxsampler console output showing the confusion:

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
....
different asioDriver ALREADY OPENED, closing old one !
Stop ASIO Jack
Stop ASIO Jack
Destructor
no message buffer overruns
Before ASIO_loadAsioDriver('ASIO4ALL v2')
ASIO_loadAsioDriver: trying to load 'ASIO4ALL v2'
Before ASIOInit()
Before ASIOGetChannels()
Before ASIOGetBufferSize()
ASIO_OpenAndQueryDeviceInfo: InputChannels = 2
ASIO_OpenAndQueryDeviceInfo: OutputChannels = 8
ASIOCanSampleRate: possible sample rate = 8000
ASIOCanSampleRate: possible sample rate = 9600
ASIOCanSampleRate: possible sample rate = 11025
ASIOCanSampleRate: possible sample rate = 12000
ASIOCanSampleRate: possible sample rate = 16000
ASIOCanSampleRate: possible sample rate = 22050
ASIOCanSampleRate: possible sample rate = 24000
ASIOCanSampleRate: possible sample rate = 32000
ASIOCanSampleRate: possible sample rate = 44100
ASIOCanSampleRate: possible sample rate = 48000
ASIOCanSampleRate: possible sample rate = 88200
ASIOCanSampleRate: possible sample rate = 96000
channelInfos[0].type (sampleformat) = 18
channelInfos[1].type (sampleformat) = 18
channelInfos[2].type (sampleformat) = 18
channelInfos[3].type (sampleformat) = 18
channelInfos[4].type (sampleformat) = 18
channelInfos[5].type (sampleformat) = 18
channelInfos[6].type (sampleformat) = 18
channelInfos[7].type (sampleformat) = 18
ASIO_OpenAndQueryDeviceInfo: driver opened.
AudioOutputDeviceAsio::ParameterChannels::DefaultAsInt returning 8
AudioOutputDeviceAsio::ParameterFragmentSize::DefaultAsInt!
AudioOutputDeviceAsio::ParameterFragmentSize::DefaultAsInt returning optional<in
t>::nothing (no CARD parameter supplied
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::ParameterFragmentSize::DefaultAsInt!
ASIO_OpenAndQueryDeviceInfo driverName='ASIO4ALL v2' current='ASIO4ALL v2'
asioDriver ALREADY OPENED, DOING NOTHING !
AudioOutputDeviceAsio::ParameterFragmentSize::DefaultAsInt returning 512
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'
ASIO_OpenAndQueryDeviceInfo driverName='ASIO4ALL v2' current='ASIO4ALL v2'
asioDriver ALREADY OPENED, DOING NOTHING !
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::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='ASIO4ALL v2'
asioDriver ALREADY OPENED, DOING NOTHING !
AudioOutputDeviceAsio::ParameterChannels::DefaultAsInt returning 8
AudioOutputDeviceAsio::ParameterFragmentSize::DefaultAsInt!
AudioOutputDeviceAsio::ParameterFragmentSize::DefaultAsInt returning optional<in
t>::nothing (no CARD parameter supplied
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::ParameterFragmentSize::DefaultAsInt!
ASIO_OpenAndQueryDeviceInfo driverName='ASIO4ALL v2' current='ASIO4ALL v2'
asioDriver ALREADY OPENED, DOING NOTHING !
AudioOutputDeviceAsio::ParameterFragmentSize::DefaultAsInt returning 512
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'
ASIO_OpenAndQueryDeviceInfo driverName='ASIO4ALL v2' current='ASIO4ALL v2'
asioDriver ALREADY OPENED, DOING NOTHING !
AudioOutputDeviceAsio::ParameterChannels::DefaultAsInt
AudioOutputDeviceAsio::ParameterChannels::DefaultAsInt returning optional<int>::
nothing (CARD parameter not supplied)
AudioOutputDeviceAsio::ParameterChannels::RangeMinAsInt!
AudioOutputDeviceAsio::ParameterChannels::RangeMinAsInt returning optional<int>:
:nothing (CARD parameter not supplied)
AudioOutputDeviceAsio::ParameterChannels::RangeMaxAsInt!
AudioOutputDeviceAsio::ParameterChannels::RangeMaxAsInt returning optional<int>:
:nothing (CARD parameter not supplied)
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='ASIO4ALL v2'
asioDriver ALREADY OPENED, DOING NOTHING !
AudioOutputDeviceAsio::ParameterChannels::DefaultAsInt returning 8
AudioOutputDeviceAsio::ParameterFragmentSize::DefaultAsInt!
AudioOutputDeviceAsio::ParameterFragmentSize::DefaultAsInt returning optional<in
t>::nothing (no CARD parameter supplied
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::ParameterFragmentSize::DefaultAsInt!
ASIO_OpenAndQueryDeviceInfo driverName='ASIO4ALL v2' current='ASIO4ALL v2'
asioDriver ALREADY OPENED, DOING NOTHING !
AudioOutputDeviceAsio::ParameterFragmentSize::DefaultAsInt returning 512
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'
ASIO_OpenAndQueryDeviceInfo driverName='ASIO4ALL v2' current='ASIO4ALL v2'
asioDriver ALREADY OPENED, DOING NOTHING !
AudioOutputDeviceAsio::ParameterFragmentSize::DefaultAsInt!
AudioOutputDeviceAsio::ParameterFragmentSize::DefaultAsInt returning optional<in
t>::nothing (no CARD parameter supplied
AudioOutputDeviceAsio::ParameterFragmentSize::RangeMinAsInt!
AudioOutputDeviceAsio::ParameterFragmentSize::RangeMinAsInt returning optional<i
nt>::nothing (no CARD parameter supplied
AudioOutputDeviceAsio::ParameterFragmentSize::RangeMaxAsInt!
AudioOutputDeviceAsio::ParameterFragmentSize::RangeMaxAsInt returning optional<i
nt>::nothing (no CARD parameter supplied
AudioOutputDeviceAsio::ParameterFragmentSize::PossibilitiesAsInt!
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='ASIO4ALL v2'
asioDriver ALREADY OPENED, DOING NOTHING !
AudioOutputDeviceAsio::ParameterChannels::DefaultAsInt returning 8
AudioOutputDeviceAsio::ParameterFragmentSize::DefaultAsInt!
AudioOutputDeviceAsio::ParameterFragmentSize::DefaultAsInt returning optional<in
t>::nothing (no CARD parameter supplied
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::ParameterFragmentSize::DefaultAsInt!
ASIO_OpenAndQueryDeviceInfo driverName='ASIO4ALL v2' current='ASIO4ALL v2'
asioDriver ALREADY OPENED, DOING NOTHING !
AudioOutputDeviceAsio::ParameterFragmentSize::DefaultAsInt returning 512
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'
ASIO_OpenAndQueryDeviceInfo driverName='ASIO4ALL v2' current='ASIO4ALL v2'
asioDriver ALREADY OPENED, DOING NOTHING !
AudioOutputDeviceAsio::ParameterSampleRate::DefaultAsInt returning optional<int>
::nothing  (parameter CARD not supplied)
AudioOutputDeviceAsio::ParameterSampleRate::PossibilitiesAsInt
AudioOutputDeviceAsio::ParameterSampleRate::PossibilitiesAsInt returning empty v
ector  (parameter CARD not supplied)
AudioOutputDeviceAsio::SampleRate value=44100
AudioOutputDeviceAsio::SampleRate value=44100
Starting disk thread...OK
Scheduling 'C:\TPO-Ranks\ConcertFlute-Mono-Wurli-JoeHardy.gig' (Index=0) to be l
oaded in background (if not loaded yet).
Loading gig file 'C:\TPO-Ranks\ConcertFlute-Mono-Wurli-JoeHardy.gig'...OK
Loading gig instrument ('C:\TPO-Ranks\ConcertFlute-Mono-Wurli-JoeHardy.gig',0)..
.OK
Caching initial samples...OK
Comment 1 Graham Goode 2009-02-12 06:43:51 CET
I've built a fresh linuxsampler using the most recent SVN version (10thFeb 2009)
and still have the issue. Tried it on a number of computers and have the same
problem on all of them. This ia a 'show stopper' when trying to use linuxsampler
on a computer with Adobe audio products and the 'Adobe Default Windows Sound'
loads in linuxsampler (it is the 1st alphabetically) so the ASIO interface of
the soundcard or of ASIO4ALL is not accessable.
Comment 2 Andreas Persson 2009-04-05 17:54:49 CEST
Created attachment 50 [details]
disable windows memory locking

This patch, which actually is included in the old installer version of LS,
solved some serious problems I had with the ASIO driver
Comment 3 Andreas Persson 2009-04-05 17:59:35 CEST
Created attachment 51 [details]
update of the asio device

This patch was also included in the old installer version of LS.

Graham, It would be great if you could try these patches to see if any of them
solves your problem.

The second one didn't make any difference for me, the first one was enough to
solve the problems I had. But my problems wasn't the same as the one you had.
(I only have one ASIO device).

The first problem I had was that playing a midi file in Media Player crashed
the whole machine with a BSOD in the graphics driver. The second problem was
that ASIO often failed to initialize, so there was no sound, and the computer
had to be rebooted to make the ASIO device working again.
Comment 4 Graham Goode 2009-04-07 18:49:21 CEST
> This patch was also included in the old installer version of LS.
> 
> Graham, It would be great if you could try these patches to see if any of them
> solves your problem.

Hi, I have applied the patches and built from the latest CVS code and have the
second ASIO device working in Fantasia. I want to do a little more testing but
so far this is looking like the bug is resolved. Any idea why these patches
needed to be re-applied - or were they not included in the CVS version even
though they were included in the old installer version?
Thanks!
GrahamG
Comment 5 Andreas Persson 2009-04-16 18:48:54 CEST
(In reply to comment #4)
> Any idea why these patches needed to be re-applied - or were they not
> included in the CVS version even though they were included in the old
> installer version?

They were included in the old installer, but never got committed to CVS. I don't
know why for sure, but I guess it was just a mistake, that Benno simply forgot
to commit them.
Comment 6 Graham Goode 2009-04-16 19:38:45 CEST
(In reply to comment #5)
> They were included in the old installer, but never got committed to CVS. I don't
> know why for sure, but I guess it was just a mistake, that Benno simply forgot
> to commit them.
Ok, I don't know how to commit, so could you commit these patches and then see
if can get a few more testers trying it out - then set this bug to resolved so
that the next release can begin.

Comment 7 Andreas Persson 2009-04-18 11:28:56 CEST
OK. I've committed Benno's fixes now. As they already are included in the
installer, I think one can say that they are tested, so I close this bug.
Comment 8 Christian Schoenebeck 2009-11-01 18:03:53 CET
Closing this bug now, since it's fixed in the latest Windows release
(2009-08-03).