78 typedef double StkFloat;
101 PROCESS_SOCKET_IPADDR,
108 std::string message_;
113 StkError(
const std::string& message, Type type = StkError::UNSPECIFIED)
114 : std::exception(), message_(message), type_(type) {}
120 virtual void printMessage(
void) { std::cerr <<
'\n' << message_ <<
"\n\n"; }
123 virtual const Type&
getType(
void) {
return type_; }
126 virtual const std::string&
getMessage(
void) {
return message_; }
131 virtual const char *what(
void)
const throw() {
return message_.c_str(); }
139 typedef unsigned long StkFormat;
188 static void swap16(
unsigned char *ptr );
191 static void swap32(
unsigned char *ptr );
194 static void swap64(
unsigned char *ptr );
197 static void sleep(
unsigned long milliseconds );
200 static bool inRange( StkFloat value, StkFloat min, StkFloat max ) {
201 if ( value < min )
return false;
202 else if ( value > max )
return false;
207 static void handleError(
const char *message, StkError::Type type );
210 static void handleError( std::string message, StkError::Type type );
219 static StkFloat srate_;
220 static std::string rawwavepath_;
221 static bool showWarnings_;
222 static bool printErrors_;
223 static std::vector<Stk *> alertList_;
227 static std::ostringstream oStream_;
228 bool ignoreSampleRateChange_;
234 virtual ~Stk(
void );
283 StkFrames(
unsigned int nFrames = 0,
unsigned int nChannels = 0 );
286 StkFrames(
const StkFloat& value,
unsigned int nFrames,
unsigned int nChannels );
354 StkFloat&
operator() (
size_t frame,
unsigned int channel );
362 StkFloat
operator() (
size_t frame,
unsigned int channel )
const;
371 StkFloat
interpolate( StkFloat frame,
unsigned int channel = 0 )
const;
374 size_t size()
const {
return size_; };
387 virtual void resize(
size_t nFrames,
unsigned int nChannels = 1 );
397 virtual void resize(
size_t nFrames,
unsigned int nChannels, StkFloat value );
413 void setChannel(
unsigned int channel,
const StkFrames &sourceFrames,
unsigned int sourceChannel);
416 unsigned int channels(
void )
const {
return nChannels_; };
419 unsigned int frames(
void )
const {
return (
unsigned int)nFrames_; };
433 StkFloat
dataRate(
void )
const {
return dataRate_; };
440 unsigned int nChannels_;
448 if ( size_ > 0 )
return false;
454 #if defined(_STK_DEBUG_)
456 std::ostringstream error;
457 error <<
"StkFrames::operator[]: invalid index (" << n <<
") value!";
467 #if defined(_STK_DEBUG_)
469 std::ostringstream error;
470 error <<
"StkFrames::operator[]: invalid index (" << n <<
") value!";
480 #if defined(_STK_DEBUG_)
481 if ( frame >= nFrames_ || channel >= nChannels_ ) {
482 std::ostringstream error;
483 error <<
"StkFrames::operator(): invalid frame (" << frame <<
") or channel (" << channel <<
") value!";
488 return data_[ frame * nChannels_ + channel ];
493 #if defined(_STK_DEBUG_)
494 if ( frame >= nFrames_ || channel >= nChannels_ ) {
495 std::ostringstream error;
496 error <<
"StkFrames::operator(): invalid frame (" << frame <<
") or channel (" << channel <<
") value!";
501 return data_[ frame * nChannels_ + channel ];
506 #if defined(_STK_DEBUG_)
508 std::ostringstream error;
509 error <<
"StkFrames::operator+: frames argument must be of equal dimensions!";
513 StkFrames sum((
unsigned int)nFrames_,nChannels_);
514 StkFloat *sumPtr = &sum[0];
515 const StkFloat *fptr = f.data_;
516 const StkFloat *dPtr = data_;
517 for (
unsigned int i = 0; i < size_; i++) {
518 *sumPtr++ = *fptr++ + *dPtr++;
525 #if defined(_STK_DEBUG_)
527 std::ostringstream error;
528 error <<
"StkFrames::operator+=: frames argument must be of equal dimensions!";
533 StkFloat *fptr = &f[0];
534 StkFloat *dptr = data_;
535 for (
unsigned int i=0; i<size_; i++ )
542 #if defined(_STK_DEBUG_)
544 std::ostringstream error;
545 error <<
"StkFrames::operator*=: frames argument must be of equal dimensions!";
550 StkFloat *fptr = &f[0];
551 StkFloat *dptr = data_;
552 for (
unsigned int i=0; i<size_; i++ )
559 StkFrames res((
unsigned int)nFrames_, nChannels_);
560 StkFloat *resPtr = &res[0];
561 const StkFloat *dPtr = data_;
562 for (
unsigned int i = 0; i < size_; i++) {
563 *resPtr++ = v * *dPtr++;
570 StkFrames res((
unsigned int)f.nFrames_, f.nChannels_);
571 StkFloat *resPtr = &res[0];
572 StkFloat *dPtr = f.data_;
573 for (
unsigned int i = 0; i < f.size_; i++) {
574 *resPtr++ = v * *dPtr++;
581 StkFloat *dptr = data_;
582 for (
unsigned int i=0; i<size_; i++ )
589 typedef unsigned short UINT16;
590 typedef unsigned int UINT32;
591 typedef signed short SINT16;
592 typedef signed int SINT32;
593 typedef float FLOAT32;
594 typedef double FLOAT64;
597 const StkFloat SRATE = 44100.0;
603 const unsigned int RT_BUFFER_SIZE = 512;
614 #if !defined(RAWWAVE_PATH)
615 #define RAWWAVE_PATH "../../rawwaves/"
618 const StkFloat PI = 3.14159265358979;
619 const StkFloat TWO_PI = 2 * PI;
620 const StkFloat ONE_OVER_128 = 0.0078125;
622 #if defined(__WINDOWS_DS__) || defined(__WINDOWS_ASIO__) || defined(__WINDOWS_MM__)
623 #define __OS_WINDOWS__
624 #define __STK_REALTIME__
625 #elif defined(__LINUX_OSS__) || defined(__LINUX_ALSA__) || defined(__UNIX_JACK__)
627 #define __STK_REALTIME__
628 #elif defined(__IRIX_AL__)
630 #elif defined(__MACOSX_CORE__) || defined(__UNIX_JACK__)
631 #define __OS_MACOSX__
632 #define __STK_REALTIME__