Initial import
git-svn-id: http://moon:8086/svn/software/trunk/libsrc/asiosdk2@1 b431acfa-c32f-4a4a-93f1-934dc6c82436
This commit is contained in:
Executable
+148
@@ -0,0 +1,148 @@
|
||||
/*
|
||||
Steinberg Audio Stream I/O API
|
||||
(c) 1999, Steinberg Soft- und Hardware GmbH
|
||||
|
||||
asiosmpl.h
|
||||
|
||||
test implementation of asio
|
||||
*/
|
||||
|
||||
#ifndef _asiosmpl_
|
||||
#define _asiosmpl_
|
||||
|
||||
#include "asiosys.h"
|
||||
|
||||
#define TESTWAVES 1
|
||||
// when true, will feed the left input (to host) with
|
||||
// a sine wave, and the right one with a sawtooth
|
||||
|
||||
enum
|
||||
{
|
||||
kBlockFrames = 256,
|
||||
kNumInputs = 16,
|
||||
kNumOutputs = 16
|
||||
};
|
||||
|
||||
#if WINDOWS
|
||||
|
||||
#include "rpc.h"
|
||||
#include "rpcndr.h"
|
||||
#ifndef COM_NO_WINDOWS_H
|
||||
#include <windows.h>
|
||||
#include "ole2.h"
|
||||
#endif
|
||||
|
||||
#include "combase.h"
|
||||
#include "iasiodrv.h"
|
||||
|
||||
class AsioSample : public IASIO, public CUnknown
|
||||
{
|
||||
public:
|
||||
AsioSample(LPUNKNOWN pUnk, HRESULT *phr);
|
||||
~AsioSample();
|
||||
|
||||
DECLARE_IUNKNOWN
|
||||
//STDMETHODIMP QueryInterface(REFIID riid, void **ppv) { \
|
||||
// return GetOwner()->QueryInterface(riid,ppv); \
|
||||
//}; \
|
||||
//STDMETHODIMP_(ULONG) AddRef() { \
|
||||
// return GetOwner()->AddRef(); \
|
||||
//}; \
|
||||
//STDMETHODIMP_(ULONG) Release() { \
|
||||
// return GetOwner()->Release(); \
|
||||
//};
|
||||
|
||||
// Factory method
|
||||
static CUnknown *CreateInstance(LPUNKNOWN pUnk, HRESULT *phr);
|
||||
// IUnknown
|
||||
virtual HRESULT STDMETHODCALLTYPE NonDelegatingQueryInterface(REFIID riid,void **ppvObject);
|
||||
#else
|
||||
|
||||
#include "asiodrvr.h"
|
||||
|
||||
//---------------------------------------------------------------------------------------------
|
||||
class AsioSample : public AsioDriver
|
||||
{
|
||||
public:
|
||||
AsioSample ();
|
||||
~AsioSample ();
|
||||
#endif
|
||||
|
||||
ASIOBool init (void* sysRef);
|
||||
void getDriverName (char *name); // max 32 bytes incl. terminating zero
|
||||
long getDriverVersion ();
|
||||
void getErrorMessage (char *string); // max 128 bytes incl.
|
||||
|
||||
ASIOError start ();
|
||||
ASIOError stop ();
|
||||
|
||||
ASIOError getChannels (long *numInputChannels, long *numOutputChannels);
|
||||
ASIOError getLatencies (long *inputLatency, long *outputLatency);
|
||||
ASIOError getBufferSize (long *minSize, long *maxSize,
|
||||
long *preferredSize, long *granularity);
|
||||
|
||||
ASIOError canSampleRate (ASIOSampleRate sampleRate);
|
||||
ASIOError getSampleRate (ASIOSampleRate *sampleRate);
|
||||
ASIOError setSampleRate (ASIOSampleRate sampleRate);
|
||||
ASIOError getClockSources (ASIOClockSource *clocks, long *numSources);
|
||||
ASIOError setClockSource (long index);
|
||||
|
||||
ASIOError getSamplePosition (ASIOSamples *sPos, ASIOTimeStamp *tStamp);
|
||||
ASIOError getChannelInfo (ASIOChannelInfo *info);
|
||||
|
||||
ASIOError createBuffers (ASIOBufferInfo *bufferInfos, long numChannels,
|
||||
long bufferSize, ASIOCallbacks *callbacks);
|
||||
ASIOError disposeBuffers ();
|
||||
|
||||
ASIOError controlPanel ();
|
||||
ASIOError future (long selector, void *opt);
|
||||
ASIOError outputReady ();
|
||||
|
||||
void bufferSwitch ();
|
||||
long getMilliSeconds () {return milliSeconds;}
|
||||
|
||||
private:
|
||||
friend void myTimer();
|
||||
|
||||
bool inputOpen ();
|
||||
#if TESTWAVES
|
||||
void makeSine (short *wave);
|
||||
void makeSaw (short *wave);
|
||||
#endif
|
||||
void inputClose ();
|
||||
void input ();
|
||||
|
||||
bool outputOpen ();
|
||||
void outputClose ();
|
||||
void output ();
|
||||
|
||||
void timerOn ();
|
||||
void timerOff ();
|
||||
void bufferSwitchX ();
|
||||
|
||||
double samplePosition;
|
||||
double sampleRate;
|
||||
ASIOCallbacks *callbacks;
|
||||
ASIOTime asioTime;
|
||||
ASIOTimeStamp theSystemTime;
|
||||
short *inputBuffers[kNumInputs * 2];
|
||||
short *outputBuffers[kNumOutputs * 2];
|
||||
#if TESTWAVES
|
||||
short *sineWave, *sawTooth;
|
||||
#endif
|
||||
long inMap[kNumInputs];
|
||||
long outMap[kNumOutputs];
|
||||
long blockFrames;
|
||||
long inputLatency;
|
||||
long outputLatency;
|
||||
long activeInputs;
|
||||
long activeOutputs;
|
||||
long toggle;
|
||||
long milliSeconds;
|
||||
bool active, started;
|
||||
bool timeInfoMode, tcRead;
|
||||
char errorMessage[128];
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user