0
0

Is there a way we can access the IASIO instance of FMOD ?

For example i now use this in my app:[code:1042s3ii]
//AsioDrivers is a VCL ComboBox
AsioList = new AsioDriverList();
LPASIODRVSTRUCT lpdrv = AsioList->lpdrvlist;
while (lpdrv) {
AsioDrivers->Items->Append(lpdrv->drvname);
lpdrv = lpdrv->next;
}

// when click button open selected driver controlpanel
if (AsioDrivers->ItemIndex >= 0) {
IASIO* theAsioDriver;
AsioList->asioOpenDriver(AsioDrivers->ItemIndex, (void **)&theAsioDriver);
theAsioDriver->controlPanel();
AsioList->asioCloseDriver(AsioDrivers->ItemIndex);
}[/code:1042s3ii]
But ofcourse that closes the ASIO driver.

Now above was only a test and there are a lot more features:
init(void *sysHandle)
getDriverName(char *name)
getDriverVersion()
getErrorMessage(char *string)
start()
stop()
getChannels(long *numInputChannels, long *numOutputChannels)
getLatencies(long *inputLatency, long *outputLatency)
getBufferSize(long *minSize, long *maxSize, long *preferredSize, long *granularity)
canSampleRate(ASIOSampleRate sampleRate)
getSampleRate(ASIOSampleRate *sampleRate)
setSampleRate(ASIOSampleRate sampleRate)
getClockSources(ASIOClockSource *clocks, long *numSources)
setClockSource(long reference)
getSamplePosition(ASIOSamples *sPos, ASIOTimeStamp *tStamp)
getChannelInfo(ASIOChannelInfo *info)
createBuffers(ASIOBufferInfo *bufferInfos, long numChannels, long bufferSize, ASIOCallbacks *callbacks)
disposeBuffers()
controlPanel()
future(long selector,void *opt)
outputReady()

Ofcourse we don’t need them all, but it not possible with something like FSOUND_GetIASIO(int Drv); can it then be added to the next FMOD ?

  • You must to post comments
0
0

i use the asiosdk2\host\pc\asiolist.h to enumerate them[code:38f4fbd2]struct asiodrvstruct
{
int drvID;
CLSID clsid;
char dllpath[MAXPATHLEN];
char drvname[MAXDRVNAMELEN];
LPVOID asiodrv;
struct asiodrvstruct *next;
};

typedef struct asiodrvstruct ASIODRVSTRUCT;
typedef ASIODRVSTRUCT *LPASIODRVSTRUCT;[/code:38f4fbd2]
And the asiosdk2\common\iasiodrv.h contains the driver functions.

So what do you mean with[quote:38f4fbd2]returns the “AsioDriverList” pointer[/quote:38f4fbd2]Which class or struct does FMOD return on FSOUND_GetOutputHandle ?

  • You must to post comments
0
0

[code:39r4qd0b]AsioList = (LPASIODRIVERLIST)Player1->FMOD->FSOUND_GetOutputHandle();[/code:39r4qd0b]

Hmm this only works if the current output is ASIO.
Can you provide a function in the DLL so that access to the DriverList is always accessible ?

  • You must to post comments
0
0

nm found a work around and it seems to work.

[code:57gfsylz]FSOUND_Init()
GetHandle();
FSOUND_Close()[/code:57gfsylz]
And then open the app.

I know it’s a bad way, but it’s better then writing the whole code yourself and have conflicts when FMOD has 1 ASIO driver opened 😛

  • You must to post comments
Showing 3 results
Your Answer

Please first to submit.