Home Information Classes Download Usage Mail List Requirements Links FAQ Tutorial

RtWvIn.h
1 #ifndef STK_RTWVIN_H
2 #define STK_RTWVIN_H
3
4 #include "WvIn.h"
5 #include "RtAudio.h"
6 #include "Mutex.h"
7
8 namespace stk {
9
10 /***************************************************/
29 /***************************************************/
30
31 class RtWvIn : public WvIn
32 {
33 public:
35
42 RtWvIn( unsigned int nChannels = 1, StkFloat sampleRate = Stk::sampleRate(),
43 int device = 0, int bufferFrames = RT_BUFFER_SIZE, int nBuffers = 20 );
44
46 ~RtWvIn();
47
49
53 void start( void );
54
56
60 void stop( void );
61
63
72 StkFloat lastOut( unsigned int channel = 0 );
73
75
84 StkFloat tick( unsigned int channel = 0 );
85
87
95 StkFrames& tick( StkFrames& frames, unsigned int channel = 0 );
96
97 // This function is not intended for general use but must be
98 // public for access from the audio callback function.
99 void fillBuffer( void *buffer, unsigned int nFrames );
100
101 protected:
102
103 RtAudio adc_;
104 Mutex mutex_;
105 bool stopped_;
106 unsigned int readIndex_;
107 unsigned int writeIndex_;
108 unsigned int framesFilled_;
109
110 };
111
112 inline StkFloat RtWvIn :: lastOut( unsigned int channel )
113 {
114 #if defined(_STK_DEBUG_)
115 if ( channel >= data_.channels() ) {
116 oStream_ << "RtWvIn::lastOut(): channel argument and audio stream are incompatible!";
117 handleError( StkError::FUNCTION_ARGUMENT );
118 }
119 #endif
120
121 return lastFrame_[channel];
122 }
123
124 } // stk namespace
125
126 #endif

The Synthesis ToolKit in C++ (STK)
©1995--2017 Perry R. Cook and Gary P. Scavone. All Rights Reserved.