2 Steinberg Audio Stream I/O API
\r
3 (c) 1996, Steinberg Soft- und Hardware GmbH
\r
7 c++ superclass to implement asio functionality. from this,
\r
8 you can derive whatever required
\r
14 // cpu and os system we are running on
\r
15 #include "asiosys.h"
\r
16 // basic "C" interface
\r
20 extern AsioDriver *getDriver(); // for generic constructor
\r
23 #include <windows.h>
\r
24 #include "combase.h"
\r
25 #include "iasiodrv.h"
\r
26 class AsioDriver : public IASIO ,public CUnknown
\r
29 AsioDriver(LPUNKNOWN pUnk, HRESULT *phr);
\r
33 static CUnknown *CreateInstance(LPUNKNOWN pUnk, HRESULT *phr);
\r
35 virtual HRESULT STDMETHODCALLTYPE NonDelegatingQueryInterface(REFIID riid,void **ppvObject);
\r
44 virtual ~AsioDriver();
\r
46 virtual ASIOBool init(void* sysRef);
\r
47 virtual void getDriverName(char *name); // max 32 bytes incl. terminating zero
\r
48 virtual long getDriverVersion();
\r
49 virtual void getErrorMessage(char *string); // max 124 bytes incl.
\r
51 virtual ASIOError start();
\r
52 virtual ASIOError stop();
\r
54 virtual ASIOError getChannels(long *numInputChannels, long *numOutputChannels);
\r
55 virtual ASIOError getLatencies(long *inputLatency, long *outputLatency);
\r
56 virtual ASIOError getBufferSize(long *minSize, long *maxSize,
\r
57 long *preferredSize, long *granularity);
\r
59 virtual ASIOError canSampleRate(ASIOSampleRate sampleRate);
\r
60 virtual ASIOError getSampleRate(ASIOSampleRate *sampleRate);
\r
61 virtual ASIOError setSampleRate(ASIOSampleRate sampleRate);
\r
62 virtual ASIOError getClockSources(ASIOClockSource *clocks, long *numSources);
\r
63 virtual ASIOError setClockSource(long reference);
\r
65 virtual ASIOError getSamplePosition(ASIOSamples *sPos, ASIOTimeStamp *tStamp);
\r
66 virtual ASIOError getChannelInfo(ASIOChannelInfo *info);
\r
68 virtual ASIOError createBuffers(ASIOBufferInfo *bufferInfos, long numChannels,
\r
69 long bufferSize, ASIOCallbacks *callbacks);
\r
70 virtual ASIOError disposeBuffers();
\r
72 virtual ASIOError controlPanel();
\r
73 virtual ASIOError future(long selector, void *opt);
\r
74 virtual ASIOError outputReady();
\r