00001
00002
00003
00004
00005
00006
00007
00008 #define NTICK 16
00009 #define MKTICKSIZE NTICK
00010 #define MKVECTORSIZE MKTICKSIZE
00011
00012 #define MAX(a,b) ((a)<(b) ? (b) : (a))
00013 #define MIN(a,b) ((a)>(b) ? (b) : (a))
00014
00015 typedef double word;
00016 typedef double u_word;
00017 typedef double dbl;
00018 typedef double u_dbl;
00019
00020 #define MAX_WORD ((double)(1.0))
00021 #define MIN_WORD ((double)(-1.0))
00022
00023 #define mk_int_to_word(ival) (((word)ival) / (((word)MAXINT)+1.0))
00024 #define mk_unsigned_int_to_word(ival) ((word)(ival) / (2.0*(((word)MAXINT)+1.0)))
00025 #define mk_double_to_word(dval) dval
00026 #define mk_word_to_short(dval) ((short)(MIN(MAX((dval*((word)MAXSHORT)), \
00027 -((word)MAXSHORT)), \
00028 ((word)MAXSHORT))));
00029 void mk_double_to_word_array(word *wval, double *dval, int n);
00030 void mk_word_to_short_array(short *sval, double *wval, int n);
00031 #define mk_double_to_doubleword(dval) dval
00032
00033 typedef double addr;
00034 typedef double MKPatchVector[16];
00035 typedef double MKPatchVectorDouble[16];
00036 typedef double PP[16];
00037 typedef double *pp;
00038 typedef double *synthdata;
00039
00040 typedef struct _MKWavetable {
00041 word *data;
00042 int size;
00043 } MKWavetable;
00044
00045 enum roundingModes {rounding, truncation, magnitude_truncation};