Jamoma API  0.6.0.a19
TTBase.cpp
Go to the documentation of this file.
1 /** @file
2  *
3  * @ingroup foundationLibrary
4  *
5  * @brief Jamoma's lowest-level base class and related infrastructure.
6  *
7  * @details The Jamoma base class.
8  *
9  * @author Timothy Place, Trond Lossius, Nils Peters
10  *
11  * @copyright Copyright © 2008, Timothy Place @n
12  * This code is licensed under the terms of the "New BSD License" @n
13  * http://creativecommons.org/licenses/BSD/
14  */
15 
16 #include "TTBase.h"
17 #include "TTEnvironment.h"
18 #include "MersenneTwister.h" // Used for the TTRandom64 method
19 #ifdef TT_PLATFORM_WIN
20 #include <Windows.h>
21 #endif
22 
23 const TTFloat64 kTTPi = 3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117068;
24 const TTFloat64 kTTTwoPi = kTTPi * 2.0;
25 const TTFloat64 kTTSqrt2 = sqrt(2.0);
28 const TTFloat64 kTTHalfPi = kTTPi / 2.0;
31 const TTFloat64 kTTEpsilon = 1e-21;
34 const TTFloat64 kTTGainMidiPower = log(pow(10.,10./20.))/log(127./100.);
36 const TTFloat64 kTTInv255 = 1./255.;
37 
38 const TTFloat32 kTTLookupEqualPower[] = { // 512 point equal-power table
39  1.0F, 0.999995275372036F, 0.999981101532787F, 0.999957478616186F, 0.999924406845452F, 0.999881886533088F, 0.999829918080880F,
40  0.999768501979891F, 0.999697638810457F, 0.999617329242183F, 0.999527574033934F, 0.999428374033830F, 0.999319730179238F, 0.999201643496761F,
41  0.999074115102230F, 0.998937146200694F, 0.998790738086406F, 0.998634892142816F, 0.998469609842550F, 0.998294892747404F, 0.998110742508323F,
42  0.997917160865392F, 0.997714149647812F, 0.997501710773889F, 0.997279846251011F, 0.997048558175634F, 0.996807848733257F, 0.996557720198405F,
43  0.996298174934608F, 0.996029215394374F, 0.995750844119172F, 0.995463063739403F, 0.995165876974377F, 0.994859286632287F, 0.994543295610186F,
44  0.994217906893952F, 0.993883123558267F, 0.993538948766584F, 0.993185385771100F, 0.992822437912720F, 0.992450108621033F, 0.992068401414273F,
45  0.991677319899290F, 0.991276867771512F, 0.990867048814915F, 0.990447866901982F, 0.990019325993670F, 0.989581430139373F, 0.989134183476881F,
46  0.988677590232340F, 0.988211654720219F, 0.987736381343261F, 0.987251774592445F, 0.986757839046946F, 0.986254579374085F, 0.985742000329293F,
47  0.985220106756061F, 0.984688903585893F, 0.984148395838266F, 0.983598588620574F, 0.983039487128088F, 0.982471096643900F, 0.981893422538877F,
48  0.981306470271609F, 0.980710245388360F, 0.980104753523010F, 0.979490000397008F, 0.978865991819312F, 0.978232733686339F, 0.977590231981908F,
49  0.976938492777182F, 0.976277522230611F, 0.975607326587875F, 0.974927912181824F, 0.974239285432419F, 0.973541452846670F, 0.972834421018576F,
50  0.972118196629061F, 0.971392786445914F, 0.970658197323721F, 0.969914436203801F, 0.969161510114145F, 0.968399426169344F, 0.967628191570524F,
51  0.966847813605278F, 0.966058299647597F, 0.965259657157800F, 0.964451893682466F, 0.963635016854357F, 0.962809034392352F, 0.961973954101371F,
52  0.961129783872301F, 0.960276531681922F, 0.959414205592833F, 0.958542813753374F, 0.957662364397550F, 0.956772865844950F, 0.955874326500676F,
53  0.954966754855255F, 0.954050159484564F, 0.953124549049748F, 0.952189932297135F, 0.951246318058160F, 0.950293715249274F, 0.949332132871865F,
54  0.948361580012172F, 0.947382065841196F, 0.946393599614617F, 0.945396190672707F, 0.944389848440237F, 0.943374582426393F, 0.942350402224682F,
55  0.941317317512847F, 0.940275338052769F, 0.939224473690377F, 0.938164734355560F, 0.937096130062064F, 0.936018670907405F, 0.934932367072772F,
56  0.933837228822925F, 0.932733266506108F, 0.931620490553943F, 0.930498911481333F, 0.929368539886368F, 0.928229386450218F, 0.927081461937034F,
57  0.925924777193850F, 0.924759343150475F, 0.923585170819395F, 0.922402271295664F, 0.921210655756802F, 0.920010335462689F, 0.918801321755460F,
58  0.917583626059394F, 0.916357259880809F, 0.915122234807954F, 0.913878562510896F, 0.912626254741413F, 0.911365323332881F, 0.910095780200166F,
59  0.908817637339503F, 0.907530906828393F, 0.906235600825481F, 0.904931731570445F, 0.903619311383879F, 0.902298352667178F, 0.900968867902419F,
60  0.899630869652243F, 0.898284370559739F, 0.896929383348320F, 0.895565920821609F, 0.894193995863310F, 0.892813621437095F, 0.891424810586474F,
61  0.890027576434677F, 0.888621932184526F, 0.887207891118315F, 0.885785466597678F, 0.884354672063469F, 0.882915521035633F, 0.881468027113075F,
62  0.880012203973536F, 0.878548065373461F, 0.877075625147871F, 0.875594897210229F, 0.874105895552315F, 0.872608634244084F, 0.871103127433543F,
63  0.869589389346611F, 0.868067434286986F, 0.866537276636011F, 0.864998930852537F, 0.863452411472788F, 0.861897733110220F, 0.860334910455388F,
64  0.858763958275803F, 0.857184891415794F, 0.855597724796367F, 0.854002473415067F, 0.852399152345832F, 0.850787776738853F, 0.849168361820431F,
65  0.847540922892831F, 0.845905475334141F, 0.844262034598123F, 0.842610616214069F, 0.840951235786655F, 0.839283908995790F, 0.837608651596472F,
66  0.835925479418637F, 0.834234408367010F, 0.832535454420953F, 0.830828633634319F, 0.829113962135292F, 0.827391456126242F, 0.825661131883571F,
67  0.823923005757554F, 0.822177094172191F, 0.820423413625045F, 0.818661980687095F, 0.816892812002570F, 0.815115924288798F, 0.813331334336046F,
68  0.811539059007361F, 0.809739115238412F, 0.807931520037327F, 0.806116290484536F, 0.804293443732608F, 0.802462997006089F, 0.800624967601338F,
69  0.798779372886365F, 0.796926230300667F, 0.795065557355063F, 0.793197371631527F, 0.791321690783025F, 0.789438532533345F, 0.787547914676930F,
70  0.785649855078714F, 0.783744371673947F, 0.781831482468030F, 0.779911205536341F, 0.777983559024070F, 0.776048561146041F, 0.774106230186545F,
71  0.772156584499164F, 0.770199642506599F, 0.768235422700496F, 0.766263943641270F, 0.764285223957932F, 0.762299282347910F, 0.760306137576876F,
72  0.758305808478563F, 0.756298313954593F, 0.754283672974297F, 0.752261904574531F, 0.750233027859504F, 0.748197062000591F, 0.746154026236154F,
73  0.744103939871361F, 0.742046822278002F, 0.739982692894309F, 0.737911571224767F, 0.735833476839937F, 0.733748429376263F, 0.731656448535892F,
74  0.729557554086488F, 0.727451765861040F, 0.725339103757681F, 0.723219587739495F, 0.721093237834332F, 0.718960074134617F, 0.716820116797158F,
75  0.714673386042961F, 0.712519902157034F, 0.710359685488197F, 0.708192756448891F, 0.706019135514982F, 0.703838843225571F, 0.701651900182798F,
76  0.699458327051647F, 0.697258144559753F, 0.695051373497202F, 0.692838034716339F, 0.690618149131570F, 0.688391737719160F, 0.686158821517041F,
77  0.683919421624611F, 0.681673559202530F, 0.679421255472529F, 0.677162531717202F, 0.674897409279807F, 0.672625909564066F, 0.670348054033962F,
78  0.668063864213534F, 0.665773361686676F, 0.663476568096933F, 0.661173505147295F, 0.658864194599994F, 0.656548658276296F, 0.654226918056296F,
79  0.651898995878713F, 0.649564913740677F, 0.647224693697529F, 0.644878357862608F, 0.642525928407040F, 0.640167427559533F, 0.637802877606167F,
80  0.635432300890177F, 0.633055719811752F, 0.630673156827813F, 0.628284634451807F, 0.625890175253495F, 0.623489801858734F, 0.621083536949265F,
81  0.618671403262503F, 0.616253423591316F, 0.613829620783813F, 0.611400017743126F, 0.608964637427197F, 0.606523502848557F, 0.604076637074112F,
82  0.601624063224923F, 0.599165804475987F, 0.596701884056021F, 0.594232325247240F, 0.591757151385137F, 0.589276385858262F, 0.586790052108005F,
83  0.584298173628368F, 0.581800773965751F, 0.579297876718721F, 0.576789505537795F, 0.574275684125214F, 0.571756436234720F, 0.569231785671332F,
84  0.566701756291118F, 0.564166372000973F, 0.561625656758393F, 0.559079634571246F, 0.556528329497548F, 0.553971765645233F, 0.551409967171927F,
85  0.548842958284719F, 0.546270763239934F, 0.543693406342901F, 0.541110911947725F, 0.538523304457056F, 0.535930608321859F, 0.533332848041184F,
86  0.530730048161933F, 0.528122233278629F, 0.525509428033180F, 0.522891657114652F, 0.520268945259034F, 0.517641317249000F, 0.515008797913680F,
87  0.512371412128424F, 0.509729184814563F, 0.507082140939181F, 0.504430305514873F, 0.501773703599509F, 0.499112360296002F, 0.496446300752065F,
88  0.493775550159977F, 0.491100133756345F, 0.488420076821862F, 0.485735404681073F, 0.483046142702131F, 0.480352316296562F, 0.477653950919020F,
89  0.474951072067050F, 0.472243705280847F, 0.469531876143012F, 0.466815610278313F, 0.464094933353440F, 0.461369871076767F, 0.458640449198105F,
90  0.455906693508459F, 0.453168629839786F, 0.450426284064751F, 0.447679682096481F, 0.444928849888321F, 0.442173813433588F, 0.439414598765327F,
91  0.436651231956064F, 0.433883739117558F, 0.431112146400558F, 0.428336479994553F, 0.425556766127525F, 0.422773031065701F, 0.419985301113307F,
92  0.417193602612317F, 0.414397961942204F, 0.411598405519692F, 0.408794959798506F, 0.405987651269123F, 0.403176506458519F, 0.400361551929922F,
93  0.397542814282556F, 0.394720320151395F, 0.391894096206909F, 0.389064169154812F, 0.386230565735806F, 0.383393312725338F, 0.380552436933337F,
94  0.377707965203965F, 0.374859924415363F, 0.372008341479398F, 0.369153243341407F, 0.366294656979943F, 0.363432609406519F, 0.360567127665357F,
95  0.357698238833126F, 0.354825970018690F, 0.351950348362854F, 0.349071401038102F, 0.346189155248344F, 0.343303638228659F, 0.340414877245035F,
96  0.337522899594113F, 0.334627732602932F, 0.331729403628665F, 0.328827940058363F, 0.325923369308699F, 0.323015718825706F, 0.320105016084517F,
97  0.317191288589106F, 0.314274563872031F, 0.311354869494171F, 0.308432233044464F, 0.305506682139650F, 0.302578244424009F, 0.299646947569098F,
98  0.296712819273490F, 0.293775887262517F, 0.290836179287999F, 0.287893723127989F, 0.284948546586509F, 0.282000677493286F, 0.279050143703490F,
99  0.276096973097469F, 0.273141193580488F, 0.270182833082464F, 0.267221919557703F, 0.264258480984633F, 0.261292545365546F, 0.258324140726326F,
100  0.255353295116187F, 0.252380036607411F, 0.249404393295077F, 0.246426393296801F, 0.243446064752468F, 0.240463435823963F, 0.237478534694912F,
101  0.234491389570410F, 0.231502028676754F, 0.228510480261181F, 0.225516772591598F, 0.222520933956314F, 0.219522992663777F, 0.216522977042298F,
102  0.213520915439796F, 0.210516836223518F, 0.207510767779776F, 0.204502738513682F, 0.201492776848874F, 0.198480911227249F, 0.195467170108698F,
103  0.192451581970830F, 0.189434175308710F, 0.186414978634587F, 0.183394020477621F, 0.180371329383620F, 0.177346933914765F, 0.174320862649344F,
104  0.171293144181478F, 0.168263807120853F, 0.165232880092452F, 0.162200391736279F, 0.159166370707092F, 0.156130845674133F, 0.153093845320856F,
105  0.150055398344653F, 0.147015533456587F, 0.143974279381120F, 0.140931664855841F, 0.137887718631191F, 0.134842469470199F, 0.131795946148203F,
106  0.128748177452581F, 0.125699192182480F, 0.122649019148542F, 0.119597687172633F, 0.116545225087569F, 0.113491661736846F, 0.110437025974366F,
107  0.107381346664163F, 0.104324652680134F, 0.101266972905762F, 0.0982083362338450F,0.0951487715662253F,0.0920883078135118F,0.0890269738948095F,
108  0.0859647987374465F, 0.0829018112766992F, 0.0798380404555206F, 0.0767735152242645F, 0.0737082645404147F, 0.0706423173683090F,
109  0.0675757026788675F, 0.0645084494493164F, 0.0614405866629168F, 0.0583721433086900F, 0.0553031483811415F, 0.0522336308799904F,
110  0.0491636198098929F, 0.0460931441801699F, 0.0430222330045305F, 0.0399509153008011F, 0.0368792200906482F, 0.0338071763993066F,
111  0.0307348132553026F, 0.0276621596901821F, 0.0245892447382355F, 0.0215160974362223F, 0.0184427468230977F, 0.0153692219397382F,
112  0.0122955518286674F, 0.00922176553378061F, 0.00614789210007114F, 0.00307396057335558F, 0.0F
113 };
114 
115 const TTFloat32 kTTLookupEqualPowerSymetric[] = { // cos(linspace(0,pi/2,511), 511 point equal-power table with 0.7071 at element 256
116  1.0F, 9.9999525682593282e-01F, 9.9998102734872685e-01F, 9.9995731170336788e-01F, 9.9992411011483062e-01F, 9.9988142289807691e-01F,
117  9.9982925045805271e-01F, 9.9976759328968379e-01F, 9.9969645197787160e-01F, 9.9961582719748743e-01F, 9.9952571971336590e-01F, 9.9942613038029804e-01F,
118  9.9931706014302291e-01F, 9.9919851003621873e-01F, 9.9907048118449315e-01F, 9.9893297480237242e-01F, 9.9878599219428998e-01F, 9.9862953475457383e-01F,
119  9.9846360396743394e-01F, 9.9828820140694752e-01F, 9.9810332873704410e-01F, 9.9790898771149039e-01F, 9.9770518017387289e-01F, 9.9749190805758092e-01F,
120  9.9726917338578802e-01F, 9.9703697827143289e-01F, 9.9679532491719913e-01F, 9.9654421561549456e-01F, 9.9628365274842945e-01F, 9.9601363878779403e-01F,
121  9.9573417629503447e-01F, 9.9544526792122956e-01F, 9.9514691640706443e-01F, 9.9483912458280555e-01F, 9.9452189536827329e-01F, 9.9419523177281455e-01F,
122  9.9385913689527361e-01F, 9.9351361392396387e-01F, 9.9315866613663617e-01F, 9.9279429690044907e-01F, 9.9242050967193574e-01F, 9.9203730799697221e-01F,
123  9.9164469551074275e-01F, 9.9124267593770621e-01F, 9.9083125309156028e-01F, 9.9041043087520519e-01F, 9.8998021328070696e-01F, 9.8954060438925961e-01F,
124  9.8909160837114596e-01F, 9.8863322948569865e-01F, 9.8816547208125938e-01F, 9.8768834059513777e-01F, 9.8720183955356899e-01F, 9.8670597357167156e-01F,
125  9.8620074735340257e-01F, 9.8568616569151402e-01F, 9.8516223346750653e-01F, 9.8462895565158370e-01F, 9.8408633730260442e-01F, 9.8353438356803535e-01F,
126  9.8297309968390179e-01F, 9.8240249097473797e-01F, 9.8182256285353686e-01F, 9.8123332082169845e-01F, 9.8063477046897773e-01F, 9.8002691747343185e-01F,
127  9.7940976760136589e-01F, 9.7878332670727830e-01F, 9.7814760073380569e-01F, 9.7750259571166564e-01F, 9.7684831775960079e-01F, 9.7618477308431906e-01F,
128  9.7551196798043671e-01F, 9.7482990883041676e-01F, 9.7413860210451009e-01F, 9.7343805436069286e-01F, 9.7272827224460479e-01F, 9.7200926248948616e-01F,
129  9.7128103191611381e-01F, 9.7054358743273661e-01F, 9.6979693603500949e-01F, 9.6904108480592765e-01F, 9.6827604091575892e-01F, 9.6750181162197602e-01F,
130  9.6671840426918743e-01F, 9.6592582628906820e-01F, 9.6512408520028914e-01F, 9.6431318860844484e-01F, 9.6349314420598320e-01F, 9.6266395977213037e-01F,
131  9.6182564317281916e-01F, 9.6097820236061204e-01F, 9.6012164537462819e-01F, 9.5925598034046489e-01F, 9.5838121547012234e-01F, 9.5749735906192435e-01F,
132  9.5660441950044084e-01F, 9.5570240525640704e-01F, 9.5479132488664431e-01F, 9.5387118703397811e-01F, 9.5294200042715660e-01F, 9.5200377388076718e-01F,
133  9.5105651629515353e-01F, 9.5010023665633103e-01F, 9.4913494403590126e-01F, 9.4816064759096585e-01F, 9.4717735656404023e-01F, 9.4618508028296533e-01F,
134  9.4518382816081958e-01F, 9.4417360969582886e-01F, 9.4315443447127745e-01F, 9.4212631215541620e-01F, 9.4108925250137165e-01F, 9.4004326534705218e-01F,
135  9.3898836061505664e-01F, 9.3792454831257799e-01F, 9.3685183853131060e-01F, 9.3577024144735266e-01F, 9.3467976732111058e-01F, 9.3358042649720185e-01F,
136  9.3247222940435581e-01F, 9.3135518655531624e-01F, 9.3022930854674024e-01F, 9.2909460605909888e-01F, 9.2795108985657460e-01F, 9.2679877078696060e-01F,
137  9.2563765978155632e-01F, 9.2446776785506524e-01F, 9.2328910610548942e-01F, 9.2210168571402440e-01F, 9.2090551794495368e-01F, 9.1970061414554083e-01F,
138  9.1848698574592302e-01F, 9.1726464425900156e-01F, 9.1603360128033351e-01F, 9.1479386848802102e-01F, 9.1354545764260098e-01F, 9.1228838058693318e-01F,
139  9.1102264924608833e-01F, 9.0974827562723459e-01F, 9.0846527181952363e-01F, 9.0717364999397654e-01F, 9.0587342240336710e-01F, 9.0456460138210737e-01F,
140  9.0324719934612885e-01F, 9.0192122879276626e-01F, 9.0058670230063742e-01F, 8.9924363252952566e-01F, 8.9789203222025804e-01F, 8.9653191419458600e-01F,
141  8.9516329135506234e-01F, 8.9378617668491989e-01F, 8.9240058324794780e-01F, 8.9100652418836790e-01F, 8.8960401273070955e-01F, 8.8819306217968486e-01F,
142  8.8677368592006189e-01F, 8.8534589741653802e-01F, 8.8390971021361198e-01F, 8.8246513793545567e-01F, 8.8101219428578448e-01F, 8.7955089304772793e-01F,
143  8.7808124808369792e-01F, 8.7660327333525856e-01F, 8.7511698282299266e-01F, 8.7362239064636960e-01F, 8.7211951098361085e-01F, 8.7060835809155634e-01F,
144  8.6908894630552824e-01F, 8.6756129003919602e-01F, 8.6602540378443860e-01F, 8.6448130211120777e-01F, 8.6292899966738967e-01F, 8.6136851117866553e-01F,
145  8.5979985144837245e-01F, 8.5822303535736266e-01F, 8.5663807786386270e-01F, 8.5504499400333112e-01F, 8.5344379888831601e-01F, 8.5183450770831148e-01F,
146  8.5021713572961410e-01F, 8.4859169829517755e-01F, 8.4695821082446698e-01F, 8.4531668881331368e-01F, 8.4366714783376640e-01F, 8.4200960353394527e-01F,
147  8.4034407163789271e-01F, 8.3867056794542405e-01F, 8.3698910833197782e-01F, 8.3529970874846549e-01F, 8.3360238522111951e-01F, 8.3189715385134178e-01F,
148  8.3018403081555070e-01F, 8.2846303236502772e-01F, 8.2673417482576350e-01F, 8.2499747459830242e-01F, 8.2325294815758721e-01F, 8.2150061205280334e-01F,
149  8.1974048290722112e-01F, 8.1797257741803819e-01F, 8.1619691235622172e-01F, 8.1441350456634842e-01F, 8.1262237096644563e-01F, 8.1082352854783013e-01F,
150  8.0901699437494745e-01F, 8.0720278558520953e-01F, 8.0538091938883261e-01F, 8.0355141306867373e-01F, 8.0171428398006661e-01F, 7.9986954955065759e-01F,
151  7.9801722728023949e-01F, 7.9615733474058625e-01F, 7.9428988957528612e-01F, 7.9241490949957383e-01F, 7.9053241230016336e-01F, 7.8864241583507833e-01F,
152  7.8674493803348322e-01F, 7.8483999689551320e-01F, 7.8292761049210280e-01F, 7.8100779696481548e-01F, 7.7908057452567048e-01F, 7.7714596145697090e-01F,
153  7.7520397611112990e-01F, 7.7325463691049634e-01F, 7.7129796234718073e-01F, 7.6933397098287892e-01F, 7.6736268144869701e-01F, 7.6538411244497351e-01F,
154  7.6339828274110300e-01F, 7.6140521117535731e-01F, 7.5940491665470711e-01F, 7.5739741815464279e-01F, 7.5538273471899375e-01F, 7.5336088545974866e-01F,
155  7.5133188955687336e-01F, 7.4929576625812933e-01F, 7.4725253487889098e-01F, 7.4520221480196269e-01F, 7.4314482547739424e-01F, 7.4108038642229723e-01F,
156  7.3900891722065909e-01F, 7.3693043752315790e-01F, 7.3484496704697566e-01F, 7.3275252557561144e-01F, 7.3065313295869316e-01F, 7.2854680911179037e-01F,
157  7.2643357401622421e-01F, 7.2431344771887840e-01F, 7.2218645033200934e-01F, 7.2005260203305455e-01F, 7.1791192306444196e-01F, 7.1576443373339738e-01F,
158  7.1361015441175235e-01F, 7.1144910553575036e-01F, 7.0928130760585351e-01F, 7.0710678118654757e-01F, 7.0492554690614717e-01F, 7.0273762545660012e-01F,
159  7.0054303759329095e-01F, 6.9834180413484415e-01F, 6.9613394596292655e-01F, 6.9391948402204962e-01F, 6.9169843931937003e-01F, 6.8947083292449118e-01F,
160  6.8723668596926268e-01F, 6.8499601964758061e-01F, 6.8274885521518547e-01F, 6.8049521398946156e-01F, 6.7823511734923403e-01F, 6.7596858673456639e-01F,
161  6.7369564364655721e-01F, 6.7141630964713583e-01F, 6.6913060635885824e-01F, 6.6683855546470139e-01F, 6.6454017870785798e-01F, 6.6223549789153024e-01F,
162  6.5992453487872260e-01F, 6.5760731159203478e-01F, 6.5528385001345357e-01F, 6.5295417218414442e-01F, 6.5061830020424216e-01F, 6.4827625623264151e-01F,
163  6.4592806248678736e-01F, 6.4357374124246258e-01F, 6.4121331483357846e-01F, 6.3884680565196139e-01F, 6.3647423614714149e-01F, 6.3409562882613901e-01F,
164  6.3171100625325105e-01F, 6.2932039104983750e-01F, 6.2692380589410657e-01F, 6.2452127352089926e-01F, 6.2211281672147389e-01F, 6.1969845834329051e-01F,
165  6.1727822128979304e-01F, 6.1485212852019266e-01F, 6.1242020304925004e-01F, 6.0998246794705691e-01F, 6.0753894633881700e-01F, 6.0508966140462694e-01F,
166  6.0263463637925652e-01F, 6.0017389455192749e-01F, 5.9770745926609370e-01F, 5.9523535391921878e-01F, 5.9275760196255489e-01F, 5.9027422690091957e-01F,
167  5.8778525229247314e-01F, 5.8529070174849529e-01F, 5.8279059893316099e-01F, 5.8028496756331571e-01F, 5.7777383140825112e-01F, 5.7525721428947896e-01F,
168  5.7273514008050530e-01F, 5.7020763270660402e-01F, 5.6767471614459009e-01F, 5.6513641442259188e-01F, 5.6259275161982314e-01F, 5.6004375186635469e-01F,
169  5.5748943934288553e-01F, 5.5492983828051368e-01F, 5.5236497296050580e-01F, 5.4979486771406727e-01F, 5.4721954692211117e-01F, 5.4463903501502720e-01F,
170  5.4205335647244934e-01F, 5.3946253582302472e-01F, 5.3686659764417999e-01F, 5.3426556656188828e-01F, 5.3165946725043611e-01F, 5.2904832443218863e-01F,
171  5.2643216287735584e-01F, 5.2381100740375686e-01F, 5.2118488287658515e-01F, 5.1855381420817204e-01F, 5.1591782635775096e-01F, 5.1327694433122051e-01F,
172  5.1063119318090688e-01F, 5.0798059800532647e-01F, 5.0532518394894799e-01F, 5.0266497620195350e-01F, 4.9999999999999989e-01F, 4.9733028062397922e-01F,
173  4.9465584339977875e-01F, 4.9197671369804119e-01F, 4.8929291693392352e-01F, 4.8660447856685624e-01F, 4.8391142410030158e-01F, 4.8121377908151169e-01F,
174  4.7851156910128650e-01F, 4.7580481979373057e-01F, 4.7309355683601007e-01F, 4.7037780594810935e-01F, 4.6765759289258679e-01F, 4.6493294347433045e-01F,
175  4.6220388354031322e-01F, 4.5947043897934770e-01F, 4.5673263572184064e-01F, 4.5399049973954686e-01F, 4.5124405704532289e-01F, 4.4849333369288025e-01F,
176  4.4573835577653831e-01F, 4.4297914943097672e-01F, 4.4021574083098741e-01F, 4.3744815619122640e-01F, 4.3467642176596505e-01F, 4.3190056384884107e-01F,
177  4.2912060877260910e-01F, 4.2633658290889065e-01F, 4.2354851266792443e-01F, 4.2075642449831524e-01F, 4.1796034488678357e-01F, 4.1516030035791396e-01F,
178  4.1235631747390367e-01F, 4.0954842283431042e-01F, 4.0673664307580037e-01F, 4.0392100487189497e-01F, 4.0110153493271877e-01F, 3.9827826000474503e-01F,
179  3.9545120687054258e-01F, 3.9262040234852164e-01F, 3.8978587329267939e-01F, 3.8694764659234532e-01F, 3.8410574917192591e-01F, 3.8126020799064947e-01F,
180  3.7841105004231035e-01F, 3.7555830235501264e-01F, 3.7270199199091408e-01F, 3.6984214604596916e-01F, 3.6697879164967218e-01F, 3.6411195596479967e-01F,
181  3.6124166618715287e-01F, 3.5836794954530016e-01F, 3.5549083330031794e-01F, 3.5261034474553254e-01F, 3.4972651120626108e-01F, 3.4683936003955257e-01F,
182  3.4394891863392807e-01F, 3.4105521440912101e-01F, 3.3815827481581706e-01F, 3.3525812733539373e-01F, 3.3235479947965962e-01F, 3.2944831879059361e-01F,
183  3.2653871284008329e-01F, 3.2362600922966367e-01F, 3.2071023559025519e-01F, 3.1779141958190166e-01F, 3.1486958889350791e-01F, 3.1194477124257702e-01F,
184  3.0901699437494745e-01F, 3.0608628606452987e-01F, 3.0315267411304359e-01F, 3.0021618634975278e-01F, 2.9727685063120274e-01F, 2.9433469484095537e-01F,
185  2.9138974688932473e-01F, 2.8844203471311236e-01F, 2.8549158627534216e-01F, 2.8253842956499514e-01F, 2.7958259259674395e-01F, 2.7662410341068711e-01F,
186  2.7366299007208300e-01F, 2.7069928067108362e-01F, 2.6773300332246786e-01F, 2.6476418616537578e-01F, 2.6179285736304025e-01F, 2.5881904510252074e-01F,
187  2.5584277759443558e-01F, 2.5286408307269453e-01F, 2.4988298979423082e-01F, 2.4689952603873308e-01F, 2.4391372010837717e-01F, 2.4092560032755758e-01F,
188  2.3793519504261884e-01F, 2.3494253262158651e-01F, 2.3194764145389821e-01F, 2.2895054995013414e-01F, 2.2595128654174773e-01F, 2.2294987968079580e-01F,
189  2.1994635783966870e-01F, 2.1694074951082032e-01F, 2.1393308320649754e-01F, 2.1092338745847006e-01F, 2.0791169081775945e-01F, 2.0489802185436859e-01F,
190  2.0188240915701039e-01F, 1.9886488133283656e-01F, 1.9584546700716690e-01F, 1.9282419482321672e-01F, 1.8980109344182572e-01F, 1.8677619154118610e-01F,
191  1.8374951781657031e-01F, 1.8072110098005900e-01F, 1.7769096976026860e-01F, 1.7465915290207876e-01F, 1.7162567916635962e-01F, 1.6859057732969918e-01F,
192  1.6555387618413001e-01F, 1.6251560453685637e-01F, 1.5947579120998084e-01F, 1.5643446504023092e-01F, 1.5339165487868545e-01F, 1.5034738959050087e-01F,
193  1.4730169805463758e-01F, 1.4425460916358579e-01F, 1.4120615182309149e-01F, 1.3815635495188230e-01F, 1.3510524748139308e-01F, 1.3205285835549149e-01F,
194  1.2899921653020341e-01F, 1.2594435097343828e-01F, 1.2288829066471427e-01F, 1.1983106459488339e-01F, 1.1677270176585626e-01F, 1.1371323119032781e-01F,
195  1.1065268189150082e-01F, 1.0759108290281141e-01F, 1.0452846326765346e-01F, 1.0146485203910299e-01F, 9.8400278279642706e-02F, 9.5334771060886156e-02F,
196  9.2268359463302016e-02F, 8.9201072575938234e-02F, 8.6132939496146033e-02F, 8.3063989329303964e-02F, 7.9994251188541685e-02F, 7.6923754194463900e-02F,
197  7.3852527474874030e-02F, 7.0780600164497942e-02F, 6.7708001404707535e-02F, 6.4634760343244335e-02F, 6.1560906133942946e-02F, 5.8486467936454505e-02F,
198  5.5411474915970080e-02F, 5.2335956242943966e-02F, 4.9259941092816992e-02F, 4.6183458645739743e-02F, 4.3106538086295734e-02F, 4.0029208603224578e-02F,
199  3.6951499389144847e-02F, 3.3873439640278051e-02F, 3.0795058556170325e-02F, 2.7716385339416321e-02F, 2.4637449195381963e-02F, 2.1558279331927398e-02F,
200  1.8478904959129915e-02F, 1.5399355289006848e-02F, 1.2319659535238468e-02F, 9.2398469128908405e-03F, 6.1599466381386907e-03F, 3.0799879279882433e-03F,
201  0.0F
202 };
203 
204 
205 const TTFloat32 kTTLookupSquareRoot[] = { // 512 point square root (sqrt(1)... sqrt(0)) table
206  1.0F, 0.999021047244538F, 0.998041134260080F, 0.997060258215480F, 0.996078416265654F, 0.995095605551480F, 0.994111823199704F,
207  0.993127066322842F, 0.992141332019076F, 0.991154617372164F, 0.990166919451329F, 0.989178235311163F, 0.988188561991526F, 0.987197896517438F,
208  0.986206235898976F, 0.985213577131173F, 0.984219917193903F, 0.983225253051786F, 0.982229581654066F, 0.981232899934513F, 0.980235204811308F,
209  0.979236493186932F, 0.978236761948054F, 0.977236007965419F, 0.976234228093730F, 0.975231419171539F, 0.974227578021126F, 0.973222701448379F,
210  0.972216786242685F, 0.971209829176800F, 0.970201827006732F, 0.969192776471624F, 0.968182674293621F, 0.967171517177756F, 0.966159301811816F,
211  0.965146024866221F, 0.964131682993896F, 0.963116272830137F, 0.962099790992488F, 0.961082234080602F, 0.960063598676117F, 0.959043881342511F,
212  0.958023078624979F, 0.957001187050286F, 0.955978203126635F, 0.954954123343526F, 0.953928944171617F, 0.952902662062579F, 0.951875273448955F,
213  0.950846774744015F, 0.949817162341611F, 0.948786432616025F, 0.947754581921827F, 0.946721606593717F, 0.945687502946382F, 0.944652267274332F,
214  0.943615895851755F, 0.942578384932353F, 0.941539730749190F, 0.940499929514527F, 0.939458977419665F, 0.938416870634782F, 0.937373605308764F,
215  0.936329177569044F, 0.935283583521435F, 0.934236819249953F, 0.933188880816656F, 0.932139764261464F, 0.931089465601985F, 0.930037980833344F,
216  0.928985305927999F, 0.927931436835562F, 0.926876369482621F, 0.925820099772552F, 0.924762623585334F, 0.923703936777366F, 0.922644035181270F,
217  0.921582914605708F, 0.920520570835179F, 0.919456999629835F, 0.918392196725272F, 0.917326157832341F, 0.916258878636937F, 0.915190354799804F,
218  0.914120581956322F, 0.913049555716303F, 0.911977271663780F, 0.910903725356793F, 0.909828912327179F, 0.908752828080349F, 0.907675468095070F,
219  0.906596827823249F, 0.905516902689702F, 0.904435688091931F, 0.903353179399895F, 0.902269371955777F, 0.901184261073752F, 0.900097842039752F,
220  0.899010110111222F, 0.897921060516884F, 0.896830688456488F, 0.895738989100571F, 0.894645957590200F, 0.893551589036726F, 0.892455878521528F,
221  0.891358821095750F, 0.890260411780047F, 0.889160645564317F, 0.888059517407435F, 0.886957022236985F, 0.885853154948986F, 0.884747910407618F,
222  0.883641283444939F, 0.882533268860609F, 0.881423861421601F, 0.880313055861913F, 0.879200846882277F, 0.878087229149864F, 0.876972197297987F,
223  0.875855745925796F, 0.874737869597976F, 0.873618562844437F, 0.872497820160001F, 0.871375636004087F, 0.870252004800391F, 0.869126920936565F,
224  0.868000378763884F, 0.866872372596924F, 0.865742896713218F, 0.864611945352924F, 0.863479512718478F, 0.862345592974252F, 0.861210180246197F,
225  0.860073268621494F, 0.858934852148190F, 0.857794924834839F, 0.856653480650129F, 0.855510513522513F, 0.854366017339833F, 0.853219985948935F,
226  0.852072413155287F, 0.850923292722586F, 0.849772618372363F, 0.848620383783582F, 0.847466582592239F, 0.846311208390945F, 0.845154254728517F,
227  0.843995715109554F, 0.842835582994015F, 0.841673851796784F, 0.840510514887237F, 0.839345565588799F, 0.838178997178499F, 0.837010802886515F,
228  0.835840975895715F, 0.834669509341197F, 0.833496396309815F, 0.832321629839704F, 0.831145202919800F, 0.829967108489348F, 0.828787339437411F,
229  0.827605888602368F, 0.826422748771407F, 0.825237912680011F, 0.824051373011438F, 0.822863122396191F, 0.821673153411490F, 0.820481458580726F,
230  0.819288030372914F, 0.818092861202139F, 0.816895943426992F, 0.815697269350002F, 0.814496831217054F, 0.813294621216811F, 0.812090631480113F,
231  0.810884854079383F, 0.809677281028013F, 0.808467904279749F, 0.807256715728066F, 0.806043707205531F, 0.804828870483166F, 0.803612197269792F,
232  0.802393679211368F, 0.801173307890328F, 0.799951074824894F, 0.798726971468396F, 0.797500989208571F, 0.796273119366856F, 0.795043353197671F,
233  0.793811681887694F, 0.792578096555124F, 0.791342588248931F, 0.790105147948101F, 0.788865766560867F, 0.787624434923928F, 0.786381143801662F,
234  0.785135883885321F, 0.783888645792218F, 0.782639420064905F, 0.781388197170333F, 0.780134967499007F, 0.778879721364121F, 0.777622449000686F,
235  0.776363140564644F, 0.775101786131970F, 0.773838375697758F, 0.772572899175293F, 0.771305346395117F, 0.770035707104069F, 0.768763970964325F,
236  0.767490127552408F, 0.766214166358195F, 0.764936076783909F, 0.763655848143083F, 0.762373469659526F, 0.761088930466262F, 0.759802219604452F,
237  0.758513326022308F, 0.757222238573986F, 0.755928946018454F, 0.754633437018361F, 0.753335700138868F, 0.752035723846475F, 0.750733496507825F,
238  0.749429006388489F, 0.748122241651732F, 0.746813190357257F, 0.745501840459940F, 0.744188179808529F, 0.742872196144334F, 0.741553877099890F,
239  0.740233210197605F, 0.738910182848379F, 0.737584782350205F, 0.736256995886744F, 0.734926810525882F, 0.733594213218261F, 0.732259190795781F,
240  0.730921729970088F, 0.729581817331024F, 0.728239439345064F, 0.726894582353718F, 0.725547232571911F, 0.724197376086335F, 0.722844998853770F,
241  0.721490086699380F, 0.720132625314985F, 0.718772600257290F, 0.717409996946098F, 0.716044800662482F, 0.714676996546934F, 0.713306569597477F,
242  0.711933504667742F, 0.710557786465018F, 0.709179399548267F, 0.707798328326094F, 0.706414557054699F, 0.705028069835776F, 0.703638850614386F,
243  0.702246883176783F, 0.700852151148215F, 0.699454637990666F, 0.698054327000576F, 0.696651201306508F, 0.695245243866777F, 0.693836437467035F,
244  0.692424764717814F, 0.691010208052019F, 0.689592749722376F, 0.688172371798840F, 0.686749056165943F, 0.685322784520103F, 0.683893538366873F,
245  0.682461299018145F, 0.681026047589303F, 0.679587764996311F, 0.678146431952756F, 0.676702028966833F, 0.675254536338262F, 0.673803934155163F,
246  0.672350202290851F, 0.670893320400585F, 0.669433267918241F, 0.667970024052927F, 0.666503567785531F, 0.665033877865192F, 0.663560932805713F,
247  0.662084710881894F, 0.660605190125793F, 0.659122348322911F, 0.657636163008302F, 0.656146611462602F, 0.654653670707977F, 0.653157317503985F,
248  0.651657528343359F, 0.650154279447693F, 0.648647546763049F, 0.647137305955464F, 0.645623532406362F, 0.644106201207877F, 0.642585287158067F,
249  0.641060764756032F, 0.639532608196926F, 0.638000791366857F, 0.636465287837687F, 0.634926070861705F, 0.633383113366196F, 0.631836387947884F,
250  0.630285866867252F, 0.628731522042737F, 0.627173325044799F, 0.625611247089854F, 0.624045259034067F, 0.622475331367011F, 0.620901434205175F,
251  0.619323537285332F, 0.617741609957748F, 0.616155621179230F, 0.614565539506029F, 0.612971333086556F, 0.611372969653945F, 0.609770416518428F,
252  0.608163640559537F, 0.606552608218119F, 0.604937285488155F, 0.603317637908383F, 0.601693630553726F, 0.600065228026501F, 0.598432394447418F,
253  0.596795093446355F, 0.595153288152907F, 0.593506941186698F, 0.591856014647451F, 0.590200470104809F, 0.588540268587894F, 0.586875370574609F,
254  0.585205735980653F, 0.583531324148268F, 0.581852093834683F, 0.580168003200261F, 0.578479009796338F, 0.576785070552736F, 0.575086141764952F,
255  0.573382179080996F, 0.571673137487887F, 0.569958971297775F, 0.568239634133691F, 0.566515078914908F, 0.564785257841897F, 0.563050122380869F,
256  0.561309623247887F, 0.559563710392533F, 0.557812332981113F, 0.556055439379389F, 0.554292977134817F, 0.552524892958274F, 0.550751132705259F,
257  0.548971641356545F, 0.547186362998268F, 0.545395240801426F, 0.543598217000772F, 0.541795232873077F, 0.539986228714738F, 0.538171143818710F,
258  0.536349916450737F, 0.534522483824849F, 0.532688782078109F, 0.530848746244571F, 0.529002310228420F, 0.527149406776276F, 0.525289967448601F,
259  0.523423922590214F, 0.521551201299834F, 0.519671731398652F, 0.517785439397871F, 0.515892250465172F, 0.513992088390077F, 0.512084875548152F,
260  0.510170532864002F, 0.508248979773017F, 0.506320134181810F, 0.504383912427290F, 0.502440229234317F, 0.500488997671884F, 0.498530129107740F,
261  0.496563533161421F, 0.494589117655582F, 0.492606788565586F, 0.490616449967257F, 0.488618003982709F, 0.486611350724190F, 0.484596388235812F,
262  0.482573012433111F, 0.480541117040301F, 0.478500593525143F, 0.476451331031289F, 0.474393216308012F, 0.472326133637166F, 0.470249964757263F,
263  0.468164588784522F, 0.466069882130732F, 0.463965718417781F, 0.461851968388683F, 0.459728499814917F, 0.457595177399902F, 0.455451862678397F,
264  0.453298413911625F, 0.451134685977888F, 0.448960530258442F, 0.446775794518363F, 0.444580322782158F, 0.442373955203809F, 0.440156527930957F,
265  0.437927872962898F, 0.435687818002043F, 0.433436186298462F, 0.431172796487126F, 0.428897462417420F, 0.426609992974468F, 0.424310191891791F,
266  0.421997857554777F, 0.419672782794400F, 0.417334754670599F, 0.414983554244674F, 0.412618956340006F, 0.410240729290363F, 0.407848634675001F,
267  0.405442427039692F, 0.403021853602766F, 0.400586653945164F, 0.398136559683428F, 0.395671294124465F, 0.393190571900831F, 0.390694098585167F,
268  0.388181570282322F, 0.385652673197558F, 0.383107083179098F, 0.380544465233131F, 0.377964473009227F, 0.375366748253913F, 0.372750920229970F,
269  0.370116605098803F, 0.367463405262941F, 0.364790908665512F, 0.362098688043168F, 0.359386300128645F, 0.356653284798738F, 0.353899164163047F,
270  0.351123441588392F, 0.348325600653254F, 0.345505104026009F, 0.342661392260052F, 0.339793882498156F, 0.336901967077581F, 0.333985012026464F,
271  0.331042355440947F, 0.328073305731301F, 0.325077139723846F, 0.322053100603939F, 0.319000395683429F, 0.315918193973942F, 0.312805623544927F,
272  0.309661768642666F, 0.306485666543278F, 0.303276304109060F, 0.300032614013251F, 0.296753470593349F, 0.293437685287304F, 0.290084001600130F,
273  0.286691089540498F, 0.283257539457454F, 0.279781855196266F, 0.276262446479137F, 0.272697620400713F, 0.269085571909355F, 0.265424373122285F,
274  0.261711961295107F, 0.257946125232586F, 0.254124489886509F, 0.250244498835942F, 0.246303394282793F, 0.242298194117906F, 0.238225665515645F,
275  0.234082294392261F, 0.229864249907459F, 0.225567342988944F, 0.221186977601905F, 0.216718093149231F, 0.212155095945896F, 0.207491777122337F,
276  0.202721213519846F, 0.197835647062233F, 0.192826336598779F, 0.187683374126956F, 0.182395454332756F, 0.176949582081524F, 0.171330696130026F,
277  0.165521177720474F, 0.159500197841714F, 0.153242833271639F, 0.146718842643652F, 0.139890927598133F, 0.132712186561143F, 0.125122249417971F,
278  0.117041147196131F, 0.108359046574615F, 0.0989178235311166F, 0.0884747910407618F, 0.0766214166358199F, 0.0625611247089854F, 0.0442373955203815F,
279  0.0F
280 };
281 
282 const TTFloat32 kTTLookupSquareRootSymetric[] = { // sqrt(linspace(1,0,511)), 511 point SquareRoot table with 0.7071 at element 256, the center of the table,
283  1.0F, 9.9901912678700733e-01F, 9.9803728957015880e-01F, 9.9705448550158160e-01F, 9.9607071171935280e-01F, 9.9508596534740279e-01F,
284  9.9410024349541681e-01F, 9.9311354325873613e-01F, 9.9212586171825812e-01F, 9.9113719594033522e-01F, 9.9014754297667429e-01F, 9.8915689986423261e-01F,
285  9.8816526362511559e-01F, 9.8717263126647137e-01F, 9.8617899978038626e-01F, 9.8518436614377802e-01F, 9.8418872731828833e-01F, 9.8319208025017502e-01F,
286  9.8219442187020245e-01F, 9.8119574909353113e-01F, 9.8019605881960692e-01F, 9.7919534793204810e-01F, 9.7819361329853272e-01F, 9.7719085177068343e-01F,
287  9.7618706018395274e-01F, 9.7518223535750626e-01F, 9.7417637409410485e-01F, 9.7316947317998614e-01F, 9.7216152938474487e-01F, 9.7115253946121194e-01F,
288  9.7014250014533188e-01F, 9.6913140815604037e-01F, 9.6811926019513950e-01F, 9.6710605294717233e-01F, 9.6609178307929588e-01F, 9.6507644724115393e-01F,
289  9.6406004206474738e-01F, 9.6304256416430367e-01F, 9.6202401013614591e-01F, 9.6100437655855964e-01F, 9.5998365999165869e-01F, 9.5896185697724956e-01F,
290  9.5793896403869561e-01F, 9.5691497768077804e-01F, 9.5588989438955696e-01F, 9.5486371063223097e-01F, 9.5383642285699466e-01F, 9.5280802749289528e-01F,
291  9.5177852094968840e-01F, 9.5074789961769102e-01F, 9.4971615986763414e-01F, 9.4868329805051377e-01F, 9.4764931049744061e-01F, 9.4661419351948717e-01F,
292  9.4557794340753509e-01F, 9.4454055643211954e-01F, 9.4350202884327306e-01F, 9.4246235687036706e-01F, 9.4142153672195195e-01F, 9.4037956458559646e-01F,
293  9.3933643662772426e-01F, 9.3829214899344915e-01F, 9.3724669780640979e-01F, 9.3620007916860060e-01F, 9.3515228916020343e-01F, 9.3410332383941508e-01F,
294  9.3305317924227538e-01F, 9.3200185138249170e-01F, 9.3094933625126275e-01F, 9.2989562981710006e-01F, 9.2884072802564799e-01F, 9.2778462679950147e-01F,
295  9.2672732203802255e-01F, 9.2566880961715425e-01F, 9.2460908538923281e-01F, 9.2354814518279893e-01F, 9.2248598480240485e-01F, 9.2142260002842191e-01F,
296  9.2035798661684454e-01F, 9.1929214029909245e-01F, 9.1822505678181143e-01F, 9.1715673174667112e-01F, 9.1608716085016162e-01F, 9.1501633972338681e-01F,
297  9.1394426397185669e-01F, 9.1287092917527690e-01F, 9.1179633088733569e-01F, 9.1072046463548972e-01F, 9.0964332592074615e-01F, 9.0856491021744357e-01F,
298  9.0748521297303009e-01F, 9.0640422960783917e-01F, 9.0532195551486261e-01F, 9.0423838605952211e-01F, 9.0315351657943732e-01F, 9.0206734238419162e-01F,
299  9.0097985875509612e-01F, 8.9989106094494986e-01F, 8.9880094417779843e-01F, 8.9770950364868951e-01F, 8.9661673452342561e-01F, 8.9552263193831427e-01F,
300  8.9442719099991586e-01F, 8.9333040678478781e-01F, 8.9223227433922669e-01F, 8.9113278867900692e-01F, 8.9003194478911707e-01F, 8.8892973762349325e-01F,
301  8.8782616210474841e-01F, 8.8672121312390040e-01F, 8.8561488554009526e-01F, 8.8450717418032887e-01F, 8.8339807383916402e-01F, 8.8228757927844570e-01F,
302  8.8117568522701195e-01F, 8.8006238638040235e-01F, 8.7894767740056245e-01F, 8.7783155291554527e-01F, 8.7671400751920925e-01F, 8.7559503577091313e-01F,
303  8.7447463219520616e-01F, 8.7335279128151622e-01F, 8.7222950748383310e-01F, 8.7110477522038909e-01F, 8.6997858887333501e-01F, 8.6885094278841279e-01F,
304  8.6772183127462466e-01F, 8.6659124860389791e-01F, 8.6545918901074548e-01F, 8.6432564669192347e-01F, 8.6319061580608392e-01F, 8.6205409047342318e-01F,
305  8.6091606477532712e-01F, 8.5977653275401156e-01F, 8.5863548841215753e-01F, 8.5749292571254421e-01F, 8.5634883857767530e-01F, 8.5520322088940237e-01F,
306  8.5405606648854293e-01F, 8.5290736917449417e-01F, 8.5175712270484205e-01F, 8.5060532079496531e-01F, 8.4945195711763499e-01F, 8.4829702530260875e-01F,
307  8.4714051893622078e-01F, 8.4598243156096564e-01F, 8.4482275667507822e-01F, 8.4366148773210747e-01F, 8.4249861814048532e-01F, 8.4133414126309047e-01F,
308  8.4016805041680587e-01F, 8.3900033887207159e-01F, 8.3783099985243170e-01F, 8.3666002653407556e-01F, 8.3548741204537280e-01F, 8.3431314946640334e-01F,
309  8.3313723182848065e-01F, 8.3195965211366951e-01F, 8.3078040325429714e-01F, 8.2959947813245827e-01F, 8.2841686957951399e-01F, 8.2723257037558429e-01F,
310  8.2604657324903330e-01F, 8.2485887087594878e-01F, 8.2366945587961415e-01F, 8.2247832082997430e-01F, 8.2128545824309385e-01F, 8.2009086058060854e-01F,
311  8.1889452024916964e-01F, 8.1769642959988043e-01F, 8.1649658092772603e-01F, 8.1529496647099520e-01F, 8.1409157841069435e-01F, 8.1288640886995411e-01F,
312  8.1167944991342778e-01F, 8.1047069354668166e-01F, 8.0926013171557742e-01F, 8.0804775630564574e-01F, 8.0683355914145194e-01F, 8.0561753198595254e-01F,
313  8.0439966653984363e-01F, 8.0317995444089996e-01F, 8.0195838726330482e-01F, 8.0073495651697091e-01F, 7.9950965364685234e-01F, 7.9828247003224628e-01F,
314  7.9705339698608568e-01F, 7.9582242575422146e-01F, 7.9458954751469502e-01F, 7.9335475337700112e-01F, 7.9211803438133943e-01F, 7.9087938149785608e-01F,
315  7.8963878562587453e-01F, 7.8839623759311561e-01F, 7.8715172815490597e-01F, 7.8590524799337580e-01F, 7.8465678771664493e-01F, 7.8340633785799718e-01F,
316  7.8215388887504289e-01F, 7.8089943114886917e-01F, 7.7964295498317815e-01F, 7.7838445060341266e-01F, 7.7712390815586874e-01F, 7.7586131770679578e-01F,
317  7.7459666924148340e-01F, 7.7332995266333404e-01F, 7.7206115779292317e-01F, 7.7079027436704439e-01F, 7.6951729203774100e-01F, 7.6824220037132340e-01F,
318  7.6696498884737041e-01F, 7.6568564685771767e-01F, 7.6440416370542885e-01F, 7.6312052860375246e-01F, 7.6183473067506247e-01F, 7.6054675894978319e-01F,
319  7.5925660236529657e-01F, 7.5796424976483456e-01F, 7.5666968989635308e-01F, 7.5537291141138863e-01F, 7.5407390286389842e-01F, 7.5277265270908100e-01F,
320  7.5146914930217934e-01F, 7.5016338089726542e-01F, 7.4885533564600459e-01F, 7.4754500159640203e-01F, 7.4623236669152804e-01F, 7.4491741876822415e-01F,
321  7.4360014555578746e-01F, 7.4228053467463551e-01F, 7.4095857363494844e-01F, 7.3963424983528980e-01F, 7.3830755056120501e-01F, 7.3697846298379766e-01F,
322  7.3564697415828151e-01F, 7.3431307102251009e-01F, 7.3297674039548100e-01F, 7.3163796897581712e-01F, 7.3029674334022143e-01F, 7.2895304994190668e-01F,
323  7.2760687510899891e-01F, 7.2625820504291505e-01F, 7.2490702581671218e-01F, 7.2355332337340961e-01F, 7.2219708352428313e-01F, 7.2083829194712934e-01F,
324  7.1947693418450143e-01F, 7.1811299564191422e-01F, 7.1674646158601885e-01F, 7.1537731714274588e-01F, 7.1400554729541665e-01F, 7.1263113688282098e-01F,
325  7.1125407059726309e-01F, 7.0987433298257163e-01F, 7.0849190843207621e-01F, 7.0710678118654757e-01F, 7.0571893533210128e-01F, 7.0432835479806510e-01F,
326  7.0293502335480740e-01F, 7.0153892461152723e-01F, 7.0014004201400493e-01F, 6.9873835884231161e-01F, 6.9733385820847793e-01F, 6.9592652305411962e-01F,
327  6.9451633614802077e-01F, 6.9310328008367195e-01F, 6.9168733727676379e-01F, 6.9026848996263335e-01F, 6.8884672019366444e-01F, 6.8742200983663826e-01F,
328  6.8599434057003539e-01F, 6.8456369388128679e-01F, 6.8313005106397318e-01F, 6.8169339321497113e-01F, 6.8025370123154472e-01F, 6.7881095580838280e-01F,
329  6.7736513743457805e-01F, 6.7591622639054849e-01F, 6.7446420274490015e-01F, 6.7300904635122716e-01F, 6.7155073684485134e-01F, 6.7008925363949634e-01F,
330  6.6862457592389746e-01F, 6.6715668265834394e-01F, 6.6568555257115258e-01F, 6.6421116415507142e-01F, 6.6273349566361117e-01F, 6.6125252510730292e-01F,
331  6.5976823024988007e-01F, 6.5828058860438332e-01F, 6.5678957742918531e-01F, 6.5529517372393520e-01F, 6.5379735422541818e-01F, 6.5229609540333089e-01F,
332  6.5079137345596860e-01F, 6.4928316430582145e-01F, 6.4777144359508076e-01F, 6.4625618668104789e-01F, 6.4473736863144815e-01F, 6.4321496421964441e-01F,
333  6.4168894791974784e-01F, 6.4015929390162529e-01F, 6.3862597602579707e-01F, 6.3708896783822622e-01F, 6.3554824256499287e-01F, 6.3400377310685263e-01F,
334  6.3245553203367588e-01F, 6.3090349157876324e-01F, 6.2934762363303565e-01F, 6.2778789973909466e-01F, 6.2622429108514954e-01F, 6.2465676849880725e-01F,
335  6.2308530244072280e-01F, 6.2150986299810362e-01F, 6.1993041987806663e-01F, 6.1834694240084231e-01F, 6.1675939949282088e-01F, 6.1516775967943871e-01F,
336  6.1357199107789639e-01F, 6.1197206138970806e-01F, 6.1036793789307375e-01F, 6.0875958743507086e-01F, 6.0714697642365989e-01F, 6.0553007081949839e-01F,
337  6.0390883612755764e-01F, 6.0228323738853606e-01F, 6.0065323917006408e-01F, 5.9901880555769249e-01F, 5.9737990014566034e-01F, 5.9573648602743279e-01F,
338  5.9408852578600457e-01F, 5.9243598148395982e-01F, 5.9077881465328230e-01F, 5.8911698628490738e-01F, 5.8745045681800800e-01F, 5.8577918612900615e-01F,
339  5.8410313352030163e-01F, 5.8242225770870903e-01F, 5.8073651681359284e-01F, 5.7904586834469240e-01F, 5.7735026918962584e-01F, 5.7564967560106195e-01F,
340  5.7394404318355152e-01F, 5.7223332688000339e-01F, 5.7051748095779797e-01F, 5.6879645899452103e-01F, 5.6707021386331025e-01F, 5.6533869771779721e-01F,
341  5.6360186197663453e-01F, 5.6185965730759124e-01F, 5.6011203361120387e-01F, 5.5835894000396635e-01F, 5.5660032480104382e-01F, 5.5483613549849287e-01F,
342  5.5306631875497214e-01F, 5.5129082037292354e-01F, 5.4950958527920646e-01F, 5.4772255750516619e-01F, 5.4592968016611310e-01F, 5.4413089544019555e-01F,
343  5.4232614454664041e-01F, 5.4051536772334052e-01F, 5.3869850420376375e-01F, 5.3687549219315933e-01F, 5.3504626884403328e-01F, 5.3321077023086849e-01F,
344  5.3136893132405716e-01F, 5.2952068596301793e-01F, 5.2766596682846589e-01F, 5.2580470541380109e-01F, 5.2393683199558383e-01F, 5.2206227560305785e-01F,
345  5.2018096398668578e-01F, 5.1829282358565631e-01F, 5.1639777949432231e-01F, 5.1449575542752646e-01F, 5.1258667368476873e-01F, 5.1067045511316800e-01F,
346  5.0874701906916830e-01F, 5.0681628337893725e-01F, 5.0487816429740129e-01F, 5.0293257646586009e-01F, 5.0097943286811963e-01F, 4.9901864478507940e-01F,
347  4.9705012174770841e-01F, 4.9507377148833720e-01F, 4.9308949989019318e-01F, 4.9109721093510122e-01F, 4.8909680664926636e-01F, 4.8708818704705248e-01F,
348  4.8507125007266599e-01F, 4.8304589153964789e-01F, 4.8101200506807290e-01F, 4.7896948201934780e-01F, 4.7691821142849727e-01F, 4.7485807993381701e-01F,
349  4.7278897170376749e-01F, 4.7071076836097597e-01F, 4.6862334890320489e-01F, 4.6652658962113769e-01F, 4.6442036401282399e-01F, 4.6230454269461646e-01F,
350  4.6017899330842227e-01F, 4.5804358042508081e-01F, 4.5589816544366790e-01F, 4.5374260648651510e-01F, 4.5157675828971872e-01F, 4.4940047208889916e-01F,
351  4.4721359549995787e-01F, 4.4501597239455853e-01F, 4.4280744277004763e-01F, 4.4058784261350598e-01F, 4.3835700375960462e-01F, 4.3611475374191655e-01F,
352  4.3386091563731233e-01F, 4.3159530790304196e-01F, 4.2931774420607877e-01F, 4.2702803324427147e-01F, 4.2472597855881755e-01F, 4.2241137833753917e-01F,
353  4.2008402520840299e-01F, 4.1774370602268646e-01F, 4.1539020162714863e-01F, 4.1302328662451659e-01F, 4.1064272912154687e-01F, 4.0824829046386296e-01F,
354  4.0583972495671383e-01F, 4.0341677957072591e-01F, 4.0097919363165241e-01F, 3.9852669849304284e-01F, 3.9605901719066972e-01F, 3.9357586407745299e-01F,
355  3.9107694443752145e-01F, 3.8856195407793437e-01F, 3.8603057889646164e-01F, 3.8348249442368526e-01F, 3.8091736533753134e-01F, 3.7833484494817660e-01F,
356  3.7573457465108978e-01F, 3.7311618334576396e-01F, 3.7047928681747416e-01F, 3.6782348707914070e-01F, 3.6514837167011072e-01F, 3.6245351290835603e-01F,
357  3.5973846709225071e-01F, 3.5700277364770833e-01F, 3.5424595421603811e-01F, 3.5146751167740370e-01F, 3.4866692910423897e-01F, 3.4584366863838195e-01F,
358  3.4299717028501769e-01F, 3.4012685061577241e-01F, 3.3723210137245013e-01F, 3.3431228796194884e-01F, 3.3136674783180570e-01F, 3.2839478871459260e-01F,
359  3.2539568672798419e-01F, 3.2236868431572402e-01F, 3.1931298801289848e-01F, 3.1622776601683789e-01F, 3.1311214554257472e-01F, 3.0996520993903331e-01F,
360  3.0678599553894820e-01F, 3.0357348821182994e-01F, 3.0032661958503204e-01F, 2.9704426289300234e-01F, 2.9372522840900406e-01F, 2.9036825840679642e-01F,
361  2.8697202159177576e-01F, 2.8353510693165518e-01F, 2.8005601680560205e-01F, 2.7653315937748602e-01F, 2.7296484008305644e-01F, 2.6934925210188182e-01F,
362  2.6568446566202852e-01F, 2.6196841599779186e-01F, 2.5819888974716110e-01F, 2.5437350953458415e-01F, 2.5048971643405982e-01F, 2.4654474994509659e-01F,
363  2.4253562503633300e-01F, 2.3845910571424869e-01F, 2.3431167445160250e-01F, 2.3008949665421122e-01F, 2.2578837914485941e-01F, 2.2140372138502393e-01F,
364  2.1693045781865630e-01F, 2.1236298927940864e-01F, 2.0769510081357417e-01F, 2.0291986247835686e-01F, 1.9802950859533480e-01F, 1.9301528944823074e-01F,
365  1.8786728732554481e-01F, 1.8257418583505536e-01F, 1.7712297710801905e-01F, 1.7149858514250885e-01F, 1.6568337391590285e-01F, 1.5965649400644932e-01F,
366  1.5339299776947418e-01F, 1.4686261420450211e-01F, 1.4002800840280114e-01F, 1.3284223283101448e-01F, 1.2524485821703013e-01F, 1.1715583722580102e-01F,
367  1.0846522890932789e-01F, 9.9014754297667248e-02F, 8.8561488554009374e-02F, 7.6696498884736911e-02F, 6.2622429108514843e-02F, 4.4280744277004687e-02F,
368  0.0F
369 };
370 
371 
372 const TTFloat32 kTTLookupHalfPaddedwWelch[] = { // 256 point window table
373  0.000000F, 0.000000F, 0.000000F, 0.000000F, 0.000000F, 0.000000F, 0.000000F, 0.000000F, 0.000000F, 0.000000F,
374  0.000000F, 0.000000F, 0.000000F, 0.000000F, 0.000000F, 0.000000F, 0.000000F, 0.006989F, 0.014008F, 0.021027F,
375  0.028046F, 0.035034F, 0.042053F, 0.049042F, 0.056061F, 0.063049F, 0.070038F, 0.077057F, 0.084045F, 0.091034F,
376  0.097992F, 0.104980F, 0.111938F, 0.118927F, 0.125885F, 0.132812F, 0.139771F, 0.146698F, 0.153656F, 0.160583F,
377  0.167480F, 0.174408F, 0.181305F, 0.188202F, 0.195068F, 0.201935F, 0.208801F, 0.215668F, 0.222504F, 0.229340F,
378  0.236145F, 0.242950F, 0.249756F, 0.256531F, 0.263306F, 0.270081F, 0.276825F, 0.283539F, 0.290253F, 0.296967F,
379  0.303650F, 0.310333F, 0.316986F, 0.323639F, 0.330261F, 0.336853F, 0.343445F, 0.350037F, 0.356598F, 0.363129F,
380  0.369659F, 0.376160F, 0.382660F, 0.389130F, 0.395569F, 0.402008F, 0.408417F, 0.414795F, 0.421173F, 0.427521F,
381  0.433868F, 0.440155F, 0.446442F, 0.452698F, 0.458954F, 0.465179F, 0.471375F, 0.477539F, 0.483704F, 0.489807F,
382  0.495911F, 0.501984F, 0.508057F, 0.514069F, 0.520081F, 0.526062F, 0.532013F, 0.537933F, 0.543823F, 0.549683F,
383  0.555542F, 0.561340F, 0.567139F, 0.572906F, 0.578644F, 0.584351F, 0.590027F, 0.595673F, 0.601288F, 0.606873F,
384  0.612427F, 0.617950F, 0.623444F, 0.628937F, 0.634369F, 0.639771F, 0.645142F, 0.650482F, 0.655792F, 0.661072F,
385  0.666321F, 0.671509F, 0.676697F, 0.681854F, 0.686951F, 0.692047F, 0.697083F, 0.702087F, 0.707062F, 0.712006F,
386  0.716919F, 0.721802F, 0.726624F, 0.731415F, 0.736176F, 0.740906F, 0.745605F, 0.750244F, 0.754883F, 0.759460F,
387  0.764008F, 0.768494F, 0.772980F, 0.777405F, 0.781799F, 0.786133F, 0.790466F, 0.794739F, 0.798981F, 0.803162F,
388  0.807312F, 0.811432F, 0.815521F, 0.819550F, 0.823547F, 0.827515F, 0.831421F, 0.835297F, 0.839142F, 0.842926F,
389  0.846680F, 0.850403F, 0.854065F, 0.857697F, 0.861267F, 0.864807F, 0.868317F, 0.871765F, 0.875183F, 0.878540F,
390  0.881866F, 0.885162F, 0.888397F, 0.891602F, 0.894745F, 0.897858F, 0.900940F, 0.903961F, 0.906921F, 0.909851F,
391  0.912750F, 0.915588F, 0.918365F, 0.921143F, 0.923828F, 0.926483F, 0.929108F, 0.931671F, 0.934204F, 0.936676F,
392  0.939117F, 0.941498F, 0.943848F, 0.946136F, 0.948364F, 0.950592F, 0.952728F, 0.954834F, 0.956909F, 0.958893F,
393  0.960876F, 0.962799F, 0.964661F, 0.966492F, 0.968262F, 0.970001F, 0.971680F, 0.973297F, 0.974884F, 0.976410F,
394  0.977905F, 0.979340F, 0.980743F, 0.982086F, 0.983368F, 0.984619F, 0.985840F, 0.986969F, 0.988068F, 0.989136F,
395  0.990143F, 0.991089F, 0.992004F, 0.992859F, 0.993652F, 0.994415F, 0.995148F, 0.995789F, 0.996429F, 0.996979F,
396  0.997498F, 0.997955F, 0.998383F, 0.998749F, 0.999084F, 0.999329F, 0.999573F, 0.999725F, 0.999847F, 0.999939F,
397  0.999969F, 0.999969F, 0.999969F, 0.999969F, 0.999969F, 0.999969F, 0.999969F, 0.999969F, 0.999969F, 0.999969F,
398  0.999969F, 0.999969F, 0.999969F, 0.999969F, 0.999969F, 0.999969F
399 };
400 
401 const TTFloat32 kTTLookupQuarterSine[] = { // 128 point quarter sine wave table
402  0.000000F, 0.012272F, 0.024541F, 0.036807F, 0.049068F, 0.061321F, 0.073565F, 0.085797F,
403  0.098017F, 0.110222F, 0.122411F, 0.134581F, 0.146730F, 0.158858F, 0.170962F, 0.183040F,
404  0.195090F, 0.207111F, 0.219101F, 0.231058F, 0.242980F, 0.254866F, 0.266713F, 0.278520F,
405  0.290285F, 0.302006F, 0.313682F, 0.325310F, 0.336890F, 0.348419F, 0.359895F, 0.371317F,
406  0.382683F, 0.393992F, 0.405241F, 0.416430F, 0.427555F, 0.438616F, 0.449611F, 0.460539F,
407  0.471397F, 0.482184F, 0.492898F, 0.503538F, 0.514103F, 0.524590F, 0.534998F, 0.545325F,
408  0.555570F, 0.565732F, 0.575808F, 0.585798F, 0.595699F, 0.605511F, 0.615232F, 0.624859F,
409  0.634393F, 0.643832F, 0.653173F, 0.662416F, 0.671559F, 0.680601F, 0.689541F, 0.698376F,
410  0.707107F, 0.715731F, 0.724247F, 0.732654F, 0.740951F, 0.749136F, 0.757209F, 0.765167F,
411  0.773010F, 0.780737F, 0.788346F, 0.795837F, 0.803208F, 0.810457F, 0.817585F, 0.824589F,
412  0.831470F, 0.838225F, 0.844854F, 0.851355F, 0.857729F, 0.863973F, 0.870087F, 0.876070F,
413  0.881921F, 0.887640F, 0.893224F, 0.898674F, 0.903989F, 0.909168F, 0.914210F, 0.919114F,
414  0.923880F, 0.928506F, 0.932993F, 0.937339F, 0.941544F, 0.945607F, 0.949528F, 0.953306F,
415  0.956940F, 0.960431F, 0.963776F, 0.966976F, 0.970031F, 0.972940F, 0.975702F, 0.978317F,
416  0.980785F, 0.983105F, 0.985278F, 0.987301F, 0.989177F, 0.990903F, 0.992480F, 0.993907F,
417  0.995185F, 0.996313F, 0.997290F, 0.998118F, 0.998795F, 0.999322F, 0.999699F, 0.999925F
418 };
419 
420 
421 /****************************************************************************************************/
422 
423 
424 TTDataInfoPtr ttDataTypeInfo[kNumTTDataTypes];
425 
426 void TTDataInfo::addDataInfoForType(TTDataType type)
427 {
428  ttDataTypeInfo[type] = new TTDataInfo;
429 
430  if (type == kTypeNone) {
431  ttDataTypeInfo[type]->name = &kTTSym_none;
432  ttDataTypeInfo[type]->isNumerical = NO;
433  ttDataTypeInfo[type]->bitdepth = 0;
434  }
435 
436  else if (type == kTypeFloat32) {
437  ttDataTypeInfo[type]->name = &kTTSym_float32;
438  ttDataTypeInfo[type]->isNumerical = YES;
439  ttDataTypeInfo[type]->bitdepth = 32;
440  }
441  else if (type == kTypeFloat64) {
442  ttDataTypeInfo[type]->name = &kTTSym_float64;
443  ttDataTypeInfo[type]->isNumerical = YES;
444  ttDataTypeInfo[type]->bitdepth = 64;
445  }
446  else if (type == kTypeInt8) {
447  ttDataTypeInfo[type]->name = &kTTSym_int8;
448  ttDataTypeInfo[type]->isNumerical = YES;
449  ttDataTypeInfo[type]->bitdepth = 8;
450  }
451  else if (type == kTypeUInt8) {
452  ttDataTypeInfo[type]->name = &kTTSym_uint8;
453  ttDataTypeInfo[type]->isNumerical = YES;
454  ttDataTypeInfo[type]->bitdepth = 8;
455  }
456  else if (type == kTypeInt16) {
457  ttDataTypeInfo[type]->name = &kTTSym_int16;
458  ttDataTypeInfo[type]->isNumerical = YES;
459  ttDataTypeInfo[type]->bitdepth = 16;
460  }
461  else if (type == kTypeUInt16) {
462  ttDataTypeInfo[type]->name = &kTTSym_uint16;
463  ttDataTypeInfo[type]->isNumerical = YES;
464  ttDataTypeInfo[type]->bitdepth = 16;
465  }
466  else if (type == kTypeInt32) {
467  ttDataTypeInfo[type]->name = &kTTSym_int32;
468  ttDataTypeInfo[type]->isNumerical = YES;
469  ttDataTypeInfo[type]->bitdepth = 32;
470  }
471  else if (type == kTypeUInt32) {
472  ttDataTypeInfo[type]->name = &kTTSym_uint32;
473  ttDataTypeInfo[type]->isNumerical = YES;
474  ttDataTypeInfo[type]->bitdepth = 32;
475  }
476  else if (type == kTypeInt64) {
477  ttDataTypeInfo[type]->name = &kTTSym_int64;
478  ttDataTypeInfo[type]->isNumerical = YES;
479  ttDataTypeInfo[type]->bitdepth = 64;
480  }
481  else if (type == kTypeUInt64) {
482  ttDataTypeInfo[type]->name = &kTTSym_uint64;
483  ttDataTypeInfo[type]->isNumerical = YES;
484  ttDataTypeInfo[type]->bitdepth = 64;
485  }
486 
487  else if (type == kTypeBoolean) {
488  ttDataTypeInfo[type]->name = &kTTSym_boolean;
489  ttDataTypeInfo[type]->isNumerical = NO;
490  ttDataTypeInfo[type]->bitdepth = 1;
491  }
492  else if (type == kTypeSymbol) {
493  ttDataTypeInfo[type]->name = &kTTSym_symbol;
494  ttDataTypeInfo[type]->isNumerical = NO;
495  ttDataTypeInfo[type]->bitdepth = -1;
496  }
497  else if (type == kTypeObject) {
498  ttDataTypeInfo[type]->name = &kTTSym_object;
499  ttDataTypeInfo[type]->isNumerical = NO;
500  ttDataTypeInfo[type]->bitdepth = -1;
501  }
502  else if (type == kTypePointer) {
503  ttDataTypeInfo[type]->name = &kTTSym_pointer;
504  ttDataTypeInfo[type]->isNumerical = NO;
505  ttDataTypeInfo[type]->bitdepth = sizeof(void*);
506  }
507  else if (type == kTypeString) {
508  ttDataTypeInfo[type]->name = &kTTSym_string;
509  ttDataTypeInfo[type]->isNumerical = NO;
510  ttDataTypeInfo[type]->bitdepth = -1;
511  }
512  else if (type == kTypeLocalValue) {
513  ttDataTypeInfo[type]->name = &kTTSym_value;
514  ttDataTypeInfo[type]->isNumerical = NO;
515  ttDataTypeInfo[type]->bitdepth = -1;
516  }
517 }
518 
519 TTDataType TTDataInfo::matchSymbolToDataType(TTSymbol& typeAsSymbol)
520 {
521  // look through the symbols for each type in the enumerated list and see if there is a match...
522  int type = 0;
523  while (++type < kNumTTDataTypes)
524  {
525  // if yes, then return that type
526  if ((ttDataTypeInfo[type]->name)->rawpointer() == typeAsSymbol.rawpointer()) return TTDataType(type);
527  }
528  // if no, then return the TTDataInfoPtr for type "none"
529  return kTypeNone;
530 }
531 
532 
533 
534 void TTLogMessage(TTImmutableCString message, ...)
535 {
536  char str[4096];
537  va_list ap;
538 
539  va_start(ap, message);
540  vsnprintf(str, 4096, message, ap);
541  va_end(ap);
542  str[4095] = 0;
543 #ifdef TT_PLATFORM_WIN
544  OutputDebugString(str);
545 #else
546  // we fail to compile on linux with the current settings if we use fprintf()
547  // fprintf(stderr, str);
548  std::cerr << str;
549 #endif
550 }
551 
552 
553 void TTLogWarning(TTImmutableCString message, ...)
554 {
555  char str[4096];
556  va_list ap;
557 
558  va_start(ap, message);
559  vsnprintf(str, 4096, message, ap);
560  va_end(ap);
561  str[4095] = 0;
562 #ifdef TT_PLATFORM_WIN
563  OutputDebugString(str);
564 #else
565  // we fail to compile on linux with the current settings if we use fprintf()
566  // fprintf(stderr, str);
567  std::cerr << str;
568 #endif
569 }
570 
571 
572 void TTLogError(TTImmutableCString message, ...)
573 {
574  char str[4096];
575  va_list ap;
576 
577  va_start(ap, message);
578  vsnprintf(str, 4096, message, ap);
579  va_end(ap);
580  str[4095] = 0;
581 #ifdef TT_PLATFORM_WIN
582  OutputDebugString(str);
583 #else
584  // we fail to compile on linux with the current settings if we use fprintf()
585  // fprintf(stderr, str);
586  std::cerr << str;
587 #endif
588 }
589 
590 
591 void TTLogDebug(TTImmutableCString message, ...)
592 {
593  if (ttEnvironment->mDebugBasic) {
594  char str[4096];
595  va_list ap;
596 
597  va_start(ap, message);
598  vsnprintf(str, 4096, message, ap);
599  va_end(ap);
600  str[4095] = 0;
601 #ifdef TT_PLATFORM_WIN
602  OutputDebugString(str);
603 #else
604  // we fail to compile on linux with the current settings if we use fprintf()
605  // fprintf(stderr, str);
606  std::cerr << str;
607 #endif
608  }
609 }
610 
612 {
613  MTRand twister;
614  return twister.rand();
615 }
616 
617 
618 
619 // private: used in this file but not elsewhere, so not prototyped in the header file
620 // This one from http://www.gamedev.net/community/forums/topic.asp?topic_id=315623
621 TTPtr TTAlignedMalloc(size_t size, int byteAlign)
622 {
623  void *mallocPtr = malloc(size + byteAlign + sizeof(void*));
624  size_t ptrInt = (size_t)mallocPtr;
625 
626  ptrInt = (ptrInt + byteAlign + sizeof(void*)) / byteAlign * byteAlign;
627  *(((void**)ptrInt) - 1) = mallocPtr;
628 
629  return (void*)ptrInt;
630 }
631 
632 // private: used in this file but not elsewhere, so not prototyped in the header file
633 void TTAlignedFree(void *ptr)
634 {
635  if (ptr)
636  free(*(((void**)ptr) - 1));
637 }
638 
639 
640 
641 TTPtr TTMalloc16(size_t numBytes)
642 {
643  return TTAlignedMalloc(numBytes, 16);
644 }
645 
646 
647 void TTFree16(TTPtr ptr)
648 {
649  TTAlignedFree(ptr);
650 }
651 
652 
void TTFree16(TTPtr ptr)
Free memory allocated using TTMalloc16().
Definition: TTBase.cpp:647
const TTFloat64 kTTAntiDenormalValue
Constant used by the ttantidenormal function.
Definition: TTBase.cpp:30
const TTFloat32 kTTLookupQuarterSine[]
Quarter Sine lookup table.
Definition: TTBase.cpp:401
TTFOUNDATION_EXPORT TTEnvironment * ttEnvironment
The environment object has one instance, which is global in scope.
8-bit unsigned integer, range is 0 through 255.
Definition: TTBase.h:274
const TTFloat32 kTTLookupSquareRootSymetric[]
Square Root lookup table with 0.701 at element 256.
Definition: TTBase.cpp:282
const TTFloat64 kTTInv255
Constant for color representation when converting from char8 to float representation.
Definition: TTBase.cpp:36
Object type.
Definition: TTBase.h:283
64-bit unsigned integer, range is 0 through 18,446,744,073,709,551,615.
Definition: TTBase.h:280
TTFloat64 TTRandom64()
Produces a random-valued 64-bit floating-point number in the range [0.0, 1.0].
Definition: TTBase.cpp:611
const TTFloat32 kTTLookupHalfPaddedwWelch[]
256 point window table (the first half of it)
Definition: TTBase.cpp:372
const TTFloat64 kTTQuarterPi
[doxygenAppendixC_constExample]
Definition: TTBase.cpp:29
const TTFloat64 kTTTwoPi
Pre-calculated value of pi * 2.
Definition: TTBase.cpp:24
TTDataType
TTBlue Data Types Enumeration of data types used through out TTBlue, including the TTValue class and ...
Definition: TTBase.h:269
Symbol type.
Definition: TTBase.h:282
double TTFloat64
64 bit floating point number
Definition: TTBase.h:188
This is a special type used by TTAttribute to indicate that a value is a TTValue and is locally maint...
Definition: TTBase.h:286
const TTFloat64 kTTTwoSqrt2
Pre-calculated value of 2 * sqrt(2) (2.8284).
Definition: TTBase.cpp:27
16-bit unsigned integer, range is 0 through 65,535.
Definition: TTBase.h:276
void * TTPtr
A generic pointer.
Definition: TTBase.h:248
const TTFloat64 kTTGainMidiPowerInv
Invverse power constant used when calculating MID gain.
Definition: TTBase.cpp:35
const TTFloat64 kTTRadiansToDegrees
Factor constant for converting radians to degrees.
Definition: TTBase.cpp:32
16-bit signed integer, range is −32,768 through 32,767.
Definition: TTBase.h:275
TTPtr rawpointer() const
Get the value of the raw pointer into the symbol table.
Definition: TTSymbol.h:134
64-bit floating point
Definition: TTBase.h:272
Jamoma's lowest-level base class and related infrastructure.
The TTSymbol class is used to represent a string and efficiently pass and compare that string...
Definition: TTSymbol.h:26
float TTFloat32
32 bit floating point number
Definition: TTBase.h:187
Boolean (1/0) or (true/false) flag.
Definition: TTBase.h:281
const TTFloat64 kTTHalfSqrt2
Pre-calculated value of sqrt(2)/2 (0.701).
Definition: TTBase.cpp:26
TTBoolean mDebugBasic
Attribute: Basic debug functionality is enabled when true.
Definition: TTEnvironment.h:53
const TTFloat64 kTTSqrt2
Pre-calculated square-root of 2 (1.4142).
Definition: TTBase.cpp:25
const TTFloat32 kTTLookupEqualPower[]
Equal Power lookup table, 512 elements.
Definition: TTBase.cpp:38
64-bit signed integer, ragne is −9,223,372,036,854,775,808 through 9,223,372,036,854,775,807
Definition: TTBase.h:279
32-bit floating point
Definition: TTBase.h:271
TTEnvironment is a global object providing information on the environemt.
const TTFloat32 kTTLookupEqualPowerSymetric[]
Equal Power lookup table with 0.701 at element 256.
Definition: TTBase.cpp:115
32-bit signed integer, range is -2,147,483,648 through 2,147,483,647.
Definition: TTBase.h:277
void TTLogMessage(TTImmutableCString message,...)
Platform and host independent method for posting log messages.
Definition: TTBase.cpp:534
const TTFloat64 kTTDegreesToRadians
Factor constant for converting degrees to radians.
Definition: TTBase.cpp:33
Pointer type.
Definition: TTBase.h:284
const TTFloat64 kTTHalfPi
Pre-calculated value of pi/2.
Definition: TTBase.cpp:28
32-bit unsigned integer, range is 0 through 4,294,967,295.
Definition: TTBase.h:278
8-bit signed integer, range is -128 through 127.
Definition: TTBase.h:273
const TTFloat64 kTTGainMidiPower
Power constant used when calculating MID gain.
Definition: TTBase.cpp:34
const TTFloat32 kTTLookupSquareRoot[]
Square Root lookup table, 512 elements.
Definition: TTBase.cpp:205
const TTFloat64 kTTPi
[doxygenAppendixC_constExample]
Definition: TTBase.cpp:23
TTDataInfoPtr ttDataTypeInfo[kNumTTDataTypes]
An array, indexed by values from TTDataType, containing information about those data types...
Definition: TTBase.cpp:424
TTPtr TTMalloc16(size_t numBytes)
Allocate memory from the heap aligned to 16-byte boundaries.
Definition: TTBase.cpp:641
String type.
Definition: TTBase.h:285
void TTLogDebug(TTImmutableCString message,...)
Platform and host independent method for posting messages only when debugging is enabled in the envir...
Definition: TTBase.cpp:591
const TTFloat64 kTTEpsilon
A very very small value, used for float equality comaprisments.
Definition: TTBase.cpp:31
void TTLogError(TTImmutableCString message,...)
Platform and host independent method for posting errors.
Definition: TTBase.cpp:572
void TTLogWarning(TTImmutableCString message,...)
Platform and host independent method for posting warnings.
Definition: TTBase.cpp:553