Skip to content
Snippets Groups Projects
Select Git revision
  • 720e0434fd5d7465fc8689beda4c7cdceb9562b2
  • master default
  • Qt6
  • midi
  • 1.4.7-EndOfLife
  • devel_continuedAsMaster
  • stable_closed
  • v2.0.2
  • v2.0.0
  • Version_1.4.7
  • Version_1.2.7
11 results

asiodrvr.h

Blame
  • asiodrvr.h 2.21 KiB
    /*
    	Steinberg Audio Stream I/O API
    	(c) 1996, Steinberg Soft- und Hardware GmbH
    	charlie (May 1996)
    
    	asiodrvr.h
    	c++ superclass to implement asio functionality. from this,
    	you can derive whatever required
    */
    
    #ifndef _asiodrvr_
    #define _asiodrvr_
    
    // cpu and os system we are running on
    #include "asiosys.h"
    // basic "C" interface
    #include "asio.h"
    
    class AsioDriver;
    extern AsioDriver *getDriver();		// for generic constructor 
    
    #if WINDOWS
    #include <windows.h>
    #include "combase.h"
    #include "iasiodrv.h"
    class AsioDriver : public IASIO ,public CUnknown
    {
    public:
    	AsioDriver(LPUNKNOWN pUnk, HRESULT *phr);
    
    	DECLARE_IUNKNOWN
    	// Factory method
    	static CUnknown *CreateInstance(LPUNKNOWN pUnk, HRESULT *phr);
    	// IUnknown
    	virtual HRESULT STDMETHODCALLTYPE NonDelegatingQueryInterface(REFIID riid,void **ppvObject);
    
    #else
    
    class AsioDriver
    {
    public:
    	AsioDriver();
    #endif
    	virtual ~AsioDriver();
    
    	virtual ASIOBool init(void* sysRef);
    	virtual void getDriverName(char *name);	// max 32 bytes incl. terminating zero
    	virtual long getDriverVersion();
    	virtual void getErrorMessage(char *string);	// max 124 bytes incl.
    
    	virtual ASIOError start();
    	virtual ASIOError stop();
    
    	virtual ASIOError getChannels(long *numInputChannels, long *numOutputChannels);
    	virtual ASIOError getLatencies(long *inputLatency, long *outputLatency);
    	virtual ASIOError getBufferSize(long *minSize, long *maxSize,
    		long *preferredSize, long *granularity);
    
    	virtual ASIOError canSampleRate(ASIOSampleRate sampleRate);
    	virtual ASIOError getSampleRate(ASIOSampleRate *sampleRate);
    	virtual ASIOError setSampleRate(ASIOSampleRate sampleRate);
    	virtual ASIOError getClockSources(ASIOClockSource *clocks, long *numSources);
    	virtual ASIOError setClockSource(long reference);
    
    	virtual ASIOError getSamplePosition(ASIOSamples *sPos, ASIOTimeStamp *tStamp);
    	virtual ASIOError getChannelInfo(ASIOChannelInfo *info);
    
    	virtual ASIOError createBuffers(ASIOBufferInfo *bufferInfos, long numChannels,
    		long bufferSize, ASIOCallbacks *callbacks);
    	virtual ASIOError disposeBuffers();
    
    	virtual ASIOError controlPanel();
    	virtual ASIOError future(long selector, void *opt);
    	virtual ASIOError outputReady();
    };
    #endif