25 |
float RTMathBase::CentsToFreqTable[MAX_PITCH * 1200 * 2 + 1]; // +-1200 cents per octave |
float RTMathBase::CentsToFreqTable[MAX_PITCH * 1200 * 2 + 1]; // +-1200 cents per octave |
26 |
float* RTMathBase::pCentsToFreqTable(InitCentsToFreqTable()); |
float* RTMathBase::pCentsToFreqTable(InitCentsToFreqTable()); |
27 |
|
|
28 |
|
/* |
29 |
|
* Creates a real time stamp for the current moment. Out of efficiency this |
30 |
|
* is implemented in inline assembly for each CPU independently; we currently |
31 |
|
* don't use a generic solution for CPUs that are not yet covered by the |
32 |
|
* assembly code, instead an error message is prompted on compile time, forcing |
33 |
|
* the user to contact us. |
34 |
|
*/ |
35 |
|
RTMathBase::time_stamp_t RTMathBase::CreateTimeStamp() { |
36 |
|
#if defined(__i386__) || defined(__x86_64__) |
37 |
|
uint64_t t; |
38 |
|
__asm__ __volatile__ ("rdtsc" : "=A" (t)); |
39 |
|
return t >> 8; |
40 |
|
#elif defined(__ia64__) |
41 |
|
time_stamp_t t; |
42 |
|
__asm__ __volatile__ ("mov %0=ar.itc" : "=r"(t)); |
43 |
|
return t; |
44 |
|
#elif defined(__powerpc__) |
45 |
|
time_stamp_t t; |
46 |
|
__asm__ __volatile__ ( |
47 |
|
"98: mftb %0\n" |
48 |
|
"99:\n" |
49 |
|
".section __ftr_fixup,\"a\"\n" |
50 |
|
" .long %1\n" |
51 |
|
" .long 0\n" |
52 |
|
" .long 98b\n" |
53 |
|
" .long 99b\n" |
54 |
|
".previous" |
55 |
|
: "=r" (t) : "i" (0x00000100) |
56 |
|
); |
57 |
|
return t; |
58 |
|
#elif defined(__alpha__) |
59 |
|
time_stamp_t t; |
60 |
|
__asm__ __volatile__ ("rpcc %0" : "=r"(t)); |
61 |
|
return t; |
62 |
|
#else // we don't want to use a slow generic solution |
63 |
|
# error "Sorry, LinuxSampler lacks time stamp code for your system." |
64 |
|
# error "Please report this error and the CPU you are using to the LinuxSampler developers mailing list!" |
65 |
|
#endif |
66 |
|
} |
67 |
|
|
68 |
/** |
/** |
69 |
* Will automatically be called once to initialize the 'Cents to frequency |
* Will automatically be called once to initialize the 'Cents to frequency |
70 |
* ratio' table. |
* ratio' table. |