00001
00013
00014
00015 #if !defined(__STK_H)
00016 #define __STK_H
00017 #include <string>
00018
00019 namespace Marsyas
00020 {
00021
00022
00023
00024
00025
00026 typedef double MY_FLOAT;
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00039
00044 class StkError
00045 {
00046 public:
00047 enum TYPE {
00048 WARNING,
00049 DEBUG_WARNING,
00050 FUNCTION_ARGUMENT,
00051 FILE_NOT_FOUND,
00052 FILE_UNKNOWN_FORMAT,
00053 FILE_ERROR,
00054 PROCESS_THREAD,
00055 PROCESS_SOCKET,
00056 PROCESS_SOCKET_IPADDR,
00057 AUDIO_SYSTEM,
00058 MIDI_SYSTEM,
00059 UNSPECIFIED
00060 };
00061
00062 protected:
00063 char message[256];
00064 TYPE type;
00065
00066 public:
00068 StkError(const char *p, TYPE tipe = StkError::UNSPECIFIED);
00069
00071 virtual ~StkError(void);
00072
00074 virtual void printMessage(void);
00075
00077 virtual const TYPE& getType(void) { return type; }
00078
00080 virtual const char *getMessage(void) const { return message; }
00081 };
00082
00083
00084 class Stk
00085 {
00086 public:
00087
00088 typedef unsigned long STK_FORMAT;
00089 static const STK_FORMAT STK_SINT8;
00090 static const STK_FORMAT STK_SINT16;
00091 static const STK_FORMAT STK_SINT32;
00092 static const STK_FORMAT MY_FLOAT32;
00093 static const STK_FORMAT MY_FLOAT64;
00095
00096 static MY_FLOAT sampleRate(void);
00097
00099
00107 static void setSampleRate(MY_FLOAT newRate);
00108
00110 static std::string rawwavePath(void);
00111
00113 static void setRawwavePath(std::string newPath);
00114
00116 static void swap16(unsigned char *ptr);
00117
00119 static void swap32(unsigned char *ptr);
00120
00122 static void swap64(unsigned char *ptr);
00123
00125 static void sleep(unsigned long milliseconds);
00126
00127 private:
00128 static MY_FLOAT srate;
00129 static std::string rawwavepath;
00130
00131 protected:
00132
00134 Stk(void);
00135
00137 virtual ~Stk(void);
00138
00140 static void handleError( const char *message, StkError::TYPE type );
00141
00142 };
00143
00144
00145 typedef signed short SINT16;
00146 typedef signed int SINT32;
00147 typedef float FLOAT32;
00148 typedef double FLOAT64;
00149
00150
00151 #define FALSE 0
00152 #define TRUE 1
00153
00154
00155 #define SRATE (MY_FLOAT) 44100.0
00156
00157
00158
00159
00160
00161 #define RT_BUFFER_SIZE 512
00162
00163
00164
00165
00166
00167
00168
00169
00170
00171
00172 #if !defined(RAWWAVE_PATH)
00173 #define RAWWAVE_PATH "../../rawwaves/"
00174 #endif
00175
00176
00177 #define TWO_PI (MY_FLOAT) (MY_FLOAT) (2 * PI)
00178
00179 #define ONE_OVER_128 (MY_FLOAT) 0.0078125
00180
00181 #if defined(__WINDOWS_DS__) || defined(__WINDOWS_ASIO__)
00182 #define __STK_REALTIME__
00183 #elif defined(__LINUX_OSS__) || defined(__LINUX_ALSA__) || defined(__LINUX_JACK__)
00184
00185 #define __STK_REALTIME__
00186 #elif defined(__IRIX_AL__)
00187 #define MARSYAS_IRIX
00188 #define __STK_REALTIME__
00189 #elif defined(__MACOSX_CORE__)
00190 #define MARSYAS_MACOSX
00191 #define __STK_REALTIME__
00192 #endif
00193
00194
00195
00196 }
00197
00198 #endif