81 typedef float StkFloat;
104 PROCESS_SOCKET_IPADDR,
111 std::string message_;
116 StkError(
const std::string& message, Type type = StkError::UNSPECIFIED)
117 : message_(message), type_(type) {}
125 std::ostream* out = &std::cout;
127 std::ostream* out = &std::cerr;
129 *out <<
'\n' << message_ <<
"\n\n";
133 virtual const Type&
getType(
void) {
return type_; }
136 virtual const std::string&
getMessage(
void) {
return message_; }
147 typedef unsigned long StkFormat;
196 static void swap16(
unsigned char *ptr );
199 static void swap32(
unsigned char *ptr );
202 static void swap64(
unsigned char *ptr );
205 static void sleep(
unsigned long milliseconds );
208 static bool inRange( StkFloat value, StkFloat min, StkFloat max ) {
209 if ( value < min )
return false;
210 else if ( value > max )
return false;
215 static void handleError(
const char *message, StkError::Type type );
218 static void handleError( std::string message, StkError::Type type );
227 static StkFloat srate_;
228 static std::string rawwavepath_;
229 static bool showWarnings_;
230 static bool printErrors_;
231 static std::vector<Stk *> alertList_;
235 static std::ostringstream oStream_;
236 bool ignoreSampleRateChange_;
291 StkFrames(
unsigned int nFrames = 0,
unsigned int nChannels = 0 );
294 StkFrames(
const StkFloat& value,
unsigned int nFrames,
unsigned int nChannels );
353 StkFloat&
operator() (
size_t frame,
unsigned int channel );
361 StkFloat
operator() (
size_t frame,
unsigned int channel )
const;
370 StkFloat
interpolate( StkFloat frame,
unsigned int channel = 0 )
const;
373 size_t size()
const {
return size_; };
386 void resize(
size_t nFrames,
unsigned int nChannels = 1 );
396 void resize(
size_t nFrames,
unsigned int nChannels, StkFloat value );
415 unsigned int channels(
void )
const {
return nChannels_; };
418 unsigned int frames(
void )
const {
return (
unsigned int)nFrames_; };
432 StkFloat
dataRate(
void )
const {
return dataRate_; };
439 unsigned int nChannels_;
447 if ( size_ > 0 )
return false;
453 #if defined(_STK_DEBUG_)
455 std::ostringstream error;
456 error <<
"StkFrames::operator[]: invalid index (" << n <<
") value!";
466 #if defined(_STK_DEBUG_)
468 std::ostringstream error;
469 error <<
"StkFrames::operator[]: invalid index (" << n <<
") value!";
479 #if defined(_STK_DEBUG_)
480 if ( frame >= nFrames_ || channel >= nChannels_ ) {
481 std::ostringstream error;
482 error <<
"StkFrames::operator(): invalid frame (" << frame <<
") or channel (" << channel <<
") value!";
487 return data_[ frame * nChannels_ + channel ];
492 #if defined(_STK_DEBUG_)
493 if ( frame >= nFrames_ || channel >= nChannels_ ) {
494 std::ostringstream error;
495 error <<
"StkFrames::operator(): invalid frame (" << frame <<
") or channel (" << channel <<
") value!";
500 return data_[ frame * nChannels_ + channel ];
505 #if defined(_STK_DEBUG_)
507 std::ostringstream error;
508 error <<
"StkFrames::operator+: frames argument must be of equal dimensions!";
512 StkFrames sum((
unsigned int)nFrames_,nChannels_);
513 StkFloat *sumPtr = &sum[0];
514 const StkFloat *fptr = f.data_;
515 const StkFloat *dPtr = data_;
516 for (
unsigned int i = 0; i < size_; i++) {
517 *sumPtr++ = *fptr++ + *dPtr++;
524 #if defined(_STK_DEBUG_)
526 std::ostringstream error;
527 error <<
"StkFrames::operator+=: frames argument must be of equal dimensions!";
532 StkFloat *fptr = &f[0];
533 StkFloat *dptr = data_;
534 for (
unsigned int i=0; i<size_; i++ )
540 #if defined(_STK_DEBUG_)
542 std::ostringstream error;
543 error <<
"StkFrames::operator*=: frames argument must be of equal dimensions!";
548 StkFloat *fptr = &f[0];
549 StkFloat *dptr = data_;
550 for (
unsigned int i=0; i<size_; i++ )
555 typedef unsigned short UINT16;
556 typedef unsigned int UINT32;
557 typedef signed short SINT16;
558 typedef signed int SINT32;
559 typedef float FLOAT32;
560 typedef double FLOAT64;
563 const StkFloat SRATE = 44100.0;
569 const unsigned int RT_BUFFER_SIZE = 512;
580 #if !defined(RAWWAVE_PATH)
581 #define RAWWAVE_PATH "../../rawwaves/"
584 const StkFloat STK_PI = 3.14159265358979;
585 const StkFloat STK_TWO_PI = 2 * STK_PI;
587 const StkFloat ONE_OVER_128 = 0.0078125;
589 #if defined(__WINDOWS_DS__) || defined(__WINDOWS_ASIO__) || defined(__WINDOWS_MM__)
590 #define __OS_WINDOWS__
591 #define __STK_REALTIME__
592 #elif defined(__LINUX_OSS__) || defined(__LINUX_ALSA__) || defined(__UNIX_JACK__)
594 #define __STK_REALTIME__
595 #elif defined(__IRIX_AL__)
597 #elif defined(__MACOSX_CORE__) || defined(__UNIX_JACK__)
598 #define __OS_MACOSX__
599 #define __STK_REALTIME__
STK error handling class.
Definition: Stk.h:90
virtual void printMessage(void)
Prints thrown error message to stderr.
Definition: Stk.h:123
virtual const Type & getType(void)
Returns the thrown error message type.
Definition: Stk.h:133
virtual ~StkError(void)
The destructor.
Definition: Stk.h:120
StkError(const std::string &message, Type type=StkError::UNSPECIFIED)
The constructor.
Definition: Stk.h:116
virtual const std::string & getMessage(void)
Returns the thrown error message string.
Definition: Stk.h:136
virtual const char * getMessageCString(void)
Returns the thrown error message as a C string.
Definition: Stk.h:139
An STK class to handle vectorized audio data.
Definition: Stk.h:287
unsigned int channels(void) const
Return the number of channels represented by the data.
Definition: Stk.h:415
void operator*=(StkFrames &f)
Assignment by product operator into self.
Definition: Stk.h:538
void operator+=(StkFrames &f)
Assignment by sum operator into self.
Definition: Stk.h:522
unsigned int frames(void) const
Return the number of sample frames represented by the data.
Definition: Stk.h:418
size_t size() const
Returns the total number of audio samples represented by the object.
Definition: Stk.h:373
void resize(size_t nFrames, unsigned int nChannels=1)
Resize self to represent the specified number of channels and frames.
~StkFrames()
The destructor.
StkFloat interpolate(StkFloat frame, unsigned int channel=0) const
Return an interpolated value at the fractional frame index and channel.
StkFrames operator+(const StkFrames &frames) const
Sum operator.
Definition: Stk.h:503
void resize(size_t nFrames, unsigned int nChannels, StkFloat value)
Resize self to represent the specified number of channels and frames and perform element initializati...
StkFloat dataRate(void) const
Return the sample rate associated with the StkFrames data.
Definition: Stk.h:432
bool empty() const
Returns true if the object size is zero and false otherwise.
Definition: Stk.h:445
StkFloat & operator()(size_t frame, unsigned int channel)
Channel / frame subscript operator that returns a reference.
Definition: Stk.h:477
StkFloat & operator[](size_t n)
Subscript operator that returns a reference to element n of self.
Definition: Stk.h:451
StkFrames & getChannel(unsigned int channel, StkFrames &destinationFrames, unsigned int destinationChannel) const
Retrieves a single channel.
StkFrames(unsigned int nFrames=0, unsigned int nChannels=0)
The default constructor initializes the frame data structure to size zero.
StkFrames(const StkFloat &value, unsigned int nFrames, unsigned int nChannels)
Overloaded constructor that initializes the frame data to the specified size with value.
void setChannel(unsigned int channel, const StkFrames &sourceFrames, unsigned int sourceChannel)
Sets a single channel.
void setDataRate(StkFloat rate)
Set the sample rate associated with the StkFrames data.
Definition: Stk.h:425
STK base class.
Definition: Stk.h:144
static const StkFormat STK_FLOAT32
Definition: Stk.h:152
static void showWarnings(bool status)
Toggle display of WARNING and STATUS messages.
Definition: Stk.h:221
static void clear_alertList()
Static method that frees memory from alertList_.
Definition: Stk.h:187
void removeSampleRateAlert(Stk *ptr)
Remove class pointer from list for sample rate change notification.
static void setSampleRate(StkFloat rate)
Static method that sets the STK sample rate.
static void handleError(const char *message, StkError::Type type)
Static function for error reporting and handling using c-strings.
static void setRawwavePath(std::string path)
Static method that sets the STK rawwave path.
static const StkFormat STK_FLOAT64
Definition: Stk.h:153
static const StkFormat STK_SINT16
Definition: Stk.h:149
void addSampleRateAlert(Stk *ptr)
Add class pointer to list for sample rate change notification.
static std::string rawwavePath(void)
Static method that returns the current rawwave path.
Definition: Stk.h:190
static void swap64(unsigned char *ptr)
Static method that byte-swaps a 64-bit data type.
static StkFloat sampleRate(void)
Static method that returns the current STK sample rate.
Definition: Stk.h:156
static const StkFormat STK_SINT32
Definition: Stk.h:151
virtual void sampleRateChanged(StkFloat newRate, StkFloat oldRate)
This function should be implemented in subclasses that depend on the sample rate.
static bool inRange(StkFloat value, StkFloat min, StkFloat max)
Static method to check whether a value is within a specified range.
Definition: Stk.h:208
static void swap32(unsigned char *ptr)
Static method that byte-swaps a 32-bit data type.
Stk(void)
Default constructor.
static void swap16(unsigned char *ptr)
Static method that byte-swaps a 16-bit data type.
void ignoreSampleRateChange(bool ignore=true)
A function to enable/disable the automatic updating of class data when the STK sample rate changes.
Definition: Stk.h:184
static void handleError(std::string message, StkError::Type type)
Static function for error reporting and handling using c++ strings.
virtual ~Stk(void)
Class destructor.
static void sleep(unsigned long milliseconds)
Static cross-platform method to sleep for a number of milliseconds.
static const StkFormat STK_SINT8
Definition: Stk.h:148
void handleError(StkError::Type type) const
Internal function for error reporting that assumes message in oStream_ variable.
static const StkFormat STK_SINT24
Definition: Stk.h:150
static void printErrors(bool status)
Toggle display of error messages before throwing exceptions.
Definition: Stk.h:224
The STK namespace.
Definition: ADSR.h:8