tklib1.c 267 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488
  1. /* Release 8 */
  2. /*
  3. * Copyright (c) 1983-2020 Trevor Wishart and Composers Desktop Project Ltd
  4. * http://www.trevorwishart.co.uk
  5. * http://www.composersdesktop.com
  6. *
  7. This file is part of the CDP System.
  8. The CDP System is free software; you can redistribute it
  9. and/or modify it under the terms of the GNU Lesser General Public
  10. License as published by the Free Software Foundation; either
  11. version 2.1 of the License, or (at your option) any later version.
  12. The CDP System is distributed in the hope that it will be useful,
  13. but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  15. GNU Lesser General Public License for more details.
  16. You should have received a copy of the GNU Lesser General Public
  17. License along with the CDP System; if not, write to the Free Software
  18. Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  19. 02111-1307 USA
  20. *
  21. */
  22. // AUGUST 21: 2005
  23. #include <stdio.h>
  24. #include <stdlib.h>
  25. #include <osbind.h>
  26. #include <structures.h>
  27. #include <tkglobals.h>
  28. #include <sfsys.h>
  29. #include <cdparams.h>
  30. #include <globcon.h>
  31. #include <localcon.h>
  32. #include <processno.h>
  33. #include <modeno.h>
  34. #include <filetype.h>
  35. #include <formants.h>
  36. #include <pnames.h>
  37. #include <sndinfo.h>
  38. #include <headread.h>
  39. #include <house.h>
  40. #include <pvoc.h>
  41. #include <distort1.h>
  42. #include <ctype.h>
  43. #include <string.h>
  44. #include <logic.h>
  45. #include <math.h>
  46. #include <float.h>
  47. //TW NEW
  48. #include <vowels2.h>
  49. /* WARNING: These function assumes brktables are INTERPOLATED LINEARLY */
  50. /* If not, function needs to take SRATE as a parameter, and compare sample-by-sample */
  51. //#ifdef unix
  52. #define round(x) lround((x))
  53. //#endif
  54. #define EQUIVALENT (0) /* brktables are identical */
  55. #define FIRST_LESS (1)
  56. #define FIRST_GREATER (2)
  57. #define CROSSED (-1) /* brktable vals cross */
  58. #define INVALID (-1) /* at least 1 of brktables has only 1 val or doesn't exist */
  59. static int value_greater_than_brkvals(double val,double *brk,int brksize,int repel);
  60. static int value_less_than_brkvals(double val,double *brk,int brksize,int repel);
  61. static int brk_compare(double *brk1,int brksize1,double *brk2,int brksize2,int repel);
  62. static int establish_orientation(double val1, double val2,int repel);
  63. static double establish_current_time(double t1,double t2);
  64. static double establish_value_at_current_time(double thistime,double *t,double *brk,double *v);
  65. static double interpval(double thistime,double lastval, double nextval, double lasttime, double nexttime);
  66. int getpeakdata(int ifd, float *peakval,int *peakpos,SFPROPS props);
  67. /*
  68. #define TEST_HEADREAD 1
  69. */
  70. #ifdef TEST_HEADREAD
  71. static int headread_check(SFPROPS props,char *filename,int ifd);
  72. #endif
  73. #define AN_HOUR (3600.0)
  74. #define A_MINUTE (60.0)
  75. /**************************** ITEMS FORMERLY IN FILETYPE **************************/
  76. char *get_last_slash(char *filename,int filenamelen);
  77. /**************************** ITEMS FORMERLY IN VALIDATE **************************/
  78. void validate(int applicno,int *valid);
  79. /***************************** GET_WORD_FROM_STRING ****************************
  80. *
  81. * Read a word in a larger string.
  82. *
  83. * p returns address reached after word read.
  84. * q returns address of word.
  85. *
  86. */
  87. int get_word_from_string(char **p,char **q)
  88. {
  89. while(isspace(**p)) /* SKIP LEADING SPACE */
  90. (*p)++;
  91. *q = *p; /* SET IN_STRING POINTER */
  92. if(**p==ENDOFSTR)
  93. return(0); /* END OF BIG_STRING: NO WORD THIS TIME */
  94. while(!isspace(**p)) {
  95. if(**p==ENDOFSTR)
  96. return(1); /* WORD FOUND: END OF BIG_STRING */
  97. (*p)++;
  98. }
  99. **p = ENDOFSTR; /* WORD FOUND,BUT NOT END OF BIG_STRING, SO ENDMARKED: */
  100. (*p)++; /* GO TO NEXT CHARACTER */
  101. return(1);
  102. }
  103. /************************** GET_FLOAT_FROM_WITHIN_STRING **************************
  104. * takes a pointer TO A POINTER to a string. If it succeeds in finding
  105. * a float it returns the float value (*val), and it's new position in the
  106. * string (*str).
  107. */
  108. int get_float_from_within_string(char **str,double *val)
  109. {
  110. char *p, *valstart;
  111. int decimal_point_cnt = 0, has_digits = 0;
  112. p = *str;
  113. while(isspace(*p))
  114. p++;
  115. valstart = p;
  116. switch(*p) {
  117. case('-'): break;
  118. case('.'): decimal_point_cnt=1; break;
  119. default:
  120. if(!isdigit(*p))
  121. return(FALSE);
  122. has_digits = TRUE;
  123. break;
  124. }
  125. p++;
  126. while(!isspace(*p) && *p!=NEWLINE && *p!=ENDOFSTR) {
  127. if(isdigit(*p))
  128. has_digits = TRUE;
  129. else if(*p == '.') {
  130. if(++decimal_point_cnt>1)
  131. return(FALSE);
  132. } else
  133. return(FALSE);
  134. p++;
  135. }
  136. if(!has_digits || sscanf(valstart,"%lf",val)!=1)
  137. return(FALSE);
  138. *str = p;
  139. return(TRUE);
  140. }
  141. /**************************** FLTEQ *******************************/
  142. int flteq(double f1,double f2)
  143. {
  144. double upperbnd, lowerbnd;
  145. upperbnd = f2 + FLTERR;
  146. lowerbnd = f2 - FLTERR;
  147. if((f1>upperbnd) || (f1<lowerbnd))
  148. return(FALSE);
  149. return(TRUE);
  150. }
  151. //TW NEW, FOR FLOATPOINT DATA
  152. /**************************** FLTEQ *******************************/
  153. int smpflteq(double f1,double f2)
  154. {
  155. double upperbnd, lowerbnd;
  156. upperbnd = f2 + SMP_FLTERR;
  157. lowerbnd = f2 - SMP_FLTERR;
  158. if((f1>upperbnd) || (f1<lowerbnd))
  159. return(FALSE);
  160. return(TRUE);
  161. }
  162. /*********************************** SWAP *************************/
  163. void swap(double *d1, double *d2)
  164. {
  165. double dd;
  166. dd = *d1;
  167. *d1 = *d2;
  168. *d2 = dd;
  169. }
  170. /*********************************** IISWAP *************************/
  171. void iiswap(int *d1, int *d2)
  172. {
  173. int dd;
  174. dd = *d1;
  175. *d1 = *d2;
  176. *d2 = dd;
  177. }
  178. /************************** MIDITOHZ ************************/
  179. double miditohz(double val)
  180. {
  181. val += 3.0;
  182. val /= 12.0;
  183. val = pow((double)2.0,val);
  184. val *= LOW_A;
  185. return(val);
  186. }
  187. /************************** HZTOMIDI *****************************/
  188. int hztomidi(double *midi,double hz)
  189. {
  190. double val;
  191. if(hz< FLTERR) {
  192. sprintf(errstr,"Sent a 0 Hz value to hztomidi()\n");
  193. return(PROGRAM_ERROR);
  194. }
  195. val = hz;
  196. val /= LOW_A;
  197. val = LOG2(val);
  198. val *= 12.0;
  199. val -= 3.0;
  200. *midi = val;
  201. return(FINISHED);
  202. }
  203. /************************** UNCHECKED_HZTOMIDI *****************************/
  204. double unchecked_hztomidi(double hz)
  205. {
  206. double val;
  207. val = hz;
  208. val /= LOW_A;
  209. val = LOG2(val);
  210. val *= 12.0;
  211. val -= 3.0;
  212. return(val);
  213. }
  214. /********************** GET_LEVEL ****************************/
  215. int get_level(char *thisword,double *level)
  216. {
  217. if(is_dB(thisword)) {
  218. if(!get_leveldb(thisword,level)) {
  219. sprintf(errstr,"Failed to get dB level: get_level()\n");
  220. return(PROGRAM_ERROR);
  221. }
  222. } else {
  223. if(sscanf(thisword,"%lf",level)!=1) {
  224. sprintf(errstr,"Failed to get level: get_level()\n");
  225. return(PROGRAM_ERROR);
  226. }
  227. }
  228. return(FINISHED);
  229. }
  230. /************************************* IS_DB ******************************/
  231. int is_dB(char *str)
  232. {
  233. char *p = str + strlen(str);
  234. p -= 2;
  235. if(strcmp(p,"dB") && strcmp(p,"DB") && strcmp(p,"db"))
  236. return(FALSE);
  237. return(TRUE);
  238. }
  239. /**************************** GET_LEVELDB ********************************/
  240. int get_leveldb(char *str,double *val)
  241. {
  242. int is_neg = 0;
  243. if(sscanf(str,"%lf",val)!=1)
  244. return(FALSE);
  245. *val = max(*val,MIN_DB_ON_16_BIT);
  246. //TW NEW
  247. *val = min(*val,MAX_DB_ON_16_BIT);
  248. if(flteq(*val,0.0)) {
  249. *val = 1.0;
  250. return(TRUE);
  251. }
  252. if(*val<0.0) {
  253. *val = -(*val);
  254. is_neg = 1;
  255. }
  256. *val /= 20.0;
  257. *val = pow(10.0,*val);
  258. if(is_neg)
  259. *val = 1.0/(*val);
  260. return(TRUE);
  261. }
  262. /**************************** DBTOGAIN ********************************/
  263. double dbtogain(double val)
  264. {
  265. int is_neg = FALSE;
  266. if(val <= MIN_DB_ON_16_BIT)
  267. return(0.0);
  268. if(flteq(val,0.0))
  269. return(1.0);
  270. if(val<0.0) {
  271. val = -val;
  272. is_neg = TRUE;
  273. }
  274. val /= 20.0;
  275. val = pow(10.0,val);
  276. if(is_neg)
  277. val = 1.0/val;
  278. return(val);
  279. }
  280. /***************************** IS_AN_EMPTY_LINE_OR_A_COMMENT **************************/
  281. int is_an_empty_line_or_a_comment(char *p)
  282. {
  283. while(isspace(*p))
  284. p++;
  285. if(*p==';' || *p=='\n' || *p==ENDOFSTR)
  286. return(1);
  287. return(0);
  288. }
  289. /***************************** IS_A_COMMENT **************************/
  290. int is_a_comment(char *p)
  291. {
  292. while(isspace(*p))
  293. p++;
  294. if(*p==';')
  295. return(1);
  296. return(0);
  297. }
  298. /***************************** IS_AN_EMPTY_LINE **************************/
  299. int is_an_empty_line(char *p)
  300. {
  301. while(isspace(*p))
  302. p++;
  303. if(*p=='\n' || *p==ENDOFSTR)
  304. return(1);
  305. return(0);
  306. }
  307. /******************************* FLOAT_ARRAY ******************************
  308. *
  309. * Generate float array of required size.
  310. */
  311. int float_array(float **q,int size)
  312. {
  313. if((*q = (float *)malloc(size * sizeof(float)))==NULL) {
  314. sprintf(errstr,"INSUFFICIENT MEMORY to create array of floats.\n");
  315. return(MEMORY_ERROR);
  316. }
  317. return(FINISHED);
  318. }
  319. /******************************* CONVERT_TIME_AND_VALS_TO_SAMPLECNTS *******************************/
  320. int convert_time_and_vals_to_samplecnts(int paramno,dataptr dz)
  321. {
  322. double *p, *pend;
  323. if(dz->brksize==NULL) {
  324. sprintf(errstr,"brksize array not initialised:convert_time_and_vals_to_samplecnts()\n");
  325. return(PROGRAM_ERROR);
  326. }
  327. if(dz->brksize[paramno]) {
  328. if(dz->brk==NULL) {
  329. sprintf(errstr,"brk not initialised:convert_time_and_vals_to_samplecnts()\n");
  330. return(PROGRAM_ERROR);
  331. }
  332. p = dz->brk[paramno];
  333. pend = dz->brk[paramno] + (dz->brksize[paramno] * 2);
  334. while(p < pend) {
  335. *p = (double)round(*p * (double)dz->infile->srate);
  336. p++;
  337. }
  338. dz->iparam[paramno] = round(*(dz->brk[paramno] + 1)); /* initialise */
  339. } else
  340. dz->iparam[paramno] = round(dz->param[paramno] * (double)dz->infile->srate);
  341. dz->is_int[paramno] = TRUE;
  342. return FINISHED;
  343. }
  344. /************************** CONVERT_TIME_TO_SAMPLECNTS *******************************
  345. *
  346. * Converts time(s) to (stereo-pairs) sample-cnt.
  347. */
  348. int convert_time_to_samplecnts(int paramno,dataptr dz)
  349. {
  350. double *p, *pend;
  351. if(dz->brksize==NULL) {
  352. sprintf(errstr,"brksize not initialised:convert_time_to_samplecnts()\n");
  353. return(PROGRAM_ERROR);
  354. }
  355. if(dz->brksize[paramno]) {
  356. if(dz->brk==NULL) {
  357. sprintf(errstr,"brk not initialised:convert_time_to_samplecnts()\n");
  358. return(PROGRAM_ERROR);
  359. }
  360. p = dz->brk[paramno];
  361. pend = dz->brk[paramno] + (dz->brksize[paramno] * 2);
  362. while(p < pend) {
  363. *p = (double)round(*p * (double)dz->infile->srate);
  364. p += 2;
  365. }
  366. }
  367. return(FINISHED);
  368. }
  369. /*************************************** BRK_COMPARE *****************************************/
  370. int brk_compare(double *brk1,int brksize1,double *brk2,int brksize2,int repel)
  371. {
  372. int cnt1 = 0, cnt2 = 0;
  373. double *t1 = brk1, *t2 = brk2;
  374. double *v1 = brk1 + 1, *v2 = brk2 + 1;
  375. double val1, val2, thistime;
  376. int orientation = EQUIVALENT;
  377. if(brksize1<2 || brksize2<2)
  378. return(INVALID);
  379. while((cnt1 < brksize1) && (cnt2 < brksize2)) {
  380. thistime = establish_current_time(*t1,*t2);
  381. if(*t1 > thistime) {
  382. val1 = establish_value_at_current_time(thistime,t1,brk1,v1);
  383. val2 = *v2;
  384. if((orientation = establish_orientation(val1,val2,repel))!=EQUIVALENT)
  385. break;
  386. else if(repel)
  387. return(CROSSED);
  388. if(++cnt2 < brksize2) {
  389. v2 += 2;
  390. t2 += 2;
  391. }
  392. } else if (*t2 > thistime) {
  393. val2 = establish_value_at_current_time(thistime,t2,brk2,v2);
  394. val1 = *v1;
  395. if((orientation = establish_orientation(val1,val2,repel))!=EQUIVALENT)
  396. break;
  397. else if(repel)
  398. return(CROSSED);
  399. if(++cnt1 < brksize1) {
  400. v1 += 2;
  401. t1 += 2;
  402. }
  403. } else {
  404. val1 = *v1;
  405. val2 = *v1;
  406. if((orientation = establish_orientation(val1,val2,repel))!=EQUIVALENT)
  407. break;
  408. else if(repel)
  409. return(CROSSED);
  410. if(++cnt1 < brksize1) {
  411. v1 += 2;
  412. t1 += 2;
  413. }
  414. if(++cnt2 < brksize2) {
  415. v2 += 2;
  416. t2 += 2;
  417. }
  418. }
  419. }
  420. while((cnt1 < brksize1) && (cnt2 < brksize2)) {
  421. thistime = establish_current_time(*t1,*t2);
  422. if(*t1 > thistime) {
  423. val1 = establish_value_at_current_time(thistime,t1,brk1,v1);
  424. val2 = *v2;
  425. switch(repel) {
  426. case(TRUE):
  427. switch(orientation) {
  428. case(FIRST_GREATER): if(val2 >= val1-FLTERR) return(CROSSED); break;
  429. case(FIRST_LESS): if(val1 >= val2-FLTERR) return(CROSSED); break;
  430. }
  431. break;
  432. case(FALSE):
  433. switch(orientation) {
  434. case(FIRST_GREATER): if(val2 > val1) return(CROSSED); break;
  435. case(FIRST_LESS): if(val1 > val2) return(CROSSED); break;
  436. }
  437. break;
  438. }
  439. cnt2++;
  440. v2 += 2;
  441. t2 += 2;
  442. } else if (*t2 > thistime) {
  443. val2 = establish_value_at_current_time(thistime,t2,brk2,v2);
  444. val1 = *v1;
  445. switch(repel) {
  446. case(TRUE):
  447. switch(orientation) {
  448. case(FIRST_GREATER): if(val2 >= val1-FLTERR) return(CROSSED); break;
  449. case(FIRST_LESS): if(val1 >= val2-FLTERR) return(CROSSED); break;
  450. }
  451. break;
  452. case(FALSE):
  453. switch(orientation) {
  454. case(FIRST_GREATER): if(val2 > val1) return(CROSSED); break;
  455. case(FIRST_LESS): if(val1 > val2) return(CROSSED); break;
  456. }
  457. break;
  458. }
  459. cnt1++;
  460. v1 += 2;
  461. t1 += 2;
  462. } else {
  463. val1 = *v1;
  464. val2 = *v1;
  465. switch(repel) {
  466. case(TRUE):
  467. switch(orientation) {
  468. case(FIRST_GREATER): if(val2 >= val1-FLTERR) return(CROSSED); break;
  469. case(FIRST_LESS): if(val1 >= val2-FLTERR) return(CROSSED); break;
  470. }
  471. break;
  472. case(FALSE):
  473. switch(orientation) {
  474. case(FIRST_GREATER): if(val2 > val1) return(CROSSED); break;
  475. case(FIRST_LESS): if(val1 > val2) return(CROSSED); break;
  476. }
  477. break;
  478. }
  479. cnt1++;
  480. cnt2++;
  481. v1 += 2;
  482. t1 += 2;
  483. v2 += 2;
  484. t2 += 2;
  485. }
  486. }
  487. return(orientation);
  488. }
  489. /*************************** ESTABLISH_ORIENTATION **************************/
  490. int establish_orientation(double val1, double val2,int repel)
  491. {
  492. if(repel) {
  493. if(val1 < val2-FLTERR)
  494. return(FIRST_LESS);
  495. else if (val2 < val1-FLTERR)
  496. return(FIRST_GREATER);
  497. } else {
  498. if(val1 < val2)
  499. return(FIRST_LESS);
  500. else if (val2 < val1)
  501. return(FIRST_GREATER);
  502. }
  503. return(EQUIVALENT);
  504. }
  505. /************************** ESTABLISH_CURRENT_TIME **************************/
  506. double establish_current_time(double t1,double t2)
  507. {
  508. if(t1 <= t2)
  509. return(t1);
  510. else
  511. return(t2);
  512. }
  513. /******************** ESTABLISH_VALUE_AT_CURRENT_TIME ***********************/
  514. double establish_value_at_current_time(double thistime,double *t,double *brk,double *v)
  515. {
  516. double *lastt, val, lastval, lasttime;
  517. if((lastt = t - 2) < brk)
  518. val = *v;
  519. else {
  520. lastval = *(v - 2);
  521. lasttime = *(lastt);
  522. val = interpval(thistime,lastval,*v,lasttime,*t);
  523. }
  524. return(val);
  525. }
  526. /***************************** INTERPVAL *****************************/
  527. double interpval(double thistime,double lastval, double nextval, double lasttime, double nexttime)
  528. {
  529. double timestep = nexttime - lasttime;
  530. double valstep = nextval - lastval;
  531. double thisstep = thistime - lasttime;
  532. double timeratio = thisstep/timestep;
  533. valstep *= timeratio;
  534. return(lastval + valstep);
  535. }
  536. /***************************** VALUE_GREATER_THAN_BRKVALS *****************************/
  537. int value_greater_than_brkvals(double val,double *brk,int brksize,int repel)
  538. {
  539. double *p = brk;
  540. double *pend = p + (brksize*2);
  541. p++;
  542. if(repel) {
  543. while(p < pend) {
  544. if(*p > val-FLTERR)
  545. return(FALSE);
  546. p += 2;
  547. }
  548. } else {
  549. while(p < pend) {
  550. if(*p > val)
  551. return(FALSE);
  552. p += 2;
  553. }
  554. }
  555. return(TRUE);
  556. }
  557. /***************************** VALUE_LESS_THAN_BRKVALS *****************************/
  558. int value_less_than_brkvals(double val,double *brk,int brksize,int repel)
  559. {
  560. double *p = brk;
  561. double *pend = p + (brksize*2);
  562. p++;
  563. if(repel) {
  564. while(p < pend) {
  565. if(*p < val+FLTERR)
  566. return(FALSE);
  567. p += 2;
  568. }
  569. } else {
  570. while(p < pend) {
  571. if(*p < val)
  572. return(FALSE);
  573. p += 2;
  574. }
  575. }
  576. return(TRUE);
  577. }
  578. /***************************** FIRST_PARAM_NOT_LESS_THAN_SECOND *****************************/
  579. int first_param_not_less_than_second(int paramno1,int paramno2,dataptr dz)
  580. {
  581. int exit_status;
  582. int repel = FALSE;
  583. if(dz->brksize[paramno1]) {
  584. if(dz->brksize[paramno2]) {
  585. if((exit_status = brk_compare
  586. (dz->brk[paramno1],dz->brksize[paramno1],dz->brk[paramno2],dz->brksize[paramno2],repel))<0) {
  587. sprintf(errstr,"Incompatible parameter values in brktables.\n");
  588. return(FALSE);
  589. }
  590. if(exit_status == FIRST_LESS) {
  591. sprintf(errstr,"Incompatible parameter values in brktables.\n");
  592. return(FALSE);
  593. }
  594. } else {
  595. if(value_greater_than_brkvals(dz->param[paramno2],dz->brk[paramno1],dz->brksize[paramno1],repel)) {
  596. sprintf(errstr,"Incompatible parameter values somewhere in brktable.\n");
  597. return(FALSE);
  598. }
  599. }
  600. } else if(dz->brksize[paramno2]) {
  601. if(value_less_than_brkvals(dz->param[paramno1],dz->brk[paramno2],dz->brksize[paramno2],repel)) {
  602. sprintf(errstr,"Incompatible parameter values somewhere in brktable.\n");
  603. return(FALSE);
  604. }
  605. } else {
  606. if(dz->param[paramno2] > dz->param[paramno1]) {
  607. sprintf(errstr,"Incompatible parameter values.\n");
  608. return(FALSE);
  609. }
  610. }
  611. return(TRUE);
  612. }
  613. /**************************** FIRST_PARAM_GREATER_THAN_SECOND *****************************/
  614. int first_param_greater_than_second(int paramno1,int paramno2,dataptr dz)
  615. {
  616. int exit_status;
  617. int repel = TRUE;
  618. if(dz->brksize[paramno1]) {
  619. if(dz->brksize[paramno2]) {
  620. if((exit_status = brk_compare
  621. (dz->brk[paramno1],dz->brksize[paramno1],dz->brk[paramno2],dz->brksize[paramno2],repel))<0) {
  622. sprintf(errstr,"Incompatible parameter values in brktables.\n");
  623. return(FALSE);
  624. }
  625. if(exit_status == FIRST_LESS) {
  626. sprintf(errstr,"Incompatible parameter values in brktables.\n");
  627. return(FALSE);
  628. }
  629. } else {
  630. if(!value_less_than_brkvals(dz->param[paramno2],dz->brk[paramno1],dz->brksize[paramno1],repel)) {
  631. sprintf(errstr,"Incompatible parameter values somewhere in brktable.\n");
  632. return(FALSE);
  633. }
  634. }
  635. } else if(dz->brksize[paramno2]) {
  636. if(!value_greater_than_brkvals(dz->param[paramno1],dz->brk[paramno2],dz->brksize[paramno2],repel)) {
  637. sprintf(errstr,"Incompatible parameter values somewhere in brktable.\n");
  638. return(FALSE);
  639. }
  640. } else {
  641. if(dz->param[paramno2] > dz->param[paramno1]-FLTERR) {
  642. sprintf(errstr,"Incompatible parameter values.\n");
  643. return(FALSE);
  644. }
  645. }
  646. return(TRUE);
  647. }
  648. /***************************** ESTABLISH_ADDITIONAL_BRKTABLE **************************/
  649. int establish_additional_brktable(dataptr dz)
  650. {
  651. int brkcnt = dz->application->total_input_param_cnt;
  652. if(dz->extrabrkno >= 0) {
  653. sprintf(errstr,"extra brktable already exists: establish_additional_brktable()\n");
  654. return(PROGRAM_ERROR);
  655. }
  656. dz->extrabrkno = brkcnt;
  657. brkcnt++; /* extra brktable for internal brkpntfile data */
  658. if(dz->extrabrkno > 0) {
  659. if((dz->brk = (double **)realloc(dz->brk ,brkcnt * sizeof(double *)))==NULL
  660. || (dz->brkptr = (double **)realloc(dz->brkptr ,brkcnt * sizeof(double) ))==NULL
  661. || (dz->brksize = (int *)realloc(dz->brksize ,brkcnt * sizeof(int) ))==NULL
  662. || (dz->firstval = (double *)realloc(dz->firstval ,brkcnt * sizeof(double) ))==NULL
  663. || (dz->lastind = (double *)realloc(dz->lastind ,brkcnt * sizeof(double) ))==NULL
  664. || (dz->lastval = (double *)realloc(dz->lastval ,brkcnt * sizeof(double) ))==NULL
  665. || (dz->brkinit = (int *)realloc(dz->brkinit ,brkcnt * sizeof(int) ))==NULL) {
  666. sprintf(errstr,"establish_additional_brktable(): 1\n");
  667. return(MEMORY_ERROR);
  668. }
  669. } else {
  670. if((dz->brk = (double **)malloc(brkcnt * sizeof(double *)))==NULL
  671. || (dz->brkptr = (double **)malloc(brkcnt * sizeof(double) ))==NULL
  672. || (dz->brksize = (int *)malloc(brkcnt * sizeof(int) ))==NULL
  673. || (dz->firstval = (double *)malloc(brkcnt * sizeof(double) ))==NULL
  674. || (dz->lastind = (double *)malloc(brkcnt * sizeof(double) ))==NULL
  675. || (dz->lastval = (double *)malloc(brkcnt * sizeof(double) ))==NULL
  676. || (dz->brkinit = (int *)malloc(brkcnt * sizeof(int) ))==NULL) {
  677. sprintf(errstr,"establish_additional_brktable(): 2\n");
  678. return(MEMORY_ERROR);
  679. }
  680. }
  681. dz->brk[dz->extrabrkno] = (double *)0;
  682. dz->brkptr[dz->extrabrkno] = (double *)0;
  683. dz->brksize[dz->extrabrkno] = 0;
  684. dz->brkinit[dz->extrabrkno] = 0;
  685. return(FINISHED);
  686. }
  687. /**************************** GET_CHANNEL_CORRESPONDING_TO_FRQ ***************************/
  688. int get_channel_corresponding_to_frq(int *chan,double thisfrq,dataptr dz)
  689. {
  690. if(dz->chwidth <= 0.0) {
  691. sprintf(errstr,"chwidth not set in get_channel_corresponding_to_frq()\n");
  692. return(PROGRAM_ERROR);
  693. }
  694. if(thisfrq < 0.0) {
  695. sprintf(errstr,"-ve frequency in get_channel_corresponding_to_frq()\n");
  696. return(PROGRAM_ERROR);
  697. }
  698. if(thisfrq > dz->nyquist) {
  699. sprintf(errstr,"frequency beyond nyquist in get_channel_corresponding_to_frq()\n");
  700. return(PROGRAM_ERROR);
  701. }
  702. *chan = (int)((fabs(thisfrq) + dz->halfchwidth)/dz->chwidth); /* TRUNCATE */
  703. if(*chan >= dz->clength) {
  704. sprintf(errstr,"chan (%d) beyond clength-1 (%d) returned: get_channel_corresponding_to_frq()\n",
  705. *chan,(dz->clength)-1);
  706. return(PROGRAM_ERROR);
  707. }
  708. return(FINISHED);
  709. }
  710. /**************************** RESET_FILEDATA_COUNTERS **************************/
  711. void reset_filedata_counters(dataptr dz)
  712. {
  713. dz->total_samps_written = 0;
  714. dz->samps_left = dz->insams[0];
  715. dz->total_samps_read = 0;
  716. }
  717. /**********************************************************************************/
  718. /**************************** ITEMS FORMERLY IN FILETYPE **************************/
  719. /**********************************************************************************/
  720. /****************************** IS_A_VALID_INPUT_FILETYPE *********************************/
  721. int is_a_valid_input_filetype(int filetype)
  722. {
  723. switch(filetype) {
  724. case(SNDFILE):
  725. case(ANALFILE):
  726. case(PITCHFILE):
  727. case(TRANSPOSFILE):
  728. case(FORMANTFILE):
  729. case(ENVFILE):
  730. case(TRANSPOS_OR_NORMD_BRKFILE_OR_NUMLIST_OR_LINELIST_OR_WORDLIST):
  731. case(TRANSPOS_OR_NORMD_BRKFILE_OR_NUMLIST_OR_WORDLIST):
  732. case(TRANSPOS_OR_PITCH_BRKFILE_OR_NUMLIST_OR_LINELIST_OR_WORDLIST):
  733. case(TRANSPOS_OR_PITCH_BRKFILE_OR_NUMLIST_OR_WORDLIST):
  734. case(TRANSPOS_OR_UNRANGED_BRKFILE_OR_NUMLIST_OR_LINELIST_OR_WORDLIST):
  735. case(TRANSPOS_OR_UNRANGED_BRKFILE_OR_NUMLIST_OR_WORDLIST):
  736. case(NORMD_BRKFILE_OR_NUMLIST_OR_LINELIST_OR_WORDLIST):
  737. case(NORMD_BRKFILE_OR_NUMLIST_OR_WORDLIST):
  738. case(DB_BRKFILE_OR_NUMLIST_OR_LINELIST_OR_WORDLIST):
  739. case(DB_BRKFILE_OR_NUMLIST_OR_WORDLIST):
  740. case(PITCH_BRKFILE_OR_NUMLIST_OR_LINELIST_OR_WORDLIST):
  741. case(PITCH_BRKFILE_OR_NUMLIST_OR_WORDLIST):
  742. case(PITCH_POSITIVE_BRKFILE_OR_NUMLIST_OR_LINELIST_OR_WORDLIST):
  743. case(PITCH_POSITIVE_BRKFILE_OR_NUMLIST_OR_WORDLIST):
  744. case(POSITIVE_BRKFILE_OR_NUMLIST_OR_LINELIST_OR_WORDLIST):
  745. case(POSITIVE_BRKFILE_OR_NUMLIST_OR_WORDLIST):
  746. case(UNRANGED_BRKFILE_OR_NUMLIST_OR_LINELIST_OR_WORDLIST):
  747. case(UNRANGED_BRKFILE_OR_NUMLIST_OR_WORDLIST):
  748. case(NUMLIST_OR_LINELIST_OR_WORDLIST):
  749. case(NUMLIST_OR_WORDLIST):
  750. case(SNDLIST_OR_SYNCLIST_LINELIST_OR_WORDLIST):
  751. case(SNDLIST_OR_SYNCLIST_OR_WORDLIST):
  752. case(SNDLIST_OR_LINELIST_OR_WORDLIST):
  753. case(SNDLIST_OR_WORDLIST):
  754. case(MIXLIST_OR_LINELIST_OR_WORDLIST):
  755. case(MIXLIST_OR_WORDLIST):
  756. case(SYNCLIST_OR_LINELIST_OR_WORDLIST):
  757. case(SYNCLIST_OR_WORDLIST):
  758. case(LINELIST_OR_WORDLIST):
  759. case(WORDLIST):
  760. return(TRUE);
  761. }
  762. return(FALSE);
  763. }
  764. /****************************** IS_A_TEXT_INPUT_FILETYPE *********************************/
  765. int is_a_text_input_filetype(int filetype)
  766. {
  767. if(filetype & IS_A_TEXTFILE)
  768. return(TRUE);
  769. return(FALSE);
  770. }
  771. /****************************** COULD_BE_TRANSPOS_AND_OR_PITCH_INFILETYPE *********************************/
  772. int could_be_transpos_and_or_pitch_infiletype(int filetype)
  773. {
  774. if(filetype & IS_A_TRANSPOS_BRKFILE || filetype & IS_A_PITCH_BRKFILE)
  775. return(TRUE);
  776. return(FALSE);
  777. }
  778. /****************************** IS_BRKFILE_INFILETYPE *********************************/
  779. int is_brkfile_infiletype(int filetype)
  780. {
  781. if(filetype & IS_A_BRKFILE)
  782. return(TRUE);
  783. return(FALSE);
  784. }
  785. /****************************** IS_NUMLIST_INFILETYPE *********************************/
  786. int is_numlist_infiletype(int filetype)
  787. {
  788. if(filetype & IS_A_NUMLIST)
  789. return(TRUE);
  790. return(FALSE);
  791. }
  792. /****************************** IS_NUMLIST_INFILETYPE *********************************/
  793. int is_transpos_infiletype(int filetype)
  794. {
  795. if(filetype & IS_A_TRANSPOS_BRKFILE)
  796. return(TRUE);
  797. return(FALSE);
  798. }
  799. /****************************** IS_PITCH_INFILETYPE *********************************/
  800. int is_pitch_infiletype(int filetype)
  801. {
  802. if(filetype & IS_A_PITCH_BRKFILE)
  803. return(TRUE);
  804. return(FALSE);
  805. }
  806. /****************************** IS_SNDLIST_ONLY_INFILETYPE *********************************/
  807. int is_sndlist_only_infiletype(int filetype)
  808. {
  809. switch(filetype) {
  810. case(SNDLIST_OR_LINELIST_OR_WORDLIST):
  811. case(SNDLIST_OR_WORDLIST):
  812. return(TRUE);
  813. }
  814. return(FALSE);
  815. }
  816. /******************************* FILE_HAS_INVALID_STARTCHAR ****************************/
  817. /* RWD 4:2002 need this until readdata is fixed (reading numbers as text filenames) */
  818. int file_has_invalid_startchar(char *filename)
  819. {
  820. char *p;
  821. int filenamelen = strlen(filename);
  822. //TW AGREED TO DELETION n, has_point
  823. if(filenamelen <= 0)
  824. return 1;
  825. p = filename + filenamelen - 1;
  826. switch(filename[0]) {
  827. case(ENDOFSTR):
  828. return 1;
  829. case('.'):
  830. if(filenamelen <3)
  831. return 1;
  832. switch(filename[1]) {
  833. case('/'): /* allow ".\" 'current directory' shorthand */
  834. case('\\'):
  835. p = get_last_slash(filename,filenamelen);
  836. p++;
  837. //TW MODIFIED TO ALLOW NUMERIC FILENAMES
  838. // if(strlen(p) <=0 || isdigit(*p) || (*p == '-'))
  839. if(strlen(p) <=0 || (*p == '-'))
  840. return 1;
  841. break;
  842. case('.'):
  843. if(filenamelen <4)
  844. return 1;
  845. switch(filename[2]) {
  846. case('/'): /* allow "..\ 'other directory' shorthand */
  847. case('\\'):
  848. p = get_last_slash(filename,filenamelen);
  849. p++;
  850. //TW MODIFIED TO ALLOW NUMERIC FILENAMES
  851. // if(strlen(p) <=0 || isdigit(*p) || (*p == '-'))
  852. if(strlen(p) <=0 || (*p == '-'))
  853. return 1;
  854. break;
  855. default:
  856. return 1;
  857. }
  858. break;
  859. default:
  860. return 1;
  861. }
  862. break;
  863. //TW MODIFIED TO ALLOW NUMERIC FILENAMES, but stop '-' (which playcmd may interpet as flag)
  864. case('-'):
  865. return 1;
  866. }
  867. return 0;
  868. }
  869. /******************************* GET_LAST_SLASH ****************************/
  870. char *get_last_slash(char *filename,int filenamelen)
  871. {
  872. char *p = filename;
  873. p += filenamelen - 1;
  874. while(p >= filename) {
  875. if(*p == '/' || *p == '\\')
  876. return p;
  877. p--;
  878. }
  879. return p; /* NOTREACHED */
  880. }
  881. /******************************* DERIVED_FILETYPE ****************************/
  882. int derived_filetype(int filetype)
  883. {
  884. switch(filetype) {
  885. case(PITCHFILE):
  886. case(TRANSPOSFILE):
  887. case(FORMANTFILE):
  888. return(TRUE);
  889. }
  890. return(FALSE);
  891. }
  892. /******************************* FILE_HAS_RESERVED_EXTENSION ****************************/
  893. int file_has_reserved_extension(char *filename)
  894. {
  895. char *p = strrchr(filename, '.');
  896. if(p == NULL)
  897. return 0;
  898. p++;
  899. if(!_stricmp(p,"frq")
  900. || !_stricmp(p,"for")
  901. || !_stricmp(p,"trn")
  902. || !_stricmp(p,"evl")
  903. || !_stricmp(p,"ana")
  904. || !_stricmp(p,"wav")
  905. || !_stricmp(p,"aiff")
  906. || !_stricmp(p,"aifc")
  907. || !_stricmp(p,"aif"))
  908. return 1;
  909. while(*p != ENDOFSTR) { /* numeric extensions are patches */
  910. if(!isdigit(*p))
  911. return 0;
  912. p++;
  913. }
  914. return 1;
  915. }
  916. /****************************** IS_A_TEXTFILE_TYPE *******************************/
  917. int is_a_textfile_type(int filetype) /* after type conversion: not at input */
  918. {
  919. if(filetype==BRKFILE
  920. || filetype==DB_BRKFILE
  921. || filetype==UNRANGED_BRKFILE
  922. || filetype==NUMLIST
  923. || filetype==SNDLIST
  924. || filetype==SYNCLIST
  925. || filetype==MIXFILE
  926. || filetype==LINELIST
  927. || filetype==WORDLIST)
  928. return(TRUE);
  929. return(FALSE);
  930. }
  931. /***************************** FILE_HAS_INVALID_EXTENSION ****************************************/
  932. int file_has_invalid_extension(char *filename)
  933. {
  934. char *p;
  935. int len = strlen(filename);
  936. if(len <=0)
  937. return 0;
  938. p = strrchr(filename, '.');
  939. if(p == 0)
  940. return 0;
  941. p++;
  942. if(*p == '\\' || *p == '/') /* allow .\abc OR ../abc */
  943. return 0;
  944. while(*p != ENDOFSTR) {
  945. if(!isdigit(*p)) /* .123 is a patchfile : not permitted */
  946. return 0;
  947. p++;
  948. }
  949. return 1;
  950. }
  951. /**********************************************************************************/
  952. /*********************** ITEMS FORMERLY IN DEFAULTS.C tklib2 **********************/
  953. /**********************************************************************************/
  954. /****************************** INITIALISE_PARAM_VALUES *********************************/
  955. /*RWD NB we ignore infilesize and use insams ONLY */
  956. int initialise_param_values(int process,int mode,int channels,double nyquist,float frametime,
  957. int insams,int srate,int wanted,int linecnt,double duration,double *default_val,int filetype,aplptr ap)
  958. {
  959. int n;
  960. int clength = (int)(wanted/2);
  961. double chwidth = nyquist/(double)(clength-1);
  962. double halfchwidth = chwidth/2.0;
  963. double sr = (double)srate;
  964. /******************************* SPEC *******************************/
  965. /******************************* SPEC *******************************/
  966. /******************************* SPEC *******************************/
  967. switch(process) {
  968. case(ACCU):
  969. default_val[ACCU_DINDEX] = 1.0;
  970. default_val[ACCU_GINDEX] = 0.0;
  971. break;
  972. case(ALT):
  973. break;
  974. case(ARPE):
  975. default_val[ARPE_WTYPE] = SIN;
  976. default_val[ARPE_ARPFRQ] = 1.0;
  977. if(mode==ABOVE_BOOST || mode==ONCE_ABOVE)
  978. default_val[ARPE_PHASE] = 0.51;
  979. else
  980. default_val[ARPE_PHASE] = 0.0;
  981. default_val[ARPE_LOFRQ] = PITCHZERO;
  982. default_val[ARPE_HIFRQ] = nyquist;
  983. default_val[ARPE_HBAND] = nyquist/(double)(clength-1);
  984. default_val[ARPE_AMPL] = DEFAULT_ARPE_AMPLIF;
  985. if(mode==ON
  986. || mode==BOOST
  987. || mode==BELOW_BOOST
  988. || mode==ABOVE_BOOST) {
  989. default_val[ARPE_NONLIN]= 1.0;
  990. default_val[ARPE_SUST] = DEFAULT_ARPE_SUSTAIN;
  991. }
  992. break;
  993. case(AVRG):
  994. default_val[AVRG_AVRG] = DEFAULT_AVRG;
  995. break;
  996. case(BARE):
  997. break;
  998. case(BLUR):
  999. default_val[BLUR_BLURF] = DEFAULT_BLUR;
  1000. break;
  1001. case(BLTR):
  1002. default_val[BLUR_BLURF] = DEFAULT_BLUR;
  1003. default_val[BLTR_TRACE] = DEFAULT_TRACE;
  1004. break;
  1005. case(BRIDGE):
  1006. default_val[BRG_OFFSET] = 0.0;
  1007. default_val[BRG_SF2] = 0.0;
  1008. default_val[BRG_SA2] = 0.0;
  1009. default_val[BRG_EF2] = 1.0;
  1010. default_val[BRG_EA2] = 1.0;
  1011. default_val[BRG_STIME] = 0.0;
  1012. default_val[BRG_ETIME] = frametime * 2.0;
  1013. break;
  1014. case(CHANNEL):
  1015. default_val[CHAN_FRQ] = CONCERT_A;
  1016. break;
  1017. case(CHORD):
  1018. case(MULTRANS):
  1019. default_val[CHORD_HIFRQ] = nyquist;
  1020. default_val[CHORD_LOFRQ] = PITCHZERO;
  1021. break;
  1022. case(CHORUS):
  1023. if(mode==CH_AMP
  1024. || mode==CH_AMP_FRQ
  1025. || mode==CH_AMP_FRQ_UP
  1026. || mode==CH_AMP_FRQ_DN)
  1027. default_val[CHORU_AMPR] = DEFAULT_CHORU_AMPSPREAD;
  1028. if(mode==CH_FRQ
  1029. || mode==CH_FRQ_UP
  1030. || mode==CH_FRQ_DN
  1031. || mode==CH_AMP_FRQ
  1032. || mode==CH_AMP_FRQ_UP
  1033. || mode==CH_AMP_FRQ_DN)
  1034. default_val[CHORU_FRQR] = DEFAULT_CHORU_FRQSPREAD;
  1035. break;
  1036. case(CLEAN):
  1037. switch(mode) {
  1038. case(FROMTIME):
  1039. case(ANYWHERE):
  1040. default_val[CL_SKIPT] = 0.0;
  1041. break;
  1042. case(FILTERING):
  1043. default_val[CL_FRQ] = PITCHZERO;
  1044. break;
  1045. }
  1046. default_val[CL_GAIN] = DEFAULT_NOISEGAIN;
  1047. break;
  1048. case(CROSS):
  1049. default_val[CROS_INTP] = 1.0;
  1050. break;
  1051. case(CUT):
  1052. default_val[CUT_STIME] = 0.0;
  1053. default_val[CUT_ETIME] = duration;
  1054. break;
  1055. case(DIFF):
  1056. default_val[DIFF_CROSS] = 1.0;
  1057. break;
  1058. case(DRUNK):
  1059. default_val[DRNK_RANGE] = DEFAULT_MAX_DRUNK_STEP;
  1060. default_val[DRNK_STIME] = 0.0;
  1061. default_val[DRNK_DUR] = DEFAULT_DURATION;
  1062. break;
  1063. case(EXAG):
  1064. default_val[EXAG_EXAG] = DEFAULT_EXAG;
  1065. break;
  1066. case(FILT):
  1067. switch(mode) {
  1068. case(F_HI):
  1069. case(F_HI_NORM):
  1070. default_val[FILT_FRQ1] = SPEC_MINFRQ;
  1071. default_val[FILT_QQ] = DEFAULT_Q;
  1072. break;
  1073. case(F_LO):
  1074. case(F_LO_NORM):
  1075. default_val[FILT_FRQ1] = DEFAULT_FILT_FRQ;
  1076. default_val[FILT_QQ] = DEFAULT_Q;
  1077. break;
  1078. case(F_HI_GAIN):
  1079. default_val[FILT_FRQ1] = SPEC_MINFRQ;
  1080. default_val[FILT_QQ] = DEFAULT_Q;
  1081. default_val[FILT_PG] = 1.0;
  1082. break;
  1083. case(F_LO_GAIN):
  1084. default_val[FILT_FRQ1] = DEFAULT_FILT_FRQ;
  1085. default_val[FILT_QQ] = DEFAULT_Q;
  1086. default_val[FILT_PG] = 1.0;
  1087. break;
  1088. case(F_BND):
  1089. case(F_BND_NORM):
  1090. case(F_NOTCH):
  1091. case(F_NOTCH_NORM):
  1092. default_val[FILT_FRQ1] = SPEC_MINFRQ;
  1093. default_val[FILT_FRQ2] = DEFAULT_FILT_FRQ;
  1094. default_val[FILT_QQ] = DEFAULT_Q;
  1095. break;
  1096. case(F_BAND_GAIN):
  1097. case(F_NOTCH_GAIN):
  1098. default_val[FILT_FRQ1] = SPEC_MINFRQ;
  1099. default_val[FILT_FRQ2] = DEFAULT_FILT_FRQ;
  1100. default_val[FILT_QQ] = DEFAULT_Q;
  1101. default_val[FILT_PG] = 1.0;
  1102. break;
  1103. }
  1104. break;
  1105. case(FMNTSEE):
  1106. case(FORMANTS):
  1107. case(FORMSEE):
  1108. break;
  1109. case(FOCUS):
  1110. default_val[FOCU_PKCNT] = (double)MAXPKCNT;
  1111. default_val[FOCU_BW] = DEFAULT_OCTAVE_BWIDTH;
  1112. default_val[FOCU_LOFRQ] = PITCHZERO;
  1113. default_val[FOCU_HIFRQ] = nyquist;
  1114. default_val[FOCU_STABL] = DEFAULT_STABILITY;
  1115. break;
  1116. case(FOLD):
  1117. default_val[FOLD_LOFRQ] = PITCHZERO;
  1118. default_val[FOLD_HIFRQ] = nyquist;
  1119. break;
  1120. case(FORM):
  1121. default_val[FORM_FTOP] = nyquist;
  1122. default_val[FORM_FBOT] = PITCHZERO;
  1123. default_val[FORM_GAIN] = 1.0;
  1124. break;
  1125. case(FREEZE):
  1126. case(FREEZE2):
  1127. break;
  1128. case(FREQUENCY):
  1129. default_val[FRQ_CHAN] = 0;
  1130. break;
  1131. case(GAIN):
  1132. default_val[GAIN_GAIN] = 1.0;
  1133. break;
  1134. case(GLIDE):
  1135. default_val[GLIDE_DUR] = DEFAULT_DURATION;
  1136. break;
  1137. case(GLIS):
  1138. default_val[GLIS_RATE] = DEFAULT_GLISRATE;
  1139. default_val[GLIS_HIFRQ] = nyquist;
  1140. if(mode==INHARMONIC)
  1141. default_val[GLIS_SHIFT] = GLIS_SHIFT_DEFAULT;
  1142. break;
  1143. case(GRAB):
  1144. default_val[GRAB_FRZTIME] = duration/2;
  1145. break;
  1146. case(GREQ):
  1147. break;
  1148. case(INVERT):
  1149. break;
  1150. case(LEAF):
  1151. default_val[LEAF_SIZE] = 1.0;
  1152. break;
  1153. case(LEVEL):
  1154. break;
  1155. case(MAGNIFY):
  1156. default_val[MAG_FRZTIME] = duration/2;
  1157. default_val[MAG_DUR] = DEFAULT_DURATION;
  1158. break;
  1159. case(MAKE):
  1160. break;
  1161. case(MAX):
  1162. break;
  1163. case(MEAN):
  1164. default_val[MEAN_LOF] = PITCHZERO;
  1165. default_val[MEAN_HIF] = nyquist;
  1166. default_val[MEAN_CHAN] = clength;
  1167. break;
  1168. case(MORPH):
  1169. default_val[MPH_ASTT] = 0.0;
  1170. default_val[MPH_AEND] = frametime * 2;
  1171. default_val[MPH_FSTT] = 0.0;
  1172. default_val[MPH_FEND] = frametime * 2;
  1173. default_val[MPH_AEXP] = 1.0;
  1174. default_val[MPH_FEXP] = 1.0;
  1175. default_val[MPH_STAG] = 0.0;
  1176. break;
  1177. case(NOISE):
  1178. default_val[NOISE_NOIS] = 0.0;
  1179. break;
  1180. case(OCT):
  1181. default_val[OCT_HMOVE] = DEFAULT_OCT_TRANSPOS;
  1182. default_val[OCT_BREI] = 0.0;
  1183. break;
  1184. case(OCTVU):
  1185. default_val[OCTVU_TSTEP] = DEFAULT_TIME_STEP;
  1186. default_val[OCTVU_FUND] = max(halfchwidth,exp(log(nyquist/ROOT_2)/(double)DEFAULT_OCTBANDS));
  1187. break;
  1188. case(P_APPROX):
  1189. default_val[PA_PRANG] = DEFAULT_PRANGE;
  1190. default_val[PA_TRANG] = DEFAULT_TRANGE;
  1191. default_val[PA_SRANG] = DEFAULT_SRANGE;
  1192. break;
  1193. case(P_CUT):
  1194. default_val[PC_STT] = 0.0;
  1195. default_val[PC_END] = duration;
  1196. break;
  1197. case(P_EXAG):
  1198. switch(mode) {
  1199. case(RANGE_ONLY_TO_P):
  1200. case(RANGE_ONLY_TO_T):
  1201. case(R_AND_C_TO_P):
  1202. case(R_AND_C_TO_T):
  1203. default_val[PEX_RANG] = 1.0;
  1204. /* fall thro */
  1205. default:
  1206. default_val[PEX_MEAN] = MIDIMIN;
  1207. default_val[PEX_CNTR] = 0.0;
  1208. }
  1209. break;
  1210. case(P_FIX):
  1211. default_val[PF_SCUT] = 0.0;
  1212. default_val[PF_ECUT] = duration - FLTERR;
  1213. default_val[PF_LOF] = PITCHZERO;
  1214. default_val[PF_HIF] = nyquist;
  1215. default_val[PF_SMOOTH] = 1.0;
  1216. default_val[PF_SMARK] = SPEC_MINFRQ;
  1217. default_val[PF_EMARK] = SPEC_MINFRQ;
  1218. break;
  1219. case(P_HEAR):
  1220. default_val[PH_GAIN] = 1.0;
  1221. break;
  1222. case(P_INFO):
  1223. break;
  1224. case(P_INVERT):
  1225. hztomidi(&(default_val[PI_MEAN]),SPEC_MINFRQ);
  1226. default_val[PI_TOP] = MIDIMAX;
  1227. hztomidi(&(default_val[PI_BOT]),SPEC_MINFRQ);
  1228. break;
  1229. case(P_QUANTISE):
  1230. break;
  1231. case(P_RANDOMISE):
  1232. default_val[PR_MXINT] = 1.0;
  1233. default_val[PR_TSTEP] = (frametime * SECS_TO_MS) + FLTERR;
  1234. default_val[PR_SLEW] = DEFAULT_SLEW;
  1235. break;
  1236. case(P_SEE):
  1237. // TW Default Scaling value altered to give range 0-1 out
  1238. // default_val[PSEE_SCF] = 1.0;
  1239. default_val[PSEE_SCF] = 1.0/nyquist;
  1240. break;
  1241. case(P_SMOOTH):
  1242. default_val[PS_TFRAME] = (frametime * SECS_TO_MS) + FLTERR;
  1243. hztomidi(&(default_val[PS_MEAN]),SPEC_MINFRQ);
  1244. break;
  1245. //TW NEW CASES
  1246. case(P_INSERT):
  1247. case(P_SINSERT):
  1248. case(P_PTOSIL):
  1249. case(P_NTOSIL):
  1250. case(P_SYNTH):
  1251. case(ANALENV):
  1252. case(P_BINTOBRK):
  1253. case(MAKE2):
  1254. case(P_INTERP):
  1255. break;
  1256. case(P_VOWELS):
  1257. default_val[PV_HWIDTH] = V_HWIDTH;
  1258. default_val[PV_CURVIT] = CURVIT;
  1259. default_val[PV_PKRANG] = PEAK_RANGE;
  1260. default_val[PV_FUNBAS] = FUNDAMENTAL_BASE;
  1261. default_val[PV_OFFSET] = 0.0;
  1262. break;
  1263. case(VFILT):
  1264. default_val[PV_HWIDTH] = V_HWIDTH;
  1265. default_val[PV_CURVIT] = CURVIT;
  1266. default_val[PV_PKRANG] = PEAK_RANGE;
  1267. default_val[VF_THRESH] = 0.5;
  1268. break;
  1269. case(P_GEN):
  1270. default_val[PGEN_SRATE] = 48000;
  1271. default_val[PGEN_CHANS_INPUT] = 1024;
  1272. default_val[PGEN_WINOVLP_INPUT] = 3;
  1273. break;
  1274. case(P_TRANSPOSE):
  1275. default_val[PT_TVAL] = 0.0;
  1276. break;
  1277. case(P_VIBRATO):
  1278. default_val[PV_FRQ] = DEFAULT_VIBRATO_FRQ;
  1279. default_val[PV_RANG] = DEFAULT_VIBRATO_RANGE;
  1280. break;
  1281. case(P_WRITE):
  1282. default_val[PW_DRED] = LOG2(EIGHTH_TONE) * SEMITONES_PER_OCTAVE;
  1283. break;
  1284. case(P_ZEROS):
  1285. break;
  1286. case(PEAK):
  1287. default_val[PEAK_CUTOFF] = SPEC_MINFRQ;
  1288. default_val[PEAK_TWINDOW] = DEFAULT_TWINDOW;
  1289. default_val[PEAK_FWINDOW] = DEFAULT_FWINDOW;
  1290. break;
  1291. case(PICK):
  1292. default_val[PICK_FUND] = SPEC_MINFRQ;
  1293. default_val[PICK_LIN] = SPEC_MINFRQ;
  1294. default_val[PICK_CLAR] = 1.0;
  1295. break;
  1296. case(PITCH):
  1297. default_val[PICH_RNGE] = 1.0;
  1298. default_val[PICH_VALID] = (double)BLIPLEN;
  1299. default_val[PICH_SRATIO] = SILENCE_RATIO;
  1300. default_val[PICH_MATCH] = (double)ACCEPTABLE_MATCH;
  1301. default_val[PICH_HILM] = nyquist/MAXIMI;
  1302. default_val[PICH_LOLM] = SPEC_MINFRQ;
  1303. if(mode==PICH_TO_BRK)
  1304. default_val[PICH_DATAREDUCE]= LOG2(EIGHTH_TONE) * SEMITONES_PER_OCTAVE;
  1305. break;
  1306. case(PLUCK):
  1307. default_val[PLUK_GAIN] = 1.0;
  1308. break;
  1309. case(PRINT):
  1310. default_val[PRNT_STIME] = 0.0;
  1311. default_val[PRNT_WCNT] = 1.0;
  1312. break;
  1313. case(REPITCH):
  1314. break;
  1315. case(REPITCHB):
  1316. default_val[RP_DRED] = LOG2(EIGHTH_TONE) * SEMITONES_PER_OCTAVE;
  1317. break;
  1318. case(REPORT):
  1319. default_val[REPORT_PKCNT] = (double)MAXPKCNT;
  1320. default_val[REPORT_LOFRQ] = PITCHZERO;
  1321. default_val[REPORT_HIFRQ] = nyquist;
  1322. default_val[REPORT_STABL] = DEFAULT_STABILITY;
  1323. break;
  1324. case(SCAT):
  1325. default_val[SCAT_CNT] = max((double)(clength/4),16.0);
  1326. default_val[SCAT_BLOKSIZE] = chwidth;
  1327. break;
  1328. case(SHIFT):
  1329. default_val[SHIFT_SHIF] = 0.0;
  1330. default_val[SHIFT_FRQ1] = halfchwidth/2.0;
  1331. default_val[SHIFT_FRQ2] = nyquist - (halfchwidth/2.0);
  1332. break;
  1333. case(SHIFTP):
  1334. default_val[SHIFTP_FFRQ] = CONCERT_A;
  1335. default_val[SHIFTP_SHF1] = 0.0;
  1336. default_val[SHIFTP_SHF2] = 0.0;
  1337. default_val[SHIFTP_DEPTH] = 1.0;
  1338. break;
  1339. case(SHUFFLE):
  1340. default_val[SHUF_GRPSIZE] = 1.0;
  1341. break;
  1342. case(SPLIT):
  1343. break;
  1344. case(SPREAD):
  1345. default_val[SPREAD_SPRD] = 1.0;
  1346. break;
  1347. case(STEP):
  1348. default_val[STEP_STEP] = DEFAULT_STEP;
  1349. break;
  1350. case(STRETCH):
  1351. default_val[STR_FFRQ] = CONCERT_A;
  1352. default_val[STR_SHIFT] = 1.4;
  1353. default_val[STR_EXP] = 1.0;
  1354. default_val[STR_DEPTH] = 1.0;
  1355. break;
  1356. case(SUM):
  1357. default_val[SUM_CROSS] = 1.0;
  1358. break;
  1359. case(SUPR):
  1360. default_val[SUPR_INDX] = DEFAULT_TRACE;
  1361. break;
  1362. case(S_TRACE):
  1363. default_val[TRAC_INDX] = DEFAULT_TRACE;
  1364. default_val[TRAC_LOFRQ] = PITCHZERO;
  1365. default_val[TRAC_HIFRQ] = nyquist;
  1366. break;
  1367. case(TRACK):
  1368. default_val[TRAK_PICH] = SPEC_MINFRQ;
  1369. default_val[TRAK_RNGE] = 1.0;
  1370. default_val[TRAK_VALID] = (double)BLIPLEN;
  1371. default_val[TRAK_SRATIO] = SILENCE_RATIO;
  1372. default_val[TRAK_HILM] = nyquist/MAXIMI;
  1373. if(mode==TRK_TO_BRK)
  1374. default_val[TRAK_DATAREDUCE]= LOG2(EIGHTH_TONE) * SEMITONES_PER_OCTAVE;
  1375. break;
  1376. case(TRNSF):
  1377. default_val[TRNSF_HIFRQ] = nyquist;
  1378. default_val[TRNSF_LOFRQ] = PITCHZERO;
  1379. break;
  1380. case(TRNSP):
  1381. default_val[TRNSP_HIFRQ] = nyquist;
  1382. default_val[TRNSP_LOFRQ] = PITCHZERO;
  1383. break;
  1384. case(TSTRETCH):
  1385. default_val[TSTR_STRETCH] = 1.0;
  1386. break;
  1387. case(TUNE):
  1388. default_val[TUNE_FOC] = 1.0;
  1389. default_val[TUNE_CLAR] = 1.0;
  1390. default_val[TUNE_INDX] = DEFAULT_TRACE;
  1391. default_val[TUNE_BFRQ] = SPEC_MINFRQ;
  1392. break;
  1393. case(VOCODE):
  1394. default_val[VOCO_LOF] = PITCHZERO;
  1395. default_val[VOCO_HIF] = nyquist;
  1396. default_val[VOCO_GAIN] = 1.0;
  1397. break;
  1398. case(WARP):
  1399. default_val[WARP_PRNG] = DEFAULT_PRANGE;
  1400. default_val[WARP_TRNG] = DEFAULT_TRANGE;
  1401. default_val[WARP_SRNG] = DEFAULT_SRANGE;
  1402. break;
  1403. case(WAVER):
  1404. default_val[WAVER_VIB] = DEFAULT_VIBRATO_FRQ;
  1405. default_val[WAVER_STR] = 1.0;
  1406. default_val[WAVER_LOFRQ] = PITCHZERO;
  1407. if(mode==WAVER_SPECIFIED)
  1408. default_val[WAVER_EXP] = 1.0;
  1409. break;
  1410. case(WEAVE):
  1411. break;
  1412. case(WINDOWCNT):
  1413. break;
  1414. case(LIMIT):
  1415. default_val[LIMIT_THRESH] = 0.0;
  1416. break;
  1417. /******************************* GROUCHO *******************************/
  1418. /******************************* GROUCHO *******************************/
  1419. /******************************* GROUCHO *******************************/
  1420. case(DISTORT):
  1421. default_val[DISTORT_POWFAC] = 2.0;
  1422. break;
  1423. case(DISTORT_ENV):
  1424. default_val[DISTORTE_CYCLECNT] = 1.0;
  1425. default_val[DISTORTE_TROF] = 0.0;
  1426. default_val[DISTORTE_EXPON] = 1.0;
  1427. break;
  1428. case(DISTORT_AVG):
  1429. default_val[DISTORTA_CYCLECNT] = 2.0;
  1430. default_val[DISTORTA_MAXLEN] = MAXWAVELEN;
  1431. default_val[DISTORTA_SKIPCNT] = 0.0;
  1432. break;
  1433. case(DISTORT_OMT):
  1434. default_val[DISTORTO_OMIT] = 1.0;
  1435. default_val[DISTORTO_KEEP] = 2.0;
  1436. break;
  1437. case(DISTORT_MLT):
  1438. case(DISTORT_DIV):
  1439. default_val[DISTORTM_FACTOR] = 2.0;
  1440. break;
  1441. case(DISTORT_HRM):
  1442. default_val[DISTORTH_PRESCALE] = 1.0;
  1443. break;
  1444. case(DISTORT_FRC):
  1445. default_val[DISTORTF_SCALE] = MIN_SCALE;
  1446. default_val[DISTORTF_AMPFACT] = 1.0;
  1447. default_val[DISTORTF_PRESCALE] = 1.0;
  1448. break;
  1449. case(DISTORT_REV):
  1450. default_val[DISTORTR_CYCLECNT] = 1.0;
  1451. break;
  1452. case(DISTORT_SHUF):
  1453. default_val[DISTORTS_CYCLECNT] = 1.0;
  1454. default_val[DISTORTS_SKIPCNT] = 0.0;
  1455. break;
  1456. case(DISTORT_RPTFL):
  1457. default_val[DISTRPT_CYCLIM] = CYCLIM_DFLTFRQ;
  1458. /* fall thro */
  1459. case(DISTORT_RPT):
  1460. case(DISTORT_RPT2):
  1461. default_val[DISTRPT_MULTIPLY] = 2.0;
  1462. default_val[DISTRPT_CYCLECNT] = 1.0;
  1463. default_val[DISTRPT_SKIPCNT] = 0.0;
  1464. break;
  1465. case(DISTORT_INTP):
  1466. default_val[DISTINTP_MULTIPLY] = 2.0;
  1467. default_val[DISTINTP_SKIPCNT] = 0.0;
  1468. break;
  1469. case(DISTORT_DEL):
  1470. default_val[DISTDEL_CYCLECNT] = 2.0;
  1471. default_val[DISTDEL_SKIPCNT] = 0.0;
  1472. break;
  1473. case(DISTORT_RPL):
  1474. default_val[DISTRPL_CYCLECNT] = 2.0;
  1475. default_val[DISTRPL_SKIPCNT] = 0.0;
  1476. break;
  1477. case(DISTORT_TEL):
  1478. default_val[DISTTEL_CYCLECNT] = 2.0;
  1479. default_val[DISTTEL_SKIPCNT] = 0.0;
  1480. break;
  1481. case(DISTORT_FLT):
  1482. default_val[DISTFLT_LOFRQ_CYCLELEN] = SPEC_MINFRQ;
  1483. default_val[DISTFLT_HIFRQ_CYCLELEN] = nyquist;
  1484. default_val[DISTFLT_SKIPCNT] = 0.0;
  1485. break;
  1486. case(DISTORT_INT):
  1487. break;
  1488. case(DISTORT_CYCLECNT):
  1489. break;
  1490. case(DISTORT_PCH):
  1491. default_val[DISTPCH_OCTVAR] = 1.0;
  1492. default_val[DISTPCH_CYCLECNT] = DEFAULT_RSTEP;
  1493. default_val[DISTPCH_SKIPCNT] = 0.0;
  1494. break;
  1495. case(DISTORT_OVERLOAD):
  1496. if(mode==OVER_SINE) {
  1497. default_val[DISTORTER_FRQ] = CONCERT_A;
  1498. }
  1499. default_val[DISTORTER_MULT] = DFLT_DISTORTER_MULT;
  1500. default_val[DISTORTER_DEPTH] = DFLT_DISTORTER_DEPTH;
  1501. break;
  1502. //TW NEW CASE
  1503. case(DISTORT_PULSED):
  1504. default_val[PULSE_STARTTIME] = 0.0; /* starttime of impulses in input-sound */
  1505. default_val[PULSE_DUR] = 1.0; /* duration of impulse stream */
  1506. default_val[PULSE_FRQ] = 10.0; /* frq of impulses */
  1507. default_val[PULSE_FRQRAND] = 0.0; /* randomisation frq of impulses, in semitones */
  1508. default_val[PULSE_TIMERAND] = 0.0; /* randomisation of pulse shape, timewise */
  1509. default_val[PULSE_SHAPERAND] = 0.0; /* randomisation of pulse shape, ampwise */
  1510. if(mode==PULSE_SYNI)
  1511. default_val[PULSE_WAVETIME] = 1.0; /* number of wavesets to cycle-around, within impulse [synth2 option only] */
  1512. else
  1513. default_val[PULSE_WAVETIME] = .02; /* duration of wavesets to cycle-around, within impulse [synth option only] */
  1514. default_val[PULSE_TRANSPOS] = 0.0; /* transposition envelope of material inside impulse */
  1515. default_val[PULSE_PITCHRAND] = 0.0; /* randomisation of transposition envelope */
  1516. break;
  1517. case(ZIGZAG):
  1518. default_val[ZIGZAG_START] = 0.0;
  1519. default_val[ZIGZAG_END] = duration;
  1520. default_val[ZIGZAG_DUR] = duration * 2.0;
  1521. default_val[ZIGZAG_MIN] = ((ZIG_SPLICELEN * 2) + ZIG_MIN_UNSPLICED) * MS_TO_SECS;
  1522. default_val[ZIGZAG_SPLEN] = ZIG_SPLICELEN;
  1523. if(mode==ZIGZAG_SELF) {
  1524. default_val[ZIGZAG_MAX] = min(2.0,duration - (2 * ZIG_SPLICELEN * MS_TO_SECS));
  1525. default_val[ZIGZAG_RSEED] = 0.0;
  1526. }
  1527. break;
  1528. case(LOOP):
  1529. default_val[LOOP_OUTDUR] = duration;
  1530. default_val[LOOP_REPETS] = 2;
  1531. default_val[LOOP_START] = 0.0;
  1532. default_val[LOOP_LEN] = max(DEFAULT_LPSTEP,((ZIG_SPLICELEN * 2) + ZIG_MIN_UNSPLICED));
  1533. if(mode==LOOP_ALL)
  1534. default_val[LOOP_STEP] = max(DEFAULT_LPSTEP/2,((ZIG_SPLICELEN * 2) + ZIG_MIN_UNSPLICED));
  1535. else
  1536. default_val[LOOP_STEP] = 0.0;
  1537. default_val[LOOP_SPLEN] = ZIG_SPLICELEN;
  1538. default_val[LOOP_SRCHF] = 0.0;
  1539. break;
  1540. case(SCRAMBLE):
  1541. switch(mode) {
  1542. case(SCRAMBLE_RAND):
  1543. default_val[SCRAMBLE_MIN] = ((2 * ZIG_SPLICELEN) + ZIG_MIN_UNSPLICED) * MS_TO_SECS;
  1544. default_val[SCRAMBLE_MAX] = max((duration/4.0),default_val[SCRAMBLE_MIN]);
  1545. break;
  1546. case(SCRAMBLE_SHRED):
  1547. default_val[SCRAMBLE_LEN] = max((duration/4.0),((2 * ZIG_SPLICELEN) + ZIG_MIN_UNSPLICED) * MS_TO_SECS);
  1548. default_val[SCRAMBLE_SCAT] = 0.0;
  1549. break;
  1550. default:
  1551. sprintf(errstr,"Unknown mode for SCRAMBLE: in initialise_param_values()\n");
  1552. return(PROGRAM_ERROR);
  1553. }
  1554. default_val[SCRAMBLE_DUR] = duration;
  1555. default_val[SCRAMBLE_SPLEN] = ZIG_SPLICELEN;
  1556. default_val[SCRAMBLE_SEED] = 0.0;
  1557. break;
  1558. case(ITERATE):
  1559. switch(mode) {
  1560. case(ITERATE_DUR):
  1561. default_val[ITER_DUR] = duration * 2.0;
  1562. break;
  1563. case(ITERATE_REPEATS):
  1564. default_val[ITER_REPEATS] = 2.0;
  1565. break;
  1566. default:
  1567. sprintf(errstr,"Unknown mode for ITERATE: in initialise_param_values()\n");
  1568. return(PROGRAM_ERROR);
  1569. }
  1570. default_val[ITER_DELAY] = duration;
  1571. default_val[ITER_RANDOM] = 0.0;
  1572. default_val[ITER_PSCAT] = 0.0;
  1573. default_val[ITER_ASCAT] = 0.0;
  1574. default_val[ITER_FADE] = 0.0;
  1575. default_val[ITER_RSEED] = 0.0;
  1576. default_val[ITER_GAIN] = DEFAULT_ITER_GAIN; /* 0.0 */
  1577. break;
  1578. case(ITERATE_EXTEND):
  1579. switch(mode) {
  1580. case(ITERATE_DUR):
  1581. default_val[ITER_DUR] = duration * 2.0;
  1582. break;
  1583. case(ITERATE_REPEATS):
  1584. default_val[ITER_REPEATS] = 2.0;
  1585. break;
  1586. default:
  1587. sprintf(errstr,"Unknown mode for ITERATE_EXTEND: in initialise_param_values()\n");
  1588. return(PROGRAM_ERROR);
  1589. }
  1590. default_val[ITER_DELAY] = duration;
  1591. default_val[ITER_RANDOM] = 0.0;
  1592. default_val[ITER_PSCAT] = 0.0;
  1593. default_val[ITER_ASCAT] = 0.0;
  1594. default_val[CHUNKSTART] = 0.0;
  1595. default_val[CHUNKEND] = duration;
  1596. default_val[ITER_LGAIN] = 1.0;
  1597. default_val[ITER_RRSEED] = 0.0;
  1598. break;
  1599. case(DRUNKWALK):
  1600. default_val[DRNK_TOTALDUR] = duration;
  1601. default_val[DRNK_LOCUS] = 0.0;
  1602. default_val[DRNK_AMBITUS] = min(1.0,duration);
  1603. default_val[DRNK_GSTEP] = DRNK_GRAIN * DRNK_DEFAULT_GSTEP;
  1604. default_val[DRNK_CLOKTIK] = DRNK_SPLICE * MS_TO_SECS * DRNK_DEFAULT_CLOKTIK;
  1605. default_val[DRNK_MIN_DRNKTIK] = DEFAULT_MIN_DRNKTIK;
  1606. default_val[DRNK_MAX_DRNKTIK] = DEFAULT_MAX_DRNKTIK;
  1607. default_val[DRNK_SPLICELEN] = DRNK_SPLICE;
  1608. default_val[DRNK_CLOKRND] = 0.0;
  1609. default_val[DRNK_OVERLAP] = 0.0;
  1610. default_val[DRNK_RSEED] = 0.0;
  1611. if(mode==HAS_SOBER_MOMENTS) {
  1612. default_val[DRNK_MIN_PAUS] = 0.25;
  1613. default_val[DRNK_MAX_PAUS] = min(1.5,duration + FLTERR);
  1614. }
  1615. break;
  1616. case(SIMPLE_TEX): case(TIMED): case(GROUPS): case(TGROUPS):
  1617. case(DECORATED): case(PREDECOR): case(POSTDECOR):
  1618. case(ORNATE): case(PREORNATE):case(POSTORNATE):
  1619. case(MOTIFS): case(MOTIFSIN): case(TMOTIFS): case(TMOTIFSIN):
  1620. default_val[TEXTURE_DUR] = TEXTURE_DEFAULT_DUR;
  1621. switch(process) {
  1622. case(SIMPLE_TEX): case(GROUPS): case(MOTIFS): case(MOTIFSIN):
  1623. default_val[TEXTURE_PACK] = DENSITY_DEFAULT;
  1624. break;
  1625. case(TIMED): case(TGROUPS): case(TMOTIFS): case(TMOTIFSIN):
  1626. case(DECORATED): case(PREDECOR): case(POSTDECOR):
  1627. case(ORNATE): case(PREORNATE): case(POSTORNATE):
  1628. default_val[TEXTURE_SKIP] = DEFAULT_SKIP;
  1629. break;
  1630. default:
  1631. sprintf(errstr,"Unknown process in initialise_param_values()\n");
  1632. return(PROGRAM_ERROR);
  1633. }
  1634. default_val[TEXTURE_SCAT] = 0.0;
  1635. default_val[TEXTURE_TGRID] = 0.0;
  1636. default_val[TEXTURE_INSLO] = 1.0;
  1637. default_val[TEXTURE_INSHI] = 1.0;
  1638. default_val[TEXTURE_MAXAMP] = 64.0;
  1639. default_val[TEXTURE_MINAMP] = 64.0;
  1640. default_val[TEXTURE_MAXDUR] = min(ap->hi[TEXTURE_MAXDUR],TEXTURE_MAX_DUR);
  1641. default_val[TEXTURE_MINDUR] = max(ap->lo[TEXTURE_MINDUR],TEXTURE_MIN_DUR);
  1642. default_val[TEXTURE_MAXPICH] = DEFAULT_MIDI_PITCH;
  1643. default_val[TEXTURE_MINPICH] = DEFAULT_MIDI_PITCH;
  1644. default_val[TEX_PHGRID] = 0.0;
  1645. default_val[TEX_GPSPACE] = (double)IS_STILL;
  1646. default_val[TEX_GRPSPRANGE] = 0.0;
  1647. default_val[TEX_AMPRISE] = 0.0;
  1648. default_val[TEX_AMPCONT] = 0.0;
  1649. default_val[TEX_GPSIZELO] = DEFAULT_GPSIZE;
  1650. default_val[TEX_GPSIZEHI] = DEFAULT_GPSIZE;
  1651. default_val[TEX_GPPACKLO] = DENSITY_DEFAULT * SECS_TO_MS;
  1652. default_val[TEX_GPPACKHI] = DENSITY_DEFAULT * SECS_TO_MS;
  1653. if(mode==TEX_NEUTRAL) { /* midipitches */
  1654. default_val[TEX_GPRANGLO] = DEFAULT_MIDI_PITCH - HALF_OCTAVE;
  1655. default_val[TEX_GPRANGHI] = DEFAULT_MIDI_PITCH + HALF_OCTAVE;
  1656. } else { /* notes of hfield */
  1657. default_val[TEX_GPRANGLO] = DEFAULT_HF_GPRANGE;
  1658. default_val[TEX_GPRANGHI] = DEFAULT_HF_GPRANGE;
  1659. }
  1660. default_val[TEX_MULTLO] = 1.0;
  1661. default_val[TEX_MULTHI] = 1.0;
  1662. default_val[TEX_DECPCENTRE] = (double)DEC_CENTRED;
  1663. default_val[TEXTURE_ATTEN] = 1.0;
  1664. default_val[TEXTURE_POS] = TEX_CENTRE;
  1665. default_val[TEXTURE_SPRD] = MAX_SPREAD;
  1666. default_val[TEXTURE_SEED] = 0.0;
  1667. for(n=0;n<TEXTURE_SEED;n++) {
  1668. if(default_val[n] < 0.0) {
  1669. sprintf(errstr,"parameter %d has been preset to a -ve val: invalid in TEXTURE\n",n+1);
  1670. return(PROGRAM_ERROR);
  1671. }
  1672. }
  1673. break;
  1674. case(GRAIN_COUNT): case(GRAIN_OMIT): case(GRAIN_DUPLICATE):
  1675. case(GRAIN_REORDER): case(GRAIN_REPITCH): case(GRAIN_RERHYTHM):
  1676. case(GRAIN_REMOTIF): case(GRAIN_TIMEWARP): case(GRAIN_POSITION):
  1677. case(GRAIN_ALIGN): case(GRAIN_GET): case(GRAIN_REVERSE):
  1678. default_val[GR_BLEN] = min(GR_MINDUR,duration);
  1679. default_val[GR_GATE] = GR_GATE_DEFAULT;
  1680. default_val[GR_MINTIME] = (GRAIN_SPLICELEN + GRAIN_SAFETY) * MS_TO_SECS * 2.0;
  1681. default_val[GR_WINSIZE] = 50.0;
  1682. switch(process) {
  1683. case(GRAIN_OMIT):
  1684. default_val[GR_KEEP] = 1.0;
  1685. default_val[GR_OUT_OF] = 2.0;
  1686. break;
  1687. case(GRAIN_DUPLICATE):
  1688. default_val[GR_DUPLS] = 2.0;
  1689. break;
  1690. case(GRAIN_TIMEWARP):
  1691. default_val[GR_TSTRETCH] = 1.0;
  1692. break;
  1693. case(GRAIN_POSITION):
  1694. default_val[GR_OFFSET] = 0.0;
  1695. break;
  1696. case(GRAIN_ALIGN):
  1697. default_val[GR_OFFSET] = 0.0;
  1698. default_val[GR_GATE2] = GR_GATE_DEFAULT;
  1699. break;
  1700. }
  1701. break;
  1702. case(RRRR_EXTEND):
  1703. if(mode == 1) {
  1704. default_val[RRR_GATE] = 0.0;
  1705. default_val[RRR_GRSIZ] = LOW_RRR_SIZE;
  1706. default_val[RRR_SKIP] = 0;
  1707. default_val[RRR_AFTER] = 0.0;
  1708. default_val[RRR_TEMPO] = 1.0;
  1709. default_val[RRR_AT] = 0;
  1710. } else {
  1711. default_val[RRR_START] = 0.0;
  1712. default_val[RRR_END] = duration;
  1713. }
  1714. default_val[RRR_SLOW] = 1.0;
  1715. default_val[RRR_REGU] = 0.0;
  1716. default_val[RRR_RANGE] = 1.0;
  1717. default_val[RRR_GET] = 3.0;
  1718. if(mode != 2) {
  1719. default_val[RRR_STRETCH] = 2.0;
  1720. default_val[RRR_REPET] = 2.0;
  1721. default_val[RRR_ASCAT] = 0.0;
  1722. default_val[RRR_PSCAT] = 0.0;
  1723. }
  1724. break;
  1725. case(SSSS_EXTEND):
  1726. default_val[SSS_DUR] = 10;
  1727. default_val[NOISE_MINFRQ] = NOIS_MIN_FRQ;
  1728. default_val[MIN_NOISLEN] = 50.0;
  1729. default_val[MAX_NOISLEN] = min(1.0,duration);
  1730. default_val[SSS_GATE] = 0.0;
  1731. break;
  1732. case(ENV_CREATE):
  1733. case(ENV_BRKTOENV):
  1734. case(ENV_DBBRKTOENV):
  1735. case(ENV_IMPOSE):
  1736. //TW NEW CASE
  1737. case(ENV_PROPOR):
  1738. case(ENV_REPLACE):
  1739. default_val[ENV_WSIZE] = ENV_DEFAULT_WSIZE;
  1740. break;
  1741. case(ENV_EXTRACT):
  1742. default_val[ENV_WSIZE] = ENV_DEFAULT_WSIZE;
  1743. if(mode==ENV_BRKFILE_OUT)
  1744. default_val[ENV_DATAREDUCE] = ENV_DEFAULT_DATAREDUCE;
  1745. break;
  1746. case(ENV_ENVTOBRK):
  1747. case(ENV_ENVTODBBRK):
  1748. default_val[ENV_DATAREDUCE] = ENV_DEFAULT_DATAREDUCE;
  1749. break;
  1750. case(ENV_WARPING):
  1751. case(ENV_REPLOTTING):
  1752. default_val[ENV_WSIZE] = ENV_DEFAULT_WSIZE;
  1753. /* fall thro */
  1754. case(ENV_RESHAPING):
  1755. switch(mode) {
  1756. case(ENV_NORMALISE):
  1757. case(ENV_REVERSE):
  1758. case(ENV_CEILING):
  1759. break;
  1760. case(ENV_DUCKED):
  1761. default_val[ENV_GATE] = ENV_DEFAULT_GATE;
  1762. default_val[ENV_THRESHOLD] = ENV_DEFAULT_THRESH;
  1763. break;
  1764. case(ENV_EXAGGERATING):
  1765. default_val[ENV_EXAG] = ENV_DEFAULT_EXAGG;
  1766. break;
  1767. case(ENV_ATTENUATING):
  1768. default_val[ENV_ATTEN] = ENV_DEFAULT_ATTEN;
  1769. break;
  1770. case(ENV_LIFTING):
  1771. default_val[ENV_LIFT] = ENV_DEFAULT_LIFT;
  1772. break;
  1773. case(ENV_FLATTENING):
  1774. default_val[ENV_FLATN] = ENV_DEFAULT_FLATN;
  1775. break;
  1776. case(ENV_TSTRETCHING):
  1777. default_val[ENV_TSTRETCH] = ENV_DEFAULT_TSTRETCH;
  1778. break;
  1779. case(ENV_GATING):
  1780. default_val[ENV_GATE] = ENV_DEFAULT_GATE;
  1781. default_val[ENV_SMOOTH] = 0.0;
  1782. break;
  1783. case(ENV_INVERTING):
  1784. default_val[ENV_GATE] = ENV_DEFAULT_GATE;
  1785. default_val[ENV_MIRROR] = ENV_DEFAULT_MIRROR;
  1786. break;
  1787. case(ENV_LIMITING):
  1788. default_val[ENV_LIMIT] = 1.0;
  1789. default_val[ENV_THRESHOLD] = ENV_DEFAULT_GATE;
  1790. break;
  1791. case(ENV_CORRUGATING):
  1792. default_val[ENV_TROFDEL] = ENV_DEFAULT_TROFDEL;
  1793. /* fall thro */
  1794. case(ENV_PEAKCNT):
  1795. default_val[ENV_PKSRCHWIDTH]= ENV_DEFAULT_PKSRCHWIDTH;
  1796. break;
  1797. case(ENV_EXPANDING):
  1798. default_val[ENV_GATE] = ENV_DEFAULT_GATE;
  1799. default_val[ENV_THRESHOLD] = ENV_DEFAULT_THRESH;
  1800. default_val[ENV_SMOOTH] = 0.0;
  1801. break;
  1802. case(ENV_TRIGGERING):
  1803. default_val[ENV_GATE] = ENV_DEFAULT_GATE;
  1804. default_val[ENV_TRIGRISE] = ENV_DEFAULT_TRIGRISE;
  1805. default_val[ENV_TRIGDUR] = ENV_DEFAULT_TRIGDUR;
  1806. break;
  1807. default:
  1808. sprintf(errstr,"Unknown case for ENVWARP,RESHAPING or REPLOTTING: initialise_param_values()\n");
  1809. return(PROGRAM_ERROR);
  1810. }
  1811. if(process==ENV_REPLOTTING)
  1812. default_val[ENV_DATAREDUCE] = ENV_DEFAULT_DATAREDUCE;
  1813. break;
  1814. case(ENV_DOVETAILING):
  1815. default_val[ENV_STARTTRIM] = 0.0;
  1816. default_val[ENV_ENDTRIM] = 0.0;
  1817. default_val[ENV_STARTTYPE] = ENVTYPE_EXP;
  1818. default_val[ENV_ENDTYPE] = ENVTYPE_EXP;
  1819. default_val[ENV_TIMETYPE] = ENV_TIMETYPE_SECS;
  1820. break;
  1821. case(ENV_CURTAILING):
  1822. default_val[ENV_STARTTIME] = 0.0;
  1823. default_val[ENV_ENDTIME] = duration;
  1824. default_val[ENV_ENVTYPE] = ENVTYPE_EXP;
  1825. default_val[ENV_TIMETYPE] = ENV_TIMETYPE_SECS;
  1826. break;
  1827. case(ENV_SWELL):
  1828. default_val[ENV_PEAKTIME] = duration/2.0;
  1829. default_val[ENV_ENVTYPE] = ENVTYPE_EXP;
  1830. break;
  1831. case(ENV_ATTACK):
  1832. switch(mode) {
  1833. case(ENV_ATK_GATED):
  1834. default_val[ENV_ATK_GATE] = 0.5;
  1835. break;
  1836. case(ENV_ATK_TIMED):
  1837. case(ENV_ATK_XTIME):
  1838. default_val[ENV_ATK_ATTIME] = min(duration/2.0,0.5);
  1839. break;
  1840. case(ENV_ATK_ATMAX):
  1841. break;
  1842. default:
  1843. sprintf(errstr,"Unknown case for ENV_ATTACK: initialise_param_values()\n");
  1844. return(PROGRAM_ERROR);
  1845. }
  1846. default_val[ENV_ATK_GAIN] = ENV_DEFAULT_ATK_GAIN;
  1847. default_val[ENV_ATK_ONSET] = ENV_DEFAULT_ATK_ONSET;
  1848. default_val[ENV_ATK_TAIL] = ENV_DEFAULT_ATK_TAIL;
  1849. default_val[ENV_ATK_ENVTYPE] = ENVTYPE_EXP;
  1850. break;
  1851. case(ENV_PLUCK):
  1852. default_val[ENV_PLK_ENDSAMP] = 0.0;
  1853. default_val[ENV_PLK_WAVELEN] = round(sr/ENV_PLK_FRQ_MAX);
  1854. default_val[ENV_PLK_CYCLEN] = ENV_PLK_CYCLEN_DEFAULT;
  1855. default_val[ENV_PLK_DECAY] = ENV_PLK_DECAY_DEFAULT;
  1856. break;
  1857. case(ENV_TREMOL):
  1858. default_val[ENV_TREM_FRQ] = ENV_TREM_DEFAULT_FRQ;
  1859. default_val[ENV_TREM_DEPTH] = ENV_TREM_DEFAULT_DEPTH;
  1860. default_val[ENV_TREM_AMP] = 1.0;
  1861. break;
  1862. case(ENV_DBBRKTOBRK):
  1863. case(ENV_BRKTODBBRK):
  1864. break;
  1865. case(MIX):
  1866. default_val[MIX_ATTEN] = 1.0;
  1867. /* fall thro */
  1868. case(MIXMAX):
  1869. default_val[MIX_START] = 0.0;
  1870. default_val[MIX_END] = duration;
  1871. break;
  1872. case(MIXTWO):
  1873. default_val[MIX_STAGGER] = 0.0;
  1874. default_val[MIX_SKIP] = 0.0;
  1875. default_val[MIX_SKEW] = 1.0;
  1876. default_val[MIX_STTA] = 0.0;
  1877. default_val[MIX_DURA] = 32767.0;
  1878. break;
  1879. //TW NEW CASE
  1880. case(MIXMANY):
  1881. break;
  1882. case(MIXBALANCE):
  1883. default_val[MIX_STAGGER] = 0.5;
  1884. default_val[MIX_SKIP] = 0.0;
  1885. default_val[MIX_SKEW] = duration;
  1886. break;
  1887. case(MIXCROSS):
  1888. default_val[MCR_STAGGER] = 0.0;
  1889. default_val[MCR_BEGIN] = 0.0;
  1890. default_val[MCR_END] = 0.0;
  1891. if(mode==MCCOS)
  1892. default_val[MCR_POWFAC] = 1.0;
  1893. break;
  1894. case(MIXINBETWEEN):
  1895. switch(mode) {
  1896. case(INBI_COUNT):
  1897. default_val[INBETW] = (double)DEFAULT_BETWEEN;
  1898. break;
  1899. case(INBI_RATIO):
  1900. default_val[INBETW] = 0.5;
  1901. break;
  1902. default:
  1903. sprintf(errstr,"Unknown mode for MIXINBETWEEN: initialise_param_values()\n");
  1904. return(PROGRAM_ERROR);
  1905. }
  1906. break;
  1907. case(CYCINBETWEEN):
  1908. default_val[INBETW] = (double)DEFAULT_BETWEEN;
  1909. default_val[BTWN_HFRQ] = (double)DEFAULT_BTWNFRQ;
  1910. break;
  1911. case(MIXTEST):
  1912. case(MIXFORMAT):
  1913. case(MIXDUMMY):
  1914. case(MIXINTERL):
  1915. case(MIXSYNC):
  1916. //TW NEW CASE
  1917. case(ADDTOMIX):
  1918. break;
  1919. case(MIXSYNCATT):
  1920. default_val[MSY_WFAC] = (double)MIN_WINFAC;
  1921. break;
  1922. case(MIXGAIN):
  1923. default_val[MIX_GAIN] = 1.0;
  1924. default_val[MSH_STARTLINE] = 1.0;
  1925. default_val[MSH_ENDLINE] = (double)linecnt;
  1926. break;
  1927. case(MIXTWARP):
  1928. switch(mode) {
  1929. case(MTW_REVERSE_T): case(MTW_REVERSE_NT):
  1930. case(MTW_FREEZE_T): case(MTW_FREEZE_NT):
  1931. case(MTW_TIMESORT):
  1932. break;
  1933. case(MTW_SCATTER):
  1934. default_val[MTW_PARAM] = 0.5;
  1935. break;
  1936. case(MTW_DOMINO):
  1937. default_val[MTW_PARAM] = 0.0;
  1938. break;
  1939. case(MTW_ADD_TO_TG):
  1940. case(MTW_CREATE_TG_1): case(MTW_CREATE_TG_2): case(MTW_CREATE_TG_3): case(MTW_CREATE_TG_4):
  1941. case(MTW_ENLARGE_TG_1): case(MTW_ENLARGE_TG_2): case(MTW_ENLARGE_TG_3): case(MTW_ENLARGE_TG_4):
  1942. default_val[MTW_PARAM] = 0.1;
  1943. break;
  1944. }
  1945. if(mode!=MTW_TIMESORT) {
  1946. default_val[MSH_STARTLINE] = 1.0;
  1947. default_val[MSH_ENDLINE] = (double)linecnt;
  1948. }
  1949. break;
  1950. case(MIXSWARP):
  1951. switch(mode) {
  1952. case(MSW_TWISTALL):
  1953. break;
  1954. case(MSW_TWISTONE):
  1955. default_val[MSW_TWLINE] = 1.0;
  1956. break;
  1957. case(MSW_NARROWED):
  1958. default_val[MSW_NARROWING] = 0.5;
  1959. break;
  1960. case(MSW_LEFTWARDS):
  1961. case(MSW_RIGHTWARDS):
  1962. case(MSW_RANDOM):
  1963. case(MSW_RANDOM_ALT):
  1964. default_val[MSW_POS1] = PAN_LEFT;
  1965. default_val[MSW_POS2] = PAN_RIGHT;
  1966. break;
  1967. case(MSW_FIXED):
  1968. default_val[MSW_POS1] = PAN_CENTRE;
  1969. break;
  1970. }
  1971. if(mode!=MSW_TWISTALL && mode!=MSW_TWISTONE) {
  1972. default_val[MSH_STARTLINE] = 1.0;
  1973. default_val[MSH_ENDLINE] = (double)linecnt;
  1974. }
  1975. break;
  1976. case(MIXSHUFL):
  1977. default_val[MSH_STARTLINE] = 1.0;
  1978. default_val[MSH_ENDLINE] = (double)linecnt;
  1979. break;
  1980. //TW NEW CASES
  1981. case(MIX_ON_GRID):
  1982. break;
  1983. case(AUTOMIX):
  1984. default_val[0] = 1.0;
  1985. break;
  1986. case(MIX_PAN):
  1987. default_val[PAN_PAN] = 0.0;
  1988. break;
  1989. case(MIX_AT_STEP):
  1990. default_val[MIX_STEP] = 0.0;
  1991. break;
  1992. case(SHUDDER):
  1993. default_val[SHUD_STARTTIME] = 0.0;
  1994. default_val[SHUD_FRQ] = 6.0;
  1995. default_val[SHUD_SCAT] = 1.0;
  1996. default_val[SHUD_SPREAD] = 1.0;
  1997. default_val[SHUD_MINDEPTH] = 0.0;
  1998. default_val[SHUD_MAXDEPTH] = 1.0;
  1999. default_val[SHUD_MINWIDTH] = 0.02;
  2000. default_val[SHUD_MAXWIDTH] = 0.2;
  2001. break;
  2002. case(EQ):
  2003. switch(mode) {
  2004. case(FLT_PEAKING):
  2005. default_val[FLT_BW] = FLT_DEFAULT_BW;
  2006. /* fall thro */
  2007. default:
  2008. default_val[FLT_BOOST] = 0.0; /* dB */
  2009. default_val[FLT_ONEFRQ] = FLT_DEFAULT_FRQ;
  2010. default_val[FLT_PRESCALE] = 1.0;
  2011. //TW NEW PARAM
  2012. default_val[FILT_TAIL] = 1.0;
  2013. break;
  2014. }
  2015. break;
  2016. case(LPHP):
  2017. default_val[FLT_GAIN] = FLT_DEFAULT_LOHI_ATTEN;
  2018. default_val[FLT_PRESCALE] = FLT_DEFAULT_LPHP_PRESCALE; /* as in orig prog */
  2019. switch(mode) {
  2020. case(FLT_HZ):
  2021. default_val[FLT_PASSFRQ] = FLT_DEFAULT_LOHIPASS;
  2022. default_val[FLT_STOPFRQ] = FLT_DEFAULT_LOHISTOP;
  2023. break;
  2024. case(FLT_MIDI):
  2025. default_val[FLT_PASSFRQ] = FLT_DEFAULT_LOHIPASSMIDI;
  2026. default_val[FLT_STOPFRQ] = FLT_DEFAULT_LOHISTOPMIDI;
  2027. break;
  2028. }
  2029. //TW NEW PARAM
  2030. default_val[FILT_TAIL] = 1.0;
  2031. break;
  2032. case(FSTATVAR):
  2033. default_val[FLT_Q] = 1.0/FLT_DEFAULT_Q; /* parameter is actually 1/Q */
  2034. default_val[FLT_GAIN] = 1.0;
  2035. default_val[FLT_ONEFRQ] = FLT_DEFAULT_FRQ;
  2036. //TW NEW PARAM
  2037. default_val[FILT_TAIL] = 1.0;
  2038. break;
  2039. case(FLTBANKN):
  2040. default_val[FLT_Q] = FLT_DEFAULT_Q;
  2041. default_val[FLT_GAIN] = 1.0;
  2042. //TW NEW PARAM
  2043. default_val[FILT_TAIL] = 1.0;
  2044. /* fall thro */
  2045. case(FLTBANKC):
  2046. default_val[FLT_LOFRQ] = FLT_DEFAULT_LOFRQ;
  2047. default_val[FLT_HIFRQ] = FLT_DEFAULT_HIFRQ;
  2048. switch(mode) {
  2049. case(FLT_LINOFFSET):
  2050. default_val[FLT_OFFSET] = FLT_DEFAULT_OFFSET;
  2051. break;
  2052. case(FLT_EQUALSPAN):
  2053. default_val[FLT_INCOUNT] = FLT_DEFAULT_INCOUNT;
  2054. break;
  2055. case(FLT_EQUALINT):
  2056. default_val[FLT_INTSIZE] = FLT_DEFAULT_INTSIZE;
  2057. break;
  2058. }
  2059. default_val[FLT_RANDFACT] = 0.0;
  2060. break;
  2061. case(FLTBANKU):
  2062. default_val[FLT_Q] = FLT_DEFAULT_Q;
  2063. default_val[FLT_GAIN] = 1.0;
  2064. //TW NEW PARAM
  2065. default_val[FILT_TAIL] = 1.0;
  2066. break;
  2067. case(FLTBANKV):
  2068. default_val[FLT_Q] = FLT_DEFAULT_Q;
  2069. default_val[FLT_GAIN] = 1.0;
  2070. default_val[FLT_HARMCNT] = FLT_DEFAULT_HCNT;
  2071. default_val[FLT_ROLLOFF] = FLT_DEFAULT_ROLLOFF;
  2072. default_val[FILT_TAILV] = 1.0;
  2073. break;
  2074. case(FLTBANKV2):
  2075. default_val[FLT_Q] = FLT_DEFAULT_Q;
  2076. default_val[FLT_GAIN] = 1.0;
  2077. default_val[FILT_TAILV] = 1.0;
  2078. break;
  2079. case(FLTSWEEP):
  2080. default_val[FLT_Q] = 1.0/FLT_DEFAULT_Q;
  2081. default_val[FLT_GAIN] = 1.0;
  2082. default_val[FLT_LOFRQ] = FLT_DEFAULT_LOFRQ;
  2083. default_val[FLT_HIFRQ] = FLT_DEFAULT_HIFRQ;
  2084. default_val[FLT_SWPFRQ] = FLT_DEFAULT_SWPFRQ;
  2085. default_val[FLT_SWPPHASE] = FLT_DEFAULT_SWPPHASE;
  2086. //TW NEW PARAM
  2087. default_val[FILT_TAIL] = 1.0;
  2088. break;
  2089. case(FLTITER):
  2090. default_val[FLT_Q] = FLT_DEFAULT_Q;
  2091. default_val[FLT_GAIN] = 1.0;
  2092. default_val[FLT_DELAY] = FLT_DEFAULT_ITERDELAY;
  2093. default_val[FLT_OUTDUR] = duration * 2.0;
  2094. default_val[FLT_PRESCALE] = 0.0;
  2095. default_val[FLT_RANDDEL] = 0.0;
  2096. default_val[FLT_PSHIFT] = 0.0;
  2097. default_val[FLT_AMPSHIFT] = 0.0;
  2098. break;
  2099. case(ALLPASS):
  2100. default_val[FLT_GAIN] = 1.0;
  2101. default_val[FLT_DELAY] = FLT_DEFAULT_ALLPASSDELAY;
  2102. default_val[FLT_PRESCALE] = 1.0;
  2103. //TW NEW PARAM
  2104. default_val[FILT_TAIL] = 1.0;
  2105. break;
  2106. case(MOD_LOUDNESS):
  2107. switch(mode) {
  2108. case(LOUDNESS_GAIN):
  2109. default_val[LOUD_GAIN] = 1.0;
  2110. break;
  2111. case(LOUDNESS_DBGAIN):
  2112. default_val[LOUD_GAIN] = 0.0;
  2113. break;
  2114. case(LOUDNESS_NORM):
  2115. case(LOUDNESS_SET):
  2116. //TW NEW DEFAULT
  2117. // default_val[LOUD_LEVEL] = 1.0;
  2118. default_val[LOUD_LEVEL] = 0.9;
  2119. break;
  2120. }
  2121. break;
  2122. case(MOD_SPACE):
  2123. switch(mode) {
  2124. case(MOD_PAN):
  2125. default_val[PAN_PAN] = 0.0;
  2126. default_val[PAN_PRESCALE] = PAN_PRESCALE_DEFAULT;
  2127. break;
  2128. case(MOD_NARROW):
  2129. default_val[NARROW] = 1.0;
  2130. break;
  2131. }
  2132. break;
  2133. //TW NEW CASES
  2134. case(SCALED_PAN):
  2135. default_val[PAN_PAN] = 0.0;
  2136. default_val[PAN_PRESCALE] = PAN_PRESCALE_DEFAULT;
  2137. break;
  2138. case(FIND_PANPOS):
  2139. default_val[PAN_PAN] = 0.0;
  2140. break;
  2141. case(MOD_PITCH):
  2142. switch(mode) {
  2143. case(MOD_TRANSPOS):
  2144. case(MOD_TRANSPOS_INFO):
  2145. default_val[VTRANS_TRANS] = 1.0;
  2146. break;
  2147. case(MOD_TRANSPOS_SEMIT):
  2148. case(MOD_TRANSPOS_SEMIT_INFO):
  2149. default_val[VTRANS_TRANS] = 0.0;
  2150. break;
  2151. case(MOD_ACCEL):
  2152. default_val[ACCEL_ACCEL] = 1.0;
  2153. // TW NEW DEFAULT
  2154. // default_val[ACCEL_GOALTIME] = 1.0;
  2155. default_val[ACCEL_GOALTIME] = min(1.0,duration);
  2156. default_val[ACCEL_STARTTIME]= 0.0;
  2157. break;
  2158. case(MOD_VIBRATO):
  2159. default_val[VIB_FRQ] = DEFAULT_VIB_FRQ;
  2160. default_val[VIB_DEPTH] = DEFAULT_VIB_DEPTH;
  2161. break;
  2162. }
  2163. break;
  2164. case(MOD_REVECHO):
  2165. switch(mode) {
  2166. case(MOD_STADIUM):
  2167. default_val[STAD_PREGAIN] = STAD_PREGAIN_DFLT;
  2168. default_val[STAD_ROLLOFF] = 1.0;
  2169. default_val[STAD_SIZE] = 1.0;
  2170. //TW NEW DEFAULT AFTER increasing number of possible echoes
  2171. // default_val[STAD_ECHOCNT] = MAX_ECHOCNT;
  2172. default_val[STAD_ECHOCNT] = REASONABLE_ECHOCNT;
  2173. break;
  2174. case(MOD_DELAY):
  2175. case(MOD_VDELAY):
  2176. default_val[DELAY_LFOMOD] = 0.0;
  2177. default_val[DELAY_LFOFRQ] = 0.0;
  2178. default_val[DELAY_LFOPHASE] = 0.0;
  2179. default_val[DELAY_LFODELAY] = 0.0;
  2180. default_val[DELAY_DELAY] = DEFAULT_DELAY; /* milliseconds */
  2181. default_val[DELAY_MIX] = 0.5;
  2182. default_val[DELAY_FEEDBACK] = 0.0;
  2183. default_val[DELAY_TRAILTIME]= 0.0;
  2184. default_val[DELAY_PRESCALE] = 1.0;
  2185. if(mode==MOD_VDELAY)
  2186. default_val[DELAY_SEED] = 0.0;
  2187. break;
  2188. }
  2189. break;
  2190. case(MOD_RADICAL):
  2191. switch(mode) {
  2192. case(MOD_REVERSE):
  2193. break;
  2194. case(MOD_SHRED):
  2195. default_val[SHRED_CNT] = 1.0;
  2196. default_val[SHRED_CHLEN] = max((duration/8.0),((double)(SHRED_SPLICELEN * 3)/(double)srate));
  2197. default_val[SHRED_SCAT] = 1.0;
  2198. break;
  2199. case(MOD_SCRUB):
  2200. default_val[SCRUB_TOTALDUR] = duration;
  2201. default_val[SCRUB_MINSPEED] = SCRUB_MINSPEED_DEFAULT;
  2202. default_val[SCRUB_MAXSPEED] = SCRUB_MAXSPEED_DEFAULT;
  2203. default_val[SCRUB_STARTRANGE] = 0.0;
  2204. default_val[SCRUB_ESTART] = duration;
  2205. break;
  2206. case(MOD_LOBIT):
  2207. default_val[LOBIT_BRES] = (double)MAX_BIT_DIV;
  2208. default_val[LOBIT_TSCAN] = 1.0;
  2209. break;
  2210. case(MOD_LOBIT2):
  2211. default_val[LOBIT_BRES] = (double)MAX_BIT_DIV;
  2212. break;
  2213. case(MOD_RINGMOD):
  2214. default_val[RM_FRQ] = (double)MIDDLE_C_MIDI;
  2215. break;
  2216. case(MOD_CROSSMOD):
  2217. break;
  2218. }
  2219. break;
  2220. case(BRASSAGE):
  2221. default_val[GRS_VELOCITY] = 1.0;
  2222. switch(mode) {
  2223. case(GRS_REVERB):
  2224. default_val[GRS_DENSITY] = GRS_DEFAULT_REVERB_DENSITY;
  2225. break;
  2226. default:
  2227. default_val[GRS_DENSITY] = GRS_DEFAULT_DENSITY;
  2228. break;
  2229. }
  2230. default_val[GRS_HVELOCITY] = 1.0;
  2231. default_val[GRS_HDENSITY] = GRS_DEFAULT_DENSITY;
  2232. default_val[GRS_GRAINSIZE] = GRS_DEFAULT_GRAINSIZE;
  2233. default_val[GRS_PITCH] = 0.0;
  2234. default_val[GRS_AMP] = 1.0;
  2235. switch(mode) {
  2236. case(GRS_REVERB):
  2237. default_val[GRS_SPACE] = 0.0;
  2238. break;
  2239. default:
  2240. default_val[GRS_SPACE] = 0.5;
  2241. break;
  2242. }
  2243. default_val[GRS_BSPLICE] = GRS_DEFAULT_SPLICELEN;
  2244. default_val[GRS_ESPLICE] = GRS_DEFAULT_SPLICELEN;
  2245. default_val[GRS_HGRAINSIZE] = GRS_DEFAULT_GRAINSIZE;
  2246. default_val[GRS_HPITCH] = 0.0;
  2247. default_val[GRS_HAMP] = 1.0;
  2248. switch(mode) {
  2249. case(GRS_REVERB):
  2250. default_val[GRS_HSPACE] = 1.0;
  2251. break;
  2252. default:
  2253. default_val[GRS_HSPACE] = 0.5;
  2254. break;
  2255. }
  2256. default_val[GRS_HBSPLICE] = GRS_DEFAULT_SPLICELEN;
  2257. default_val[GRS_HESPLICE] = GRS_DEFAULT_SPLICELEN;
  2258. switch(mode) {
  2259. case(GRS_BRASSAGE):
  2260. case(GRS_FULL_MONTY):
  2261. default_val[GRS_SCATTER] = GRS_DEFAULT_SCATTER;
  2262. default_val[GRS_OUTLEN] = 0.0;
  2263. default_val[GRS_CHAN_TO_XTRACT] = 0.0;
  2264. /* fall thro */
  2265. case(GRS_REVERB):
  2266. case(GRS_SCRAMBLE):
  2267. default_val[GRS_SRCHRANGE] = 0.0;
  2268. break;
  2269. }
  2270. break;
  2271. case(SAUSAGE):
  2272. default_val[GRS_VELOCITY] = 1.0;
  2273. default_val[GRS_DENSITY] = GRS_DEFAULT_DENSITY;
  2274. default_val[GRS_HVELOCITY] = 1.0;
  2275. default_val[GRS_HDENSITY] = GRS_DEFAULT_DENSITY;
  2276. default_val[GRS_GRAINSIZE] = GRS_DEFAULT_GRAINSIZE;
  2277. default_val[GRS_PITCH] = 0.0;
  2278. default_val[GRS_AMP] = 1.0;
  2279. default_val[GRS_SPACE] = 0.5;
  2280. default_val[GRS_BSPLICE] = GRS_DEFAULT_SPLICELEN;
  2281. default_val[GRS_ESPLICE] = GRS_DEFAULT_SPLICELEN;
  2282. default_val[GRS_HGRAINSIZE] = GRS_DEFAULT_GRAINSIZE;
  2283. default_val[GRS_HPITCH] = 0.0;
  2284. default_val[GRS_HAMP] = 1.0;
  2285. default_val[GRS_HSPACE] = 0.5;
  2286. default_val[GRS_HBSPLICE] = GRS_DEFAULT_SPLICELEN;
  2287. default_val[GRS_HESPLICE] = GRS_DEFAULT_SPLICELEN;
  2288. default_val[GRS_SCATTER] = GRS_DEFAULT_SCATTER;
  2289. default_val[GRS_OUTLEN] = 0.0;
  2290. default_val[GRS_CHAN_TO_XTRACT] = 0.0;
  2291. default_val[GRS_SRCHRANGE] = 0.0;
  2292. break;
  2293. /* TEMPORARY TEST ROUTINE */
  2294. case(WORDCNT):
  2295. break;
  2296. /* TEMPORARY TEST ROUTINE */
  2297. case(PVOC_ANAL):
  2298. default_val[PVOC_CHANS_INPUT] = (double)DEFAULT_PVOC_CHANS;
  2299. default_val[PVOC_WINOVLP_INPUT] = (double)DEFAULT_WIN_OVERLAP;
  2300. break;
  2301. case(PVOC_SYNTH):
  2302. break;
  2303. case(PVOC_EXTRACT):
  2304. default_val[PVOC_CHANS_INPUT] = (double)DEFAULT_PVOC_CHANS;
  2305. default_val[PVOC_WINOVLP_INPUT] = (double)DEFAULT_WIN_OVERLAP;
  2306. default_val[PVOC_CHANSLCT_INPUT]= 0.0;
  2307. default_val[PVOC_LOCHAN_INPUT] = 0.0;
  2308. default_val[PVOC_HICHAN_INPUT] = 0.0;
  2309. break;
  2310. case(EDIT_CUT):
  2311. default_val[CUT_CUT] = 0.0;
  2312. switch(mode) {
  2313. case(EDIT_SECS): default_val[CUT_END] = duration; break;
  2314. case(EDIT_SAMPS): default_val[CUT_END] = (double)insams; break;
  2315. case(EDIT_STSAMPS): default_val[CUT_END] = (double)(insams/channels); break;
  2316. }
  2317. default_val[CUT_SPLEN] = EDIT_SPLICELEN;
  2318. break;
  2319. case(EDIT_CUTEND):
  2320. default_val[CUT_CUT] = 0.0;
  2321. default_val[CUT_SPLEN] = EDIT_SPLICELEN;
  2322. break;
  2323. case(MANY_ZCUTS):
  2324. break;
  2325. case(EDIT_ZCUT):
  2326. default_val[CUT_CUT] = 0.0;
  2327. switch(mode) {
  2328. case(EDIT_SECS): default_val[CUT_END] = duration; break;
  2329. case(EDIT_SAMPS): default_val[CUT_END] = (double)(insams); break;
  2330. case(EDIT_STSAMPS): default_val[CUT_END] = (double)(insams/channels); break;
  2331. }
  2332. break;
  2333. case(EDIT_EXCISE):
  2334. default_val[CUT_CUT] = 0.0;
  2335. switch(mode) {
  2336. case(EDIT_SECS): default_val[CUT_END] = duration; break;
  2337. case(EDIT_SAMPS): default_val[CUT_END] = (double)(insams); break;
  2338. case(EDIT_STSAMPS): default_val[CUT_END] = (double)(insams/channels); break;
  2339. }
  2340. default_val[CUT_SPLEN] = EDIT_SPLICELEN;
  2341. break;
  2342. case(EDIT_EXCISEMANY):
  2343. case(INSERTSIL_MANY):
  2344. default_val[CUT_SPLEN] = EDIT_SPLICELEN;
  2345. break;
  2346. case(EDIT_INSERT):
  2347. default_val[CUT_CUT] = 0.0;
  2348. default_val[CUT_SPLEN] = EDIT_SPLICELEN;
  2349. default_val[INSERT_LEVEL] = 1.0;
  2350. break;
  2351. //TW NEW CASE
  2352. case(EDIT_INSERT2):
  2353. default_val[CUT_CUT] = 0.0;
  2354. default_val[CUT_END] = 0.0;
  2355. default_val[CUT_SPLEN] = EDIT_SPLICELEN;
  2356. default_val[INSERT_LEVEL] = 1.0;
  2357. break;
  2358. case(EDIT_INSERTSIL):
  2359. default_val[CUT_CUT] = 0.0;
  2360. switch(mode) {
  2361. case(EDIT_SECS): default_val[CUT_END] = duration; break;
  2362. case(EDIT_SAMPS): default_val[CUT_END] = (double)(insams); break;
  2363. case(EDIT_STSAMPS): default_val[CUT_END] = (double)(insams/channels); break;
  2364. }
  2365. default_val[CUT_SPLEN] = EDIT_SPLICELEN;
  2366. break;
  2367. case(JOIN_SEQ):
  2368. default_val[MAX_LEN] = 32767;
  2369. /* fall thro */
  2370. case(EDIT_JOIN):
  2371. case(JOIN_SEQDYN):
  2372. default_val[CUT_SPLEN] = EDIT_SPLICELEN;
  2373. break;
  2374. case(HOUSE_COPY):
  2375. switch(mode) {
  2376. case(COPYSF): break;
  2377. case(DUPL): default_val[COPY_CNT] = 1.0; break;
  2378. }
  2379. break;
  2380. case(HOUSE_DEL):
  2381. break;
  2382. case(HOUSE_CHANS):
  2383. switch(mode) {
  2384. case(HOUSE_CHANNEL):
  2385. case(HOUSE_ZCHANNEL):
  2386. default_val[CHAN_NO] = 1.0;
  2387. break;
  2388. case(HOUSE_CHANNELS):
  2389. case(STOM):
  2390. case(MTOS):
  2391. break;
  2392. }
  2393. break;
  2394. case(HOUSE_BUNDLE):
  2395. break;
  2396. case(HOUSE_SORT):
  2397. switch(mode) {
  2398. case(BY_DURATION):
  2399. case(BY_LOG_DUR):
  2400. default_val[SORT_SMALL] = SORT_SMALL_DEFAULT;
  2401. default_val[SORT_LARGE] = SORT_LARGE_DEFAULT;
  2402. if(mode==BY_DURATION)
  2403. default_val[SORT_STEP] = SORT_STEP_DEFAULT;
  2404. else
  2405. default_val[SORT_STEP] = SORT_LSTEP_DEFAULT;
  2406. break;
  2407. }
  2408. break;
  2409. case(HOUSE_SPEC):
  2410. switch(mode) {
  2411. case(HOUSE_REPROP):
  2412. default_val[HSPEC_CHANS] = (double)channels;
  2413. if(filetype==SNDFILE)
  2414. default_val[HSPEC_TYPE] = (double)SAMP_SHORT;
  2415. else
  2416. /*RWD what's going on here ? */
  2417. default_val[HSPEC_TYPE] = (double)SAMP_FLOAT;
  2418. /* fall thro */
  2419. case(HOUSE_RESAMPLE):
  2420. default_val[HSPEC_SRATE] = (double)srate;
  2421. break;
  2422. default:
  2423. break;
  2424. }
  2425. break;
  2426. case(HOUSE_EXTRACT):
  2427. switch(mode) {
  2428. case(HOUSE_CUTGATE):
  2429. default_val[CUTGATE_SPLEN] = CUTGATE_SPLICELEN;
  2430. default_val[CUTGATE_SUSTAIN] = 0.0;
  2431. /* fall thro */
  2432. case(HOUSE_ONSETS):
  2433. default_val[CUTGATE_GATE] = 0.0;
  2434. default_val[CUTGATE_ENDGATE] = 0.0;
  2435. default_val[CUTGATE_THRESH] = 0.0;
  2436. default_val[CUTGATE_BAKTRAK] = 0.0;
  2437. default_val[CUTGATE_INITLEVEL] = 0.0;
  2438. default_val[CUTGATE_MINLEN] = min(duration,2.0 * CUTGATE_SPLICELEN * MS_TO_SECS);
  2439. default_val[CUTGATE_WINDOWS] = 0.0;
  2440. break;
  2441. case(HOUSE_CUTGATE_PREVIEW):
  2442. break;
  2443. case(HOUSE_TOPNTAIL):
  2444. default_val[TOPN_GATE] = 0.0;
  2445. default_val[TOPN_SPLEN] = CUTGATE_SPLICELEN;
  2446. break;
  2447. case(HOUSE_RECTIFY):
  2448. default_val[RECTIFY_SHIFT] = 0.0;
  2449. break;
  2450. }
  2451. break;
  2452. case(TOPNTAIL_CLICKS):
  2453. default_val[TOPN_GATE] = 0.0;
  2454. default_val[TOPN_SPLEN] = TOPNTAIL_SPLICELEN;
  2455. break;
  2456. case(HOUSE_BAKUP):
  2457. case(HOUSE_GATE):
  2458. default_val[GATE_ZEROS] = 4;
  2459. break;
  2460. //UP TO HERE
  2461. case(HOUSE_DISK):
  2462. break;
  2463. case(INFO_PROPS):
  2464. case(INFO_SFLEN):
  2465. case(INFO_TIMELIST):
  2466. case(INFO_LOUDLIST):
  2467. case(INFO_TIMEDIFF):
  2468. case(INFO_LOUDCHAN):
  2469. //TW break;
  2470. case(INFO_MAXSAMP):
  2471. break;
  2472. case(INFO_MAXSAMP2):
  2473. default_val[MAX_STIME] = 0.0;
  2474. default_val[MAX_ETIME] = duration;
  2475. break;
  2476. case(INFO_TIMESUM):
  2477. default_val[TIMESUM_SPLEN] = TIMESUM_DEFAULT_SPLEN;
  2478. break;
  2479. case(INFO_SAMPTOTIME):
  2480. default_val[INFO_SAMPS] = 0.0;
  2481. break;
  2482. case(INFO_TIMETOSAMP):
  2483. default_val[INFO_TIME] = 0.0;
  2484. break;
  2485. case(INFO_FINDHOLE):
  2486. default_val[HOLE_THRESH] = 0.0;
  2487. break;
  2488. case(INFO_DIFF):
  2489. case(INFO_CDIFF):
  2490. default_val[SFDIFF_THRESH] = 0.0;
  2491. default_val[SFDIFF_CNT] = 1.0;
  2492. break;
  2493. case(INFO_PRNTSND):
  2494. default_val[PRNT_START] = 0.0;
  2495. default_val[PRNT_END] = duration;
  2496. break;
  2497. case(INFO_MUSUNITS):
  2498. switch(mode) {
  2499. case(MU_MIDI_TO_FRQ):
  2500. case(MU_MIDI_TO_NOTE):
  2501. default_val[0] = MIDDLE_C_MIDI;
  2502. break;
  2503. case(MU_FRQ_TO_MIDI):
  2504. case(MU_FRQ_TO_NOTE):
  2505. default_val[0] = CONCERT_A;
  2506. break;
  2507. case(MU_FRQRATIO_TO_SEMIT):
  2508. case(MU_FRQRATIO_TO_INTVL):
  2509. case(MU_FRQRATIO_TO_OCTS):
  2510. case(MU_FRQRATIO_TO_TSTRETH):
  2511. default_val[0] = 2.0;
  2512. break;
  2513. case(MU_SEMIT_TO_FRQRATIO):
  2514. case(MU_SEMIT_TO_OCTS):
  2515. case(MU_SEMIT_TO_INTVL):
  2516. case(MU_SEMIT_TO_TSTRETCH):
  2517. default_val[0] = 12.0;
  2518. break;
  2519. case(MU_OCTS_TO_FRQRATIO):
  2520. case(MU_OCTS_TO_SEMIT):
  2521. case(MU_OCTS_TO_TSTRETCH):
  2522. default_val[0] = 1.0;
  2523. break;
  2524. case(MU_TSTRETCH_TO_FRQRATIO):
  2525. case(MU_TSTRETCH_TO_SEMIT):
  2526. case(MU_TSTRETCH_TO_OCTS):
  2527. case(MU_TSTRETCH_TO_INTVL):
  2528. default_val[0] = 1.0;
  2529. break;
  2530. case(MU_GAIN_TO_DB):
  2531. default_val[0] = 1.0;
  2532. break;
  2533. case(MU_DB_TO_GAIN):
  2534. default_val[0] = 0.0;
  2535. break;
  2536. case(MU_NOTE_TO_FRQ):
  2537. case(MU_NOTE_TO_MIDI):
  2538. case(MU_INTVL_TO_FRQRATIO):
  2539. case(MU_INTVL_TO_TSTRETCH):
  2540. break;
  2541. /*** NOW OPERATES THRO THE MUSIC CALCULATOR ***/
  2542. }
  2543. break;
  2544. case(SYNTH_WAVE):
  2545. default_val[SYN_TABSIZE]= (double)WAVE_TABSIZE;
  2546. default_val[SYN_FRQ] = CONCERT_A;
  2547. /* fall thro */
  2548. case(SYNTH_NOISE):
  2549. default_val[SYN_AMP] = 1.0;
  2550. /* fall thro */
  2551. case(SYNTH_SIL):
  2552. default_val[SYN_SRATE] = (double)WAVE_DEFAULT_SR;
  2553. default_val[SYN_CHANS] = 1;
  2554. default_val[SYN_DUR] = 1.0;
  2555. break;
  2556. case(MULTI_SYN):
  2557. default_val[SYN_TABSIZE]= (WAVE_TABSIZE * 16);
  2558. default_val[SYN_AMP] = 0.3;
  2559. default_val[SYN_SRATE] = (double)WAVE_DEFAULT_SR;
  2560. default_val[SYN_CHANS] = 1;
  2561. default_val[SYN_DUR] = 4.0;
  2562. break;
  2563. case(SYNTH_SPEC):
  2564. default_val[SS_DUR] = 1.0;
  2565. default_val[SS_CENTRFRQ] = CONCERT_A;
  2566. default_val[SS_SPREAD] = 0.0;
  2567. default_val[SS_FOCUS] = 1.0;
  2568. default_val[SS_FOCUS2] = 1.0;
  2569. default_val[SS_TRAND] = 0.0;
  2570. default_val[SS_SRATE] = 44100;
  2571. break;
  2572. case(RANDCUTS):
  2573. default_val[RC_CHLEN] = max((duration/8.0),((double)(SHRED_SPLICELEN * channels * 3)/(double)srate));
  2574. default_val[RC_SCAT] = 1.0;
  2575. break;
  2576. case(RANDCHUNKS):
  2577. default_val[CHUNKCNT] = 2;
  2578. default_val[MINCHUNK] = MINOUTDUR;
  2579. default_val[MAXCHUNK] = duration;
  2580. break;
  2581. case(TWIXT):
  2582. case(SPHINX):
  2583. default_val[IS_SPLEN] = 2.7;
  2584. default_val[IS_WEIGHT] = 1;
  2585. default_val[IS_SEGCNT] = 1;
  2586. break;
  2587. //TW NEW CASES
  2588. case(EDIT_CUTMANY):
  2589. default_val[CM_SPLICELEN] = EDIT_SPLICELEN;
  2590. break;
  2591. case(STACK):
  2592. default_val[STACK_CNT] = 3;
  2593. default_val[STACK_LEAN] = 1.0;
  2594. default_val[STACK_OFFSET] = 0.0;
  2595. default_val[STACK_GAIN] = 1.0;
  2596. default_val[STACK_DUR] = 1.0;
  2597. break;
  2598. case(SIN_TAB):
  2599. default_val[SIN_FRQ] = 1.0;
  2600. default_val[SIN_AMP] = 1;
  2601. default_val[SIN_DUR] = 10;
  2602. default_val[SIN_QUANT] = .01;
  2603. default_val[SIN_PHASE] = 0;
  2604. break;
  2605. case(ACC_STREAM):
  2606. default_val[ACC_ATTEN] = 1.0;
  2607. break;
  2608. case(HF_PERM1):
  2609. case(HF_PERM2):
  2610. default_val[HP1_SRATE] = 44100;
  2611. default_val[HP1_ELEMENT_SIZE] = 1.0;
  2612. default_val[HP1_GAP_SIZE] = 1.0;
  2613. default_val[HP1_GGAP_SIZE]= 1.0;
  2614. default_val[HP1_MINSET] = 1.0;
  2615. default_val[HP1_BOTNOTE] = 0.0;
  2616. default_val[HP1_BOTOCT] = 0.0;
  2617. default_val[HP1_TOPNOTE] = 0.0;
  2618. default_val[HP1_TOPOCT] = 1.0;
  2619. default_val[HP1_SORT1] = 0;
  2620. break;
  2621. case(DEL_PERM):
  2622. default_val[DP_SRATE] = 44100;
  2623. default_val[DP_DUR] = 1.0;
  2624. default_val[DP_CYCCNT] = 4;
  2625. break;
  2626. case(DEL_PERM2):
  2627. default_val[DP_CYCCNT] = 4;
  2628. break;
  2629. //TW NEW CASES
  2630. case(NOISE_SUPRESS):
  2631. default_val[NOISE_SPLEN] = 2.0;
  2632. default_val[NOISE_MINFRQ] = 6000.0;
  2633. default_val[MIN_NOISLEN] = 0.0;
  2634. default_val[MIN_TONELEN] = 15.0;
  2635. break;
  2636. case(TIME_GRID):
  2637. default_val[GRID_COUNT] = 4.0;
  2638. default_val[GRID_WIDTH] = 0.1;
  2639. default_val[GRID_SPLEN] = 3.0;
  2640. break;
  2641. case(SEQUENCER2):
  2642. default_val[SEQ_SPLIC] = 2.0;
  2643. /* fall thro */
  2644. case(SEQUENCER):
  2645. default_val[SEQ_ATTEN] = 1.0;
  2646. break;
  2647. case(CONVOLVE):
  2648. if(mode==CONV_TVAR)
  2649. default_val[CONV_TRANS] = 0.0;
  2650. break;
  2651. case(BAKTOBAK):
  2652. default_val[BTOB_CUT] = .015;
  2653. default_val[BTOB_SPLEN] = 15.0;
  2654. break;
  2655. case(CLICK):
  2656. if(mode == CLICK_BY_LINE) {
  2657. default_val[CLIKSTART] = 1.0;
  2658. } else {
  2659. default_val[CLIKSTART] = 0.0;
  2660. }
  2661. default_val[CLIKOFSET] = 1.0;
  2662. default_val[CLIKEND] = 32767.0;
  2663. break;
  2664. case(DOUBLETS):
  2665. default_val[SEG_DUR] = 0.1;
  2666. default_val[SEG_REPETS] = 2.0;
  2667. break;
  2668. case(SYLLABS):
  2669. default_val[SYLLAB_DOVETAIL] = 5.0;
  2670. default_val[SYLLAB_SPLICELEN] = 2.0;
  2671. break;
  2672. case(MAKE_VFILT):
  2673. case(MIX_MODEL):
  2674. break;
  2675. case(BATCH_EXPAND):
  2676. default_val[BE_INFILE] = 1;
  2677. default_val[BE_OUTFILE] = 1;
  2678. default_val[BE_PARAM] = 1;
  2679. break;
  2680. case(ENVSYN):
  2681. default_val[ENVSYN_WSIZE] = 50.0;
  2682. default_val[ENVSYN_DUR] = 60.0;
  2683. default_val[ENVSYN_CYCLEN] = 1.0;
  2684. default_val[ENVSYN_STARTPHASE] = 0.0;
  2685. if(mode != ENVSYN_USERDEF) {
  2686. default_val[ENVSYN_TROF] = 0.0;
  2687. default_val[ENVSYN_EXPON] = 1.0;
  2688. }
  2689. break;
  2690. case(HOUSE_GATE2):
  2691. default_val[GATE2_DUR] = 20.0;
  2692. default_val[GATE2_ZEROS] = 4.0;
  2693. default_val[GATE2_LEVEL] = 0.0;
  2694. default_val[GATE2_SPLEN] = 2.0;
  2695. default_val[GATE2_FILT] = 2.0;
  2696. break;
  2697. case(GRAIN_ASSESS):
  2698. break;
  2699. case(ZCROSS_RATIO):
  2700. default_val[ZC_START] = 0.0;
  2701. default_val[ZC_END] = duration;
  2702. break;
  2703. case(GREV):
  2704. default_val[GREV_WSIZE] = 5;
  2705. default_val[GREV_TROFRAC] = .2;
  2706. default_val[GREV_GPCNT] = 1.0;
  2707. switch(mode) {
  2708. case(GREV_TSTRETCH):
  2709. default_val[GREV_TSTR] = 2.0;
  2710. break;
  2711. case(GREV_DELETE):
  2712. case(GREV_OMIT):
  2713. default_val[GREV_KEEP] = 63;
  2714. default_val[GREV_OUTOF] = 64;
  2715. break;
  2716. case(GREV_REPEAT):
  2717. default_val[GREV_REPETS] = 2;
  2718. break;
  2719. }
  2720. break;
  2721. default:
  2722. sprintf(errstr,"Unknown case: initialise_param_values()\n");
  2723. return(PROGRAM_ERROR);
  2724. }
  2725. return(FINISHED);
  2726. }
  2727. /**********************************************************************************/
  2728. /*********************** ITEMS FORMERLY IN FORMTYPE.C tklib2 **********************/
  2729. /**********************************************************************************/
  2730. /**************************** DEAL_WITH_FORMANTS *************************/
  2731. int deal_with_formants(int process,int mode,int channels,aplptr ap)
  2732. {
  2733. int exit_status;
  2734. set_formant_flags(process,mode,ap);
  2735. if(ap->formant_flag) {
  2736. if((exit_status = establish_formant_band_ranges(channels,ap))<0)
  2737. return(exit_status);
  2738. }
  2739. return(FINISHED);
  2740. }
  2741. /**************************** SET_FORMANT_FLAGS *************************/
  2742. void set_formant_flags(int process,int mode,aplptr ap)
  2743. {
  2744. switch(process) {
  2745. case(CHORD): ap->formant_qksrch = TRUE; ap->formant_flag = TRUE; break;
  2746. case(FOCUS): ap->formant_qksrch = TRUE; ap->formant_flag = TRUE; break;
  2747. case(FORMANTS): ap->formant_qksrch = TRUE; ap->formant_flag = TRUE; break;
  2748. case(FORMSEE): ap->formant_qksrch = TRUE; ap->formant_flag = TRUE; break;
  2749. case(GLIS): ap->formant_qksrch = TRUE; ap->formant_flag = TRUE; break;
  2750. case(REPORT): ap->formant_qksrch = TRUE; ap->formant_flag = TRUE; break;
  2751. case(SPREAD): ap->formant_qksrch = TRUE; ap->formant_flag = TRUE; break;
  2752. case(TRNSF): ap->formant_qksrch = TRUE; ap->formant_flag = TRUE; break;
  2753. case(VOCODE): ap->formant_qksrch = TRUE; ap->formant_flag = TRUE; break;
  2754. case(FORM): ap->formant_qksrch = TRUE; break;
  2755. case(OCT): ap->formant_qksrch = TRUE; break;
  2756. }
  2757. }
  2758. /**************************** ESTABLISH_FORMANT_BAND_RANGE *************************/
  2759. int establish_formant_band_ranges(int channels,aplptr ap)
  2760. {
  2761. int clength = channels/2;
  2762. int clength_less_one = clength - 1;
  2763. if(clength_less_one < 0) {
  2764. sprintf(errstr,"Invalid call to process formants: establish_formant_band_ranges()\n");
  2765. return(PROGRAM_ERROR);
  2766. }
  2767. if(clength_less_one < LOW_OCTAVE_BANDS) {
  2768. fprintf(stdout,"WARNING: Too few analysis channels for pitchwise formant extraction.\n");
  2769. fflush(stdout);
  2770. ap->no_pichwise_formants = TRUE;
  2771. } else
  2772. ap->max_pichwise_fbands = MAX_BANDS_PER_OCT;
  2773. ap->max_freqwise_fbands = (clength_less_one)/2;
  2774. return(FINISHED);
  2775. }
  2776. /**********************************************************************************/
  2777. /*********************** ITEMS FORMERLY IN INTYPE.C tklib2 ************************/
  2778. /**********************************************************************************/
  2779. // TW assign_input_process_type REMOVED: REDUNDANT
  2780. /******************************* DOES_PROCESS_ACCEPT_CONFLICTING_SRATES *******************************/
  2781. int does_process_accept_conflicting_srates(int process)
  2782. {
  2783. if(process==GRAIN_ALIGN
  2784. || process==ENV_IMPOSE
  2785. //TW NEW CASE
  2786. || process==ENV_PROPOR
  2787. || process==ENV_REPLACE)
  2788. return(TRUE);
  2789. return(FALSE);
  2790. }
  2791. /**********************************************************************************/
  2792. /*********************** ITEMS FORMERLY IN MAXMODE.C tklib2 ***********************/
  2793. /**********************************************************************************/
  2794. /************************************ GET_MAXMODE ************************************/
  2795. int get_maxmode(int process)
  2796. {
  2797. int maxmode;
  2798. switch(process) {
  2799. case(ACCU): maxmode = 0; break;
  2800. case(ALT): maxmode = 2; break;
  2801. case(ARPE): maxmode = 8; break;
  2802. case(AVRG): maxmode = 0; break;
  2803. case(BARE): maxmode = 0; break;
  2804. case(BLTR): maxmode = 0; break;
  2805. case(BLUR): maxmode = 0; break;
  2806. case(BRIDGE): maxmode = 6; break;
  2807. case(CHANNEL): maxmode = 0; break;
  2808. case(CHORD): maxmode = 0; break;
  2809. case(CHORUS): maxmode = 7; break;
  2810. case(CLEAN): maxmode = 4; break;
  2811. case(CROSS): maxmode = 0; break;
  2812. case(CUT): maxmode = 0; break;
  2813. case(DIFF): maxmode = 0; break;
  2814. case(DRUNK): maxmode = 0; break;
  2815. case(EXAG): maxmode = 0; break;
  2816. case(FILT): maxmode = 12; break;
  2817. case(FMNTSEE): maxmode = 0; break;
  2818. case(FOCUS): maxmode = 0; break;
  2819. case(FOLD): maxmode = 0; break;
  2820. case(FORM): maxmode = 2; break;
  2821. case(FORMANTS): maxmode = 0; break;
  2822. case(FORMSEE): maxmode = 0; break;
  2823. case(FREEZE): maxmode = 3; break;
  2824. case(FREEZE2): maxmode = 0; break;
  2825. case(FREQUENCY): maxmode = 0; break;
  2826. case(GAIN): maxmode = 0; break;
  2827. case(GLIDE): maxmode = 0; break;
  2828. case(GLIS): maxmode = 3; break;
  2829. case(GRAB): maxmode = 0; break;
  2830. case(GREQ): maxmode = 2; break;
  2831. case(INVERT): maxmode = 2; break;
  2832. case(LEAF): maxmode = 0; break;
  2833. case(LEVEL): maxmode = 0; break;
  2834. case(MAGNIFY): maxmode = 0; break;
  2835. case(MAKE): maxmode = 0; break;
  2836. case(MAX): maxmode = 0; break;
  2837. case(MEAN): maxmode = 8; break;
  2838. case(MORPH): maxmode = 2; break;
  2839. case(NOISE): maxmode = 0; break;
  2840. case(OCT): maxmode = 3; break;
  2841. case(OCTVU): maxmode = 0; break;
  2842. case(P_APPROX): maxmode = 2; break;
  2843. case(P_CUT): maxmode = 3; break;
  2844. case(P_EXAG): maxmode = 6; break;
  2845. case(P_FIX): maxmode = 0; break;
  2846. case(P_HEAR): maxmode = 0; break;
  2847. case(P_INFO): maxmode = 0; break;
  2848. case(P_INVERT): maxmode = 2; break;
  2849. case(P_QUANTISE): maxmode = 2; break;
  2850. case(P_RANDOMISE): maxmode = 2; break;
  2851. case(P_SEE): maxmode = 2; break;
  2852. //TW NEW CASES
  2853. case(P_INSERT): maxmode = 2; break;
  2854. case(P_SINSERT): maxmode = 2; break;
  2855. case(P_PTOSIL): maxmode = 0; break;
  2856. case(P_NTOSIL): maxmode = 0; break;
  2857. case(P_SYNTH): maxmode = 0; break;
  2858. case(P_VOWELS): maxmode = 0; break;
  2859. case(VFILT): maxmode = 0; break;
  2860. case(P_GEN): maxmode = 0; break;
  2861. case(ANALENV): maxmode = 0; break;
  2862. case(P_BINTOBRK): maxmode = 0; break;
  2863. case(MAKE2): maxmode = 0; break;
  2864. case(P_INTERP): maxmode = 2; break;
  2865. case(P_SMOOTH): maxmode = 2; break;
  2866. case(P_TRANSPOSE): maxmode = 0; break;
  2867. case(P_VIBRATO): maxmode = 2; break;
  2868. case(P_WRITE): maxmode = 0; break;
  2869. case(P_ZEROS): maxmode = 0; break;
  2870. case(PEAK): maxmode = 0; break;
  2871. case(PICK): maxmode = 5; break;
  2872. case(PITCH): maxmode = 2; break;
  2873. case(PLUCK): maxmode = 0; break;
  2874. case(PRINT): maxmode = 0; break;
  2875. case(REPITCH): maxmode = 3; break;
  2876. case(REPITCHB): maxmode = 3; break;
  2877. case(REPORT): maxmode = 4; break;
  2878. case(SCAT): maxmode = 0; break;
  2879. case(SHIFT): maxmode = 5; break;
  2880. case(SHIFTP): maxmode = 6; break;
  2881. case(SHUFFLE): maxmode = 0; break;
  2882. case(SPLIT): maxmode = 0; break;
  2883. case(SPREAD): maxmode = 0; break;
  2884. case(STEP): maxmode = 0; break;
  2885. case(STRETCH): maxmode = 2; break;
  2886. case(SUM): maxmode = 0; break;
  2887. case(SUPR): maxmode = 0; break;
  2888. case(S_TRACE): maxmode = 4; break;
  2889. case(TRACK): maxmode = 2; break;
  2890. case(TRNSF): maxmode = 4; break;
  2891. case(TRNSP): maxmode = 4; break;
  2892. case(TSTRETCH): maxmode = 2; break;
  2893. case(TUNE): maxmode = 2; break;
  2894. case(VOCODE): maxmode = 0; break;
  2895. case(WARP): maxmode = 0; break;
  2896. case(WAVER): maxmode = 2; break;
  2897. case(WEAVE): maxmode = 0; break;
  2898. case(WINDOWCNT): maxmode = 0; break;
  2899. case(LIMIT): maxmode = 0; break;
  2900. case(MULTRANS): maxmode = 0; break;
  2901. case(DISTORT): maxmode = 8; break;
  2902. case(DISTORT_ENV): maxmode = 4; break;
  2903. case(DISTORT_AVG): maxmode = 0; break;
  2904. case(DISTORT_OMT): maxmode = 0; break;
  2905. case(DISTORT_MLT): maxmode = 0; break;
  2906. case(DISTORT_DIV): maxmode = 0; break;
  2907. case(DISTORT_HRM): maxmode = 0; break;
  2908. case(DISTORT_FRC): maxmode = 0; break;
  2909. case(DISTORT_REV): maxmode = 0; break;
  2910. case(DISTORT_SHUF): maxmode = 0; break;
  2911. case(DISTORT_RPTFL):
  2912. case(DISTORT_RPT2):
  2913. case(DISTORT_RPT): maxmode = 0; break;
  2914. case(DISTORT_INTP): maxmode = 0; break;
  2915. case(DISTORT_DEL): maxmode = 3; break;
  2916. case(DISTORT_RPL): maxmode = 0; break;
  2917. case(DISTORT_TEL): maxmode = 0; break;
  2918. case(DISTORT_FLT): maxmode = 3; break;
  2919. case(DISTORT_INT): maxmode = 2; break;
  2920. case(DISTORT_CYCLECNT): maxmode = 0; break;
  2921. case(DISTORT_PCH): maxmode = 0; break;
  2922. case(DISTORT_OVERLOAD): maxmode = 2; break;
  2923. //TW NEW CASE
  2924. case(DISTORT_PULSED): maxmode = 3; break;
  2925. case(ZIGZAG): maxmode = 2; break;
  2926. case(LOOP): maxmode = 3; break;
  2927. case(SCRAMBLE): maxmode = 2; break;
  2928. case(ITERATE): maxmode = 2; break;
  2929. case(ITERATE_EXTEND): maxmode = 2; break;
  2930. case(DRUNKWALK): maxmode = 2; break;
  2931. case(SIMPLE_TEX): case(TIMED):
  2932. case(DECORATED):case(PREDECOR): case(POSTDECOR):
  2933. case(ORNATE): case(PREORNATE):case(POSTORNATE):
  2934. case(MOTIFS): case(TMOTIFS):
  2935. case(GROUPS): case(TGROUPS):
  2936. maxmode = 5; break;
  2937. case(MOTIFSIN):
  2938. case(TMOTIFSIN): maxmode = 4; break;
  2939. case(GRAIN_REPITCH):
  2940. case(GRAIN_RERHYTHM):
  2941. case(GRAIN_REMOTIF): maxmode = 2; break;
  2942. case(GRAIN_COUNT): case(GRAIN_OMIT): case(GRAIN_TIMEWARP):
  2943. case(GRAIN_GET): case(GRAIN_DUPLICATE): case(GRAIN_ALIGN):
  2944. case(GRAIN_POSITION): case(GRAIN_REORDER): case(GRAIN_REVERSE):
  2945. maxmode = 0; break;
  2946. case(RRRR_EXTEND): maxmode = 3; break;
  2947. case(SSSS_EXTEND): maxmode = 0; break;
  2948. case(ENV_CREATE): case(ENV_EXTRACT):
  2949. maxmode = 2; break;
  2950. case(ENV_IMPOSE): case(ENV_REPLACE):
  2951. maxmode = 4; break;
  2952. case(ENV_WARPING): case(ENV_RESHAPING): case(ENV_REPLOTTING):
  2953. maxmode = 16; break;
  2954. case(ENV_CURTAILING):
  2955. maxmode = 6; break;
  2956. case(ENV_BRKTOENV): case(ENV_ENVTOBRK): case(ENV_ENVTODBBRK):
  2957. case(ENV_DBBRKTOENV): case(ENV_DBBRKTOBRK): case(ENV_BRKTODBBRK):
  2958. //TW NEW CASE
  2959. // case(ENV_SWELL): case(ENV_PLUCK):
  2960. case(ENV_SWELL): case(ENV_PLUCK): case(ENV_PROPOR):
  2961. maxmode = 0; break;
  2962. case(ENV_DOVETAILING): maxmode = 2; break;
  2963. case(ENV_TREMOL): maxmode = 2; break;
  2964. case(ENV_ATTACK): maxmode = 4; break;
  2965. case(MIX):
  2966. case(MIXTEST):
  2967. case(MIXFORMAT):
  2968. case(MIXGAIN): maxmode = 0; break;
  2969. case(MIXDUMMY): maxmode = 3; break;
  2970. case(MIXTWO): maxmode = 0; break;
  2971. //TW NEW CASE
  2972. case(MIXMANY): maxmode = 0; break;
  2973. case(MIXBALANCE): maxmode = 0; break;
  2974. case(MIXCROSS): maxmode = 2; break;
  2975. case(MIXINTERL): maxmode = 0; break;
  2976. case(MIXINBETWEEN): maxmode = 2; break;
  2977. case(CYCINBETWEEN): maxmode = 0; break;
  2978. case(MIXSYNC): maxmode = 3; break;
  2979. case(MIXSYNCATT): maxmode = 0; break;
  2980. case(MIXMAX): maxmode = 3; break;
  2981. case(MIXTWARP): maxmode = 16; break;
  2982. case(MIXSWARP): maxmode = 8; break;
  2983. case(MIXSHUFL): maxmode = 7; break;
  2984. //TW NEW CASES
  2985. case(MIX_ON_GRID): maxmode = 0; break;
  2986. case(AUTOMIX): maxmode = 0; break;
  2987. case(MIX_PAN): maxmode = 0; break;
  2988. case(MIX_AT_STEP): maxmode = 0; break;
  2989. case(ADDTOMIX): maxmode = 0; break;
  2990. case(EQ): maxmode = 3; break;
  2991. case(LPHP): maxmode = 2; break;
  2992. case(FSTATVAR): maxmode = 4; break;
  2993. case(FLTBANKN): maxmode = 6; break;
  2994. case(FLTBANKC): maxmode = 6; break;
  2995. case(FLTBANKU): maxmode = 2; break;
  2996. case(FLTBANKV): maxmode = 2; break;
  2997. case(FLTBANKV2): maxmode = 2; break;
  2998. case(FLTITER): maxmode = 2; break;
  2999. case(FLTSWEEP): maxmode = 4; break;
  3000. case(ALLPASS): maxmode = 2; break;
  3001. case(MOD_LOUDNESS): maxmode = 12; break;
  3002. case(MOD_SPACE): maxmode = 4; break;
  3003. //TW NEW CASES
  3004. case(SCALED_PAN): maxmode = 0; break;
  3005. case(FIND_PANPOS): maxmode = 0; break;
  3006. case(MOD_PITCH): maxmode = 6; break;
  3007. case(MOD_REVECHO): maxmode = 3; break;
  3008. case(MOD_RADICAL): maxmode = 7; break;
  3009. case(BRASSAGE): maxmode = 7; break;
  3010. case(SAUSAGE): maxmode = 0; break;
  3011. case(PVOC_ANAL): maxmode = 3; break;
  3012. case(PVOC_SYNTH): maxmode = 0; break;
  3013. case(PVOC_EXTRACT): maxmode = 0; break;
  3014. case(WORDCNT): maxmode = 0; break;
  3015. case(EDIT_CUT): maxmode = 3; break;
  3016. case(EDIT_CUTEND): maxmode = 3; break;
  3017. case(EDIT_ZCUT): maxmode = 2; break;
  3018. case(MANY_ZCUTS): maxmode = 2; break;
  3019. case(EDIT_EXCISE): maxmode = 3; break;
  3020. case(EDIT_EXCISEMANY): maxmode = 3; break;
  3021. case(INSERTSIL_MANY): maxmode = 3; break;
  3022. case(EDIT_INSERT): maxmode = 3; break;
  3023. //TW NEW CASE
  3024. case(EDIT_INSERT2): maxmode = 3; break;
  3025. case(EDIT_INSERTSIL): maxmode = 3; break;
  3026. case(EDIT_JOIN):
  3027. case(JOIN_SEQDYN):
  3028. case(JOIN_SEQ): maxmode = 0; break;
  3029. case(HOUSE_COPY): maxmode = 2; break;
  3030. case(HOUSE_DEL): maxmode = 0; break;
  3031. case(HOUSE_CHANS): maxmode = 5; break;
  3032. //TW NEW CASES REPLACING BRACKETED-OUT CODE (Dump & Recover abandoned)
  3033. case(HOUSE_BAKUP): maxmode = 0; break;
  3034. case(HOUSE_GATE):
  3035. case(HOUSE_BUNDLE): maxmode = 5; break;
  3036. case(HOUSE_SORT): maxmode = 6; break;
  3037. case(HOUSE_SPEC): maxmode = 3; break;
  3038. case(HOUSE_EXTRACT): maxmode = 6; break;
  3039. case(TOPNTAIL_CLICKS): maxmode = 0; break;
  3040. case(HOUSE_DISK): maxmode = 0; break;
  3041. case(INFO_PROPS): maxmode = 0; break;
  3042. case(INFO_SFLEN): maxmode = 0; break;
  3043. case(INFO_TIMELIST): maxmode = 0; break;
  3044. case(INFO_LOUDLIST): maxmode = 0; break;
  3045. case(INFO_TIMESUM): maxmode = 0; break;
  3046. case(INFO_TIMEDIFF): maxmode = 0; break;
  3047. case(INFO_SAMPTOTIME): maxmode = 0; break;
  3048. case(INFO_TIMETOSAMP): maxmode = 0; break;
  3049. case(INFO_MAXSAMP): maxmode = 0; break;
  3050. case(INFO_MAXSAMP2): maxmode = 0; break;
  3051. case(INFO_LOUDCHAN): maxmode = 0; break;
  3052. case(INFO_FINDHOLE): maxmode = 0; break;
  3053. case(INFO_DIFF): maxmode = 0; break;
  3054. case(INFO_CDIFF): maxmode = 0; break;
  3055. case(INFO_PRNTSND): maxmode = 0; break;
  3056. case(INFO_MUSUNITS): maxmode = 31; break;
  3057. case(SYNTH_WAVE): maxmode = 4; break;
  3058. case(MULTI_SYN): maxmode = 3; break;
  3059. case(SYNTH_NOISE): maxmode = 0; break;
  3060. case(SYNTH_SIL): maxmode = 0; break;
  3061. case(SYNTH_SPEC): maxmode = 0; break;
  3062. case(RANDCUTS): maxmode = 0; break;
  3063. case(RANDCHUNKS): maxmode = 0; break;
  3064. case(SIN_TAB): maxmode = 0; break;
  3065. case(ACC_STREAM): maxmode = 0; break;
  3066. case(HF_PERM1): maxmode = 4; break;
  3067. case(HF_PERM2): maxmode = 4; break;
  3068. case(DEL_PERM): maxmode = 0; break;
  3069. case(DEL_PERM2): maxmode = 0; break;
  3070. case(TWIXT): maxmode = 4; break;
  3071. case(SPHINX): maxmode = 3; break;
  3072. //TW NEW CASES
  3073. case(EDIT_CUTMANY): maxmode = 3; break;
  3074. case(STACK): maxmode = 0; break;
  3075. case(SHUDDER): maxmode = 0; break;
  3076. case(NOISE_SUPRESS): maxmode = 0; break;
  3077. case(TIME_GRID): maxmode = 0; break;
  3078. case(SEQUENCER2):
  3079. case(SEQUENCER): maxmode = 0; break;
  3080. case(CONVOLVE): maxmode = 2; break;
  3081. case(BAKTOBAK): maxmode = 0; break;
  3082. case(CLICK): maxmode = 2; break;
  3083. case(DOUBLETS): maxmode = 0; break;
  3084. case(SYLLABS): maxmode = 3; break;
  3085. case(MAKE_VFILT): maxmode = 0; break;
  3086. case(MIX_MODEL): maxmode = 0; break;
  3087. case(BATCH_EXPAND): maxmode = 2; break;
  3088. case(ENVSYN): maxmode = 4; break;
  3089. case(HOUSE_GATE2): maxmode = 0; break;
  3090. case(GRAIN_ASSESS): maxmode = 0; break;
  3091. case(ZCROSS_RATIO): maxmode = 0; break;
  3092. case(GREV): maxmode = 7; break;
  3093. default:
  3094. sprintf(errstr,"Unknown case [%d] in get_maxmode()\n",process);
  3095. return(-1);
  3096. }
  3097. return(maxmode);
  3098. }
  3099. /**********************************************************************************/
  3100. /*********************** ITEMS FORMERLY IN RANGES.C tklib2 ************************/
  3101. /**********************************************************************************/
  3102. /****************************** GET_PARAM_RANGES *********************************/
  3103. int get_param_ranges
  3104. (int process,int mode,int total_params,double nyquist,float frametime,float arate,int srate,
  3105. int wlength,int insams,int channels,int wanted,
  3106. int filetype,int linecnt,double duration,aplptr ap)
  3107. {
  3108. int exit_status;
  3109. if((exit_status = setup_input_param_range_stores(total_params,ap))<0)
  3110. return(exit_status);
  3111. return set_param_ranges(process,mode,nyquist,frametime,arate,srate,wlength,
  3112. insams,channels,wanted,filetype,linecnt,duration,ap);
  3113. }
  3114. /****************************** SETUP_INPUT_PARAM_RANGE_STORES *********************************/
  3115. int setup_input_param_range_stores(int total_params,aplptr ap)
  3116. {
  3117. if((ap->lo = (double *)malloc((total_params) * sizeof(double)))==NULL) {
  3118. sprintf(errstr,"INSUFFICIENT MEMORY: range lo limits\n");
  3119. return(MEMORY_ERROR);
  3120. }
  3121. if((ap->hi = (double *)malloc((total_params) * sizeof(double)))==NULL) {
  3122. sprintf(errstr,"INSUFFICIENT MEMORY: range hi limits\n");
  3123. return(MEMORY_ERROR);
  3124. }
  3125. return FINISHED; /*RWD 9:2001 */
  3126. }
  3127. /****************************** SET_PARAM_RANGES *********************************/
  3128. /*RWD we ignore infilesize and use insams */
  3129. int set_param_ranges
  3130. (int process,int mode,double nyquist,float frametime,float arate,int srate,
  3131. int wlength,int insams,int channels,int wanted,
  3132. int filetype,int linecnt,double duration,aplptr ap)
  3133. {
  3134. int n;
  3135. double infilesize_in_samps = 0.0;
  3136. int clength = (int)(wanted/2);
  3137. double chwidth = nyquist/(double)(clength-1);
  3138. double halfchwidth = chwidth/2.0;
  3139. double sr = (double)srate;
  3140. switch(filetype) {
  3141. case(SNDFILE):
  3142. infilesize_in_samps = (double)(insams/channels); break;
  3143. case(ENVFILE):
  3144. //TW THIS NOW SEEMS BOTH CRAZY and (fortunately) REDUNDANT !!!
  3145. infilesize_in_samps = duration; break;
  3146. }
  3147. switch(process) {
  3148. case(ACCU):
  3149. /* variants */
  3150. ap->lo[ACCU_DINDEX] = ACCU_MIN_DECAY;
  3151. ap->hi[ACCU_DINDEX] = 1.0;
  3152. ap->lo[ACCU_GINDEX] = -MAXGLISRATE/frametime; /* 1/16th octaves per window : guess!! */
  3153. ap->hi[ACCU_GINDEX] = MAXGLISRATE/frametime; /* converted to 8vas per second */
  3154. break;
  3155. case(ALT):
  3156. break;
  3157. case(ARPE):
  3158. /* params */
  3159. switch(mode) {
  3160. case(ABOVE_BOOST):
  3161. case(ONCE_ABOVE):
  3162. ap->lo[ARPE_WTYPE] = (double)(DOWNRAMP); /* 1 */
  3163. ap->hi[ARPE_WTYPE] = (double)(SAW); /* 3 */ /* i.e. NOT upramp */
  3164. break;
  3165. case(BELOW_BOOST):
  3166. case(ONCE_BELOW):
  3167. ap->lo[ARPE_WTYPE] = (double)(SIN); /* 2 */ /* i.e. NOT downramp */
  3168. ap->hi[ARPE_WTYPE] = (double)(UPRAMP); /* 4 */
  3169. break;
  3170. default:
  3171. ap->lo[ARPE_WTYPE] = (double)(DOWNRAMP); /* 1 */
  3172. ap->hi[ARPE_WTYPE] = (double)(UPRAMP); /* 4 */
  3173. break;
  3174. }
  3175. ap->lo[ARPE_ARPFRQ] = 0.0;
  3176. ap->hi[ARPE_ARPFRQ] = arate;
  3177. /* options */
  3178. ap->lo[ARPE_PHASE] = 0.0;
  3179. ap->hi[ARPE_PHASE] = 1.0;
  3180. ap->lo[ARPE_LOFRQ] = PITCHZERO;
  3181. ap->hi[ARPE_LOFRQ] = nyquist;
  3182. ap->lo[ARPE_HIFRQ] = PITCHZERO;
  3183. ap->hi[ARPE_HIFRQ] = nyquist;
  3184. ap->lo[ARPE_HBAND] = chwidth;
  3185. ap->hi[ARPE_HBAND] = nyquist;
  3186. ap->lo[ARPE_AMPL] = 0.0;
  3187. ap->hi[ARPE_AMPL] = ARPE_MAX_AMPL;
  3188. switch(mode) {
  3189. case(ON): case(BOOST): case(BELOW_BOOST): case(ABOVE_BOOST):
  3190. /* variants */
  3191. ap->lo[ARPE_SUST] = 1.0; /* 1 */
  3192. ap->hi[ARPE_SUST] = wlength;
  3193. ap->lo[ARPE_NONLIN] = ARPE_MIN_NONLIN;
  3194. ap->hi[ARPE_NONLIN] = ARPE_MAX_NONLIN;
  3195. break;
  3196. }
  3197. break;
  3198. case(AVRG):
  3199. /* params */
  3200. ap->lo[AVRG_AVRG] = (double)2.0; /* 2 */
  3201. ap->hi[AVRG_AVRG] = (double)clength;
  3202. break;
  3203. case(BARE):
  3204. break;
  3205. case(BLTR):
  3206. /* params */
  3207. ap->lo[BLUR_BLURF] = 1.0; /* 1 */
  3208. ap->hi[BLUR_BLURF] = (double)wlength;
  3209. ap->lo[BLTR_TRACE] = 1.0; /* 1 */
  3210. ap->hi[BLTR_TRACE] = (double)clength;
  3211. break;
  3212. case(BLUR):
  3213. /* params */
  3214. ap->lo[BLUR_BLURF] = 1.0; /* 1 */
  3215. ap->hi[BLUR_BLURF] = (double)wlength;
  3216. break;
  3217. case(BRIDGE):
  3218. if(insams <= 0) {
  3219. sprintf(errstr,"insams not set: set_param_ranges()\n");
  3220. return(PROGRAM_ERROR);
  3221. }
  3222. ap->lo[BRG_OFFSET] = 0.0;
  3223. ap->hi[BRG_OFFSET] = (wlength - 2) * frametime;
  3224. ap->lo[BRG_SF2] = 0.0;
  3225. ap->hi[BRG_SF2] = 1.0;
  3226. ap->lo[BRG_SA2] = 0.0;
  3227. ap->hi[BRG_SA2] = 1.0;
  3228. ap->lo[BRG_EF2] = 0.0;
  3229. ap->hi[BRG_EF2] = 1.0;
  3230. ap->lo[BRG_EA2] = 0.0;
  3231. ap->hi[BRG_EA2] = 1.0;
  3232. ap->lo[BRG_STIME] = 0.0;
  3233. ap->hi[BRG_STIME] = (wlength - 2) * frametime;
  3234. ap->lo[BRG_ETIME] = frametime * 2.0;
  3235. ap->hi[BRG_ETIME] = wlength * frametime;
  3236. break;
  3237. case(CHANNEL):
  3238. ap->lo[CHAN_FRQ] = 0.0;
  3239. ap->hi[CHAN_FRQ] = nyquist;
  3240. break;
  3241. case(CHORD):
  3242. case(MULTRANS):
  3243. /* variants */
  3244. ap->lo[CHORD_LOFRQ] = PITCHZERO;
  3245. ap->hi[CHORD_LOFRQ] = nyquist;
  3246. ap->lo[CHORD_HIFRQ] = PITCHZERO;
  3247. ap->hi[CHORD_HIFRQ] = nyquist;
  3248. break;
  3249. case(CHORUS):
  3250. /* params */
  3251. ap->lo[CHORU_AMPR] = CHORU_MINAMP;
  3252. ap->hi[CHORU_AMPR] = CHORU_MAXAMP;
  3253. ap->lo[CHORU_FRQR] = CHORU_MINFRQ;
  3254. ap->hi[CHORU_FRQR] = CHORU_MAXFRQ;
  3255. break;
  3256. case(CLEAN):
  3257. switch(mode) {
  3258. case(FROMTIME):
  3259. case(ANYWHERE):
  3260. ap->lo[CL_SKIPT] = 0.0;
  3261. ap->hi[CL_SKIPT] = (wlength - 1) * frametime;
  3262. break;
  3263. case(FILTERING):
  3264. ap->lo[CL_FRQ] = PITCHZERO;
  3265. ap->hi[CL_FRQ] = nyquist - halfchwidth;
  3266. break;
  3267. }
  3268. ap->lo[CL_GAIN] = 1.0;
  3269. ap->hi[CL_GAIN] = CL_MAX_GAIN;
  3270. break;
  3271. case(CROSS):
  3272. ap->lo[CROS_INTP] = 0.0;
  3273. ap->hi[CROS_INTP] = 1.0;
  3274. break;
  3275. case(CUT):
  3276. ap->lo[CUT_STIME] = 0.0;
  3277. ap->hi[CUT_STIME] = (wlength - 1) * frametime;
  3278. ap->lo[CUT_ETIME] = frametime;
  3279. ap->hi[CUT_ETIME] = wlength * frametime;
  3280. break;
  3281. case(DIFF):
  3282. ap->lo[DIFF_CROSS] = 0.0;
  3283. ap->hi[DIFF_CROSS] = 1.0;
  3284. break;
  3285. case(DRUNK):
  3286. ap->lo[DRNK_RANGE] = 1.0;
  3287. ap->hi[DRNK_RANGE] = (double)(wlength/2);
  3288. ap->lo[DRNK_STIME] = 0.0;
  3289. ap->hi[DRNK_STIME] = wlength * frametime;
  3290. ap->lo[DRNK_DUR] = frametime;
  3291. ap->hi[DRNK_DUR] = BIG_TIME;
  3292. break;
  3293. case(EXAG):
  3294. /* params */
  3295. ap->lo[EXAG_EXAG] = 0.001;
  3296. ap->hi[EXAG_EXAG] = 1000.0;
  3297. break;
  3298. case(FILT):
  3299. /* params */
  3300. ap->lo[FILT_FRQ1] = SPEC_MINFRQ;
  3301. ap->hi[FILT_FRQ1] = nyquist;
  3302. ap->lo[FILT_FRQ2] = SPEC_MINFRQ;
  3303. ap->hi[FILT_FRQ2] = nyquist;
  3304. ap->lo[FILT_QQ] = 1.0;
  3305. ap->hi[FILT_QQ] = nyquist;
  3306. ap->lo[FILT_PG] = 0.0;
  3307. ap->hi[FILT_PG] = FILT_MAX_PG;
  3308. break;
  3309. case(FMNTSEE):
  3310. break;
  3311. case(FOCUS):
  3312. /* params */
  3313. ap->lo[FOCU_PKCNT] = 1.0;
  3314. ap->hi[FOCU_PKCNT] = (double)MAXPKCNT;
  3315. ap->lo[FOCU_BW] = OCTAVES_PER_SEMITONE;
  3316. ap->hi[FOCU_BW] = LOG2(nyquist/halfchwidth);
  3317. /* options */
  3318. ap->lo[FOCU_LOFRQ] = PITCHZERO;
  3319. ap->hi[FOCU_LOFRQ] = nyquist;
  3320. ap->lo[FOCU_HIFRQ] = PITCHZERO;
  3321. ap->hi[FOCU_HIFRQ] = nyquist;
  3322. ap->lo[FOCU_STABL] = 2.0;
  3323. ap->hi[FOCU_STABL] = (double)MAXSTABIL;
  3324. break;
  3325. case(FOLD):
  3326. /* params */
  3327. ap->lo[FOLD_LOFRQ] = PITCHZERO;
  3328. ap->hi[FOLD_LOFRQ] = nyquist;
  3329. ap->lo[FOLD_HIFRQ] = PITCHZERO;
  3330. ap->hi[FOLD_HIFRQ] = nyquist;
  3331. break;
  3332. case(FORM):
  3333. ap->lo[FORM_FTOP] = PITCHZERO;
  3334. ap->hi[FORM_FTOP] = nyquist;
  3335. ap->lo[FORM_FBOT] = PITCHZERO;
  3336. ap->hi[FORM_FBOT] = nyquist;
  3337. ap->lo[FORM_GAIN] = FLTERR;
  3338. ap->hi[FORM_GAIN] = FORM_MAX_GAIN;
  3339. break;
  3340. case(FORMANTS):
  3341. break;
  3342. case(FORMSEE):
  3343. break;
  3344. case(FREEZE):
  3345. case(FREEZE2):
  3346. break;
  3347. case(FREQUENCY):
  3348. ap->lo[FRQ_CHAN] = 0.0;
  3349. ap->hi[FRQ_CHAN] = (double)(clength - 1);
  3350. break;
  3351. case(GAIN):
  3352. /* params */
  3353. ap->lo[GAIN_GAIN] = 0.0;
  3354. ap->hi[GAIN_GAIN] = GAIN_MAX_GAIN;
  3355. break;
  3356. case(GLIDE):
  3357. ap->lo[GLIDE_DUR] = frametime * 2.0;
  3358. ap->hi[GLIDE_DUR] = BIG_TIME;
  3359. break;
  3360. case(GLIS):
  3361. /* params */
  3362. ap->lo[GLIS_RATE] = -8.0/frametime;
  3363. ap->hi[GLIS_RATE] = 8.0/frametime;
  3364. ap->lo[GLIS_SHIFT] = chwidth;
  3365. ap->hi[GLIS_SHIFT] = nyquist/2;
  3366. /* variants */
  3367. ap->lo[GLIS_HIFRQ] = PITCHZERO;
  3368. ap->hi[GLIS_HIFRQ] = nyquist;
  3369. break;
  3370. case(GRAB):
  3371. ap->lo[GRAB_FRZTIME] = 0.0;
  3372. ap->hi[GRAB_FRZTIME] = duration + 1.0;
  3373. break;
  3374. case(GREQ):
  3375. break;
  3376. case(INVERT):
  3377. break;
  3378. case(LEAF):
  3379. ap->lo[LEAF_SIZE] = 1;
  3380. ap->hi[LEAF_SIZE] = wlength;
  3381. break;
  3382. case(LEVEL):
  3383. break;
  3384. case(MAGNIFY):
  3385. ap->lo[MAG_FRZTIME] = 0.0;
  3386. ap->hi[MAG_FRZTIME] = duration;
  3387. ap->lo[MAG_DUR] = frametime * 2.0;
  3388. ap->hi[MAG_DUR] = BIG_TIME;
  3389. break;
  3390. case(MAKE):
  3391. break;
  3392. case(MAX):
  3393. break;
  3394. case(MEAN):
  3395. ap->lo[MEAN_LOF] = PITCHZERO;
  3396. ap->hi[MEAN_LOF] = nyquist - halfchwidth;
  3397. ap->lo[MEAN_HIF] = PITCHZERO + chwidth;
  3398. ap->hi[MEAN_HIF] = nyquist;
  3399. ap->lo[MEAN_CHAN] = 2;
  3400. ap->hi[MEAN_CHAN] = clength;
  3401. break;
  3402. case(MORPH):
  3403. ap->lo[MPH_STAG] = 0.0;
  3404. ap->hi[MPH_STAG] = (wlength-1) * frametime;
  3405. ap->lo[MPH_ASTT] = ap->lo[MPH_FSTT] = 0.0;
  3406. ap->hi[MPH_ASTT] = ap->hi[MPH_FSTT] = (wlength - 1) * frametime;
  3407. ap->lo[MPH_AEND] = ap->lo[MPH_FEND] = frametime * 2;
  3408. ap->hi[MPH_AEND] = ap->hi[MPH_FEND] = BIG_TIME;
  3409. ap->lo[MPH_AEXP] = ap->lo[MPH_FEXP] = MPH_MIN_EXP;
  3410. ap->hi[MPH_AEXP] = ap->hi[MPH_FEXP] = MPH_MAX_EXP;
  3411. break;
  3412. case(NOISE):
  3413. ap->lo[NOISE_NOIS] = 0.0;
  3414. ap->hi[NOISE_NOIS] = 1.0;
  3415. break;
  3416. case(OCT):
  3417. ap->lo[OCT_HMOVE] = 2.0;
  3418. ap->hi[OCT_HMOVE] = OCT_MAX_HMOVE;
  3419. ap->lo[OCT_BREI] = 0.0;
  3420. ap->hi[OCT_BREI] = OCT_MAX_BREI;
  3421. break;
  3422. case(OCTVU):
  3423. ap->lo[OCTVU_TSTEP] = (double)round(frametime * SECS_TO_MS);
  3424. ap->hi[OCTVU_TSTEP] = (double)round(wlength * frametime * SECS_TO_MS);
  3425. ap->lo[OCTVU_FUND] = halfchwidth;
  3426. ap->hi[OCTVU_FUND] = nyquist/ROOT_2;
  3427. break;
  3428. case(P_APPROX):
  3429. ap->lo[PA_PRANG] = 0.0;
  3430. ap->hi[PA_PRANG] = MAXINTRANGE;
  3431. ap->lo[PA_TRANG] = frametime * SECS_TO_MS;
  3432. ap->hi[PA_TRANG] = wlength * frametime * SECS_TO_MS;
  3433. ap->lo[PA_SRANG] = frametime * BLOKCNT * 2 * SECS_TO_MS;
  3434. ap->hi[PA_SRANG] = wlength * frametime * SECS_TO_MS;
  3435. break;
  3436. case(P_CUT):
  3437. ap->lo[PC_STT] = 0.0;
  3438. ap->hi[PC_STT] = (wlength - 1) * frametime;
  3439. ap->lo[PC_END] = frametime;
  3440. ap->hi[PC_END] = wlength * frametime;
  3441. break;
  3442. case(P_EXAG):
  3443. ap->lo[PEX_MEAN] = MIDIMIN;
  3444. ap->hi[PEX_MEAN] = MIDIMAX;
  3445. ap->lo[PEX_RANG] = 0.0;
  3446. ap->hi[PEX_RANG] = PEX_MAX_RANG;
  3447. ap->lo[PEX_CNTR] = 0.0;
  3448. ap->hi[PEX_CNTR] = 1.0;
  3449. break;
  3450. case(P_FIX):
  3451. ap->lo[PF_SCUT] = 0.0;
  3452. ap->hi[PF_SCUT] = wlength * frametime;
  3453. ap->lo[PF_ECUT] = 0.0;
  3454. ap->hi[PF_ECUT] = wlength * frametime;
  3455. ap->lo[PF_HIF] = PITCHZERO;
  3456. ap->hi[PF_HIF] = nyquist;
  3457. ap->lo[PF_LOF] = PITCHZERO;
  3458. ap->hi[PF_LOF] = nyquist;
  3459. ap->lo[PF_SMOOTH] = 1.0;
  3460. ap->hi[PF_SMOOTH] = (double)(MAXSMOOTH);
  3461. ap->lo[PF_SMARK] = SPEC_MINFRQ;
  3462. ap->hi[PF_SMARK] = nyquist;
  3463. ap->lo[PF_EMARK] = SPEC_MINFRQ;
  3464. ap->hi[PF_EMARK] = nyquist;
  3465. break;
  3466. case(P_HEAR):
  3467. ap->lo[PH_GAIN] = FLTERR;
  3468. ap->hi[PH_GAIN] = PH_MAX_GAIN;
  3469. break;
  3470. case(P_INFO):
  3471. break;
  3472. case(P_INVERT):
  3473. ap->lo[PI_MEAN] = MIDIMIN;
  3474. ap->hi[PI_MEAN] = MIDIMAX;
  3475. ap->lo[PI_TOP] = MIDIMIN;
  3476. ap->hi[PI_TOP] = MIDIMAX;
  3477. ap->lo[PI_BOT] = MIDIMIN;
  3478. ap->hi[PI_BOT] = MIDIMAX;
  3479. break;
  3480. case(P_QUANTISE):
  3481. break;
  3482. case(P_RANDOMISE):
  3483. ap->lo[PR_MXINT] = 0.0;
  3484. ap->hi[PR_MXINT] = MAXINTRANGE;
  3485. ap->lo[PR_TSTEP] = frametime * SECS_TO_MS;
  3486. ap->hi[PR_TSTEP] = wlength * frametime * SECS_TO_MS;
  3487. ap->lo[PR_SLEW] = -(PR_MAX_SLEW);
  3488. ap->hi[PR_SLEW] = PR_MAX_SLEW;
  3489. break;
  3490. case(P_SEE):
  3491. ap->lo[PSEE_SCF] = FLTERR;
  3492. ap->hi[PSEE_SCF] = PSEE_MAX_SCF;
  3493. break;
  3494. case(P_SMOOTH):
  3495. ap->lo[PS_TFRAME] = frametime * SECS_TO_MS;
  3496. ap->hi[PS_TFRAME] = wlength * frametime * SECS_TO_MS;
  3497. ap->lo[PS_MEAN] = MIDIMIN;
  3498. ap->hi[PS_MEAN] = MIDIMAX;
  3499. break;
  3500. //TW NEW CASES
  3501. case(P_SYNTH):
  3502. case(P_INSERT):
  3503. case(P_SINSERT):
  3504. case(P_PTOSIL):
  3505. case(P_NTOSIL):
  3506. case(ANALENV):
  3507. case(MAKE2):
  3508. case(P_INTERP):
  3509. case(P_BINTOBRK):
  3510. break;
  3511. case(P_VOWELS):
  3512. ap->lo[PV_HWIDTH] = .01;
  3513. ap->hi[PV_HWIDTH] = 10.0;
  3514. ap->lo[PV_CURVIT] = .1;
  3515. ap->hi[PV_CURVIT] = 10;
  3516. ap->lo[PV_PKRANG] = 0;
  3517. ap->hi[PV_PKRANG] = 1;
  3518. ap->lo[PV_FUNBAS] = 0;
  3519. ap->hi[PV_FUNBAS] = 1;
  3520. ap->lo[PV_OFFSET] = 0.0;
  3521. ap->hi[PV_OFFSET] = 1.0;
  3522. break;
  3523. case(VFILT):
  3524. ap->lo[PV_HWIDTH] = .01;
  3525. ap->hi[PV_HWIDTH] = 10.0;
  3526. ap->lo[PV_CURVIT] = .1;
  3527. ap->hi[PV_CURVIT] = 10;
  3528. ap->lo[PV_PKRANG] = 0;
  3529. ap->hi[PV_PKRANG] = 1;
  3530. ap->lo[VF_THRESH] = 0.0;
  3531. ap->hi[VF_THRESH] = 1.0;
  3532. break;
  3533. case(P_GEN):
  3534. ap->lo[PGEN_SRATE] = 16000;
  3535. ap->hi[PGEN_SRATE] = /*48000*/96000; /*RWD 4:05 */
  3536. ap->lo[PGEN_CHANS_INPUT] = (double)2;
  3537. ap->hi[PGEN_CHANS_INPUT] = (double)MAX_PVOC_CHANS;
  3538. ap->lo[PGEN_WINOVLP_INPUT] = (double)1;
  3539. ap->hi[PGEN_WINOVLP_INPUT] = (double)4;
  3540. break;
  3541. case(P_TRANSPOSE):
  3542. ap->lo[PT_TVAL] = -MAXINTRANGE;
  3543. ap->hi[PT_TVAL] = MAXINTRANGE;
  3544. break;
  3545. case(P_VIBRATO):
  3546. ap->lo[PV_FRQ] = 0.0;
  3547. ap->hi[PV_FRQ] = 1.0/frametime;
  3548. ap->lo[PV_RANG] = 0.0;
  3549. ap->hi[PV_RANG] = MAXINTRANGE;
  3550. break;
  3551. case(P_WRITE):
  3552. ap->lo[PW_DRED] = PW_MIN_DRED;
  3553. ap->hi[PW_DRED] = PW_MAX_DRED;
  3554. break;
  3555. case(P_ZEROS):
  3556. break;
  3557. case(PEAK):
  3558. ap->lo[PEAK_CUTOFF] = SPEC_MINFRQ;
  3559. ap->hi[PEAK_CUTOFF] = nyquist - halfchwidth;
  3560. ap->lo[PEAK_TWINDOW] = frametime;
  3561. ap->hi[PEAK_TWINDOW] = (double)wlength * frametime;
  3562. ap->lo[PEAK_FWINDOW] = MINFWINDOW;
  3563. ap->hi[PEAK_FWINDOW] = LOG2(nyquist/SPEC_MINFRQ) * SEMITONES_PER_OCTAVE;
  3564. break;
  3565. case(PICK):
  3566. /* params */
  3567. ap->lo[PICK_FUND] = SPEC_MINFRQ;
  3568. ap->hi[PICK_FUND] = nyquist;
  3569. if(mode==PIK_DISPLACED_HARMS)
  3570. ap->lo[PICK_LIN] = -nyquist;
  3571. else
  3572. ap->lo[PICK_LIN] = SPEC_MINFRQ;
  3573. ap->hi[PICK_LIN] = nyquist;
  3574. /* options */
  3575. ap->lo[PICK_CLAR] = 0.0;
  3576. ap->hi[PICK_CLAR] = 1.0;
  3577. break;
  3578. case(PITCH):
  3579. ap->lo[PICH_RNGE] = 0.0;
  3580. ap->hi[PICH_RNGE] = 6.0;
  3581. ap->lo[PICH_VALID] = 0.0;
  3582. ap->hi[PICH_VALID] = (double)wlength;
  3583. ap->lo[PICH_SRATIO] = 0.0;
  3584. ap->hi[PICH_SRATIO] = SIGNOIS_MAX;
  3585. ap->lo[PICH_MATCH] = 1.0;
  3586. ap->hi[PICH_MATCH] = (double)MAXIMI;
  3587. ap->lo[PICH_HILM] = SPEC_MINFRQ;
  3588. ap->hi[PICH_HILM] = nyquist/MAXIMI;
  3589. ap->lo[PICH_LOLM] = SPEC_MINFRQ;
  3590. ap->hi[PICH_LOLM] = nyquist/MAXIMI;
  3591. if(mode==PICH_TO_BRK) {
  3592. ap->lo[PICH_DATAREDUCE] = PW_MIN_DRED;
  3593. ap->hi[PICH_DATAREDUCE] = PW_MAX_DRED;
  3594. }
  3595. break;
  3596. case(PLUCK):
  3597. /* params */
  3598. ap->lo[PLUK_GAIN] = 0.0;
  3599. ap->hi[PLUK_GAIN] = PLUK_MAX_GAIN;
  3600. break;
  3601. case(PRINT):
  3602. ap->lo[PRNT_STIME] = 0.0;
  3603. ap->hi[PRNT_STIME] = (wlength - 1) * frametime;
  3604. ap->lo[PRNT_WCNT] = 1.0;
  3605. ap->hi[PRNT_WCNT] = wlength;
  3606. break;
  3607. case(REPITCH):
  3608. break;
  3609. case(REPITCHB):
  3610. ap->lo[RP_DRED] = PW_MIN_DRED;
  3611. ap->hi[RP_DRED] = PW_MAX_DRED;
  3612. break;
  3613. case(REPORT):
  3614. /* params */
  3615. ap->lo[REPORT_PKCNT] = 1.0;
  3616. ap->hi[REPORT_PKCNT] = (double)MAXPKCNT;
  3617. /* options */
  3618. ap->lo[REPORT_LOFRQ] = PITCHZERO;
  3619. ap->hi[REPORT_LOFRQ] = nyquist;
  3620. ap->lo[REPORT_HIFRQ] = PITCHZERO;
  3621. ap->hi[REPORT_HIFRQ] = nyquist;
  3622. ap->lo[REPORT_STABL] = 2.0;
  3623. ap->hi[REPORT_STABL] = (double)MAXSTABIL;
  3624. break;
  3625. case(SCAT):
  3626. /* params */
  3627. ap->lo[SCAT_CNT] = 1.0;
  3628. ap->hi[SCAT_CNT] = (double)clength;
  3629. /* options */
  3630. ap->lo[SCAT_BLOKSIZE] = chwidth;
  3631. ap->hi[SCAT_BLOKSIZE] = nyquist/2.0;
  3632. break;
  3633. case(SHIFT):
  3634. /* params */
  3635. ap->lo[SHIFT_SHIF] = -nyquist;
  3636. ap->hi[SHIFT_SHIF] = nyquist;
  3637. ap->lo[SHIFT_FRQ1] = halfchwidth/2.0;
  3638. ap->hi[SHIFT_FRQ1] = nyquist - (halfchwidth/2.0);
  3639. ap->lo[SHIFT_FRQ2] = halfchwidth/2.0;
  3640. ap->hi[SHIFT_FRQ2] = nyquist - (halfchwidth/2.0);
  3641. break;
  3642. case(SHIFTP):
  3643. /* params */
  3644. ap->lo[SHIFTP_FFRQ] = PITCHZERO;
  3645. ap->hi[SHIFTP_FFRQ] = nyquist;
  3646. ap->lo[SHIFTP_SHF1] = LOG2(SPEC_MINFRQ/nyquist) * SEMITONES_PER_OCTAVE;
  3647. ap->hi[SHIFTP_SHF1] = LOG2(nyquist/SPEC_MINFRQ) * SEMITONES_PER_OCTAVE;
  3648. ap->lo[SHIFTP_SHF2] = LOG2(SPEC_MINFRQ/nyquist) * SEMITONES_PER_OCTAVE;
  3649. ap->hi[SHIFTP_SHF2] = LOG2(nyquist/SPEC_MINFRQ) * SEMITONES_PER_OCTAVE;
  3650. /* variants */
  3651. ap->lo[SHIFTP_DEPTH] = 0.0;
  3652. ap->hi[SHIFTP_DEPTH] = 1.0;
  3653. break;
  3654. case(SHUFFLE):
  3655. ap->lo[SHUF_GRPSIZE] = 1.0;
  3656. ap->hi[SHUF_GRPSIZE] = 32767.0;
  3657. break;
  3658. case(SPLIT):
  3659. break;
  3660. case(SPREAD):
  3661. /* options */
  3662. ap->lo[SPREAD_SPRD] = 0.0;
  3663. ap->hi[SPREAD_SPRD] = 1.0;
  3664. break;
  3665. case(STEP):
  3666. /* params */
  3667. ap->lo[STEP_STEP] = 2.0 * frametime;
  3668. ap->hi[STEP_STEP] = wlength * frametime;
  3669. break;
  3670. case(STRETCH):
  3671. /* params */
  3672. ap->lo[STR_FFRQ] = PITCHZERO;
  3673. ap->hi[STR_FFRQ] = nyquist;
  3674. ap->lo[STR_SHIFT] = SPEC_MINFRQ/nyquist;
  3675. ap->hi[STR_SHIFT] = nyquist/SPEC_MINFRQ;
  3676. ap->lo[STR_EXP] = STR_MIN_EXP;
  3677. ap->hi[STR_EXP] = STR_MAX_EXP;
  3678. /* variants */
  3679. ap->lo[STR_DEPTH] = 0.0;
  3680. ap->hi[STR_DEPTH] = 1.0;
  3681. break;
  3682. case(SUM):
  3683. ap->lo[SUM_CROSS] = 0.0;
  3684. ap->hi[SUM_CROSS] = 1.0;
  3685. break;
  3686. case(SUPR):
  3687. /* params */
  3688. ap->lo[SUPR_INDX] = 1.0;
  3689. ap->hi[SUPR_INDX] = (double)clength;
  3690. break;
  3691. case(S_TRACE):
  3692. /* params */
  3693. ap->lo[TRAC_INDX] = 1.0;
  3694. ap->hi[TRAC_INDX] = (double)clength;
  3695. ap->lo[TRAC_LOFRQ] = PITCHZERO;
  3696. ap->hi[TRAC_LOFRQ] = nyquist;
  3697. ap->lo[TRAC_HIFRQ] = PITCHZERO;
  3698. ap->hi[TRAC_HIFRQ] = nyquist;
  3699. break;
  3700. case(TRACK):
  3701. ap->lo[TRAK_PICH] = SPEC_MINFRQ;
  3702. ap->hi[TRAK_PICH] = nyquist/MAXIMI;
  3703. ap->lo[TRAK_RNGE] = 0.0;
  3704. ap->hi[TRAK_RNGE] = 6.0;
  3705. ap->lo[TRAK_VALID] = 1.0;
  3706. ap->hi[TRAK_VALID] = (double)wlength;
  3707. ap->lo[TRAK_SRATIO] = 0.0;
  3708. ap->hi[TRAK_SRATIO] = SIGNOIS_MAX;;
  3709. ap->lo[TRAK_HILM] = SPEC_MINFRQ + FLTERR;
  3710. ap->hi[TRAK_HILM] = nyquist/MAXIMI;
  3711. if(mode==TRK_TO_BRK) {
  3712. ap->lo[TRAK_DATAREDUCE] = PW_MIN_DRED;
  3713. ap->hi[TRAK_DATAREDUCE] = PW_MAX_DRED;
  3714. }
  3715. break;
  3716. case(TRNSF):
  3717. /* variants */
  3718. ap->lo[TRNSF_HIFRQ] = PITCHZERO;
  3719. ap->hi[TRNSF_HIFRQ] = nyquist;
  3720. ap->lo[TRNSF_LOFRQ] = PITCHZERO;
  3721. ap->hi[TRNSF_LOFRQ] = nyquist;
  3722. break;
  3723. case(TRNSP):
  3724. /* variants */
  3725. ap->lo[TRNSP_HIFRQ] = PITCHZERO;
  3726. ap->hi[TRNSP_HIFRQ] = nyquist;
  3727. ap->lo[TRNSP_LOFRQ] = PITCHZERO;
  3728. ap->hi[TRNSP_LOFRQ] = nyquist;
  3729. break;
  3730. case(TSTRETCH):
  3731. ap->lo[TSTR_STRETCH] = MINTSTR;
  3732. ap->hi[TSTR_STRETCH] = MAXTSTR;
  3733. break;
  3734. case(TUNE):
  3735. /* options */
  3736. ap->lo[TUNE_FOC] = 0.0;
  3737. ap->hi[TUNE_FOC] = 1.0;
  3738. ap->lo[TUNE_CLAR] = 0.0;
  3739. ap->hi[TUNE_CLAR] = 1.0;
  3740. /* variants */
  3741. ap->lo[TUNE_INDX] = 1.0;
  3742. ap->hi[TUNE_INDX] = clength;
  3743. ap->lo[TUNE_BFRQ] = MINPITCH;
  3744. ap->hi[TUNE_BFRQ] = nyquist;
  3745. break;
  3746. case(VOCODE):
  3747. ap->lo[VOCO_LOF] = PITCHZERO;
  3748. ap->hi[VOCO_LOF] = nyquist;
  3749. ap->lo[VOCO_HIF] = PITCHZERO;
  3750. ap->hi[VOCO_HIF] = nyquist;
  3751. ap->lo[VOCO_GAIN] = FLTERR;
  3752. ap->hi[VOCO_GAIN] = VOCO_MAX_GAIN;
  3753. break;
  3754. case(WARP):
  3755. ap->lo[WARP_PRNG] = 0.0;
  3756. ap->hi[WARP_PRNG] = MAXPRANGE;
  3757. ap->lo[WARP_TRNG] = frametime * SECS_TO_MS;
  3758. ap->hi[WARP_TRNG] = wlength * frametime * SECS_TO_MS;
  3759. ap->lo[WARP_SRNG] = (BLOKCNT * 2) * frametime * SECS_TO_MS;
  3760. ap->hi[WARP_SRNG] = (wlength - (BLOKCNT * 2)) * frametime * SECS_TO_MS;
  3761. break;
  3762. case(WAVER):
  3763. /* params */
  3764. ap->lo[WAVER_VIB] = 1.0/(wlength * frametime);
  3765. ap->hi[WAVER_VIB] = 0.5/frametime;
  3766. ap->lo[WAVER_STR] = 1.0;
  3767. ap->hi[WAVER_STR] = nyquist/SPEC_MINFRQ;
  3768. ap->lo[WAVER_LOFRQ] = PITCHZERO;
  3769. ap->hi[WAVER_LOFRQ] = nyquist;
  3770. ap->lo[WAVER_EXP] = WAVER_MIN_EXP;
  3771. ap->hi[WAVER_EXP] = WAVER_MAX_EXP;
  3772. break;
  3773. case(WEAVE):
  3774. break;
  3775. case(WINDOWCNT):
  3776. break;
  3777. case(LIMIT):
  3778. ap->lo[LIMIT_THRESH] = 0.0;
  3779. ap->hi[LIMIT_THRESH] = 1.0;
  3780. break;
  3781. /*********************** GROUCHO ***************************/
  3782. case(DISTORT):
  3783. ap->lo[DISTORT_POWFAC] = FLTERR;
  3784. ap->hi[DISTORT_POWFAC] = DISTORT_MAX_POWFAC;
  3785. break;
  3786. case(DISTORT_ENV):
  3787. ap->lo[DISTORTE_CYCLECNT] = 1.0;
  3788. ap->hi[DISTORTE_CYCLECNT] = 1000.0;
  3789. ap->lo[DISTORTE_TROF] = 0.0;
  3790. ap->hi[DISTORTE_TROF] = 1.0;
  3791. ap->lo[DISTORTE_EXPON] = DISTORTE_MIN_EXPON;
  3792. ap->hi[DISTORTE_EXPON] = DISTORTE_MAX_EXPON;
  3793. break;
  3794. case(DISTORT_AVG):
  3795. ap->lo[DISTORTA_CYCLECNT] = 2.0;
  3796. ap->hi[DISTORTA_CYCLECNT] = MAX_CYCLECNT;
  3797. ap->lo[DISTORTA_MAXLEN] = MINWAVELEN/nyquist;
  3798. ap->hi[DISTORTA_MAXLEN] = 1.0;
  3799. ap->lo[DISTORTA_SKIPCNT] = 0.0;
  3800. ap->hi[DISTORTA_SKIPCNT] = MAX_CYCLECNT;
  3801. break;
  3802. case(DISTORT_OMT):
  3803. ap->lo[DISTORTO_OMIT] = 1.0;
  3804. ap->hi[DISTORTO_OMIT] = MAX_CYCLECNT;
  3805. ap->lo[DISTORTO_KEEP] = 2.0;
  3806. ap->hi[DISTORTO_KEEP] = MAX_CYCLECNT + 1.0;
  3807. break;
  3808. case(DISTORT_MLT):
  3809. case(DISTORT_DIV):
  3810. ap->lo[DISTORTM_FACTOR] = 2.0;
  3811. ap->hi[DISTORTM_FACTOR] = 16.0;
  3812. break;
  3813. case(DISTORT_HRM):
  3814. ap->lo[DISTORTH_PRESCALE] = FLTERR;
  3815. ap->hi[DISTORTH_PRESCALE] = DISTORTH_MAX_PRESCALE;
  3816. break;
  3817. case(DISTORT_FRC):
  3818. ap->lo[DISTORTF_SCALE] = MIN_SCALE;
  3819. ap->hi[DISTORTF_SCALE] = MAXWAVELEN * sr;
  3820. ap->lo[DISTORTF_AMPFACT] = 1.0/(double)MAXSHORT;
  3821. ap->hi[DISTORTF_AMPFACT] = (double)MAXSHORT;
  3822. ap->lo[DISTORTF_PRESCALE] = 1.0/(double)MAXSHORT;
  3823. ap->hi[DISTORTF_PRESCALE] = (double)MAXSHORT;
  3824. break;
  3825. case(DISTORT_REV):
  3826. ap->lo[DISTORTR_CYCLECNT] = 1.0;
  3827. ap->hi[DISTORTR_CYCLECNT] = MAX_CYCLECNT;
  3828. break;
  3829. case(DISTORT_SHUF):
  3830. ap->lo[DISTORTS_CYCLECNT] = 1.0;
  3831. ap->hi[DISTORTS_CYCLECNT] = MAX_CYCLECNT;
  3832. ap->lo[DISTORTS_SKIPCNT] = 0.0;
  3833. ap->hi[DISTORTS_SKIPCNT] = MAX_CYCLECNT;
  3834. break;
  3835. case(DISTORT_RPTFL):
  3836. ap->lo[DISTRPT_CYCLIM] = 440.0;
  3837. ap->hi[DISTRPT_CYCLIM] = nyquist;
  3838. /* fall thro */
  3839. case(DISTORT_RPT):
  3840. case(DISTORT_RPT2):
  3841. ap->lo[DISTRPT_MULTIPLY] = 2.0;
  3842. ap->hi[DISTRPT_MULTIPLY] = BIG_VALUE;
  3843. ap->lo[DISTRPT_CYCLECNT] = 1.0;
  3844. ap->hi[DISTRPT_CYCLECNT] = MAX_CYCLECNT;
  3845. ap->lo[DISTRPT_SKIPCNT] = 0.0;
  3846. ap->hi[DISTRPT_SKIPCNT] = MAX_CYCLECNT;
  3847. break;
  3848. case(DISTORT_INTP):
  3849. ap->lo[DISTINTP_MULTIPLY] = 2.0;
  3850. ap->hi[DISTINTP_MULTIPLY] = BIG_VALUE;
  3851. ap->lo[DISTINTP_SKIPCNT] = 0.0;
  3852. ap->hi[DISTINTP_SKIPCNT] = MAX_CYCLECNT;
  3853. break;
  3854. case(DISTORT_DEL):
  3855. ap->lo[DISTDEL_CYCLECNT] = 2.0;
  3856. ap->hi[DISTDEL_CYCLECNT] = MAX_CYCLECNT;
  3857. ap->lo[DISTDEL_SKIPCNT] = 0.0;
  3858. ap->hi[DISTDEL_SKIPCNT] = MAX_CYCLECNT;
  3859. break;
  3860. case(DISTORT_RPL):
  3861. ap->lo[DISTRPL_CYCLECNT] = 2.0;
  3862. ap->hi[DISTRPL_CYCLECNT] = MAX_CYCLECNT;
  3863. ap->lo[DISTRPL_SKIPCNT] = 0.0;
  3864. ap->hi[DISTRPL_SKIPCNT] = MAX_CYCLECNT;
  3865. break;
  3866. case(DISTORT_TEL):
  3867. ap->lo[DISTTEL_CYCLECNT] = 2.0;
  3868. ap->hi[DISTTEL_CYCLECNT] = MAX_CYCLECNT;
  3869. ap->lo[DISTTEL_SKIPCNT] = 0.0;
  3870. ap->hi[DISTTEL_SKIPCNT] = MAX_CYCLECNT;
  3871. break;
  3872. case(DISTORT_FLT):
  3873. ap->lo[DISTFLT_LOFRQ_CYCLELEN] = SPEC_MINFRQ;
  3874. ap->hi[DISTFLT_LOFRQ_CYCLELEN] = nyquist;
  3875. ap->lo[DISTFLT_HIFRQ_CYCLELEN] = SPEC_MINFRQ;
  3876. ap->hi[DISTFLT_HIFRQ_CYCLELEN] = nyquist;
  3877. ap->lo[DISTFLT_SKIPCNT] = 0.0;
  3878. ap->hi[DISTFLT_SKIPCNT] = MAX_CYCLECNT;
  3879. break;
  3880. case(DISTORT_INT):
  3881. break;
  3882. case(DISTORT_CYCLECNT):
  3883. break;
  3884. case(DISTORT_PCH):
  3885. ap->lo[DISTPCH_OCTVAR] = FLTERR;
  3886. ap->hi[DISTPCH_OCTVAR] = MAXOCTVAR;
  3887. ap->lo[DISTPCH_CYCLECNT] = 2.0;
  3888. ap->hi[DISTPCH_CYCLECNT] = MAX_CYCLECNT;
  3889. ap->lo[DISTPCH_SKIPCNT] = 0.0;
  3890. ap->hi[DISTPCH_SKIPCNT] = MAX_CYCLECNT;
  3891. break;
  3892. case(DISTORT_OVERLOAD):
  3893. if(mode==OVER_SINE) {
  3894. ap->lo[DISTORTER_FRQ] = 0.01;
  3895. ap->hi[DISTORTER_FRQ] = nyquist;
  3896. }
  3897. ap->lo[DISTORTER_MULT] = 0.0;
  3898. ap->hi[DISTORTER_MULT] = 1.0;
  3899. ap->lo[DISTORTER_DEPTH] = 0.0;
  3900. ap->hi[DISTORTER_DEPTH] = 1.0;
  3901. break;
  3902. //TW NEW CASE
  3903. case(DISTORT_PULSED):
  3904. ap->lo[PULSE_STARTTIME] = 0.0; /* starttime of impulses in input-sound */
  3905. if(mode == PULSE_SYNI)
  3906. ap->hi[PULSE_STARTTIME] = (double)round(duration * sr); /* starttime of impulses in input-sound, in samples */
  3907. else
  3908. ap->hi[PULSE_STARTTIME] = duration; /* starttime of impulses in input-sound */
  3909. ap->lo[PULSE_DUR] = (double)(ENDBIT_SPLICE * 2.0)/(double)srate; /* duration of impulse stream */
  3910. if(mode == PULSE_IMP)
  3911. ap->hi[PULSE_DUR] = duration; /* duration of impulse stream */
  3912. else
  3913. ap->hi[PULSE_DUR] = AN_HOUR;
  3914. ap->lo[PULSE_FRQ] = .1; /* frq of impulses */
  3915. ap->hi[PULSE_FRQ] = 50.0; /* frq of impulses */
  3916. ap->lo[PULSE_FRQRAND] = 0.0; /* randomisation of pulse frq, semitones */
  3917. ap->hi[PULSE_FRQRAND] = 12.0; /* randomisation of pulse frq, semitones */
  3918. ap->lo[PULSE_TIMERAND] = 0.0; /* randomisation of pulse shape, timewise */
  3919. ap->hi[PULSE_TIMERAND] = 1.0; /* randomisation of pulse shape, timewise */
  3920. ap->lo[PULSE_SHAPERAND] = 0.0; /* randomisation of pulse shape, ampwise */
  3921. ap->hi[PULSE_SHAPERAND] = 1.0; /* randomisation of pulse shape, ampwise */
  3922. if(mode == PULSE_SYNI) {
  3923. ap->lo[PULSE_WAVETIME] = 1.0; /* no. of wavesets to cycle-around, within impulse [synth2 option only] */
  3924. ap->hi[PULSE_WAVETIME] = 256.0; /* no. of wavesets to cycle-around, within impulse [synth2 option only] */
  3925. } else {
  3926. ap->lo[PULSE_WAVETIME] = .001; /* duration of wavesets to cycle-around, within impulse [synth option only] */
  3927. ap->hi[PULSE_WAVETIME] = 4; /* duration of wavesets to cycle-around, within impulse [synth option only] */
  3928. }
  3929. ap->lo[PULSE_TRANSPOS] = -12.0;/* transposition envelope of material inside impulse */
  3930. ap->hi[PULSE_TRANSPOS] = 12.0; /* transposition envelope of material inside impulse */
  3931. ap->lo[PULSE_PITCHRAND] = 0.0; /* semitone range of randomisation of transposition envelope */
  3932. ap->hi[PULSE_PITCHRAND] = 12.0; /* semitone range of randomisation of transposition envelope */
  3933. break;
  3934. case(ZIGZAG):
  3935. ap->lo[ZIGZAG_START] = 0.0;
  3936. ap->hi[ZIGZAG_START] = duration - (ZIG_SPLICELEN * MS_TO_SECS);
  3937. ap->lo[ZIGZAG_END] = ((ZIG_SPLICELEN * 2) + ZIG_MIN_UNSPLICED) * MS_TO_SECS;
  3938. ap->hi[ZIGZAG_END] = duration;
  3939. ap->lo[ZIGZAG_DUR] = duration + FLTERR;
  3940. ap->hi[ZIGZAG_DUR] = BIG_TIME;
  3941. ap->lo[ZIGZAG_MIN] = ((ZIG_SPLICELEN * 2) + ZIG_MIN_UNSPLICED) * MS_TO_SECS;
  3942. ap->hi[ZIGZAG_MIN] = duration - (2 * ZIG_SPLICELEN * MS_TO_SECS);
  3943. ap->lo[ZIGZAG_SPLEN] = MIN_ZIGSPLICE;
  3944. ap->hi[ZIGZAG_SPLEN] = MAX_ZIGSPLICE;
  3945. if(mode==ZIGZAG_SELF) {
  3946. ap->lo[ZIGZAG_MAX] = ((ZIG_SPLICELEN * 2) + ZIG_MIN_UNSPLICED) * MS_TO_SECS;
  3947. ap->hi[ZIGZAG_MAX] = duration - (2 * ZIG_SPLICELEN * MS_TO_SECS);
  3948. ap->lo[ZIGZAG_RSEED] = 0.0;
  3949. ap->hi[ZIGZAG_RSEED] = MAXSHORT;
  3950. }
  3951. break;
  3952. case(LOOP):
  3953. ap->lo[LOOP_OUTDUR] = 0.0;
  3954. ap->hi[LOOP_OUTDUR] = BIG_TIME;
  3955. ap->lo[LOOP_REPETS] = 1;
  3956. ap->hi[LOOP_REPETS] = BIG_VALUE;
  3957. ap->lo[LOOP_START] = 0.0;
  3958. ap->hi[LOOP_START] = duration - (2 * ZIG_SPLICELEN * MS_TO_SECS);
  3959. /* OLD
  3960. ap->lo[LOOP_LEN] = (ZIG_SPLICELEN * 2) + ZIG_MIN_UNSPLICED;
  3961. NEW */
  3962. ap->lo[LOOP_LEN] = (1.0/sr) * SECS_TO_MS;
  3963. ap->hi[LOOP_LEN] = (duration * SECS_TO_MS) - (2 * ZIG_SPLICELEN);
  3964. if(mode==LOOP_ALL)
  3965. ap->lo[LOOP_STEP] = (1.0/sr) * SECS_TO_MS;
  3966. else
  3967. ap->lo[LOOP_STEP] = 0.0;
  3968. ap->hi[LOOP_STEP] = duration * SECS_TO_MS;
  3969. ap->lo[LOOP_SPLEN] = MIN_ZIGSPLICE;
  3970. ap->hi[LOOP_SPLEN] = MAX_ZIGSPLICE;
  3971. ap->lo[LOOP_SRCHF] = 0.0;
  3972. ap->hi[LOOP_SRCHF] = duration * SECS_TO_MS;
  3973. break;
  3974. case(SCRAMBLE):
  3975. switch(mode) {
  3976. case(SCRAMBLE_RAND):
  3977. ap->lo[SCRAMBLE_MIN] = ((2 * ZIG_SPLICELEN) + ZIG_MIN_UNSPLICED) * MS_TO_SECS;
  3978. ap->hi[SCRAMBLE_MIN] = duration - (ZIG_SPLICELEN * MS_TO_SECS);
  3979. ap->lo[SCRAMBLE_MAX] = ((2 * ZIG_SPLICELEN) + ZIG_MIN_UNSPLICED) * MS_TO_SECS;
  3980. ap->hi[SCRAMBLE_MAX] = duration - (ZIG_SPLICELEN * MS_TO_SECS);
  3981. break;
  3982. case(SCRAMBLE_SHRED):
  3983. ap->lo[SCRAMBLE_LEN] = (4 * ZIG_SPLICELEN) * MS_TO_SECS;
  3984. ap->hi[SCRAMBLE_LEN] = (duration/2.0) - (ZIG_SPLICELEN * MS_TO_SECS);
  3985. if(ap->hi[SCRAMBLE_LEN] <= ap->lo[SCRAMBLE_LEN]) {
  3986. sprintf(errstr,"infile too short for this process.\n");
  3987. return(DATA_ERROR);
  3988. }
  3989. ap->lo[SCRAMBLE_SCAT] = 0.0;
  3990. ap->hi[SCRAMBLE_SCAT] = BIG_VALUE;
  3991. break;
  3992. default:
  3993. sprintf(errstr,"Unknown mode for SCRAMBLE: in set_param_ranges()\n");
  3994. return(PROGRAM_ERROR);
  3995. }
  3996. ap->lo[SCRAMBLE_DUR] = ((2 * ZIG_SPLICELEN) + ZIG_MIN_UNSPLICED) * MS_TO_SECS;
  3997. ap->hi[SCRAMBLE_DUR] = (double)BIG_TIME;
  3998. ap->lo[SCRAMBLE_SPLEN] = MIN_ZIGSPLICE;
  3999. ap->hi[SCRAMBLE_SPLEN] = MAX_ZIGSPLICE;
  4000. ap->lo[SCRAMBLE_SEED] = 0.0;
  4001. ap->hi[SCRAMBLE_SEED] = MAXSHORT;
  4002. break;
  4003. case(ITERATE):
  4004. switch(mode) {
  4005. case(ITERATE_DUR):
  4006. ap->lo[ITER_DUR] = duration;
  4007. ap->hi[ITER_DUR] = BIG_TIME;
  4008. break;
  4009. case(ITERATE_REPEATS):
  4010. ap->lo[ITER_REPEATS] = 1.0;
  4011. ap->hi[ITER_REPEATS] = BIG_VALUE;
  4012. break;
  4013. default:
  4014. sprintf(errstr,"Unknown mode for ITERATE: in set_param_ranges()\n");
  4015. return(PROGRAM_ERROR);
  4016. }
  4017. ap->lo[ITER_DELAY] = FLTERR;
  4018. ap->hi[ITER_DELAY] = ITER_MAX_DELAY;
  4019. ap->lo[ITER_RANDOM] = 0.0;
  4020. ap->hi[ITER_RANDOM] = 1.0;
  4021. ap->lo[ITER_PSCAT] = 0.0;
  4022. ap->hi[ITER_PSCAT] = ITER_MAXPSHIFT;
  4023. ap->lo[ITER_ASCAT] = 0.0;
  4024. ap->hi[ITER_ASCAT] = 1.0;
  4025. ap->lo[ITER_FADE] = 0.0;
  4026. ap->hi[ITER_FADE] = 1.0;
  4027. ap->lo[ITER_GAIN] = 0.0;
  4028. ap->hi[ITER_GAIN] = 1.0;
  4029. ap->lo[ITER_RSEED] = 0.0;
  4030. ap->hi[ITER_RSEED] = MAXSHORT;
  4031. break;
  4032. case(ITERATE_EXTEND):
  4033. switch(mode) {
  4034. case(ITERATE_DUR):
  4035. ap->lo[ITER_DUR] = duration;
  4036. ap->hi[ITER_DUR] = BIG_TIME;
  4037. break;
  4038. case(ITERATE_REPEATS):
  4039. ap->lo[ITER_REPEATS] = 1.0;
  4040. ap->hi[ITER_REPEATS] = BIG_VALUE;
  4041. break;
  4042. default:
  4043. sprintf(errstr,"Unknown mode for ITERATE_EXTEND: in set_param_ranges()\n");
  4044. return(PROGRAM_ERROR);
  4045. }
  4046. ap->lo[ITER_DELAY] = FLTERR;
  4047. ap->hi[ITER_DELAY] = ITER_MAX_DELAY;
  4048. ap->lo[ITER_RANDOM] = 0.0;
  4049. ap->hi[ITER_RANDOM] = 1.0;
  4050. ap->lo[ITER_PSCAT] = 0.0;
  4051. ap->hi[ITER_PSCAT] = ITER_MAXPSHIFT;
  4052. ap->lo[ITER_ASCAT] = 0.0;
  4053. ap->hi[ITER_ASCAT] = 1.0;
  4054. ap->lo[CHUNKSTART] = 0.0;
  4055. ap->hi[CHUNKSTART] = duration;
  4056. ap->lo[CHUNKEND] = 0.0;
  4057. ap->hi[CHUNKEND] = duration;
  4058. ap->lo[ITER_LGAIN] = 0.25;
  4059. ap->hi[ITER_LGAIN] = 4.0;
  4060. ap->lo[ITER_RRSEED] = 0.0;
  4061. ap->hi[ITER_RRSEED] = MAXSHORT;
  4062. break;
  4063. case(DRUNKWALK):
  4064. ap->lo[DRNK_TOTALDUR] = 0.0;
  4065. ap->hi[DRNK_TOTALDUR] = BIG_VALUE;
  4066. ap->lo[DRNK_LOCUS] = 0.0;
  4067. ap->hi[DRNK_LOCUS] = duration;
  4068. ap->lo[DRNK_AMBITUS] = 0.0;
  4069. ap->hi[DRNK_AMBITUS] = duration;
  4070. ap->lo[DRNK_GSTEP] = 0.0;
  4071. ap->hi[DRNK_GSTEP] = duration;
  4072. ap->lo[DRNK_CLOKTIK] = DRNK_SPLICE * MS_TO_SECS * 2.0;
  4073. ap->hi[DRNK_CLOKTIK] = duration; /* ???? */
  4074. ap->lo[DRNK_MIN_DRNKTIK] = 1.0;
  4075. ap->hi[DRNK_MIN_DRNKTIK] = BIG_VALUE;
  4076. ap->lo[DRNK_MAX_DRNKTIK] = 1.0;
  4077. ap->hi[DRNK_MAX_DRNKTIK] = BIG_VALUE;
  4078. ap->lo[DRNK_SPLICELEN] = DRNK_MIN_SPLICELEN;
  4079. ap->hi[DRNK_SPLICELEN] = min(DRNK_MAX_SPLICELEN,(duration/2.0) * SECS_TO_MS);
  4080. ap->lo[DRNK_CLOKRND] = 0.0;
  4081. ap->hi[DRNK_CLOKRND] = 1.0;
  4082. ap->lo[DRNK_OVERLAP] = 0.0;
  4083. ap->hi[DRNK_OVERLAP] = DRNK_MAX_OVERLAP;
  4084. ap->lo[DRNK_RSEED] = 0.0;
  4085. ap->hi[DRNK_RSEED] = MAXSHORT;
  4086. if(mode==HAS_SOBER_MOMENTS) {
  4087. ap->lo[DRNK_MIN_PAUS] = FLTERR;
  4088. ap->hi[DRNK_MIN_PAUS] = duration + FLTERR;
  4089. ap->lo[DRNK_MAX_PAUS] = FLTERR;
  4090. ap->hi[DRNK_MAX_PAUS] = duration + FLTERR;
  4091. }
  4092. break;
  4093. case(SIMPLE_TEX): case(TIMED): case(GROUPS): case(TGROUPS):
  4094. case(DECORATED): case(PREDECOR): case(POSTDECOR):
  4095. case(ORNATE): case(PREORNATE):case(POSTORNATE):
  4096. case(MOTIFS): case(MOTIFSIN): case(TMOTIFS): case(TMOTIFSIN):
  4097. ap->lo[TEXTURE_DUR] = TEXTURE_MIN_DUR;
  4098. ap->hi[TEXTURE_DUR] = BIG_TIME;
  4099. switch(process) {
  4100. case(SIMPLE_TEX): case(GROUPS): case(MOTIFS): case(MOTIFSIN):
  4101. ap->lo[TEXTURE_PACK] = 1.0/sr;
  4102. ap->hi[TEXTURE_PACK] = MAX_PACKTIME;
  4103. break;
  4104. case(DECORATED): case(PREDECOR): case(POSTDECOR):
  4105. case(ORNATE): case(PREORNATE): case(POSTORNATE):
  4106. case(TIMED): case(TGROUPS): case(TMOTIFS): case(TMOTIFSIN):
  4107. ap->lo[TEXTURE_SKIP] = FLTERR;
  4108. ap->hi[TEXTURE_SKIP] = TEXTURE_MAX_SKIP;
  4109. break;
  4110. default:
  4111. sprintf(errstr,"Unknown process in set_param_ranges()\n");
  4112. return(PROGRAM_ERROR);
  4113. }
  4114. ap->lo[TEXTURE_SCAT] = 0.0;
  4115. ap->hi[TEXTURE_SCAT] = MAX_SCAT_TEXTURE;
  4116. ap->lo[TEXTURE_TGRID] = 0.0;
  4117. ap->hi[TEXTURE_TGRID] = TEXTURE_MAX_TGRID;
  4118. ap->lo[TEXTURE_INSLO] = 1.0;
  4119. ap->hi[TEXTURE_INSLO] = (double)SF_MAXFILES;
  4120. ap->lo[TEXTURE_INSHI] = 1.0;
  4121. ap->hi[TEXTURE_INSHI] = (double)SF_MAXFILES;
  4122. ap->lo[TEXTURE_MAXAMP] = MIDIBOT;
  4123. ap->hi[TEXTURE_MAXAMP] = MIDITOP; /* default 64 */
  4124. ap->lo[TEXTURE_MINAMP] = MIDIBOT;
  4125. ap->hi[TEXTURE_MINAMP] = MIDITOP; /* default 64 */
  4126. ap->lo[TEXTURE_MAXDUR] = (TEXTURE_SPLICELEN + TEXTURE_SAFETY) * MS_TO_SECS;
  4127. ap->hi[TEXTURE_MAXDUR] = BIG_TIME;
  4128. ap->lo[TEXTURE_MINDUR] = (TEXTURE_SPLICELEN + TEXTURE_SAFETY) * MS_TO_SECS;
  4129. ap->hi[TEXTURE_MINDUR] = BIG_TIME;
  4130. ap->lo[TEXTURE_MAXPICH] = MIDIBOT;
  4131. ap->hi[TEXTURE_MAXPICH] = MIDITOP;
  4132. ap->lo[TEXTURE_MINPICH] = MIDIBOT;
  4133. ap->hi[TEXTURE_MINPICH] = MIDITOP;
  4134. if(process == SIMPLE_TEX) {
  4135. ap->lo[TEX_PHGRID] = 0;
  4136. ap->hi[TEX_PHGRID] = 64;
  4137. } else {
  4138. ap->lo[TEX_PHGRID] = 0.0;
  4139. ap->hi[TEX_PHGRID] = TEXTURE_MAX_PHGRID;
  4140. }
  4141. ap->lo[TEX_GPSPACE] = (double)IS_STILL;
  4142. ap->hi[TEX_GPSPACE] = (double)IS_CONTRARY;
  4143. ap->lo[TEX_GRPSPRANGE] = 0.0; /* default */
  4144. ap->hi[TEX_GRPSPRANGE] = 1.0;
  4145. ap->lo[TEX_AMPRISE] = 0.0; /* default */
  4146. ap->hi[TEX_AMPRISE] = MIDITOP;
  4147. ap->lo[TEX_AMPCONT] = 0.0; /* default */
  4148. if(process==ORNATE || process==PREORNATE || process==POSTORNATE
  4149. || process==DECORATED || process==PREDECOR || process==POSTDECOR)
  4150. ap->hi[TEX_AMPCONT] = 8.0;
  4151. else
  4152. ap->hi[TEX_AMPCONT] = 6.0;
  4153. ap->lo[TEX_GPSIZELO] = 1.0;
  4154. ap->hi[TEX_GPSIZELO] = BIG_VALUE;
  4155. ap->lo[TEX_GPSIZEHI] = 1.0;
  4156. ap->hi[TEX_GPSIZEHI] = BIG_VALUE;
  4157. ap->lo[TEX_GPPACKLO] = (double)SECS_TO_MS/sr;
  4158. ap->hi[TEX_GPPACKLO] = MAX_PACKTIME * SECS_TO_MS;
  4159. ap->lo[TEX_GPPACKHI] = (double)SECS_TO_MS/sr;
  4160. ap->hi[TEX_GPPACKHI] = MAX_PACKTIME * SECS_TO_MS;
  4161. if(mode==TEX_NEUTRAL) { /* midipitches */
  4162. ap->lo[TEX_GPRANGLO] = MIDIBOT; /* default 60 */
  4163. ap->hi[TEX_GPRANGLO] = MIDITOP;
  4164. ap->lo[TEX_GPRANGHI] = MIDIBOT; /* default 60 */
  4165. ap->hi[TEX_GPRANGHI] = MIDITOP;
  4166. } else { /* notes of hfield */
  4167. ap->lo[TEX_GPRANGLO] = 1.0; /* default 8 */
  4168. ap->hi[TEX_GPRANGLO] = MAX_GPRANGE;
  4169. ap->lo[TEX_GPRANGHI] = 1.0; /* default 8 */
  4170. ap->hi[TEX_GPRANGHI] = MAX_GPRANGE;
  4171. }
  4172. ap->lo[TEX_MULTLO] = MIN_MULT; /* default 1 */
  4173. ap->hi[TEX_MULTLO] = MAX_MULT;
  4174. ap->lo[TEX_MULTHI] = MIN_MULT; /* default 1 */
  4175. ap->hi[TEX_MULTHI] = MAX_MULT;
  4176. ap->lo[TEX_DECPCENTRE] = (double)DEC_CENTRED; /* default 0 */
  4177. ap->hi[TEX_DECPCENTRE] = (double)DEC_C_A_B;
  4178. ap->lo[TEXTURE_ATTEN] = FLTERR;
  4179. ap->hi[TEXTURE_ATTEN] = 1.0;
  4180. ap->lo[TEXTURE_POS] = TEX_LEFT;
  4181. ap->hi[TEXTURE_POS] = TEX_RIGHT;
  4182. ap->lo[TEXTURE_SPRD] = 0.0;
  4183. ap->hi[TEXTURE_SPRD] = 1.0;
  4184. ap->lo[TEXTURE_SEED] = 0.0;
  4185. ap->hi[TEXTURE_SEED] = MAXSHORT;
  4186. for(n=0;n<TEXTURE_SEED;n++) {
  4187. if(n == TEXTURE_SCAT && process == SIMPLE_TEX)
  4188. continue;
  4189. if(ap->lo[n] <0.0 || ap->hi[n] <0.0) {
  4190. sprintf(errstr,"Range limit of parameter %d has -ve value: invalid in TEXTURE\n",n+1);
  4191. return(PROGRAM_ERROR);
  4192. }
  4193. }
  4194. break;
  4195. case(GRAIN_COUNT): case(GRAIN_OMIT): case(GRAIN_DUPLICATE):
  4196. case(GRAIN_REORDER): case(GRAIN_REPITCH): case(GRAIN_RERHYTHM):
  4197. case(GRAIN_REMOTIF): case(GRAIN_TIMEWARP): case(GRAIN_POSITION):
  4198. case(GRAIN_ALIGN): case(GRAIN_GET): case(GRAIN_REVERSE):
  4199. ap->lo[GR_BLEN] = min(duration,GR_MINDUR);
  4200. ap->hi[GR_BLEN] = duration;
  4201. ap->lo[GR_GATE] = 0.0;
  4202. ap->hi[GR_GATE] = 1.0;
  4203. /* min GR_MINTIME size guarantees grainsize cannot be less than 2 * splicelen */
  4204. /* internal algorithms depend on this fact !! */
  4205. ap->lo[GR_MINTIME] = (GRAIN_SPLICELEN + GRAIN_SAFETY) * MS_TO_SECS * 2.0;
  4206. ap->hi[GR_MINTIME] = duration;
  4207. ap->lo[GR_WINSIZE] = 0.0;
  4208. ap->hi[GR_WINSIZE] = duration * SECS_TO_MS;
  4209. switch(process) {
  4210. case(GRAIN_OMIT):
  4211. ap->lo[GR_KEEP] = 1.0;
  4212. ap->hi[GR_KEEP] = GR_MAX_OUT_OF - 1.0;
  4213. ap->lo[GR_OUT_OF] = 2.0;
  4214. ap->hi[GR_OUT_OF] = GR_MAX_OUT_OF;
  4215. break;
  4216. case(GRAIN_DUPLICATE):
  4217. ap->lo[GR_DUPLS] = 1.0;
  4218. ap->hi[GR_DUPLS] = BIG_VALUE;
  4219. break;
  4220. case(GRAIN_TIMEWARP):
  4221. ap->lo[GR_TSTRETCH] = GR_MIN_TSTRETCH;
  4222. ap->hi[GR_TSTRETCH] = GR_MAX_TSTRETCH;
  4223. break;
  4224. case(GRAIN_POSITION):
  4225. ap->lo[GR_OFFSET] = 0.0;
  4226. ap->hi[GR_OFFSET] = GR_MAX_OFFSET;
  4227. break;
  4228. case(GRAIN_ALIGN):
  4229. ap->lo[GR_OFFSET] = 0.0;
  4230. ap->hi[GR_OFFSET] = GR_MAX_OFFSET;
  4231. ap->lo[GR_GATE2] = 0.0;
  4232. ap->hi[GR_GATE2] = 1.0;
  4233. break;
  4234. }
  4235. break;
  4236. case(RRRR_EXTEND):
  4237. if(mode == 1) {
  4238. ap->lo[RRR_GATE] = 0.0;
  4239. ap->hi[RRR_GATE] = 1.0;
  4240. ap->lo[RRR_GRSIZ] = LOW_RRR_SIZE;
  4241. ap->hi[RRR_GRSIZ] = SECS_TO_MS;
  4242. ap->lo[RRR_SKIP] = 0;
  4243. ap->hi[RRR_SKIP] = 8;
  4244. ap->lo[RRR_AFTER] = 0.0;
  4245. ap->hi[RRR_AFTER] = duration;
  4246. ap->lo[RRR_TEMPO] = LOW_RRR_SIZE * MS_TO_SECS;
  4247. ap->hi[RRR_TEMPO] = A_MINUTE;
  4248. ap->lo[RRR_AT] = 0;
  4249. ap->hi[RRR_AT] = AN_HOUR;
  4250. } else {
  4251. ap->lo[RRR_START] = 0.0;
  4252. ap->hi[RRR_START] = duration;
  4253. ap->lo[RRR_END] = 0.0;
  4254. ap->hi[RRR_END] = duration;
  4255. }
  4256. ap->lo[RRR_SLOW] = 1.0;
  4257. ap->hi[RRR_SLOW] = 100;
  4258. ap->lo[RRR_REGU] = 0.0;
  4259. ap->hi[RRR_REGU] = 1.0;
  4260. ap->lo[RRR_RANGE] = 0.0;
  4261. ap->hi[RRR_RANGE] = 4.0;
  4262. ap->lo[RRR_GET] = 2.0;
  4263. ap->hi[RRR_GET] = 100.0;
  4264. if (mode != 2) {
  4265. ap->lo[RRR_STRETCH] = 1.0;
  4266. ap->hi[RRR_STRETCH] = 32767.0;
  4267. ap->lo[RRR_REPET] = 1.0;
  4268. ap->hi[RRR_REPET] = 32767.0;
  4269. ap->lo[RRR_ASCAT] = 0.0;
  4270. ap->hi[RRR_ASCAT] = 1.0;
  4271. ap->lo[RRR_PSCAT] = 0.0;
  4272. ap->hi[RRR_PSCAT] = 24.0;
  4273. }
  4274. break;
  4275. case(SSSS_EXTEND):
  4276. ap->lo[SSS_DUR] = .01;
  4277. ap->hi[SSS_DUR] = 32767.0;
  4278. ap->lo[NOISE_MINFRQ] = MIN_SUPRESS;
  4279. ap->hi[NOISE_MINFRQ] = nyquist;
  4280. ap->lo[MIN_NOISLEN] = 0.0;
  4281. ap->hi[MIN_NOISLEN] = 50.0;
  4282. ap->lo[MAX_NOISLEN] = 0.0;
  4283. ap->hi[MAX_NOISLEN] = duration;
  4284. ap->lo[SSS_GATE] = 0.0;
  4285. ap->hi[SSS_GATE] = 1.0;
  4286. break;
  4287. case(ENV_CREATE):
  4288. ap->lo[ENV_WSIZE] = ENV_MIN_WSIZE; /* MSECS */
  4289. ap->hi[ENV_WSIZE] = ENV_MAX_WSIZE;
  4290. break;
  4291. case(ENV_BRKTOENV):
  4292. case(ENV_DBBRKTOENV):
  4293. case(ENV_IMPOSE):
  4294. //TW NEW CASE
  4295. case(ENV_PROPOR):
  4296. case(ENV_REPLACE):
  4297. ap->lo[ENV_WSIZE] = ENV_MIN_WSIZE; /* MSECS */
  4298. ap->hi[ENV_WSIZE] = duration * SECS_TO_MS;
  4299. break;
  4300. case(ENV_EXTRACT):
  4301. ap->lo[ENV_WSIZE] = ENV_MIN_WSIZE; /* MSECS */
  4302. ap->hi[ENV_WSIZE] = duration * SECS_TO_MS;
  4303. if(mode==ENV_BRKFILE_OUT) {
  4304. ap->lo[ENV_DATAREDUCE] = 0.0;
  4305. ap->hi[ENV_DATAREDUCE] = 1.0;
  4306. }
  4307. break;
  4308. case(ENV_ENVTOBRK):
  4309. case(ENV_ENVTODBBRK):
  4310. ap->lo[ENV_DATAREDUCE] = 0.0;
  4311. ap->hi[ENV_DATAREDUCE] = 1.0;
  4312. break;
  4313. case(ENV_WARPING):
  4314. case(ENV_REPLOTTING):
  4315. ap->lo[ENV_WSIZE] = ENV_MIN_WSIZE; /* MSECS */
  4316. ap->hi[ENV_WSIZE] = duration * SECS_TO_MS;
  4317. /* fall thro */
  4318. case(ENV_RESHAPING):
  4319. switch(mode) {
  4320. case(ENV_NORMALISE):
  4321. case(ENV_REVERSE):
  4322. case(ENV_CEILING):
  4323. break;
  4324. case(ENV_DUCKED):
  4325. ap->lo[ENV_GATE] = 0.0;
  4326. ap->hi[ENV_GATE] = 1.0;
  4327. ap->lo[ENV_THRESHOLD] = 0.0;
  4328. ap->hi[ENV_THRESHOLD] = 1.0;
  4329. break;
  4330. case(ENV_EXAGGERATING):
  4331. ap->lo[ENV_EXAG] = MIN_ENV_EXAG;
  4332. ap->hi[ENV_EXAG] = MAX_ENV_EXAG;
  4333. break;
  4334. case(ENV_ATTENUATING):
  4335. ap->lo[ENV_ATTEN] = MIN_ENV_ATTEN;
  4336. ap->hi[ENV_ATTEN] = MAX_ENV_ATTEN;
  4337. break;
  4338. case(ENV_LIFTING):
  4339. ap->lo[ENV_LIFT] = 0.0;
  4340. ap->hi[ENV_LIFT] = 1.0;
  4341. break;
  4342. case(ENV_FLATTENING):
  4343. ap->lo[ENV_FLATN] = 2.0;
  4344. ap->hi[ENV_FLATN] = MAX_ENV_FLATN;
  4345. break;
  4346. case(ENV_TSTRETCHING):
  4347. ap->lo[ENV_TSTRETCH] = MIN_ENV_TSTRETCH;
  4348. ap->hi[ENV_TSTRETCH] = MAX_ENV_TSTRETCH;
  4349. break;
  4350. case(ENV_GATING):
  4351. ap->lo[ENV_GATE] = 0.0;
  4352. ap->hi[ENV_GATE] = 1.0;
  4353. ap->lo[ENV_SMOOTH] = 0.0;
  4354. ap->hi[ENV_SMOOTH] = MAX_ENV_SMOOTH;
  4355. break;
  4356. case(ENV_INVERTING):
  4357. ap->lo[ENV_GATE] = 0.0;
  4358. ap->hi[ENV_GATE] = 1.0;
  4359. ap->lo[ENV_MIRROR] = 0.0;
  4360. ap->hi[ENV_MIRROR] = 1.0;
  4361. break;
  4362. case(ENV_LIMITING):
  4363. ap->lo[ENV_LIMIT] = 0.0;
  4364. ap->hi[ENV_LIMIT] = 1.0;
  4365. ap->lo[ENV_THRESHOLD] = 0.0;
  4366. ap->hi[ENV_THRESHOLD] = 1.0;
  4367. break;
  4368. case(ENV_CORRUGATING):
  4369. ap->lo[ENV_TROFDEL] = 1.0;
  4370. ap->hi[ENV_TROFDEL] = BIG_VALUE;
  4371. /* fall thro */
  4372. case(ENV_PEAKCNT):
  4373. ap->lo[ENV_PKSRCHWIDTH] = 2.0;
  4374. ap->hi[ENV_PKSRCHWIDTH] = BIG_VALUE;
  4375. break;
  4376. case(ENV_EXPANDING):
  4377. ap->lo[ENV_GATE] = 0.0;
  4378. ap->hi[ENV_GATE] = 1.0;
  4379. ap->lo[ENV_THRESHOLD] = 0.0;
  4380. ap->hi[ENV_THRESHOLD] = 1.0;
  4381. ap->lo[ENV_SMOOTH] = 0.0;
  4382. ap->hi[ENV_SMOOTH] = MAX_ENV_SMOOTH;
  4383. break;
  4384. case(ENV_TRIGGERING):
  4385. ap->lo[ENV_GATE] = 0.0;
  4386. ap->hi[ENV_GATE] = 1.0;
  4387. ap->lo[ENV_TRIGRISE] = 1.0/(double)MAXSHORT;
  4388. ap->hi[ENV_TRIGRISE] = 1.0;
  4389. ap->lo[ENV_TRIGDUR] = ENV_MIN_WSIZE;
  4390. ap->hi[ENV_TRIGDUR] = duration * SECS_TO_MS;
  4391. break;
  4392. default:
  4393. sprintf(errstr,"Unknown case for ENVWARP,RESHAPING or REPLOTTING: set_param_ranges()\n");
  4394. return(PROGRAM_ERROR);
  4395. }
  4396. switch(process) {
  4397. case(ENV_WARPING):
  4398. ap->lo[ENV_WSIZE] = ENV_MIN_WSIZE; /* MSECS */
  4399. ap->hi[ENV_WSIZE] = duration * SECS_TO_MS;
  4400. break;
  4401. case(ENV_REPLOTTING):
  4402. ap->lo[ENV_WSIZE] = ENV_MIN_WSIZE; /* MSECS */
  4403. ap->hi[ENV_WSIZE] = duration * SECS_TO_MS;
  4404. ap->lo[ENV_DATAREDUCE] = 0.0;
  4405. ap->hi[ENV_DATAREDUCE] = 1.0;
  4406. }
  4407. break;
  4408. case(ENV_DOVETAILING):
  4409. ap->lo[ENV_STARTTRIM] = 0.0;
  4410. ap->hi[ENV_STARTTRIM] = duration;
  4411. ap->lo[ENV_ENDTRIM] = 0.0;
  4412. ap->hi[ENV_ENDTRIM] = duration;
  4413. ap->lo[ENV_STARTTYPE] = (double)ENVTYPE_LIN;
  4414. ap->hi[ENV_STARTTYPE] = (double)ENVTYPE_EXP;
  4415. ap->lo[ENV_ENDTYPE] = (double)ENVTYPE_LIN;
  4416. ap->hi[ENV_ENDTYPE] = (double)ENVTYPE_EXP;
  4417. ap->lo[ENV_TIMETYPE] = (double)ENV_TIMETYPE_SECS;
  4418. ap->hi[ENV_TIMETYPE] = (double)ENV_TIMETYPE_STSMPS;
  4419. break;
  4420. case(ENV_CURTAILING):
  4421. ap->lo[ENV_STARTTIME] = 0.0;
  4422. ap->hi[ENV_STARTTIME] = duration;
  4423. ap->lo[ENV_ENDTIME] = 0.0;
  4424. ap->hi[ENV_ENDTIME] = duration;
  4425. ap->lo[ENV_ENVTYPE] = (double)ENVTYPE_LIN;
  4426. ap->hi[ENV_ENVTYPE] = (double)ENVTYPE_EXP;
  4427. ap->lo[ENV_TIMETYPE] = (double)ENV_TIMETYPE_SECS;
  4428. ap->hi[ENV_TIMETYPE] = (double)ENV_TIMETYPE_STSMPS;
  4429. break;
  4430. case(ENV_SWELL):
  4431. ap->lo[ENV_PEAKTIME] = ENV_MIN_WSIZE * MS_TO_SECS;
  4432. ap->hi[ENV_PEAKTIME] = duration - (ENV_MIN_WSIZE * MS_TO_SECS);
  4433. ap->lo[ENV_ENVTYPE] = (double)ENVTYPE_LIN;
  4434. ap->hi[ENV_ENVTYPE] = (double)ENVTYPE_EXP;
  4435. break;
  4436. case(ENV_ATTACK):
  4437. switch(mode) {
  4438. case(ENV_ATK_GATED):
  4439. ap->lo[ENV_ATK_GATE] = 0.0;
  4440. ap->hi[ENV_ATK_GATE] = 1.0;
  4441. break;
  4442. case(ENV_ATK_TIMED):
  4443. case(ENV_ATK_XTIME):
  4444. ap->lo[ENV_ATK_ATTIME] = 0.0;
  4445. ap->hi[ENV_ATK_ATTIME] = duration - (ENV_MIN_ATK_ONSET * MS_TO_SECS);
  4446. break;
  4447. case(ENV_ATK_ATMAX):
  4448. break;
  4449. }
  4450. ap->lo[ENV_ATK_GAIN] = 1.0;
  4451. ap->hi[ENV_ATK_GAIN] = (double)MAXSHORT;
  4452. ap->lo[ENV_ATK_ONSET] = ENV_MIN_ATK_ONSET;
  4453. ap->hi[ENV_ATK_ONSET] = (double)BIG_TIME;
  4454. ap->lo[ENV_ATK_TAIL] = ENV_MIN_ATK_ONSET;
  4455. ap->hi[ENV_ATK_TAIL] = (duration * SECS_TO_MS) - ENV_MIN_ATK_ONSET;
  4456. ap->lo[ENV_ATK_ENVTYPE] = ENVTYPE_LIN;
  4457. ap->hi[ENV_ATK_ENVTYPE] = ENVTYPE_EXP;
  4458. break;
  4459. case(ENV_PLUCK):
  4460. ap->lo[ENV_PLK_ENDSAMP] = 0.0;
  4461. ap->hi[ENV_PLK_ENDSAMP] = round(min(ENV_PLK_ENDSAMP_MAXTIME,duration)) * srate * channels;
  4462. ap->lo[ENV_PLK_WAVELEN] = round(sr/ENV_PLK_FRQ_MAX);
  4463. ap->hi[ENV_PLK_WAVELEN] = round(sr/ENV_PLK_FRQ_MIN);
  4464. ap->lo[ENV_PLK_CYCLEN] = ENV_PLK_CYCLEN_MIN;
  4465. ap->hi[ENV_PLK_CYCLEN] = ENV_PLK_CYCLEN_MAX;
  4466. ap->lo[ENV_PLK_DECAY] = ENV_PLK_DECAY_MIN;
  4467. ap->hi[ENV_PLK_DECAY] = ENV_PLK_DECAY_MAX;
  4468. break;
  4469. case(ENV_TREMOL):
  4470. ap->lo[ENV_TREM_FRQ] = 0.0;
  4471. ap->hi[ENV_TREM_FRQ] = ENV_TREM_MAXFRQ;
  4472. ap->lo[ENV_TREM_DEPTH] = 0.0;
  4473. ap->hi[ENV_TREM_DEPTH] = 1.0;
  4474. ap->lo[ENV_TREM_AMP] = 0.0;
  4475. ap->hi[ENV_TREM_AMP] = 1.0;
  4476. break;
  4477. case(ENV_DBBRKTOBRK):
  4478. case(ENV_BRKTODBBRK):
  4479. break;
  4480. case(MIX):
  4481. ap->lo[MIX_ATTEN] = 0.0;
  4482. ap->hi[MIX_ATTEN] = 1.0;
  4483. /* fall thro */
  4484. case(MIXMAX):
  4485. ap->lo[MIX_START] = 0.0;
  4486. ap->hi[MIX_START] = duration;
  4487. ap->lo[MIX_END] = 0.0;
  4488. ap->hi[MIX_END] = duration;
  4489. break;
  4490. case(MIXCROSS):
  4491. ap->lo[MCR_STAGGER] = 0.0;
  4492. ap->hi[MCR_STAGGER] = duration;
  4493. ap->lo[MCR_BEGIN] = 0.0;
  4494. ap->hi[MCR_BEGIN] = duration;
  4495. ap->lo[MCR_END] = 0.0;
  4496. ap->hi[MCR_END] = BIG_TIME;
  4497. if(mode==MCCOS) {
  4498. ap->lo[MCR_POWFAC] = MIN_MCR_POWFAC;
  4499. ap->hi[MCR_POWFAC] = MAX_MCR_POWFAC;
  4500. }
  4501. break;
  4502. case(MIXTWO):
  4503. ap->lo[MIX_STAGGER] = 0.0;
  4504. ap->hi[MIX_STAGGER] = duration;
  4505. ap->lo[MIX_SKIP] = 0.0;
  4506. ap->hi[MIX_SKIP] = BIG_TIME;
  4507. ap->lo[MIX_SKEW] = 1.0/(double)MAXSHORT;
  4508. ap->hi[MIX_SKEW] = (double)MAXSHORT;
  4509. ap->lo[MIX_DURA] = 0.0;
  4510. ap->hi[MIX_DURA] = 32767.0;
  4511. ap->lo[MIX_STTA] = 0.0;
  4512. ap->hi[MIX_STTA] = 32767.0;
  4513. break;
  4514. //TW NEW CASE
  4515. case(MIXMANY):
  4516. break;
  4517. case(MIXBALANCE):
  4518. ap->lo[MIX_STAGGER] = 0.0;
  4519. ap->hi[MIX_STAGGER] = 1.0;
  4520. ap->lo[MIX_SKIP] = 0.0;
  4521. ap->hi[MIX_SKIP] = duration;
  4522. ap->lo[MIX_SKEW] = 0.0;
  4523. ap->hi[MIX_SKEW] = duration;
  4524. break;
  4525. case(MIXINBETWEEN):
  4526. switch(mode) {
  4527. case(INBI_COUNT):
  4528. ap->lo[INBETW] = 1.0;
  4529. ap->hi[INBETW] = (double)MAXBETWEEN;
  4530. break;
  4531. case(INBI_RATIO): /* TW param read as special data */
  4532. break;
  4533. default:
  4534. sprintf(errstr,"Unknown mode for MIXINBETWEEN: set_param_ranges()\n");
  4535. return(PROGRAM_ERROR);
  4536. }
  4537. break;
  4538. case(CYCINBETWEEN):
  4539. ap->lo[INBETW] = 1.0;
  4540. ap->hi[INBETW] = (double)MAXBETWEEN;
  4541. ap->lo[BTWN_HFRQ] = (double)10.0;
  4542. ap->hi[BTWN_HFRQ] = (double)nyquist;
  4543. break;
  4544. case(MIXTEST):
  4545. case(MIXFORMAT):
  4546. case(MIXDUMMY):
  4547. case(MIXINTERL):
  4548. case(MIXSYNC):
  4549. //TW NEW CASE
  4550. case(ADDTOMIX):
  4551. break;
  4552. case(MIXSYNCATT):
  4553. ap->lo[MSY_WFAC] = (double)MIN_WINFAC;
  4554. ap->hi[MSY_WFAC] = (double)MAX_WINFAC;
  4555. break;
  4556. case(MIXGAIN):
  4557. ap->lo[MIX_GAIN] = 0.0;
  4558. ap->hi[MIX_GAIN] = (double)MAXSHORT;
  4559. ap->lo[MSH_ENDLINE] = 1.0;
  4560. ap->hi[MSH_ENDLINE] = (double)linecnt;
  4561. ap->lo[MSH_STARTLINE] = 1.0;
  4562. ap->hi[MSH_STARTLINE] = (double)linecnt;
  4563. break;
  4564. case(MIXTWARP):
  4565. switch(mode) {
  4566. case(MTW_TIMESORT):
  4567. case(MTW_REVERSE_T):
  4568. case(MTW_REVERSE_NT):
  4569. case(MTW_FREEZE_T):
  4570. case(MTW_FREEZE_NT):
  4571. break;
  4572. case(MTW_SCATTER):
  4573. ap->lo[MTW_PARAM] = 0.0;
  4574. ap->hi[MTW_PARAM] = 1.0;
  4575. break;
  4576. case(MTW_DOMINO):
  4577. ap->lo[MTW_PARAM] = -BIG_TIME;
  4578. ap->hi[MTW_PARAM] = BIG_TIME;
  4579. break;
  4580. case(MTW_ADD_TO_TG):
  4581. ap->lo[MTW_PARAM] = -BIG_TIME;
  4582. ap->hi[MTW_PARAM] = BIG_TIME;
  4583. break;
  4584. case(MTW_CREATE_TG_1): case(MTW_CREATE_TG_2): case(MTW_CREATE_TG_3): case(MTW_CREATE_TG_4):
  4585. case(MTW_ENLARGE_TG_1): case(MTW_ENLARGE_TG_2): case(MTW_ENLARGE_TG_3): case(MTW_ENLARGE_TG_4):
  4586. ap->lo[MTW_PARAM] = 0.0;
  4587. ap->hi[MTW_PARAM] = BIG_TIME;
  4588. break;
  4589. default:
  4590. sprintf(errstr,"Unknown mode for MIXTWARP: in set_param_ranges()\n");
  4591. return(PROGRAM_ERROR);
  4592. }
  4593. if(mode != MTW_TIMESORT) {
  4594. ap->lo[MSH_ENDLINE] = 1.0;
  4595. ap->hi[MSH_ENDLINE] = (double)linecnt;
  4596. ap->lo[MSH_STARTLINE] = 1.0;
  4597. ap->hi[MSH_STARTLINE] = (double)linecnt;
  4598. }
  4599. break;
  4600. case(MIXSWARP):
  4601. switch(mode) {
  4602. case(MSW_TWISTALL):
  4603. break;
  4604. case(MSW_TWISTONE):
  4605. ap->lo[MSW_TWLINE] = 1.0;
  4606. ap->hi[MSW_TWLINE] = (double)linecnt;
  4607. break;
  4608. case(MSW_NARROWED):
  4609. ap->lo[MSW_NARROWING] = 0.0;
  4610. ap->hi[MSW_NARROWING] = 1.0;
  4611. break;
  4612. case(MSW_LEFTWARDS):
  4613. case(MSW_RIGHTWARDS):
  4614. case(MSW_RANDOM):
  4615. case(MSW_RANDOM_ALT):
  4616. ap->lo[MSW_POS2] = PAN_LEFT;
  4617. ap->hi[MSW_POS2] = PAN_RIGHT;
  4618. /* fall thro */
  4619. case(MSW_FIXED):
  4620. ap->lo[MSW_POS1] = PAN_LEFT;
  4621. ap->hi[MSW_POS1] = PAN_RIGHT;
  4622. break;
  4623. default:
  4624. sprintf(errstr,"Unknown mode for MIXSWARP: in set_param_ranges()\n");
  4625. return(PROGRAM_ERROR);
  4626. }
  4627. if(mode!=MSW_TWISTALL && mode!=MSW_TWISTONE) {
  4628. ap->lo[MSH_ENDLINE] = 1.0;
  4629. ap->hi[MSH_ENDLINE] = (double)linecnt;
  4630. ap->lo[MSH_STARTLINE] = 1.0;
  4631. ap->hi[MSH_STARTLINE] = (double)linecnt;
  4632. }
  4633. break;
  4634. case(MIXSHUFL):
  4635. ap->lo[MSH_ENDLINE] = 1.0;
  4636. ap->hi[MSH_ENDLINE] = (double)linecnt;
  4637. ap->lo[MSH_STARTLINE] = 1.0;
  4638. ap->hi[MSH_STARTLINE] = (double)linecnt;
  4639. break;
  4640. //TW NEW CASES
  4641. case(MIX_ON_GRID):
  4642. break;
  4643. case(AUTOMIX):
  4644. ap->lo[0] = 0.0;
  4645. ap->hi[0] = 256.0;
  4646. break;
  4647. case(MIX_PAN):
  4648. ap->lo[PAN_PAN] = -MAX_PANNING;
  4649. ap->hi[PAN_PAN] = MAX_PANNING;
  4650. break;
  4651. case(MIX_AT_STEP):
  4652. ap->lo[MIX_STEP] = 0.0;
  4653. ap->hi[MIX_STEP] = 10000.0;
  4654. break;
  4655. case(SHUDDER):
  4656. ap->lo[SHUD_STARTTIME] = 0.0;
  4657. ap->hi[SHUD_STARTTIME] = duration;
  4658. ap->lo[SHUD_FRQ] = 0.1;
  4659. ap->hi[SHUD_FRQ] = 100.0;
  4660. ap->lo[SHUD_SCAT] = 0.0;
  4661. ap->hi[SHUD_SCAT] = 1.0;
  4662. ap->lo[SHUD_SPREAD] = 0.0;
  4663. ap->hi[SHUD_SPREAD] = 1.0;
  4664. ap->lo[SHUD_MINDEPTH] = 0.0;
  4665. ap->hi[SHUD_MINDEPTH] = 1.0;
  4666. ap->lo[SHUD_MAXDEPTH] = 0.0;
  4667. ap->hi[SHUD_MAXDEPTH] = 1.0;
  4668. ap->lo[SHUD_MINWIDTH] = 0.02;
  4669. ap->hi[SHUD_MINWIDTH] = duration;
  4670. ap->lo[SHUD_MAXWIDTH] = 0.02;
  4671. ap->hi[SHUD_MAXWIDTH] = duration;
  4672. break;
  4673. case(EQ):
  4674. switch(mode) {
  4675. case(FLT_PEAKING):
  4676. ap->lo[FLT_BW] = 0.001;
  4677. ap->hi[FLT_BW] = nyquist;
  4678. /* fall thro */
  4679. default:
  4680. ap->lo[FLT_BOOST] = FLT_MINDBGAIN;
  4681. ap->hi[FLT_BOOST] = FLT_MAXDBGAIN;
  4682. ap->lo[FLT_ONEFRQ] = FLT_MINFRQ;
  4683. ap->hi[FLT_ONEFRQ] = FLT_MAXFRQ;
  4684. ap->lo[FLT_PRESCALE] = FLT_MINEQPRESCALE;
  4685. ap->hi[FLT_PRESCALE] = FLT_MAXEQPRESCALE;
  4686. //TW NEW PARAM
  4687. ap->lo[FILT_TAIL] = 0.0;
  4688. ap->hi[FILT_TAIL] = FLT_TAIL;
  4689. break;
  4690. }
  4691. break;
  4692. case(LPHP):
  4693. ap->lo[FLT_GAIN] = MIN_DB_ON_16_BIT;
  4694. ap->hi[FLT_GAIN] = 0.0;
  4695. ap->lo[FLT_PRESCALE] = FLT_MINEQPRESCALE;
  4696. ap->hi[FLT_PRESCALE] = FLT_MAXEQPRESCALE;
  4697. //TW NEW PARAM
  4698. ap->lo[FILT_TAIL] = 0.0;
  4699. ap->hi[FILT_TAIL] = FLT_TAIL;
  4700. switch(mode) {
  4701. case(FLT_HZ):
  4702. ap->lo[FLT_PASSFRQ] = FLT_MINFRQ;
  4703. ap->hi[FLT_PASSFRQ] = FLT_MAXFRQ;
  4704. ap->lo[FLT_STOPFRQ] = FLT_MINFRQ;
  4705. ap->hi[FLT_STOPFRQ] = FLT_MAXFRQ;
  4706. break;
  4707. case(FLT_MIDI):
  4708. ap->lo[FLT_PASSFRQ] = unchecked_hztomidi(FLT_MINFRQ);
  4709. ap->hi[FLT_PASSFRQ] = MIDIMAX;
  4710. ap->lo[FLT_STOPFRQ] = unchecked_hztomidi(FLT_MINFRQ);
  4711. ap->hi[FLT_STOPFRQ] = MIDIMAX;
  4712. break;
  4713. default:
  4714. sprintf(errstr,"Unknown case for LPHP: set_param_ranges()\n");
  4715. return(PROGRAM_ERROR);
  4716. }
  4717. break;
  4718. case(FSTATVAR):
  4719. ap->lo[FLT_Q] = MIN_ACUITY; /* parametere is acutrally 1/Q */
  4720. ap->hi[FLT_Q] = MAX_ACUITY;
  4721. ap->lo[FLT_GAIN] = FLT_MINGAIN;
  4722. ap->hi[FLT_GAIN] = FLT_MAXGAIN;
  4723. ap->lo[FLT_ONEFRQ] = FLT_MINFRQ;
  4724. ap->hi[FLT_ONEFRQ] = FLT_MAXFRQ;
  4725. //TW NEW PARAM
  4726. ap->lo[FILT_TAIL] = 0.0;
  4727. ap->hi[FILT_TAIL] = FLT_TAIL;
  4728. break;
  4729. case(FLTBANKN):
  4730. ap->lo[FLT_Q] = MINQ;
  4731. ap->hi[FLT_Q] = MAXQ;
  4732. ap->lo[FLT_GAIN] = FLT_MINGAIN;
  4733. ap->hi[FLT_GAIN] = FLT_MAXGAIN;
  4734. //TW NEW PARAM
  4735. ap->lo[FILT_TAIL] = 0.0;
  4736. ap->hi[FILT_TAIL] = FLT_TAIL;
  4737. /* fall thro */
  4738. case(FLTBANKC):
  4739. ap->lo[FLT_LOFRQ] = FLT_MINFRQ;
  4740. ap->hi[FLT_LOFRQ] = FLT_MAXFRQ;
  4741. ap->lo[FLT_HIFRQ] = FLT_MINFRQ;
  4742. ap->hi[FLT_HIFRQ] = FLT_MAXFRQ;
  4743. switch(mode) {
  4744. case(FLT_LINOFFSET):
  4745. ap->lo[FLT_OFFSET] = -FLT_MAXFRQ;
  4746. ap->hi[FLT_OFFSET] = FLT_MAXFRQ;
  4747. break;
  4748. case(FLT_EQUALSPAN):
  4749. ap->lo[FLT_INCOUNT] = 1.0;
  4750. ap->hi[FLT_INCOUNT] = (double)FLT_MAX_FILTERS;
  4751. break;
  4752. case(FLT_EQUALINT):
  4753. ap->lo[FLT_INTSIZE] = FLT_MININT;
  4754. ap->hi[FLT_INTSIZE] = FLT_MAXINT;
  4755. break;
  4756. }
  4757. ap->lo[FLT_RANDFACT] = 0.0;
  4758. ap->hi[FLT_RANDFACT] = 1.0;
  4759. break;
  4760. case(FLTBANKU):
  4761. ap->lo[FLT_Q] = MINQ;
  4762. ap->hi[FLT_Q] = MAXQ;
  4763. ap->lo[FLT_GAIN] = FLT_MINGAIN;
  4764. ap->hi[FLT_GAIN] = FLT_MAXGAIN;
  4765. ap->lo[FILT_TAIL] = 0.0;
  4766. ap->hi[FILT_TAIL] = FLT_TAIL;
  4767. break;
  4768. case(FLTBANKV):
  4769. ap->lo[FLT_Q] = MINQ;
  4770. ap->hi[FLT_Q] = MAXQ;
  4771. ap->lo[FLT_GAIN] = FLT_MINGAIN;
  4772. ap->hi[FLT_GAIN] = FLT_MAXGAIN;
  4773. ap->lo[FLT_HARMCNT] = 1.0;
  4774. ap->hi[FLT_HARMCNT] = FLT_MAXHARMS;
  4775. ap->lo[FLT_ROLLOFF] = MIN_DB_ON_16_BIT;
  4776. ap->hi[FLT_ROLLOFF] = 0.0;
  4777. ap->lo[FILT_TAILV] = 0.0;
  4778. ap->hi[FILT_TAILV] = FLT_TAIL;
  4779. break;
  4780. case(FLTBANKV2):
  4781. ap->lo[FLT_Q] = MINQ;
  4782. ap->hi[FLT_Q] = MAXQ;
  4783. ap->lo[FLT_GAIN] = FLT_MINGAIN;
  4784. ap->hi[FLT_GAIN] = FLT_MAXGAIN;
  4785. ap->lo[FILT_TAILV] = 0.0;
  4786. ap->hi[FILT_TAILV] = FLT_TAIL;
  4787. break;
  4788. case(FLTSWEEP):
  4789. ap->lo[FLT_Q] = MIN_ACUITY;
  4790. ap->hi[FLT_Q] = MAX_ACUITY;
  4791. ap->lo[FLT_GAIN] = FLT_MINGAIN;
  4792. ap->hi[FLT_GAIN] = FLT_MAXGAIN;
  4793. ap->lo[FLT_LOFRQ] = FLT_MINFRQ;
  4794. ap->hi[FLT_LOFRQ] = FLT_MAXFRQ;
  4795. ap->lo[FLT_HIFRQ] = FLT_MINFRQ;
  4796. ap->hi[FLT_HIFRQ] = FLT_MAXFRQ;
  4797. ap->lo[FLT_SWPFRQ] = 0.0;
  4798. ap->hi[FLT_SWPFRQ] = FLT_MAXSWEEP;
  4799. ap->lo[FLT_SWPPHASE] = 0.0;
  4800. ap->hi[FLT_SWPPHASE] = 1.0;
  4801. //TW NEW PARAM
  4802. ap->lo[FILT_TAIL] = 0.0;
  4803. ap->hi[FILT_TAIL] = FLT_TAIL;
  4804. break;
  4805. case(FLTITER):
  4806. ap->lo[FLT_Q] = MINQ;
  4807. ap->hi[FLT_Q] = MAXQ;
  4808. ap->lo[FLT_GAIN] = FLT_MINGAIN;
  4809. ap->hi[FLT_GAIN] = FLT_MAXGAIN;
  4810. ap->lo[FLT_DELAY] = FLTERR;
  4811. ap->hi[FLT_DELAY] = FLT_MAXDELAY;
  4812. ap->lo[FLT_OUTDUR] = duration;
  4813. ap->hi[FLT_OUTDUR] = BIG_TIME;
  4814. ap->lo[FLT_PRESCALE] = FLT_MINPRESCALE;
  4815. ap->hi[FLT_PRESCALE] = FLT_MAXPRESCALE;
  4816. ap->lo[FLT_RANDDEL] = 0.0;
  4817. ap->hi[FLT_RANDDEL] = 1.0;
  4818. ap->lo[FLT_PSHIFT] = 0.0;
  4819. ap->hi[FLT_PSHIFT] = FLT_MAX_PSHIFT; /* semitones */
  4820. ap->lo[FLT_AMPSHIFT] = 0.0;
  4821. ap->hi[FLT_AMPSHIFT] = 1.0;
  4822. break;
  4823. case(ALLPASS):
  4824. ap->lo[FLT_GAIN] = -1.0;
  4825. ap->hi[FLT_GAIN] = 1.0;
  4826. ap->lo[FLT_DELAY] = (1.0/sr) * SECS_TO_MS;
  4827. ap->hi[FLT_DELAY] = (duration/2.0) * SECS_TO_MS;
  4828. ap->lo[FLT_PRESCALE] = FLT_MINPRESCALE;
  4829. ap->hi[FLT_PRESCALE] = FLT_MAXPRESCALE;
  4830. //TW NEW PARAM
  4831. ap->lo[FILT_TAIL] = 0.0;
  4832. ap->hi[FILT_TAIL] = FLT_TAIL;
  4833. break;
  4834. case(MOD_LOUDNESS):
  4835. switch(mode) {
  4836. case(LOUDNESS_GAIN):
  4837. ap->lo[LOUD_GAIN] = 0.0;
  4838. ap->hi[LOUD_GAIN] = (double)MAXSHORT;
  4839. break;
  4840. case(LOUDNESS_DBGAIN):
  4841. ap->lo[LOUD_GAIN] = MIN_DB_ON_16_BIT;
  4842. ap->hi[LOUD_GAIN] = /*0.0*/MAX_DB_ON_16_BIT;
  4843. break;
  4844. case(LOUDNESS_NORM):
  4845. case(LOUDNESS_SET):
  4846. ap->lo[LOUD_LEVEL] = 1.0/(double)MAXSHORT;
  4847. ap->hi[LOUD_LEVEL] = 1.0;
  4848. break;
  4849. }
  4850. break;
  4851. case(MOD_SPACE):
  4852. switch(mode) {
  4853. case(MOD_PAN):
  4854. ap->lo[PAN_PAN] = -MAX_PANNING;
  4855. ap->hi[PAN_PAN] = MAX_PANNING;
  4856. ap->lo[PAN_PRESCALE] = 1.0/(double)MAXSHORT;
  4857. ap->hi[PAN_PRESCALE] = 2.0;
  4858. break;
  4859. case(MOD_NARROW):
  4860. ap->lo[NARROW] = -1.0;
  4861. ap->hi[NARROW] = 1.0;
  4862. break;
  4863. }
  4864. break;
  4865. //TW NEW CASES
  4866. case(SCALED_PAN):
  4867. ap->lo[PAN_PAN] = -MAX_PANNING;
  4868. ap->hi[PAN_PAN] = MAX_PANNING;
  4869. ap->lo[PAN_PRESCALE] = 1.0/(double)MAXSHORT;
  4870. ap->hi[PAN_PRESCALE] = 2.0;
  4871. break;
  4872. case(FIND_PANPOS):
  4873. ap->lo[PAN_PAN] = 0.0;
  4874. ap->hi[PAN_PAN] = duration;
  4875. break;
  4876. case(MOD_PITCH):
  4877. switch(mode) {
  4878. case(MOD_TRANSPOS):
  4879. case(MOD_TRANSPOS_INFO):
  4880. ap->lo[VTRANS_TRANS] = MIN_TRANSPOS;
  4881. ap->hi[VTRANS_TRANS] = MAX_TRANSPOS;
  4882. break;
  4883. case(MOD_TRANSPOS_SEMIT):
  4884. case(MOD_TRANSPOS_SEMIT_INFO):
  4885. ap->lo[VTRANS_TRANS] = EIGHT_8VA_DOWN;
  4886. ap->hi[VTRANS_TRANS] = EIGHT_8VA_UP;
  4887. break;
  4888. case(MOD_ACCEL):
  4889. ap->lo[ACCEL_ACCEL] = MIN_ACCEL;
  4890. ap->hi[ACCEL_ACCEL] = MAX_ACCEL;
  4891. ap->lo[ACCEL_GOALTIME] = MINTIME_ACCEL;
  4892. ap->hi[ACCEL_GOALTIME] = duration;
  4893. ap->lo[ACCEL_STARTTIME] = 0.0;
  4894. ap->hi[ACCEL_STARTTIME] = duration - MINTIME_ACCEL;
  4895. break;
  4896. case(MOD_VIBRATO):
  4897. ap->lo[VIB_FRQ] = 0.0;
  4898. ap->hi[VIB_FRQ] = MAX_VIB_FRQ;
  4899. ap->lo[VIB_DEPTH] = 0.0;
  4900. ap->hi[VIB_DEPTH] = EIGHT_8VA_UP;
  4901. break;
  4902. }
  4903. break;
  4904. case(MOD_REVECHO):
  4905. switch(mode) {
  4906. case(MOD_STADIUM):
  4907. ap->lo[STAD_PREGAIN] = 1.0/(double)MAXSHORT;
  4908. ap->hi[STAD_PREGAIN] = 1.0;
  4909. ap->lo[STAD_ROLLOFF] = 1.0/(double)MAXSHORT;
  4910. ap->hi[STAD_ROLLOFF] = 1.0;
  4911. ap->lo[STAD_SIZE] = (DFLT_STAD_DELTIME * 2.0)/srate;
  4912. ap->hi[STAD_SIZE] = MAX_STAD_DELAY; /* arbitrary */
  4913. ap->lo[STAD_ECHOCNT] = (double)2;
  4914. ap->hi[STAD_ECHOCNT] = (double)MAX_ECHOCNT;
  4915. break;
  4916. case(MOD_DELAY):
  4917. case(MOD_VDELAY):
  4918. ap->lo[DELAY_LFOMOD] = 0.0;
  4919. ap->hi[DELAY_LFOMOD] = 1.0;
  4920. ap->lo[DELAY_LFOFRQ] = -50.0;
  4921. ap->hi[DELAY_LFOFRQ] = 50.0;
  4922. ap->lo[DELAY_LFOPHASE] = 0.0;
  4923. ap->hi[DELAY_LFOPHASE] = 1.0;
  4924. ap->lo[DELAY_LFODELAY] = 0.0;
  4925. ap->hi[DELAY_LFODELAY] = duration;
  4926. ap->lo[DELAY_DELAY] = (1.0/sr) * SECS_TO_MS;
  4927. ap->hi[DELAY_DELAY] = MAX_DELAY;
  4928. ap->lo[DELAY_MIX] = 0.0;
  4929. ap->hi[DELAY_MIX] = 1.0;
  4930. ap->lo[DELAY_FEEDBACK] = -1.0;
  4931. ap->hi[DELAY_FEEDBACK] = 1.0;
  4932. ap->lo[DELAY_TRAILTIME] = 0.0;
  4933. ap->hi[DELAY_TRAILTIME] = 30.0;
  4934. ap->lo[DELAY_PRESCALE] = 1.0/(double)MAXSHORT;
  4935. ap->hi[DELAY_PRESCALE] = 1.0;
  4936. if(mode==MOD_VDELAY) {
  4937. ap->lo[DELAY_SEED] = 0.0;
  4938. ap->hi[DELAY_SEED] = 256.0;
  4939. }
  4940. break;
  4941. }
  4942. break;
  4943. case(MOD_RADICAL):
  4944. switch(mode) {
  4945. case(MOD_REVERSE):
  4946. break;
  4947. case(MOD_SHRED):
  4948. ap->lo[SHRED_CNT] = 1.0;
  4949. ap->hi[SHRED_CNT] = (double)MAXSHRED;
  4950. ap->lo[SHRED_CHLEN] = (double)((SHRED_SPLICELEN * 3)/(double)srate);
  4951. ap->hi[SHRED_CHLEN] = (duration/2)-FLTERR;
  4952. ap->lo[SHRED_SCAT] = 0.0;
  4953. ap->hi[SHRED_SCAT] = (double)MAX_SHR_SCATTER;
  4954. break;
  4955. case(MOD_SCRUB):
  4956. ap->lo[SCRUB_TOTALDUR] = (double)channels/(double)srate;
  4957. ap->hi[SCRUB_TOTALDUR] = BIG_TIME;
  4958. ap->lo[SCRUB_MINSPEED] = SCRUB_SPEED_MIN;
  4959. ap->hi[SCRUB_MINSPEED] = SCRUB_SPEED_MAX;
  4960. ap->lo[SCRUB_MAXSPEED] = SCRUB_SPEED_MIN;
  4961. ap->hi[SCRUB_MAXSPEED] = SCRUB_SPEED_MAX;
  4962. ap->lo[SCRUB_STARTRANGE] = 0.0;
  4963. ap->hi[SCRUB_STARTRANGE] = duration - ((double)channels/(double)srate);
  4964. ap->lo[SCRUB_ESTART] = (double)channels/(double)srate;
  4965. ap->hi[SCRUB_ESTART] = duration;
  4966. break;
  4967. case(MOD_LOBIT):
  4968. ap->lo[LOBIT_BRES] = 1.0;
  4969. ap->hi[LOBIT_BRES] = (double)MAX_BIT_DIV;
  4970. ap->lo[LOBIT_TSCAN] = 1.0;
  4971. ap->hi[LOBIT_TSCAN] = (double)MAX_SRATE_DIV;
  4972. break;
  4973. case(MOD_LOBIT2):
  4974. ap->lo[LOBIT_BRES] = 1.0;
  4975. ap->hi[LOBIT_BRES] = (double)MAX_BIT_DIV;
  4976. break;
  4977. case(MOD_RINGMOD):
  4978. ap->lo[RM_FRQ] = MIN_RING_MOD_FRQ;
  4979. ap->hi[RM_FRQ] = nyquist;
  4980. break;
  4981. case(MOD_CROSSMOD):
  4982. break;
  4983. }
  4984. break;
  4985. case(BRASSAGE):
  4986. ap->lo[GRS_VELOCITY] = 0.0;
  4987. ap->hi[GRS_VELOCITY] = GRS_MAX_VELOCITY;
  4988. switch(mode) {
  4989. case(GRS_REVERB):
  4990. ap->lo[GRS_DENSITY] = GRS_DEFAULT_DENSITY;
  4991. ap->hi[GRS_DENSITY] = GRS_MAX_DENSITY;
  4992. break;
  4993. case(GRS_GRANULATE):
  4994. ap->lo[GRS_DENSITY] = FLTERR;
  4995. ap->hi[GRS_DENSITY] = GRS_DEFAULT_DENSITY;
  4996. break;
  4997. default:
  4998. ap->lo[GRS_DENSITY] = FLTERR;
  4999. ap->hi[GRS_DENSITY] = GRS_MAX_DENSITY;
  5000. break;
  5001. }
  5002. ap->lo[GRS_HVELOCITY] = 0.0;
  5003. ap->hi[GRS_HVELOCITY] = MAX_GRS_HVELOCITY;
  5004. ap->lo[GRS_HDENSITY] = (1.0/sr);
  5005. ap->hi[GRS_HDENSITY] = (double)MAXSHORT/2.0;
  5006. switch(mode) {
  5007. case(GRS_PITCHSHIFT):
  5008. case(GRS_TIMESTRETCH):
  5009. case(GRS_SCRAMBLE):
  5010. ap->lo[GRS_GRAINSIZE] = GRS_DEFAULT_SPLICELEN * 2.0;
  5011. ap->lo[GRS_HGRAINSIZE] = GRS_DEFAULT_SPLICELEN * 2.0;
  5012. default:
  5013. ap->lo[GRS_GRAINSIZE] = GRS_MIN_SPLICELEN * 2.0;
  5014. ap->lo[GRS_HGRAINSIZE] = GRS_MIN_SPLICELEN * 2.0;
  5015. }
  5016. ap->hi[GRS_GRAINSIZE] = (infilesize_in_samps/sr) * SECS_TO_MS;
  5017. ap->hi[GRS_HGRAINSIZE] = (infilesize_in_samps/sr) * SECS_TO_MS;
  5018. switch(mode) {
  5019. case(GRS_REVERB):
  5020. ap->lo[GRS_PITCH] = -GRS_DEFAULT_REVERB_PSHIFT;
  5021. ap->hi[GRS_PITCH] = GRS_DEFAULT_REVERB_PSHIFT;
  5022. break;
  5023. default:
  5024. ap->hi[GRS_PITCH] = LOG2(nyquist/MIN_LIKELY_PITCH) * SEMITONES_PER_OCTAVE;
  5025. ap->lo[GRS_PITCH] = -(ap->hi[GRS_PITCH]);
  5026. break;
  5027. }
  5028. ap->lo[GRS_AMP] = 0.0;
  5029. ap->hi[GRS_AMP] = 1.0;
  5030. ap->lo[GRS_SPACE] = 0.0;
  5031. ap->hi[GRS_SPACE] = 16.0;
  5032. ap->lo[GRS_BSPLICE] = GRS_MIN_SPLICELEN;
  5033. ap->hi[GRS_BSPLICE] = ap->hi[GRS_GRAINSIZE]/2.0;
  5034. ap->lo[GRS_ESPLICE] = GRS_MIN_SPLICELEN;
  5035. ap->hi[GRS_ESPLICE] = ap->hi[GRS_GRAINSIZE]/2.0;
  5036. //TW UPDATE
  5037. // ap->hi[GRS_HPITCH] = LOG2(nyquist/MIN_LIKELY_PITCH);
  5038. ap->hi[GRS_HPITCH] = LOG2(nyquist/MIN_LIKELY_PITCH) * SEMITONES_PER_OCTAVE;
  5039. ap->lo[GRS_HPITCH] = -(ap->hi[GRS_HPITCH]);
  5040. ap->lo[GRS_HAMP] = 0.0;
  5041. ap->hi[GRS_HAMP] = 1.0;
  5042. ap->lo[GRS_HSPACE] = 0.0;
  5043. ap->hi[GRS_HSPACE] = 16.0;
  5044. ap->lo[GRS_HBSPLICE] = GRS_MIN_SPLICELEN;
  5045. ap->hi[GRS_HBSPLICE] = ap->hi[GRS_GRAINSIZE]/2.0;
  5046. ap->lo[GRS_HESPLICE] = GRS_MIN_SPLICELEN;
  5047. ap->hi[GRS_HESPLICE] = ap->hi[GRS_GRAINSIZE]/2.0;
  5048. switch(mode) {
  5049. case(GRS_REVERB):
  5050. ap->lo[GRS_SRCHRANGE] = 0.0;
  5051. ap->hi[GRS_SRCHRANGE] = GRS_DEFAULT_REVERB_SRCHRANGE;
  5052. break;
  5053. case(GRS_SCRAMBLE):
  5054. case(GRS_BRASSAGE):
  5055. case(GRS_FULL_MONTY):
  5056. ap->lo[GRS_SRCHRANGE] = 0.0;
  5057. ap->hi[GRS_SRCHRANGE] = (duration * 2.0) * SECS_TO_MS;
  5058. break;
  5059. }
  5060. switch(mode) {
  5061. case(GRS_BRASSAGE):
  5062. case(GRS_FULL_MONTY):
  5063. ap->lo[GRS_SCATTER] = 0.0;
  5064. ap->hi[GRS_SCATTER] = 1.0;
  5065. ap->lo[GRS_OUTLEN] = 0.0;
  5066. ap->hi[GRS_OUTLEN] = BIG_TIME;
  5067. ap->lo[GRS_CHAN_TO_XTRACT] = -16.0;
  5068. ap->hi[GRS_CHAN_TO_XTRACT] = (double)16.0;
  5069. break;
  5070. }
  5071. break;
  5072. case(SAUSAGE):
  5073. ap->lo[GRS_VELOCITY] = 0.0;
  5074. ap->hi[GRS_VELOCITY] = GRS_MAX_VELOCITY;
  5075. ap->lo[GRS_DENSITY] = FLTERR;
  5076. ap->hi[GRS_DENSITY] = GRS_MAX_DENSITY;
  5077. ap->lo[GRS_HVELOCITY] = 0.0;
  5078. ap->hi[GRS_HVELOCITY] = MAX_GRS_HVELOCITY;
  5079. ap->lo[GRS_HDENSITY] = (1.0/sr);
  5080. ap->hi[GRS_HDENSITY] = (double)MAXSHORT/2.0;
  5081. ap->lo[GRS_GRAINSIZE] = GRS_MIN_SPLICELEN * 2.0;
  5082. ap->lo[GRS_HGRAINSIZE] = GRS_MIN_SPLICELEN * 2.0;
  5083. ap->hi[GRS_GRAINSIZE] = (infilesize_in_samps/sr) * SECS_TO_MS;
  5084. ap->hi[GRS_HGRAINSIZE] = (infilesize_in_samps/sr) * SECS_TO_MS;
  5085. ap->hi[GRS_PITCH] = LOG2(nyquist/MIN_LIKELY_PITCH) * SEMITONES_PER_OCTAVE;
  5086. ap->lo[GRS_PITCH] = -(ap->hi[GRS_PITCH]);
  5087. ap->lo[GRS_AMP] = 0.0;
  5088. ap->hi[GRS_AMP] = 1.0;
  5089. ap->lo[GRS_SPACE] = 0.0;
  5090. ap->hi[GRS_SPACE] = 16.0;
  5091. ap->lo[GRS_BSPLICE] = GRS_MIN_SPLICELEN;
  5092. ap->hi[GRS_BSPLICE] = ap->hi[GRS_GRAINSIZE]/2.0;
  5093. ap->lo[GRS_ESPLICE] = GRS_MIN_SPLICELEN;
  5094. ap->hi[GRS_ESPLICE] = ap->hi[GRS_GRAINSIZE]/2.0;
  5095. //TW REVISION
  5096. // ap->hi[GRS_HPITCH] = LOG2(nyquist/MIN_LIKELY_PITCH);
  5097. ap->hi[GRS_HPITCH] = LOG2(nyquist/MIN_LIKELY_PITCH) * SEMITONES_PER_OCTAVE;
  5098. ap->lo[GRS_HPITCH] = -(ap->hi[GRS_HPITCH]);
  5099. ap->lo[GRS_HAMP] = 0.0;
  5100. ap->hi[GRS_HAMP] = 1.0;
  5101. ap->lo[GRS_HSPACE] = 0.0;
  5102. ap->hi[GRS_HSPACE] = 16.0;
  5103. ap->lo[GRS_HBSPLICE] = GRS_MIN_SPLICELEN;
  5104. ap->hi[GRS_HBSPLICE] = ap->hi[GRS_GRAINSIZE]/2.0;
  5105. ap->lo[GRS_HESPLICE] = GRS_MIN_SPLICELEN;
  5106. ap->hi[GRS_HESPLICE] = ap->hi[GRS_GRAINSIZE]/2.0;
  5107. ap->lo[GRS_SRCHRANGE] = 0.0;
  5108. ap->hi[GRS_SRCHRANGE] = (duration * 2.0) * SECS_TO_MS;
  5109. ap->lo[GRS_SCATTER] = 0.0;
  5110. ap->hi[GRS_SCATTER] = 1.0;
  5111. ap->lo[GRS_OUTLEN] = 0.0;
  5112. ap->hi[GRS_OUTLEN] = BIG_TIME;
  5113. ap->lo[GRS_CHAN_TO_XTRACT] = -16.0;
  5114. ap->hi[GRS_CHAN_TO_XTRACT] = 16.0;
  5115. break;
  5116. case(PVOC_ANAL):
  5117. ap->lo[PVOC_CHANS_INPUT] = (double)2;
  5118. ap->hi[PVOC_CHANS_INPUT] = (double)MAX_PVOC_CHANS;
  5119. ap->lo[PVOC_WINOVLP_INPUT] = (double)1;
  5120. ap->hi[PVOC_WINOVLP_INPUT] = (double)4;
  5121. break;
  5122. case(PVOC_SYNTH):
  5123. break;
  5124. case(PVOC_EXTRACT):
  5125. ap->lo[PVOC_CHANS_INPUT] = (double)2;
  5126. ap->hi[PVOC_CHANS_INPUT] = (double)MAX_PVOC_CHANS;
  5127. ap->lo[PVOC_WINOVLP_INPUT] = (double)1;
  5128. ap->hi[PVOC_WINOVLP_INPUT] = (double)4;
  5129. ap->lo[PVOC_CHANSLCT_INPUT] = 0.0;
  5130. ap->hi[PVOC_CHANSLCT_INPUT] = 2.0;
  5131. ap->lo[PVOC_LOCHAN_INPUT] = 0.0;
  5132. ap->hi[PVOC_LOCHAN_INPUT] = (double)(MAX_PVOC_CHANS/2);
  5133. ap->lo[PVOC_HICHAN_INPUT] = 0.0;
  5134. ap->hi[PVOC_HICHAN_INPUT] = (double)(MAX_PVOC_CHANS/2);
  5135. break;
  5136. /* TEMPORARY TEST ROUTINE */
  5137. case(WORDCNT):
  5138. break;
  5139. /* TEMPORARY TEST ROUTINE */
  5140. case(EDIT_CUT):
  5141. ap->lo[CUT_CUT] = 0.0;
  5142. switch(mode) {
  5143. case(EDIT_SECS): ap->hi[CUT_CUT] = duration; break;
  5144. case(EDIT_SAMPS): ap->hi[CUT_CUT] = (double)(insams); break;
  5145. case(EDIT_STSAMPS): ap->hi[CUT_CUT] = (double)(insams/channels); break;
  5146. }
  5147. ap->lo[CUT_END] = 0.0;
  5148. switch(mode) {
  5149. case(EDIT_SECS): ap->hi[CUT_END] = duration; break;
  5150. case(EDIT_SAMPS): ap->hi[CUT_END] = (double)(insams); break;
  5151. case(EDIT_STSAMPS): ap->hi[CUT_END] = (double)(insams/channels); break;
  5152. }
  5153. ap->lo[CUT_SPLEN] = 0.0;
  5154. ap->hi[CUT_SPLEN] = EDIT_SPLICEMAX;
  5155. break;
  5156. case(EDIT_CUTEND):
  5157. ap->lo[CUT_CUT] = 0.0;
  5158. switch(mode) {
  5159. case(EDIT_SECS): ap->hi[CUT_CUT] = duration; break;
  5160. case(EDIT_SAMPS): ap->hi[CUT_CUT] = (double)(insams); break;
  5161. case(EDIT_STSAMPS): ap->hi[CUT_CUT] = (double)(insams/channels); break;
  5162. }
  5163. ap->lo[CUT_SPLEN] = 0.0;
  5164. ap->hi[CUT_SPLEN] = EDIT_SPLICEMAX;
  5165. break;
  5166. case(MANY_ZCUTS):
  5167. break;
  5168. case(EDIT_ZCUT):
  5169. ap->lo[CUT_CUT] = 0.0;
  5170. switch(mode) {
  5171. case(EDIT_SECS): ap->hi[CUT_CUT] = duration; break;
  5172. case(EDIT_SAMPS): ap->hi[CUT_CUT] = (double)(insams); break;
  5173. case(EDIT_STSAMPS): ap->hi[CUT_CUT] = (double)(insams/channels); break;
  5174. }
  5175. ap->lo[CUT_END] = 0.0;
  5176. switch(mode) {
  5177. case(EDIT_SECS): ap->hi[CUT_END] = duration; break;
  5178. case(EDIT_SAMPS): ap->hi[CUT_END] = (double)(insams); break;
  5179. case(EDIT_STSAMPS): ap->hi[CUT_END] = (double)(insams/channels); break;
  5180. }
  5181. break;
  5182. case(EDIT_EXCISE):
  5183. ap->lo[CUT_CUT] = 0.0;
  5184. switch(mode) {
  5185. case(EDIT_SECS): ap->hi[CUT_CUT] = duration; break;
  5186. case(EDIT_SAMPS): ap->hi[CUT_CUT] = (double)(insams); break;
  5187. case(EDIT_STSAMPS): ap->hi[CUT_CUT] = (double)(insams/channels); break;
  5188. }
  5189. ap->lo[CUT_END] = 0.0;
  5190. switch(mode) {
  5191. case(EDIT_SECS): ap->hi[CUT_END] = duration; break;
  5192. case(EDIT_SAMPS): ap->hi[CUT_END] = (double)(insams); break;
  5193. case(EDIT_STSAMPS): ap->hi[CUT_END] = (double)(insams/channels); break;
  5194. }
  5195. ap->lo[CUT_SPLEN] = 0.0;
  5196. ap->hi[CUT_SPLEN] = EDIT_SPLICEMAX;
  5197. break;
  5198. case(EDIT_EXCISEMANY):
  5199. case(INSERTSIL_MANY):
  5200. ap->lo[CUT_SPLEN] = 0.0;
  5201. ap->hi[CUT_SPLEN] = EDIT_SPLICEMAX;
  5202. break;
  5203. case(EDIT_INSERT):
  5204. ap->lo[CUT_CUT] = 0.0;
  5205. switch(mode) {
  5206. case(EDIT_SECS): ap->hi[CUT_CUT] = duration; break;
  5207. case(EDIT_SAMPS): ap->hi[CUT_CUT] = (double)(insams); break;
  5208. case(EDIT_STSAMPS): ap->hi[CUT_CUT] = (double)(insams/channels); break;
  5209. }
  5210. ap->lo[CUT_SPLEN] = 0.0;
  5211. ap->hi[CUT_SPLEN] = EDIT_SPLICEMAX;
  5212. ap->lo[INSERT_LEVEL] = FLTERR;
  5213. ap->hi[INSERT_LEVEL] = EDIT_MAXGAIN;
  5214. break;
  5215. //TW NEW CASE
  5216. case(EDIT_INSERT2):
  5217. ap->lo[CUT_CUT] = 0.0;
  5218. ap->hi[CUT_CUT] = duration;
  5219. ap->lo[CUT_END] = 0.0;
  5220. ap->hi[CUT_END] = duration;
  5221. ap->lo[CUT_SPLEN] = 0.0;
  5222. ap->hi[CUT_SPLEN] = EDIT_SPLICEMAX;
  5223. ap->lo[INSERT_LEVEL] = FLTERR;
  5224. ap->hi[INSERT_LEVEL] = EDIT_MAXGAIN;
  5225. break;
  5226. case(EDIT_INSERTSIL):
  5227. ap->lo[CUT_CUT] = 0.0;
  5228. switch(mode) {
  5229. case(EDIT_SECS): ap->hi[CUT_CUT] = duration; break;
  5230. case(EDIT_SAMPS): ap->hi[CUT_CUT] = (double)(insams); break;
  5231. case(EDIT_STSAMPS): ap->hi[CUT_CUT] = (double)(insams/channels); break;
  5232. }
  5233. ap->lo[CUT_END] = 0.0;
  5234. switch(mode) {
  5235. case(EDIT_SECS): ap->hi[CUT_END] = duration; break;
  5236. case(EDIT_SAMPS): ap->hi[CUT_END] = (double)(insams); break;
  5237. case(EDIT_STSAMPS): ap->hi[CUT_END] = (double)(insams/channels); break;
  5238. }
  5239. ap->lo[CUT_SPLEN] = 0.0;
  5240. ap->hi[CUT_SPLEN] = EDIT_SPLICEMAX;
  5241. break;
  5242. case(JOIN_SEQ):
  5243. ap->lo[MAX_LEN] = 1;
  5244. ap->hi[MAX_LEN] = 32767;
  5245. /* fall thro */
  5246. case(EDIT_JOIN):
  5247. case(JOIN_SEQDYN):
  5248. ap->lo[CUT_SPLEN] = 0.0;
  5249. ap->hi[CUT_SPLEN] = EDIT_SPLICEMAX;
  5250. break;
  5251. case(HOUSE_COPY):
  5252. switch(mode) {
  5253. case(COPYSF):
  5254. break;
  5255. case(DUPL):
  5256. ap->lo[COPY_CNT] = 1.0;
  5257. ap->hi[COPY_CNT] = (double)MAXDUPL;
  5258. break;
  5259. }
  5260. break;
  5261. case(HOUSE_DEL):
  5262. break;
  5263. case(HOUSE_CHANS):
  5264. switch(mode) {
  5265. case(HOUSE_CHANNEL):
  5266. ap->lo[CHAN_NO] = 1.0;
  5267. ap->hi[CHAN_NO] = (double)channels;
  5268. break;
  5269. case(HOUSE_ZCHANNEL):
  5270. ap->lo[CHAN_NO] = 1.0;
  5271. ap->hi[CHAN_NO] = (double)channels;
  5272. break;
  5273. case(HOUSE_CHANNELS):
  5274. case(STOM):
  5275. case(MTOS):
  5276. break;
  5277. }
  5278. break;
  5279. case(HOUSE_BUNDLE):
  5280. break;
  5281. case(HOUSE_SORT):
  5282. switch(mode) {
  5283. case(BY_DURATION):
  5284. case(BY_LOG_DUR):
  5285. ap->lo[SORT_SMALL] = MIN_SORT_DUR;
  5286. ap->hi[SORT_SMALL] = MAX_SORT_DUR;
  5287. ap->lo[SORT_LARGE] = MIN_SORT_DUR;
  5288. ap->hi[SORT_LARGE] = MAX_SORT_DUR;
  5289. if(mode==BY_DURATION) {
  5290. ap->lo[SORT_STEP] = MIN_SORT_STEP;
  5291. ap->hi[SORT_STEP] = MAX_SORT_STEP;
  5292. } else {
  5293. ap->lo[SORT_STEP] = MIN_SORT_LSTEP;
  5294. ap->hi[SORT_STEP] = MAX_SORT_LSTEP;
  5295. }
  5296. break;
  5297. }
  5298. break;
  5299. case(HOUSE_SPEC):
  5300. switch(mode) {
  5301. case(HOUSE_REPROP):
  5302. ap->lo[HSPEC_CHANS] = (double)1;
  5303. ap->hi[HSPEC_CHANS] = (double)MAX_SNDFILE_OUTCHANS;
  5304. ap->lo[HSPEC_TYPE] = (double)SAMP_SHORT;
  5305. ap->hi[HSPEC_TYPE] = (double)SAMP_FLOAT;
  5306. /* fall thro */
  5307. case(HOUSE_RESAMPLE):
  5308. ap->lo[HSPEC_SRATE] = (double)16000;
  5309. ap->hi[HSPEC_SRATE] = (double)/*48000*/96000; /*RWD 4:05 */
  5310. break;
  5311. default:
  5312. break;
  5313. }
  5314. break;
  5315. case(HOUSE_EXTRACT):
  5316. switch(mode) {
  5317. case(HOUSE_CUTGATE):
  5318. ap->lo[CUTGATE_SPLEN] = CUTGATE_MINSPLICE;
  5319. ap->hi[CUTGATE_SPLEN] = CUTGATE_MAXSPLICE;
  5320. ap->lo[CUTGATE_SUSTAIN] = 0.0;
  5321. ap->hi[CUTGATE_SUSTAIN] = (double)CUTGATE_MAX_SUSTAIN;
  5322. /* fall thro */
  5323. case(HOUSE_ONSETS):
  5324. ap->lo[CUTGATE_GATE] = 0.0;
  5325. ap->hi[CUTGATE_GATE] = 1.0;
  5326. ap->lo[CUTGATE_ENDGATE] = 0.0;
  5327. ap->hi[CUTGATE_ENDGATE] = 1.0;
  5328. ap->lo[CUTGATE_THRESH] = 0.0;
  5329. ap->hi[CUTGATE_THRESH] = 1.0;
  5330. ap->lo[CUTGATE_BAKTRAK] = 0.0;
  5331. ap->hi[CUTGATE_BAKTRAK] = (double)CUTGATE_MAXBAKTRAK;
  5332. ap->lo[CUTGATE_INITLEVEL]= 0.0;
  5333. ap->hi[CUTGATE_INITLEVEL]= 1.0;
  5334. ap->lo[CUTGATE_MINLEN] = 0.0;
  5335. ap->hi[CUTGATE_MINLEN] = duration;
  5336. ap->lo[CUTGATE_WINDOWS] = 0.0;
  5337. ap->hi[CUTGATE_WINDOWS] = (double)CUTGATE_MAXWINDOWS;
  5338. break;
  5339. case(HOUSE_CUTGATE_PREVIEW):
  5340. break;
  5341. case(HOUSE_TOPNTAIL):
  5342. ap->lo[TOPN_GATE] = 0.0;
  5343. ap->hi[TOPN_GATE] = 1.0;
  5344. // TW Mar 21: 2011
  5345. ap->lo[TOPN_SPLEN] = 0;
  5346. ap->hi[TOPN_SPLEN] = CUTGATE_MAXSPLICE;
  5347. break;
  5348. case(HOUSE_RECTIFY):
  5349. ap->lo[RECTIFY_SHIFT] = -1.0;
  5350. ap->hi[RECTIFY_SHIFT] = 1.0;
  5351. break;
  5352. }
  5353. break;
  5354. case(TOPNTAIL_CLICKS):
  5355. ap->lo[TOPN_GATE] = 0.0;
  5356. ap->hi[TOPN_GATE] = 1.0;
  5357. ap->lo[TOPN_SPLEN] = 0.0;
  5358. ap->hi[TOPN_SPLEN] = CUTGATE_MAXSPLICE;
  5359. break;
  5360. case(HOUSE_BAKUP):
  5361. break;
  5362. case(HOUSE_GATE):
  5363. ap->lo[GATE_ZEROS] = 1;
  5364. ap->hi[GATE_ZEROS] = 33;
  5365. break;
  5366. case(HOUSE_DISK):
  5367. break;
  5368. case(INFO_PROPS):
  5369. case(INFO_SFLEN):
  5370. case(INFO_TIMELIST):
  5371. case(INFO_LOUDLIST):
  5372. case(INFO_TIMEDIFF):
  5373. case(INFO_LOUDCHAN):
  5374. case(INFO_MAXSAMP):
  5375. break;
  5376. case(INFO_MAXSAMP2):
  5377. ap->lo[MAX_STIME] = 0.0;
  5378. ap->hi[MAX_STIME] = duration;
  5379. ap->lo[MAX_ETIME] = 0.0;
  5380. ap->hi[MAX_ETIME] = duration;
  5381. break;
  5382. case(INFO_TIMESUM):
  5383. ap->lo[TIMESUM_SPLEN] = 0.0;
  5384. ap->hi[TIMESUM_SPLEN] = MAX_TIMESUM_SPLEN;
  5385. break;
  5386. case(INFO_SAMPTOTIME):
  5387. ap->lo[INFO_SAMPS] = 0.0;
  5388. ap->hi[INFO_SAMPS] = insams;
  5389. break;
  5390. case(INFO_TIMETOSAMP):
  5391. ap->lo[INFO_TIME] = 0.0;
  5392. ap->hi[INFO_TIME] = duration;
  5393. break;
  5394. case(INFO_FINDHOLE):
  5395. ap->lo[HOLE_THRESH] = 0.0;
  5396. ap->hi[HOLE_THRESH] = 1.0;
  5397. break;
  5398. case(INFO_CDIFF):
  5399. ap->lo[SFDIFF_CNT] = 1.0;
  5400. ap->hi[SFDIFF_CNT] = (double)MAX_SFDIFF_CNT;
  5401. ap->lo[SFDIFF_THRESH] = 0.0;
  5402. ap->hi[SFDIFF_THRESH] = 1.0;
  5403. break;
  5404. case(INFO_DIFF):
  5405. ap->lo[SFDIFF_CNT] = 1.0;
  5406. ap->hi[SFDIFF_CNT] = (double)MAX_SFDIFF_CNT;
  5407. ap->lo[SFDIFF_THRESH] = 0.0;
  5408. if(filetype==PITCHFILE)
  5409. ap->hi[SFDIFF_THRESH] = nyquist;
  5410. else if(filetype==TRANSPOSFILE)
  5411. ap->hi[SFDIFF_THRESH] = nyquist/SPEC_MINFRQ;
  5412. else
  5413. ap->hi[SFDIFF_THRESH] = 1.0;
  5414. break;
  5415. case(INFO_PRNTSND):
  5416. ap->lo[PRNT_START] = 0.0;
  5417. ap->hi[PRNT_START] = duration;
  5418. ap->lo[PRNT_END] = 0.0;
  5419. ap->hi[PRNT_END] = duration;
  5420. break;
  5421. case(INFO_MUSUNITS):
  5422. switch(mode) {
  5423. case(MU_MIDI_TO_FRQ):
  5424. case(MU_MIDI_TO_NOTE):
  5425. ap->lo[0] = MIDIMIN;
  5426. ap->hi[0] = MIDIMAX;
  5427. break;
  5428. case(MU_FRQ_TO_MIDI):
  5429. case(MU_FRQ_TO_NOTE):
  5430. ap->lo[0] = miditohz(MIDIMIN);
  5431. ap->hi[0] = miditohz(MIDIMAX);
  5432. break;
  5433. case(MU_FRQRATIO_TO_SEMIT):
  5434. case(MU_FRQRATIO_TO_INTVL):
  5435. case(MU_FRQRATIO_TO_OCTS):
  5436. case(MU_FRQRATIO_TO_TSTRETH):
  5437. ap->lo[0] = pow(2.0,-MAX_OCTSHIFT);
  5438. ap->hi[0] = pow(2.0,MAX_OCTSHIFT);
  5439. break;
  5440. case(MU_SEMIT_TO_FRQRATIO):
  5441. case(MU_SEMIT_TO_OCTS):
  5442. case(MU_SEMIT_TO_INTVL):
  5443. case(MU_SEMIT_TO_TSTRETCH):
  5444. ap->lo[0] = -(MAX_OCTSHIFT * SEMITONES_PER_OCTAVE);
  5445. ap->hi[0] = MAX_OCTSHIFT * SEMITONES_PER_OCTAVE;
  5446. break;
  5447. case(MU_OCTS_TO_FRQRATIO):
  5448. case(MU_OCTS_TO_SEMIT):
  5449. case(MU_OCTS_TO_TSTRETCH):
  5450. ap->lo[0] = -MAX_OCTSHIFT;
  5451. ap->hi[0] = MAX_OCTSHIFT;
  5452. break;
  5453. case(MU_TSTRETCH_TO_FRQRATIO):
  5454. case(MU_TSTRETCH_TO_SEMIT):
  5455. case(MU_TSTRETCH_TO_OCTS):
  5456. case(MU_TSTRETCH_TO_INTVL):
  5457. ap->lo[0] = pow(2.0,-MAX_OCTSHIFT);
  5458. ap->hi[0] = pow(2.0,MAX_OCTSHIFT);
  5459. break;
  5460. case(MU_GAIN_TO_DB):
  5461. ap->lo[0] = 0.0;
  5462. ap->hi[0] = MU_MAXGAIN;
  5463. break;
  5464. case(MU_DB_TO_GAIN):
  5465. ap->lo[0] = MIN_DB_ON_16_BIT;
  5466. ap->hi[0] = log10(MU_MAXGAIN) * 20.0;
  5467. break;
  5468. case(MU_NOTE_TO_FRQ):
  5469. case(MU_NOTE_TO_MIDI):
  5470. case(MU_INTVL_TO_FRQRATIO):
  5471. case(MU_INTVL_TO_TSTRETCH):
  5472. break;
  5473. case(MU_DELAY_TO_FRQ):
  5474. case(MU_DELAY_TO_MIDI):
  5475. ap->lo[0] = MU_MIN_DELAY;
  5476. ap->hi[0] = MU_MAX_DELAY;
  5477. break;
  5478. case(MU_MIDI_TO_DELAY):
  5479. ap->lo[0] = MIDIMIN;
  5480. ap->hi[0] = MIDIMAX;
  5481. break;
  5482. case(MU_FRQ_TO_DELAY):
  5483. ap->lo[0] = SECS_TO_MS/MU_MAX_DELAY;
  5484. ap->hi[0] = SECS_TO_MS/MU_MIN_DELAY;
  5485. break;
  5486. case(MU_DELAY_TO_TEMPO):
  5487. ap->lo[0] = MU_MINTEMPO_DELAY;
  5488. ap->hi[0] = MU_MAXTEMPO_DELAY;
  5489. break;
  5490. case(MU_TEMPO_TO_DELAY):
  5491. ap->lo[0] = MU_MIN_TEMPO;
  5492. ap->hi[0] = MU_MAX_TEMPO;
  5493. break;
  5494. case(MU_NOTE_TO_DELAY):
  5495. break;
  5496. default:
  5497. // TW UPDATE
  5498. // sprintf(errstr,"Unknown mode for MUSUNITS: initialise_param_values()\n");
  5499. sprintf(errstr,"Unknown mode for MUSUNITS: set_param_ranges()\n");
  5500. return(PROGRAM_ERROR);
  5501. }
  5502. break;
  5503. case(SYNTH_WAVE):
  5504. ap->lo[SYN_TABSIZE]= (double)WAVE_TABSIZE;
  5505. ap->hi[SYN_TABSIZE]= (double)(WAVE_TABSIZE * 16);
  5506. ap->lo[SYN_FRQ] = MIN_SYNTH_FRQ;
  5507. ap->hi[SYN_FRQ] = MAX_SYNTH_FRQ;
  5508. /* fall thro */
  5509. case(SYNTH_NOISE):
  5510. ap->lo[SYN_AMP] = 0.0;
  5511. ap->hi[SYN_AMP] = 1.0;
  5512. ap->lo[SYN_SRATE] = 16000.0;
  5513. ap->hi[SYN_SRATE] = 192000.0; /*RWD wayhay! */
  5514. ap->lo[SYN_CHANS] = 1.0;
  5515. ap->hi[SYN_CHANS] = 16.0;
  5516. ap->lo[SYN_DUR] = MIN_SYN_DUR;
  5517. ap->hi[SYN_DUR] = MAX_SYN_DUR;
  5518. break;
  5519. case(SYNTH_SIL):
  5520. ap->lo[SYN_SRATE] = 16000.0;
  5521. ap->hi[SYN_SRATE] = 192000.0;
  5522. ap->lo[SYN_CHANS] = 1.0;
  5523. ap->hi[SYN_CHANS] = 16.0;
  5524. ap->lo[SYN_DUR] = FLTERR;
  5525. ap->hi[SYN_DUR] = MAX_SYN_DUR;
  5526. break;
  5527. case(MULTI_SYN):
  5528. ap->lo[SYN_TABSIZE]= (double)WAVE_TABSIZE;
  5529. ap->hi[SYN_TABSIZE]= (double)(WAVE_TABSIZE * 16);
  5530. ap->lo[SYN_AMP] = 0.0;
  5531. ap->hi[SYN_AMP] = 1.0;
  5532. ap->lo[SYN_SRATE] = 16000.0;
  5533. ap->hi[SYN_SRATE] = /*48000.0*/96000.0; /*RWD 4:05 */
  5534. ap->lo[SYN_CHANS] = 1.0;
  5535. ap->hi[SYN_CHANS] = 16.0;
  5536. ap->lo[SYN_DUR] = MIN_SYN_DUR;
  5537. ap->hi[SYN_DUR] = MAX_SYN_DUR;
  5538. break;
  5539. case(SYNTH_SPEC):
  5540. ap->lo[SS_DUR] = 0.1;
  5541. ap->hi[SS_DUR] = 32767;
  5542. ap->lo[SS_SRATE] = 16000;
  5543. ap->hi[SS_SRATE] = /*48000*/96000; /*RWD 4:05 */ /*RWD push this to 192000 as well????? */
  5544. ap->lo[SS_CENTRFRQ] = SPEC_MINFRQ;
  5545. ap->hi[SS_CENTRFRQ] = ap->hi[SS_SRATE]/2.0;
  5546. ap->lo[SS_SPREAD] = 0.0;
  5547. ap->hi[SS_SPREAD] = ap->hi[SS_SRATE]/4.0;
  5548. ap->lo[SS_FOCUS] = 0.0;
  5549. ap->hi[SS_FOCUS] = 1.0;
  5550. ap->lo[SS_FOCUS2] = 0.0;
  5551. ap->hi[SS_FOCUS2] = 1.0;
  5552. ap->lo[SS_TRAND] = 0.0;
  5553. ap->hi[SS_TRAND] = 1.0;
  5554. break;
  5555. case(RANDCUTS):
  5556. ap->lo[RC_CHLEN] = (double)((SHRED_SPLICELEN * channels * 3)/(double)srate);
  5557. ap->hi[RC_CHLEN] = (duration/2)-FLTERR;
  5558. ap->lo[RC_SCAT] = 0.0;
  5559. ap->hi[RC_SCAT] = (double)MAX_SHR_SCATTER;
  5560. break;
  5561. case(RANDCHUNKS):
  5562. ap->lo[CHUNKCNT] = 2;
  5563. ap->hi[CHUNKCNT] = 999;
  5564. ap->lo[MINCHUNK] = MINOUTDUR;
  5565. ap->hi[MINCHUNK] = duration;
  5566. ap->lo[MAXCHUNK] = MINOUTDUR;
  5567. ap->hi[MAXCHUNK] = duration;
  5568. break;
  5569. case(TWIXT):
  5570. case(SPHINX):
  5571. ap->lo[IS_SPLEN] = 2;
  5572. ap->hi[IS_SPLEN] = 15;
  5573. ap->lo[IS_WEIGHT] = 1;
  5574. ap->hi[IS_WEIGHT] = 10;
  5575. ap->lo[IS_SEGCNT] = 1;
  5576. ap->hi[IS_SEGCNT] = 10000;
  5577. break;
  5578. //TW NEW CASES
  5579. case(EDIT_CUTMANY):
  5580. ap->lo[CM_SPLICELEN] = 0.0;
  5581. ap->hi[CM_SPLICELEN] = EDIT_SPLICEMAX;
  5582. break;
  5583. case(STACK):
  5584. ap->lo[STACK_CNT] = 2;
  5585. ap->hi[STACK_CNT] = 32;
  5586. ap->lo[STACK_LEAN] = .01;
  5587. ap->hi[STACK_LEAN] = 100.0;
  5588. ap->lo[STACK_OFFSET] = 0.0;
  5589. ap->hi[STACK_OFFSET] = duration;
  5590. ap->lo[STACK_GAIN] = 0.1;
  5591. ap->hi[STACK_GAIN] = 10.0;
  5592. ap->lo[STACK_DUR] = 0.0;
  5593. ap->hi[STACK_DUR] = 1.0;
  5594. break;
  5595. case(SIN_TAB):
  5596. ap->lo[SIN_FRQ] = .01;
  5597. ap->hi[SIN_FRQ] = 100;
  5598. ap->lo[SIN_AMP] = 0;
  5599. ap->hi[SIN_AMP] = 1;
  5600. ap->lo[SIN_DUR] = 0;
  5601. ap->hi[SIN_DUR] = 32767;
  5602. ap->lo[SIN_QUANT] = .005;
  5603. ap->hi[SIN_QUANT] = 1;
  5604. ap->lo[SIN_PHASE] = 0;
  5605. ap->hi[SIN_PHASE] = 360;
  5606. break;
  5607. case(ACC_STREAM):
  5608. ap->lo[ACC_ATTEN] = 0.0;
  5609. ap->hi[ACC_ATTEN] = 1.0;
  5610. break;
  5611. case(HF_PERM1):
  5612. case(HF_PERM2):
  5613. ap->lo[HP1_SRATE] = 16000;
  5614. ap->hi[HP1_SRATE] = /*48000*/96000; /*RWD 4:05 */
  5615. ap->lo[HP1_ELEMENT_SIZE] = 0.04;
  5616. ap->hi[HP1_ELEMENT_SIZE] = 10.0;
  5617. ap->lo[HP1_GAP_SIZE] = 0.02;
  5618. ap->hi[HP1_GAP_SIZE] = 10.0;
  5619. ap->lo[HP1_GGAP_SIZE] = 0.02;
  5620. ap->hi[HP1_GGAP_SIZE] = 10.0;
  5621. ap->lo[HP1_MINSET] = 1.0;
  5622. ap->hi[HP1_MINSET] = MAX_HFPERMSET;
  5623. ap->lo[HP1_BOTNOTE] = 0;
  5624. ap->hi[HP1_BOTNOTE] = 11;
  5625. ap->lo[HP1_BOTOCT] = -4;
  5626. ap->hi[HP1_BOTOCT] = 4;
  5627. ap->lo[HP1_TOPNOTE] = 0;
  5628. ap->hi[HP1_TOPNOTE] = 11;
  5629. ap->lo[HP1_TOPOCT] = -4;
  5630. ap->hi[HP1_TOPOCT] = 4;
  5631. ap->lo[HP1_SORT1] = 0;
  5632. ap->hi[HP1_SORT1] = 4;
  5633. break;
  5634. case(DEL_PERM):
  5635. ap->lo[DP_SRATE] = 16000;
  5636. ap->hi[DP_SRATE] = /*48000*/96000; /*RWD 4:05 */
  5637. ap->lo[DP_DUR] = 0.1;
  5638. ap->hi[DP_DUR] = 10.0;
  5639. ap->lo[DP_CYCCNT] = 2;
  5640. ap->hi[DP_CYCCNT] = 16;
  5641. break;
  5642. case(DEL_PERM2):
  5643. ap->lo[DP_CYCCNT] = 2;
  5644. ap->hi[DP_CYCCNT] = 16;
  5645. break;
  5646. //TW NEW CASES
  5647. case(NOISE_SUPRESS):
  5648. ap->lo[NOISE_SPLEN] = 0.0;
  5649. ap->hi[NOISE_SPLEN] = 50.0;
  5650. ap->lo[NOISE_MINFRQ] = MIN_SUPRESS;
  5651. ap->hi[NOISE_MINFRQ] = nyquist;
  5652. ap->lo[MIN_NOISLEN] = 0.0;
  5653. ap->hi[MIN_NOISLEN] = 50.0;
  5654. ap->lo[MIN_TONELEN] = 0.0;
  5655. ap->hi[MIN_TONELEN] = 1000.0;
  5656. break;
  5657. case(TIME_GRID):
  5658. ap->lo[GRID_COUNT] = 2.0;
  5659. ap->hi[GRID_COUNT] = 32.0;
  5660. ap->lo[GRID_WIDTH] = 0.002;
  5661. ap->hi[GRID_WIDTH] = 10.0;
  5662. ap->lo[GRID_SPLEN] = 2.0;
  5663. ap->hi[GRID_SPLEN] = 1000.0;
  5664. break;
  5665. case(SEQUENCER2):
  5666. ap->lo[SEQ_SPLIC] = 2.0;
  5667. ap->hi[SEQ_SPLIC] = 200.0;
  5668. /* fall thro */
  5669. case(SEQUENCER):
  5670. ap->lo[SEQ_ATTEN] = 0.0;
  5671. ap->hi[SEQ_ATTEN] = 1.0;
  5672. break;
  5673. case(CONVOLVE):
  5674. if(mode==CONV_TVAR) {
  5675. ap->lo[CONV_TRANS] = -48.0;
  5676. ap->hi[CONV_TRANS] = 48.0;
  5677. }
  5678. break;
  5679. case(BAKTOBAK):
  5680. ap->lo[BTOB_CUT] = 0.0;
  5681. ap->hi[BTOB_CUT] = duration;
  5682. ap->lo[BTOB_SPLEN] = 0.01;
  5683. ap->hi[BTOB_SPLEN] = min(5.0,duration) * SECS_TO_MS;
  5684. break;
  5685. case(CLICK):
  5686. if(mode == CLICK_BY_LINE) {
  5687. ap->lo[CLIKSTART] = 1.0;
  5688. ap->hi[CLIKSTART] = 32767.0;
  5689. ap->lo[CLIKEND] = 2.0;
  5690. ap->hi[CLIKEND] = 32767.0;
  5691. } else {
  5692. ap->lo[CLIKSTART] = 0.0;
  5693. ap->hi[CLIKSTART] = 32767.0;
  5694. ap->lo[CLIKEND] = 0.0;
  5695. ap->hi[CLIKEND] = 32767.0;
  5696. }
  5697. ap->lo[CLIKOFSET] = 1.0;
  5698. ap->hi[CLIKOFSET] = 32767.0;
  5699. break;
  5700. case(DOUBLETS):
  5701. ap->lo[SEG_DUR] = SPLICEDUR * 2.0;
  5702. ap->hi[SEG_DUR] = max(ap->lo[SEG_DUR],min(10.0,duration));
  5703. ap->lo[SEG_REPETS] = 2.0;
  5704. ap->hi[SEG_REPETS] = 32.0;
  5705. break;
  5706. case(SYLLABS):
  5707. ap->lo[SYLLAB_DOVETAIL] = 0.0;
  5708. ap->hi[SYLLAB_DOVETAIL] = 20.0;
  5709. ap->lo[SYLLAB_SPLICELEN] = 1.0;
  5710. ap->hi[SYLLAB_SPLICELEN] = 20.0;
  5711. break;
  5712. case(MAKE_VFILT):
  5713. case(MIX_MODEL):
  5714. break;
  5715. case(BATCH_EXPAND):
  5716. ap->lo[BE_INFILE] = 1;
  5717. ap->hi[BE_INFILE] = 40;
  5718. ap->lo[BE_OUTFILE] = 1;
  5719. ap->hi[BE_OUTFILE] = 40;
  5720. ap->lo[BE_PARAM] = 1;
  5721. ap->hi[BE_PARAM] = 40;
  5722. break;
  5723. case(ENVSYN):
  5724. ap->lo[ENVSYN_WSIZE] = ENV_MIN_WSIZE;
  5725. ap->hi[ENVSYN_WSIZE] = ENV_MAX_WSIZE;
  5726. ap->lo[ENVSYN_DUR] = ENV_MIN_WSIZE * MS_TO_SECS * 2.1; /* .1 is safety factor */
  5727. ap->hi[ENVSYN_DUR] = 32767.0;
  5728. ap->lo[ENVSYN_CYCLEN] = ENV_MIN_WSIZE * MS_TO_SECS * 2.1; /* .1 is safety factor */;
  5729. ap->hi[ENVSYN_CYCLEN] = ap->hi[ENVSYN_DUR];
  5730. ap->lo[ENVSYN_STARTPHASE] = 0.0;
  5731. ap->hi[ENVSYN_STARTPHASE] = 1.0;
  5732. if(mode != ENVSYN_USERDEF) {
  5733. ap->lo[ENVSYN_TROF] = 0.0;
  5734. ap->hi[ENVSYN_TROF] = 1.0;
  5735. ap->lo[ENVSYN_EXPON] = DISTORTE_MIN_EXPON;
  5736. ap->hi[ENVSYN_EXPON] = DISTORTE_MAX_EXPON;
  5737. }
  5738. break;
  5739. case(HOUSE_GATE2):
  5740. ap->lo[GATE2_DUR] = ((double)channels/(double)srate) * SECS_TO_MS;
  5741. ap->hi[GATE2_DUR] = 1.0 * SECS_TO_MS;
  5742. ap->lo[GATE2_ZEROS] = 0.3;
  5743. ap->hi[GATE2_ZEROS] = 1.0 * SECS_TO_MS;
  5744. ap->lo[GATE2_LEVEL] = 0.0;
  5745. ap->hi[GATE2_LEVEL] = (double)F_MAXSAMP;
  5746. ap->lo[GATE2_SPLEN] = 0.0;
  5747. ap->hi[GATE2_SPLEN] = 50.0;
  5748. ap->lo[GATE2_FILT] = ((double)channels/(double)srate) * SECS_TO_MS;
  5749. ap->hi[GATE2_FILT] = 4.0;
  5750. break;
  5751. case(GRAIN_ASSESS):
  5752. break;
  5753. case(ZCROSS_RATIO):
  5754. ap->lo[ZC_START] = 0.0;
  5755. ap->hi[ZC_START] = duration;
  5756. ap->lo[ZC_END] = 0.0;
  5757. ap->hi[ZC_END] = duration;
  5758. break;
  5759. case(GREV):
  5760. ap->lo[GREV_WSIZE] = (8.0/srate) * SECS_TO_MS;
  5761. ap->hi[GREV_WSIZE] = (duration/3.0) * SECS_TO_MS;
  5762. ap->lo[GREV_TROFRAC] = FLTERR;
  5763. ap->hi[GREV_TROFRAC] = 1.0 - FLTERR;
  5764. ap->lo[GREV_GPCNT] = 1.0;
  5765. ap->hi[GREV_GPCNT] = 100.0;
  5766. switch(mode) {
  5767. case(GREV_TSTRETCH):
  5768. ap->lo[GREV_TSTR] = .01;
  5769. ap->hi[GREV_TSTR] = 100;
  5770. break;
  5771. case(GREV_DELETE):
  5772. case(GREV_OMIT):
  5773. ap->lo[GREV_KEEP] = 1;
  5774. ap->hi[GREV_KEEP] = 255;
  5775. ap->lo[GREV_OUTOF] = 2;
  5776. ap->hi[GREV_OUTOF] = 256;
  5777. break;
  5778. case(GREV_REPEAT):
  5779. ap->lo[GREV_REPETS] = 1;
  5780. ap->hi[GREV_REPETS] = 100;
  5781. break;
  5782. }
  5783. break;
  5784. default:
  5785. sprintf(errstr,"Unknown case: get_param_ranges()\n");
  5786. return(PROGRAM_ERROR);
  5787. }
  5788. return(FINISHED);
  5789. }
  5790. /**********************************************************************************/
  5791. /*********************** ITEMS FORMERLY IN HEADERS.C tklib3 ***********************/
  5792. /**********************************************************************************/
  5793. /***************************** READHEAD *******************************
  5794. *
  5795. * Header reader for sndfiles,envfiles,analfiles etc..
  5796. */
  5797. int readhead(infileptr inputfile,int ifd,char *filename,double *maxamp,double *maxloc, int *maxrep,int getmax,int needmaxinfo)
  5798. {
  5799. float peakval;
  5800. int peakpos;
  5801. SFPROPS props = {0}; // RWD NB on 64bit, alignment important here!
  5802. int isenv = 0;
  5803. int os;
  5804. if(!snd_headread(ifd,&props)) {
  5805. fprintf(stdout,"INFO: Failure to read properties, in %s\n",filename);
  5806. fflush(stdout);
  5807. return(DATA_ERROR);
  5808. }
  5809. inputfile->srate = props.srate;
  5810. inputfile->channels = props.chans;
  5811. switch(props.samptype) {
  5812. case(SHORT16): inputfile->stype = SAMP_SHORT; break;
  5813. case(FLOAT32): inputfile->stype = SAMP_FLOAT; break;
  5814. case(SHORT8): inputfile->stype = SAMP_BYTE; break;
  5815. default:
  5816. /* remaining symbols have same int value */
  5817. inputfile->stype = (int)props.samptype; /* RWD April 2005 */
  5818. break;
  5819. }
  5820. //TW TEMPORARY SUBSTITUTION
  5821. inputfile->filetype = SNDFILE;
  5822. if(sndgetprop(ifd,"is an envelope",(char *) &isenv,sizeof(int)) >= 0)
  5823. inputfile->filetype = ENVFILE;
  5824. else if(sndgetprop(ifd,"is a formant file",(char *) &isenv,sizeof(int)) >= 0)
  5825. inputfile->filetype = FORMANTFILE;
  5826. else if(sndgetprop(ifd,"is a pitch file",(char *) &isenv,sizeof(int)) >= 0)
  5827. inputfile->filetype = PITCHFILE;
  5828. else if(sndgetprop(ifd,"is a transpos file",(char *) &isenv,sizeof(int)) >= 0)
  5829. inputfile->filetype = TRANSPOSFILE;
  5830. else if(sndgetprop(ifd,"original sampsize",(char *) &os,sizeof(int)) > 0)
  5831. inputfile->filetype = ANALFILE;
  5832. /* THIS STILL DOESN'T WORK !!!!
  5833. switch(props.type) {
  5834. case(wt_wave): inputfile->filetype = SNDFILE; break;
  5835. case(wt_analysis): inputfile->filetype = ANALFILE; break;
  5836. case(wt_formant): inputfile->filetype = FORMANTFILE; break;
  5837. case(wt_transposition): inputfile->filetype = TRANSPOSFILE; break;
  5838. case(wt_pitch): inputfile->filetype = PITCHFILE; break;
  5839. case(wt_binenv): inputfile->filetype = ENVFILE; break;
  5840. default:
  5841. fprintf(stdout,"INFO: Unknown file type,\n");
  5842. return(DATA_ERROR);
  5843. }
  5844. */
  5845. switch(inputfile->filetype) {
  5846. case(SNDFILE):
  5847. if(needmaxinfo) {
  5848. *maxrep = (int)-1; /* flags that maxinfo not got, unless it's got, below */
  5849. *maxloc = (int)0;
  5850. *maxamp = 0.0;
  5851. if(getmax) {
  5852. if(getpeakdata(ifd,&peakval,&peakpos,props) > 0) {
  5853. *maxamp = (double)peakval;
  5854. *maxloc = (double)peakpos;
  5855. *maxrep = 0;
  5856. }
  5857. }
  5858. }
  5859. #ifdef TEST_HEADREAD
  5860. if(headread_check(props,filename,ifd)<0)
  5861. return(PROGRAM_ERROR);
  5862. #endif
  5863. return(FINISHED);
  5864. case(ENVFILE):
  5865. // TW NOT WORKING
  5866. // inputfile->window_size = props.window_size;
  5867. if(sndgetprop(ifd,"window size",(char *)&(inputfile->window_size),sizeof(float)) < 0) {
  5868. fprintf(stdout,"Cannot read original window size: %s\n",filename);
  5869. fflush(stdout);
  5870. return(DATA_ERROR);
  5871. }
  5872. #ifdef TEST_HEADREAD
  5873. if(headread_check(props,filename,ifd)<0)
  5874. return(PROGRAM_ERROR);
  5875. #endif
  5876. return(FINISHED);
  5877. case(FORMANTFILE):
  5878. inputfile->specenvcnt = props.specenvcnt;
  5879. /* fall through */
  5880. case(PITCHFILE):
  5881. case(TRANSPOSFILE):
  5882. if(inputfile->channels != 1) {
  5883. sprintf(errstr,"Channel count not equal to 1 in %s: readhead()\n"
  5884. "Implies failure to write correct header in another program.\n",
  5885. filename);
  5886. return(PROGRAM_ERROR);
  5887. }
  5888. // TW NOT WORKING
  5889. // inputfile->origchans = props.origchans;
  5890. // TW SUBSTITUTE FOR NOW
  5891. if(sndgetprop(ifd,"orig channels",(char *)&(inputfile->origchans),sizeof(int)) < 0) {
  5892. fprintf(stdout,"Cannot read original channels count: %s\n",filename);
  5893. fflush(stdout);
  5894. return(DATA_ERROR);
  5895. }
  5896. /* fall through */
  5897. case(ANALFILE):
  5898. // TW NOT WORKING
  5899. // inputfile->origstype = props.origsize;
  5900. // inputfile->origrate = props.origrate;
  5901. // inputfile->arate = props.arate;
  5902. // inputfile->Mlen = props.winlen;
  5903. // inputfile->Dfac = props.decfac;
  5904. // TW SUBSTITUTE FOR NOW
  5905. if(sndgetprop(ifd,"original sampsize",(char *)&(inputfile->origstype),sizeof(int)) < 0) {
  5906. fprintf(stdout,"Cannot read original sample type: %s\n",filename);
  5907. fflush(stdout);
  5908. return(DATA_ERROR);
  5909. }
  5910. if(sndgetprop(ifd,"original sample rate",(char *)&(inputfile->origrate),sizeof(int)) < 0) {
  5911. fprintf(stdout,"Cannot read original sample rate: %s\n",filename);
  5912. fflush(stdout);
  5913. return(DATA_ERROR);
  5914. }
  5915. if(sndgetprop(ifd,"arate",(char *)&(inputfile->arate),sizeof(float)) < 0) {
  5916. fprintf(stdout,"Cannot read analysis rate: %s\n",filename);
  5917. fflush(stdout);
  5918. return(DATA_ERROR);
  5919. }
  5920. if(sndgetprop(ifd,"analwinlen",(char *)&(inputfile->Mlen),sizeof(int)) < 0) {
  5921. fprintf(stdout,"Cannot read analysis window length: %s\n",filename);
  5922. fflush(stdout);
  5923. return(DATA_ERROR);
  5924. }
  5925. if(sndgetprop(ifd,"decfactor",(char *)&(inputfile->Dfac),sizeof(int)) < 0) {
  5926. fprintf(stdout,"Cannot read original decimation factor: %s\n",filename);
  5927. fflush(stdout);
  5928. return(DATA_ERROR);
  5929. }
  5930. #ifdef TEST_HEADREAD
  5931. if(headread_check(props,filename,ifd)<0)
  5932. return(PROGRAM_ERROR);
  5933. #endif
  5934. break;
  5935. }
  5936. return(FINISHED);
  5937. }
  5938. /******************************* IS_A_PITCHFILE ****************************/
  5939. int is_a_pitchfile(int fd)
  5940. {
  5941. int pppp = 1;
  5942. if(sndgetprop(fd,"is a pitch file", (char *)&pppp, sizeof(int)) < 0)
  5943. return(FALSE);
  5944. return(TRUE);
  5945. }
  5946. /******************************* IS_A_TRANSPOSFILE ****************************/
  5947. int is_a_transposfile(int fd)
  5948. {
  5949. int tttt = 1;
  5950. if(sndgetprop(fd,"is a transpos file", (char *)&tttt, sizeof(int)) < 0)
  5951. return(FALSE);
  5952. return(TRUE);
  5953. }
  5954. /******************************* IS_A_FORMANTFILE ****************************/
  5955. int is_a_formantfile(int fd)
  5956. {
  5957. int ffff = 1;
  5958. if(sndgetprop(fd,"is a formant file", (char *)&ffff, sizeof(int)) < 0)
  5959. return(FALSE);
  5960. return(TRUE);
  5961. }
  5962. /************************************* REDEFINE_TEXTFILE_TYPES ******************************/
  5963. int redefine_textfile_types(dataptr dz)
  5964. {
  5965. switch(dz->infile->filetype) {
  5966. case(POSITIVE_BRKFILE_OR_NUMLIST_OR_WORDLIST):
  5967. switch(dz->process) {
  5968. case(HF_PERM1): case(HF_PERM2): case(DEL_PERM): case(DEL_PERM2): case(MAKE_VFILT):
  5969. dz->infile->filetype = NUMLIST;
  5970. break;
  5971. case(P_GEN):
  5972. dz->infile->filetype = POSITIVE_BRKFILE;
  5973. case(MOD_LOUDNESS):
  5974. switch(dz->mode) {
  5975. case(LOUD_PROPOR):
  5976. dz->infile->filetype = POSITIVE_BRKFILE;
  5977. break;
  5978. case(LOUD_DB_PROPOR):
  5979. dz->infile->filetype = DB_BRKFILE;
  5980. break;
  5981. }
  5982. break;
  5983. default:
  5984. dz->infile->filetype = UNRANGED_BRKFILE_OR_NUMLIST_OR_WORDLIST;
  5985. break;
  5986. }
  5987. break;
  5988. case(POSITIVE_BRKFILE_OR_NUMLIST_OR_LINELIST_OR_WORDLIST):
  5989. switch(dz->process) {
  5990. case(HF_PERM1): case(HF_PERM2): case(DEL_PERM): case(DEL_PERM2): case(MAKE_VFILT):
  5991. dz->infile->filetype = NUMLIST;
  5992. break;
  5993. case(P_GEN):
  5994. dz->infile->filetype = POSITIVE_BRKFILE;
  5995. break;
  5996. case(MOD_LOUDNESS):
  5997. switch(dz->mode) {
  5998. case(LOUD_PROPOR):
  5999. dz->infile->filetype = POSITIVE_BRKFILE;
  6000. break;
  6001. case(LOUD_DB_PROPOR):
  6002. dz->infile->filetype = DB_BRKFILE;
  6003. break;
  6004. }
  6005. break;
  6006. default:
  6007. dz->infile->filetype = UNRANGED_BRKFILE_OR_NUMLIST_OR_LINELIST_OR_WORDLIST;
  6008. break;
  6009. }
  6010. break;
  6011. case(PITCH_POSITIVE_BRKFILE_OR_NUMLIST_OR_WORDLIST):
  6012. switch(dz->process) {
  6013. case(HF_PERM1): case(HF_PERM2): case(DEL_PERM): case(DEL_PERM2): case(MAKE_VFILT):
  6014. dz->infile->filetype = NUMLIST;
  6015. break;
  6016. case(ENV_IMPOSE):
  6017. //TW NEW CASE
  6018. case(ENV_PROPOR):
  6019. dz->infile->filetype = POSITIVE_BRKFILE;
  6020. break;
  6021. case(P_GEN):
  6022. dz->infile->filetype = POSITIVE_BRKFILE;
  6023. break;
  6024. case(MOD_LOUDNESS):
  6025. switch(dz->mode) {
  6026. case(LOUD_PROPOR):
  6027. dz->infile->filetype = POSITIVE_BRKFILE;
  6028. break;
  6029. case(LOUD_DB_PROPOR):
  6030. dz->infile->filetype = DB_BRKFILE;
  6031. break;
  6032. }
  6033. break;
  6034. default:
  6035. dz->infile->filetype = PITCH_BRKFILE_OR_NUMLIST_OR_WORDLIST;
  6036. break;
  6037. }
  6038. break;
  6039. case(PITCH_POSITIVE_BRKFILE_OR_NUMLIST_OR_LINELIST_OR_WORDLIST):
  6040. case(TRANSPOS_OR_PITCH_BRKFILE_OR_NUMLIST_OR_LINELIST_OR_WORDLIST):
  6041. switch(dz->process) {
  6042. case(HF_PERM1): case(HF_PERM2): case(DEL_PERM): case(DEL_PERM2): case(MAKE_VFILT):
  6043. dz->infile->filetype = NUMLIST;
  6044. break;
  6045. case(ENV_IMPOSE):
  6046. //TW NEW CASE
  6047. case(ENV_PROPOR):
  6048. dz->infile->filetype = POSITIVE_BRKFILE;
  6049. break;
  6050. case(P_GEN):
  6051. dz->infile->filetype = POSITIVE_BRKFILE;
  6052. break;
  6053. case(MOD_LOUDNESS):
  6054. switch(dz->mode) {
  6055. case(LOUD_PROPOR):
  6056. dz->infile->filetype = POSITIVE_BRKFILE;
  6057. break;
  6058. case(LOUD_DB_PROPOR):
  6059. dz->infile->filetype = DB_BRKFILE;
  6060. break;
  6061. }
  6062. break;
  6063. default:
  6064. dz->infile->filetype = PITCH_BRKFILE_OR_NUMLIST_OR_LINELIST_OR_WORDLIST;
  6065. break;
  6066. }
  6067. break;
  6068. }
  6069. if(dz->process==INFO_DIFF) {
  6070. sprintf(errstr,"This process does not work with textfiles.\n");
  6071. return(GOAL_FAILED);
  6072. } else if(dz->process==HOUSE_COPY) {
  6073. dz->infile->filetype = WORDLIST;
  6074. return(FINISHED);
  6075. } else if(dz->input_data_type==NO_FILE_AT_ALL) {
  6076. dz->infile->filetype = WORDLIST; /* dummy */
  6077. return(FINISHED);
  6078. }
  6079. switch(dz->infile->filetype) {
  6080. case(TRANSPOS_OR_NORMD_BRKFILE_OR_NUMLIST_OR_LINELIST_OR_WORDLIST):
  6081. switch(dz->process) {
  6082. case(REPITCH):
  6083. case(REPITCHB):
  6084. dz->infile->filetype = TEXTFILE;
  6085. return(FINISHED);
  6086. }
  6087. /* fall thro */
  6088. case(NORMD_BRKFILE_OR_NUMLIST_OR_LINELIST_OR_WORDLIST):
  6089. switch(dz->process) {
  6090. case(ENV_REPLOTTING):
  6091. case(ENV_BRKTOENV):
  6092. case(ENV_BRKTODBBRK):
  6093. case(INFO_PROPS):
  6094. dz->infile->filetype = BRKFILE;
  6095. return(FINISHED);
  6096. case(MOD_SPACE):
  6097. if(dz->mode==MOD_MIRRORPAN) {
  6098. dz->infile->filetype = UNRANGED_BRKFILE;
  6099. return(FINISHED);
  6100. }
  6101. break;
  6102. case(MOD_LOUDNESS):
  6103. switch(dz->mode) {
  6104. case(LOUD_PROPOR):
  6105. dz->infile->filetype = POSITIVE_BRKFILE;
  6106. return(FINISHED);
  6107. case(LOUD_DB_PROPOR):
  6108. dz->infile->filetype = DB_BRKFILE;
  6109. return(FINISHED);
  6110. }
  6111. break;
  6112. }
  6113. /* fall thro */
  6114. case(NUMLIST_OR_LINELIST_OR_WORDLIST):
  6115. switch(dz->process) {
  6116. case(INFO_PROPS):
  6117. dz->infile->filetype = NUMLIST;
  6118. return(FINISHED);
  6119. case(HF_PERM1): case(HF_PERM2): case(DEL_PERM): case(DEL_PERM2): case(MAKE_VFILT):
  6120. dz->infile->filetype = NUMLIST;
  6121. return(FINISHED);
  6122. }
  6123. /* fall thro */
  6124. case(LINELIST_OR_WORDLIST):
  6125. /* fall thro */
  6126. case(WORDLIST):
  6127. switch(dz->process) {
  6128. case(WORDCNT):
  6129. case(HOUSE_DISK):
  6130. case(HOUSE_BUNDLE):
  6131. case(HOUSE_SORT):
  6132. case(INFO_PROPS):
  6133. case(INFO_SFLEN):
  6134. case(INFO_MAXSAMP):
  6135. case(INFO_MAXSAMP2):
  6136. case(UTILS_GETCOL):
  6137. case(UTILS_PUTCOL):
  6138. case(UTILS_JOINCOL):
  6139. case(UTILS_COLMATHS):
  6140. case(UTILS_COLMUSIC):
  6141. case(UTILS_COLRAND):
  6142. case(UTILS_COLLIST):
  6143. case(UTILS_COLGEN):
  6144. case(BATCH_EXPAND):
  6145. dz->infile->filetype = WORDLIST;
  6146. return(FINISHED);
  6147. default:
  6148. sprintf(errstr,"type_conversion not done for this process: redefine_textfile_types()\n");
  6149. return(PROGRAM_ERROR);
  6150. }
  6151. }
  6152. switch(dz->infile->filetype) {
  6153. case(TRANSPOS_OR_NORMD_BRKFILE_OR_NUMLIST_OR_WORDLIST):
  6154. switch(dz->process) {
  6155. case(REPITCH):
  6156. case(REPITCHB):
  6157. dz->infile->filetype = TEXTFILE;
  6158. return(FINISHED);
  6159. case(MOD_LOUDNESS):
  6160. switch(dz->mode) {
  6161. case(LOUD_DB_PROPOR):
  6162. dz->infile->filetype = DB_BRKFILE;
  6163. break;
  6164. }
  6165. break;
  6166. }
  6167. /* fall tro */
  6168. case(NORMD_BRKFILE_OR_NUMLIST_OR_WORDLIST):
  6169. switch(dz->process) {
  6170. case(ENV_REPLOTTING):
  6171. case(ENV_BRKTOENV):
  6172. case(ENV_BRKTODBBRK):
  6173. case(INFO_PROPS):
  6174. dz->infile->filetype = BRKFILE;
  6175. return(FINISHED);
  6176. case(MOD_SPACE):
  6177. if(dz->mode==MOD_MIRRORPAN) {
  6178. dz->infile->filetype = UNRANGED_BRKFILE;
  6179. return(FINISHED);
  6180. }
  6181. break;
  6182. case(MOD_LOUDNESS):
  6183. switch(dz->mode) {
  6184. case(LOUD_PROPOR):
  6185. dz->infile->filetype = POSITIVE_BRKFILE;
  6186. break;
  6187. case(LOUD_DB_PROPOR):
  6188. dz->infile->filetype = DB_BRKFILE;
  6189. break;
  6190. }
  6191. break;
  6192. }
  6193. /* fall thro */
  6194. case(NUMLIST_OR_WORDLIST):
  6195. switch(dz->process) {
  6196. case(HF_PERM1): case(HF_PERM2): case(DEL_PERM): case(DEL_PERM2): case(MAKE_VFILT):
  6197. dz->infile->filetype = NUMLIST;
  6198. return(FINISHED);
  6199. case(INFO_PROPS):
  6200. dz->infile->filetype = NUMLIST;
  6201. return(FINISHED);
  6202. }
  6203. /* fall thro */
  6204. case(WORDLIST):
  6205. switch(dz->process) {
  6206. case(WORDCNT):
  6207. case(HOUSE_DISK):
  6208. case(HOUSE_BUNDLE):
  6209. case(HOUSE_SORT):
  6210. case(INFO_PROPS):
  6211. case(INFO_SFLEN):
  6212. case(INFO_MAXSAMP):
  6213. case(INFO_MAXSAMP2):
  6214. case(UTILS_GETCOL):
  6215. case(UTILS_PUTCOL):
  6216. case(UTILS_JOINCOL):
  6217. case(UTILS_COLMATHS):
  6218. case(UTILS_COLMUSIC):
  6219. case(UTILS_COLRAND):
  6220. case(UTILS_COLLIST):
  6221. case(UTILS_COLGEN):
  6222. case(BATCH_EXPAND):
  6223. dz->infile->filetype = WORDLIST;
  6224. return(FINISHED);
  6225. default:
  6226. sprintf(errstr,"type_conversion not done for this process: redefine_textfile_types()\n");
  6227. return(PROGRAM_ERROR);
  6228. }
  6229. }
  6230. switch(dz->infile->filetype) {
  6231. case(DB_BRKFILE_OR_NUMLIST_OR_LINELIST_OR_WORDLIST):
  6232. switch(dz->process) {
  6233. case(ENV_DBBRKTOENV):
  6234. case(ENV_DBBRKTOBRK):
  6235. case(INFO_PROPS):
  6236. dz->infile->filetype = DB_BRKFILE;
  6237. return(FINISHED);
  6238. case(MOD_SPACE):
  6239. if(dz->mode==MOD_MIRRORPAN) {
  6240. dz->infile->filetype = UNRANGED_BRKFILE;
  6241. return(FINISHED);
  6242. }
  6243. break;
  6244. case(MOD_LOUDNESS):
  6245. switch(dz->mode) {
  6246. case(LOUD_DB_PROPOR):
  6247. dz->infile->filetype = DB_BRKFILE;
  6248. break;
  6249. }
  6250. break;
  6251. }
  6252. /* fall thro */
  6253. case(NUMLIST_OR_LINELIST_OR_WORDLIST):
  6254. switch(dz->process) {
  6255. case(HF_PERM1): case(HF_PERM2): case(DEL_PERM): case(DEL_PERM2): case(MAKE_VFILT):
  6256. dz->infile->filetype = NUMLIST;
  6257. return(FINISHED);
  6258. }
  6259. /* fall thro */
  6260. case(LINELIST_OR_WORDLIST):
  6261. /* fall thro */
  6262. case(WORDLIST):
  6263. switch(dz->process) {
  6264. case(WORDCNT):
  6265. case(HOUSE_DISK):
  6266. case(HOUSE_BUNDLE):
  6267. case(INFO_PROPS):
  6268. case(HOUSE_SORT):
  6269. case(INFO_SFLEN):
  6270. case(INFO_MAXSAMP):
  6271. case(INFO_MAXSAMP2):
  6272. case(UTILS_GETCOL):
  6273. case(UTILS_PUTCOL):
  6274. case(UTILS_JOINCOL):
  6275. case(UTILS_COLMATHS):
  6276. case(UTILS_COLMUSIC):
  6277. case(UTILS_COLRAND):
  6278. case(UTILS_COLLIST):
  6279. case(UTILS_COLGEN):
  6280. dz->infile->filetype = WORDLIST;
  6281. return(FINISHED);
  6282. default:
  6283. sprintf(errstr,"type_conversion not done for this process: redefine_textfile_types()\n");
  6284. return(PROGRAM_ERROR);
  6285. }
  6286. }
  6287. switch(dz->infile->filetype) {
  6288. case(DB_BRKFILE_OR_NUMLIST_OR_WORDLIST):
  6289. switch(dz->process) {
  6290. case(ENV_DBBRKTOENV):
  6291. case(ENV_DBBRKTOBRK):
  6292. case(INFO_PROPS):
  6293. dz->infile->filetype = DB_BRKFILE;
  6294. return(FINISHED);
  6295. case(MOD_SPACE):
  6296. if(dz->mode==MOD_MIRRORPAN) {
  6297. dz->infile->filetype = UNRANGED_BRKFILE;
  6298. return(FINISHED);
  6299. }
  6300. break;
  6301. case(MOD_LOUDNESS):
  6302. switch(dz->mode) {
  6303. case(LOUD_DB_PROPOR):
  6304. dz->infile->filetype = DB_BRKFILE;
  6305. break;
  6306. }
  6307. break;
  6308. }
  6309. /* fall thro */
  6310. case(NUMLIST_OR_WORDLIST):
  6311. switch(dz->process) {
  6312. case(HF_PERM1): case(HF_PERM2): case(DEL_PERM): case(DEL_PERM2): case(MAKE_VFILT):
  6313. dz->infile->filetype = NUMLIST;
  6314. return(FINISHED);
  6315. }
  6316. /* fall thro */
  6317. case(WORDLIST):
  6318. switch(dz->process) {
  6319. case(WORDCNT):
  6320. case(HOUSE_DISK):
  6321. case(HOUSE_BUNDLE):
  6322. case(HOUSE_SORT):
  6323. case(INFO_PROPS):
  6324. case(INFO_SFLEN):
  6325. case(INFO_MAXSAMP):
  6326. case(INFO_MAXSAMP2):
  6327. case(UTILS_GETCOL):
  6328. case(UTILS_PUTCOL):
  6329. case(UTILS_JOINCOL):
  6330. case(UTILS_COLMATHS):
  6331. case(UTILS_COLMUSIC):
  6332. case(UTILS_COLRAND):
  6333. case(UTILS_COLLIST):
  6334. case(UTILS_COLGEN):
  6335. dz->infile->filetype = WORDLIST;
  6336. return(FINISHED);
  6337. default:
  6338. sprintf(errstr,"type_conversion not done for this process: redefine_textfile_types()\n");
  6339. return(PROGRAM_ERROR);
  6340. }
  6341. }
  6342. switch(dz->infile->filetype) {
  6343. case(TRANSPOS_OR_UNRANGED_BRKFILE_OR_NUMLIST_OR_LINELIST_OR_WORDLIST):
  6344. switch(dz->process) {
  6345. case(REPITCH):
  6346. case(REPITCHB):
  6347. dz->infile->filetype = TEXTFILE;
  6348. return(FINISHED);
  6349. }
  6350. /* fall thro */
  6351. case(UNRANGED_BRKFILE_OR_NUMLIST_OR_LINELIST_OR_WORDLIST):
  6352. switch(dz->process) {
  6353. case(INFO_PROPS):
  6354. dz->infile->filetype = UNRANGED_BRKFILE;
  6355. return(FINISHED);
  6356. case(MOD_SPACE):
  6357. if(dz->mode==MOD_MIRRORPAN) {
  6358. dz->infile->filetype = UNRANGED_BRKFILE;
  6359. return(FINISHED);
  6360. }
  6361. break;
  6362. case(MOD_LOUDNESS):
  6363. switch(dz->mode) {
  6364. case(LOUD_DB_PROPOR):
  6365. dz->infile->filetype = DB_BRKFILE;
  6366. break;
  6367. }
  6368. break;
  6369. }
  6370. /* fall thro */
  6371. case(NUMLIST_OR_LINELIST_OR_WORDLIST):
  6372. switch(dz->process) {
  6373. case(HF_PERM1): case(HF_PERM2): case(DEL_PERM): case(DEL_PERM2): case(MAKE_VFILT):
  6374. dz->infile->filetype = NUMLIST;
  6375. return(FINISHED);
  6376. }
  6377. /* fall thro */
  6378. case(LINELIST_OR_WORDLIST):
  6379. /* fall thro */
  6380. case(WORDLIST):
  6381. switch(dz->process) {
  6382. case(WORDCNT):
  6383. case(HOUSE_DISK):
  6384. case(HOUSE_BUNDLE):
  6385. case(HOUSE_SORT):
  6386. case(INFO_PROPS):
  6387. case(INFO_SFLEN):
  6388. case(INFO_MAXSAMP):
  6389. case(INFO_MAXSAMP2):
  6390. case(UTILS_GETCOL):
  6391. case(UTILS_PUTCOL):
  6392. case(UTILS_JOINCOL):
  6393. case(UTILS_COLMATHS):
  6394. case(UTILS_COLMUSIC):
  6395. case(UTILS_COLRAND):
  6396. case(UTILS_COLLIST):
  6397. case(UTILS_COLGEN):
  6398. dz->infile->filetype = WORDLIST;
  6399. return(FINISHED);
  6400. default:
  6401. sprintf(errstr,"type_conversion not done for this process: redefine_textfile_types()\n");
  6402. return(PROGRAM_ERROR);
  6403. }
  6404. }
  6405. switch(dz->infile->filetype) {
  6406. case(TRANSPOS_OR_UNRANGED_BRKFILE_OR_NUMLIST_OR_WORDLIST):
  6407. switch(dz->process) {
  6408. case(REPITCH):
  6409. case(REPITCHB):
  6410. dz->infile->filetype = TEXTFILE;
  6411. return(FINISHED);
  6412. }
  6413. /* fall thro */
  6414. case(UNRANGED_BRKFILE_OR_NUMLIST_OR_WORDLIST):
  6415. switch(dz->process) {
  6416. case(INFO_PROPS):
  6417. dz->infile->filetype = UNRANGED_BRKFILE;
  6418. return(FINISHED);
  6419. case(MOD_SPACE):
  6420. if(dz->mode==MOD_MIRRORPAN) {
  6421. dz->infile->filetype = UNRANGED_BRKFILE;
  6422. return(FINISHED);
  6423. }
  6424. break;
  6425. case(MOD_LOUDNESS):
  6426. switch(dz->mode) {
  6427. case(LOUD_DB_PROPOR):
  6428. dz->infile->filetype = DB_BRKFILE;
  6429. break;
  6430. }
  6431. break;
  6432. }
  6433. /* fall thro */
  6434. case(NUMLIST_OR_WORDLIST):
  6435. switch(dz->process) {
  6436. case(HF_PERM1): case(HF_PERM2): case(DEL_PERM): case(DEL_PERM2): case(MAKE_VFILT):
  6437. dz->infile->filetype = NUMLIST;
  6438. return(FINISHED);
  6439. }
  6440. /* fall thro */
  6441. case(WORDLIST):
  6442. switch(dz->process) {
  6443. case(WORDCNT):
  6444. case(HOUSE_DISK):
  6445. case(HOUSE_BUNDLE):
  6446. case(HOUSE_SORT):
  6447. case(INFO_PROPS):
  6448. case(INFO_SFLEN):
  6449. case(INFO_MAXSAMP):
  6450. case(INFO_MAXSAMP2):
  6451. case(UTILS_GETCOL):
  6452. case(UTILS_PUTCOL):
  6453. case(UTILS_JOINCOL):
  6454. case(UTILS_COLMATHS):
  6455. case(UTILS_COLMUSIC):
  6456. case(UTILS_COLRAND):
  6457. case(UTILS_COLLIST):
  6458. case(UTILS_COLGEN):
  6459. dz->infile->filetype = WORDLIST;
  6460. return(FINISHED);
  6461. default:
  6462. sprintf(errstr,"type_conversion not done for this process: redefine_textfile_types()\n");
  6463. return(PROGRAM_ERROR);
  6464. }
  6465. }
  6466. switch(dz->infile->filetype) {
  6467. case(MIXLIST_OR_LINELIST_OR_WORDLIST):
  6468. /* fall thro */
  6469. case(MIXLIST_OR_WORDLIST):
  6470. switch(dz->process) {
  6471. case(MIX):
  6472. case(MIXMAX):
  6473. case(MIXTEST):
  6474. case(MIXGAIN):
  6475. case(MIXSHUFL):
  6476. case(MIXTWARP):
  6477. case(MIXSWARP):
  6478. case(MIXSYNC):
  6479. case(MIXSYNCATT):
  6480. //TW NEW CASES
  6481. case(ADDTOMIX):
  6482. case(MIX_MODEL):
  6483. case(MIX_PAN):
  6484. case(MIX_AT_STEP):
  6485. case(INFO_PROPS):
  6486. dz->infile->filetype = MIXFILE;
  6487. return(FINISHED);
  6488. }
  6489. /* fall thro */
  6490. case(WORDLIST):
  6491. switch(dz->process) {
  6492. case(WORDCNT):
  6493. case(HOUSE_DISK):
  6494. case(HOUSE_BUNDLE):
  6495. case(HOUSE_SORT):
  6496. case(INFO_PROPS):
  6497. case(INFO_SFLEN):
  6498. case(INFO_MAXSAMP):
  6499. case(INFO_MAXSAMP2):
  6500. case(UTILS_GETCOL):
  6501. case(UTILS_PUTCOL):
  6502. case(UTILS_JOINCOL):
  6503. case(UTILS_COLMATHS):
  6504. case(UTILS_COLMUSIC):
  6505. case(UTILS_COLRAND):
  6506. case(UTILS_COLLIST):
  6507. case(UTILS_COLGEN):
  6508. case(BATCH_EXPAND):
  6509. dz->infile->filetype = WORDLIST;
  6510. return(FINISHED);
  6511. default:
  6512. sprintf(errstr,"type_conversion not done for this process: redefine_textfile_types()\n");
  6513. return(PROGRAM_ERROR);
  6514. }
  6515. }
  6516. switch(dz->infile->filetype) {
  6517. case(SNDLIST_OR_LINELIST_OR_WORDLIST): /* implies different srates */
  6518. /* fall thro */
  6519. case(SNDLIST_OR_WORDLIST):
  6520. /* fall thro */
  6521. case(WORDLIST):
  6522. switch(dz->process) {
  6523. case(WORDCNT):
  6524. case(HOUSE_DISK):
  6525. case(HOUSE_BUNDLE):
  6526. case(HOUSE_SORT):
  6527. case(INFO_PROPS):
  6528. case(INFO_SFLEN):
  6529. case(INFO_MAXSAMP):
  6530. case(INFO_MAXSAMP2):
  6531. case(UTILS_GETCOL):
  6532. case(UTILS_PUTCOL):
  6533. case(UTILS_JOINCOL):
  6534. case(UTILS_COLMATHS):
  6535. case(UTILS_COLMUSIC):
  6536. case(UTILS_COLRAND):
  6537. case(UTILS_COLLIST):
  6538. case(UTILS_COLGEN):
  6539. case(BATCH_EXPAND):
  6540. dz->infile->filetype = WORDLIST;
  6541. return(FINISHED);
  6542. default:
  6543. sprintf(errstr,"type_conversion not done for this process: redefine_textfile_types()\n");
  6544. return(PROGRAM_ERROR);
  6545. }
  6546. }
  6547. switch(dz->infile->filetype) {
  6548. case(SNDLIST_OR_SYNCLIST_OR_WORDLIST):
  6549. switch(dz->process) {
  6550. case(MIXDUMMY):
  6551. case(INFO_PROPS):
  6552. dz->infile->filetype = SNDLIST;
  6553. return(FINISHED);
  6554. case(MIXSYNC):
  6555. case(MIXSYNCATT):
  6556. dz->infile->filetype = SYNCLIST;
  6557. return(FINISHED);
  6558. }
  6559. /* fall thro */
  6560. case(WORDLIST):
  6561. switch(dz->process) {
  6562. case(WORDCNT):
  6563. case(HOUSE_DISK):
  6564. case(HOUSE_BUNDLE):
  6565. case(HOUSE_SORT):
  6566. case(INFO_PROPS):
  6567. case(INFO_SFLEN):
  6568. case(INFO_MAXSAMP):
  6569. case(INFO_MAXSAMP2):
  6570. case(UTILS_GETCOL):
  6571. case(UTILS_PUTCOL):
  6572. case(UTILS_JOINCOL):
  6573. case(UTILS_COLMATHS):
  6574. case(UTILS_COLMUSIC):
  6575. case(UTILS_COLRAND):
  6576. case(UTILS_COLLIST):
  6577. case(UTILS_COLGEN):
  6578. case(BATCH_EXPAND):
  6579. dz->infile->filetype = WORDLIST;
  6580. return(FINISHED);
  6581. default:
  6582. sprintf(errstr,"type_conversion not done for this process: redefine_textfile_types()\n");
  6583. return(PROGRAM_ERROR);
  6584. }
  6585. }
  6586. switch(dz->infile->filetype) {
  6587. case(SNDLIST_OR_SYNCLIST_LINELIST_OR_WORDLIST): /* list of snds AT SAME SRATE */
  6588. switch(dz->process) {
  6589. case(MIXDUMMY):
  6590. case(INFO_PROPS):
  6591. dz->infile->filetype = SNDLIST;
  6592. return(FINISHED);
  6593. case(MIXSYNC):
  6594. case(MIXSYNCATT):
  6595. dz->infile->filetype = SYNCLIST;
  6596. return(FINISHED);
  6597. }
  6598. /* fall thro */
  6599. case(LINELIST_OR_WORDLIST):
  6600. /* fall thro */
  6601. case(WORDLIST):
  6602. switch(dz->process) {
  6603. case(WORDCNT):
  6604. case(HOUSE_DISK):
  6605. case(HOUSE_BUNDLE):
  6606. case(HOUSE_SORT):
  6607. case(INFO_PROPS):
  6608. case(INFO_SFLEN):
  6609. case(INFO_MAXSAMP):
  6610. case(INFO_MAXSAMP2):
  6611. case(UTILS_GETCOL):
  6612. case(UTILS_PUTCOL):
  6613. case(UTILS_JOINCOL):
  6614. case(UTILS_COLMATHS):
  6615. case(UTILS_COLMUSIC):
  6616. case(UTILS_COLRAND):
  6617. case(UTILS_COLLIST):
  6618. case(UTILS_COLGEN):
  6619. case(BATCH_EXPAND):
  6620. dz->infile->filetype = WORDLIST;
  6621. return(FINISHED);
  6622. default:
  6623. sprintf(errstr,"type_conversion not done for this process: redefine_textfile_types()\n");
  6624. return(PROGRAM_ERROR);
  6625. }
  6626. }
  6627. switch(dz->infile->filetype) {
  6628. case(SYNCLIST_OR_LINELIST_OR_WORDLIST): /* i.e. can't be a sndlist */
  6629. switch(dz->process) {
  6630. case(MIXSYNCATT):
  6631. case(INFO_PROPS):
  6632. dz->infile->filetype = SYNCLIST;
  6633. return(FINISHED);
  6634. }
  6635. /* fall thro */
  6636. case(LINELIST_OR_WORDLIST):
  6637. /* fall thro */
  6638. case(WORDLIST):
  6639. switch(dz->process) {
  6640. case(WORDCNT):
  6641. case(HOUSE_DISK):
  6642. case(HOUSE_BUNDLE):
  6643. case(HOUSE_SORT):
  6644. case(INFO_PROPS):
  6645. case(INFO_SFLEN):
  6646. case(INFO_MAXSAMP):
  6647. case(INFO_MAXSAMP2):
  6648. case(UTILS_GETCOL):
  6649. case(UTILS_PUTCOL):
  6650. case(UTILS_JOINCOL):
  6651. case(UTILS_COLMATHS):
  6652. case(UTILS_COLMUSIC):
  6653. case(UTILS_COLRAND):
  6654. case(UTILS_COLLIST):
  6655. case(UTILS_COLGEN):
  6656. case(BATCH_EXPAND):
  6657. dz->infile->filetype = WORDLIST;
  6658. return(FINISHED);
  6659. default:
  6660. sprintf(errstr,"type_conversion not done for this process: redefine_textfile_types()\n");
  6661. return(PROGRAM_ERROR);
  6662. }
  6663. }
  6664. switch(dz->infile->filetype) {
  6665. case(SYNCLIST_OR_WORDLIST): /* i.e. can't be a sndlist */
  6666. switch(dz->process) {
  6667. case(MIXSYNCATT):
  6668. case(INFO_PROPS):
  6669. dz->infile->filetype = SYNCLIST;
  6670. return(FINISHED);
  6671. }
  6672. /* fall thro */
  6673. case(WORDLIST):
  6674. switch(dz->process) {
  6675. case(WORDCNT):
  6676. case(HOUSE_DISK):
  6677. case(HOUSE_BUNDLE):
  6678. case(HOUSE_SORT):
  6679. case(INFO_PROPS):
  6680. case(INFO_SFLEN):
  6681. case(INFO_MAXSAMP):
  6682. case(INFO_MAXSAMP2):
  6683. case(UTILS_GETCOL):
  6684. case(UTILS_PUTCOL):
  6685. case(UTILS_JOINCOL):
  6686. case(UTILS_COLMATHS):
  6687. case(UTILS_COLMUSIC):
  6688. case(UTILS_COLRAND):
  6689. case(UTILS_COLLIST):
  6690. case(UTILS_COLGEN):
  6691. case(BATCH_EXPAND):
  6692. dz->infile->filetype = WORDLIST;
  6693. return(FINISHED);
  6694. default:
  6695. sprintf(errstr,"type_conversion not done for this process: redefine_textfile_types()\n");
  6696. return(PROGRAM_ERROR);
  6697. }
  6698. }
  6699. switch(dz->infile->filetype) {
  6700. case(LINELIST_OR_WORDLIST):
  6701. /* fall thro */
  6702. case(WORDLIST):
  6703. switch(dz->process) {
  6704. case(WORDCNT):
  6705. case(HOUSE_DISK):
  6706. case(HOUSE_BUNDLE):
  6707. case(HOUSE_SORT):
  6708. case(INFO_PROPS):
  6709. case(INFO_SFLEN):
  6710. case(INFO_MAXSAMP):
  6711. case(INFO_MAXSAMP2):
  6712. case(UTILS_GETCOL):
  6713. case(UTILS_PUTCOL):
  6714. case(UTILS_JOINCOL):
  6715. case(UTILS_COLMATHS):
  6716. case(UTILS_COLMUSIC):
  6717. case(UTILS_COLRAND):
  6718. case(UTILS_COLLIST):
  6719. case(UTILS_COLGEN):
  6720. case(BATCH_EXPAND):
  6721. dz->infile->filetype = WORDLIST;
  6722. return(FINISHED);
  6723. default:
  6724. sprintf(errstr,"type_conversion not done for this process: redefine_textfile_types()\n");
  6725. return(PROGRAM_ERROR);
  6726. }
  6727. }
  6728. switch(dz->infile->filetype) {
  6729. case(TRANSPOS_OR_PITCH_BRKFILE_OR_NUMLIST_OR_LINELIST_OR_WORDLIST):
  6730. case(PITCH_BRKFILE_OR_NUMLIST_OR_LINELIST_OR_WORDLIST):
  6731. switch(dz->process) {
  6732. case(REPITCH):
  6733. case(REPITCHB):
  6734. dz->infile->filetype = TEXTFILE;
  6735. return(FINISHED);
  6736. case(INFO_PROPS):
  6737. dz->infile->filetype = UNRANGED_BRKFILE;
  6738. return(FINISHED);
  6739. case(MOD_SPACE):
  6740. if(dz->mode==MOD_MIRRORPAN) {
  6741. dz->infile->filetype = UNRANGED_BRKFILE;
  6742. return(FINISHED);
  6743. }
  6744. break;
  6745. case(MOD_LOUDNESS):
  6746. switch(dz->mode) {
  6747. case(LOUD_PROPOR):
  6748. dz->infile->filetype = POSITIVE_BRKFILE;
  6749. break;
  6750. }
  6751. break;
  6752. }
  6753. /* fall thro */
  6754. case(NUMLIST_OR_LINELIST_OR_WORDLIST):
  6755. switch(dz->process) {
  6756. case(HF_PERM1): case(HF_PERM2): case(DEL_PERM): case(DEL_PERM2): case(MAKE_VFILT):
  6757. dz->infile->filetype = NUMLIST;
  6758. return(FINISHED);
  6759. }
  6760. /* fall thro */
  6761. case(LINELIST_OR_WORDLIST):
  6762. /* fall thro */
  6763. case(WORDLIST):
  6764. switch(dz->process) {
  6765. case(WORDCNT):
  6766. case(HOUSE_DISK):
  6767. case(HOUSE_BUNDLE):
  6768. case(HOUSE_SORT):
  6769. case(INFO_PROPS):
  6770. case(INFO_SFLEN):
  6771. case(INFO_MAXSAMP):
  6772. case(INFO_MAXSAMP2):
  6773. case(UTILS_GETCOL):
  6774. case(UTILS_PUTCOL):
  6775. case(UTILS_JOINCOL):
  6776. case(UTILS_COLMATHS):
  6777. case(UTILS_COLMUSIC):
  6778. case(UTILS_COLRAND):
  6779. case(UTILS_COLLIST):
  6780. case(UTILS_COLGEN):
  6781. case(BATCH_EXPAND):
  6782. dz->infile->filetype = WORDLIST;
  6783. return(FINISHED);
  6784. default:
  6785. sprintf(errstr,"type_conversion not done for this process: redefine_textfile_types()\n");
  6786. return(PROGRAM_ERROR);
  6787. }
  6788. }
  6789. switch(dz->infile->filetype) {
  6790. case(TRANSPOS_OR_PITCH_BRKFILE_OR_NUMLIST_OR_WORDLIST):
  6791. case(PITCH_BRKFILE_OR_NUMLIST_OR_WORDLIST):
  6792. switch(dz->process) {
  6793. case(REPITCH):
  6794. case(REPITCHB):
  6795. dz->infile->filetype = TEXTFILE;
  6796. return(FINISHED);
  6797. case(INFO_PROPS):
  6798. dz->infile->filetype = UNRANGED_BRKFILE;
  6799. return(FINISHED);
  6800. case(MOD_SPACE):
  6801. if(dz->mode==MOD_MIRRORPAN) {
  6802. dz->infile->filetype = UNRANGED_BRKFILE;
  6803. return(FINISHED);
  6804. }
  6805. break;
  6806. case(MOD_LOUDNESS):
  6807. switch(dz->mode) {
  6808. case(LOUD_PROPOR):
  6809. dz->infile->filetype = POSITIVE_BRKFILE;
  6810. break;
  6811. case(LOUD_DB_PROPOR):
  6812. dz->infile->filetype = DB_BRKFILE;
  6813. break;
  6814. }
  6815. break;
  6816. }
  6817. /* fall thro */
  6818. case(NUMLIST_OR_WORDLIST):
  6819. switch(dz->process) {
  6820. case(HF_PERM1): case(HF_PERM2): case(DEL_PERM): case(DEL_PERM2): case(MAKE_VFILT):
  6821. dz->infile->filetype = NUMLIST;
  6822. return(FINISHED);
  6823. }
  6824. /* fall thro */
  6825. case(WORDLIST):
  6826. switch(dz->process) {
  6827. case(WORDCNT):
  6828. case(HOUSE_DISK):
  6829. case(HOUSE_BUNDLE):
  6830. case(HOUSE_SORT):
  6831. case(INFO_PROPS):
  6832. case(INFO_SFLEN):
  6833. case(INFO_MAXSAMP):
  6834. case(INFO_MAXSAMP2):
  6835. case(UTILS_GETCOL):
  6836. case(UTILS_PUTCOL):
  6837. case(UTILS_JOINCOL):
  6838. case(UTILS_COLMATHS):
  6839. case(UTILS_COLMUSIC):
  6840. case(UTILS_COLRAND):
  6841. case(UTILS_COLLIST):
  6842. case(UTILS_COLGEN):
  6843. case(BATCH_EXPAND):
  6844. dz->infile->filetype = WORDLIST;
  6845. return(FINISHED);
  6846. default:
  6847. sprintf(errstr,"type_conversion not done for this process: redefine_textfile_types()\n");
  6848. return(PROGRAM_ERROR);
  6849. }
  6850. }
  6851. sprintf(errstr,"Unknown input textfile type: redefine_textfile_types()\n");
  6852. return(PROGRAM_ERROR);
  6853. }
  6854. /************************************* SOUND_LOOM_IN_USE ******************************/
  6855. int sound_loom_in_use(int *argc, char **argv[]) {
  6856. char *p;
  6857. if(*argc>1) {
  6858. if(!strcmp((*argv)[1],"#")) {
  6859. (*argv)++;
  6860. (*argc)--;
  6861. return 1;
  6862. } else if (!strcmp((*argv)[1],"##")) {
  6863. p = (*argv)[0];
  6864. (*argc)--;
  6865. (*argv)++;
  6866. (*argv)[0] = p;
  6867. return 2;
  6868. }
  6869. }
  6870. return 0;
  6871. }
  6872. /************************ print_outmessage **********************/
  6873. void print_outmessage(char *str) {
  6874. if(!sloom && !sloombatch)
  6875. fprintf(stdout,"%s",str);
  6876. else
  6877. fprintf(stdout,"INFO: %s",str);
  6878. }
  6879. /************************ print_outmessage_flush **********************/
  6880. void print_outmessage_flush(char *str) {
  6881. if(!sloom && !sloombatch)
  6882. fprintf(stdout,"%s",str);
  6883. else {
  6884. fprintf(stdout,"INFO: %s",str);
  6885. fflush(stdout);
  6886. }
  6887. }
  6888. /********************** PRINT_OUTWARNING_FLUSH ***************************/
  6889. void print_outwarning_flush(char *str)
  6890. {
  6891. if(!sloom && !sloombatch)
  6892. fprintf(stdout,"%s",str);
  6893. else {
  6894. fprintf(stdout,"WARNING: %s",str);
  6895. fflush(stdout);
  6896. }
  6897. }
  6898. /**************************STRGETFLOAT **************************
  6899. * takes a pointer TO A POINTER to a string. If it succeeds in finding
  6900. * a float it returns the float value (*val), and it's new position in the
  6901. * string (*str).
  6902. */
  6903. int strgetfloat(char **str,double *val)
  6904. { char *p, *q, *end;
  6905. double numero;
  6906. int point, valid;
  6907. for(;;) {
  6908. point = 0;
  6909. p = *str;
  6910. while(isspace(*p))
  6911. p++;
  6912. q = p;
  6913. if(!isdigit(*p) && *p != '.' && *p!='-')
  6914. return(0);
  6915. if(*p == '.'|| *p == '-') {
  6916. if(*p == '-') {
  6917. p++;
  6918. } else {
  6919. point++;
  6920. p++;
  6921. }
  6922. }
  6923. for(;;) {
  6924. if(*p == '.') {
  6925. if(point)
  6926. return(0);
  6927. else {
  6928. point++;
  6929. p++;
  6930. continue;
  6931. }
  6932. }
  6933. if(isdigit(*p)) {
  6934. p++;
  6935. continue;
  6936. } else {
  6937. if(!isspace(*p) && *p!=ENDOFSTR)
  6938. return(0);
  6939. else {
  6940. end = p;
  6941. p = q;
  6942. valid = 0;
  6943. while(p!=end) {
  6944. if(isdigit(*p))
  6945. valid++;
  6946. p++;
  6947. }
  6948. if(valid) {
  6949. if(sscanf(q,"%lf",&numero)!=1)
  6950. return(0);
  6951. *val = numero;
  6952. *str = end;
  6953. return(1);
  6954. }
  6955. return(0);
  6956. }
  6957. }
  6958. }
  6959. }
  6960. return(0); /* NOTREACHED */
  6961. }
  6962. //TW: NEW FUNCTIONS BELOW
  6963. /********************************** STRGETFLOAT_WITHIN_STRING ***********************************
  6964. *
  6965. * Differs from strgetfloat, in that float in string need not be terminated by space or endofstring
  6966. */
  6967. int strgetfloat_within_string(char **str,double *val)
  6968. { char *p, *q, c;
  6969. int point = 0, digit = 0;
  6970. p = *str;
  6971. while(isspace(*p))
  6972. p++;
  6973. q = p;
  6974. for(;;) {
  6975. if(*p == '-') {
  6976. if (p != q)
  6977. return(0); /* negative sign only at start */
  6978. } else if (*p == '.') {
  6979. if(point)
  6980. return(0); /* only one decimal point */
  6981. point++;
  6982. } else if(isdigit(*p))
  6983. digit++;
  6984. else
  6985. break;
  6986. p++;
  6987. }
  6988. if(!digit)
  6989. return(0);
  6990. c = *p;
  6991. *p = ENDOFSTR;
  6992. if(sscanf(q,"%lf",val)!=1) {
  6993. *p = c;
  6994. return(0);
  6995. }
  6996. *p = c;
  6997. *str = p;
  6998. return(1);
  6999. }
  7000. /********************* VALUE_IS_NUMERIC *********************/
  7001. int value_is_numeric(char *str)
  7002. { char *p, *q, *end;
  7003. int point, valid;
  7004. for(;;) {
  7005. point = 0;
  7006. p = str;
  7007. while(isspace(*p))
  7008. p++;
  7009. q = p;
  7010. if(!isdigit(*p) && *p != '.' && *p!='-')
  7011. return(0);
  7012. if(*p == '.'|| *p == '-') {
  7013. if(*p == '-') {
  7014. p++;
  7015. } else {
  7016. point++;
  7017. p++;
  7018. }
  7019. }
  7020. for(;;) {
  7021. if(*p == '.') {
  7022. if(point)
  7023. return(0);
  7024. else {
  7025. point++;
  7026. p++;
  7027. continue;
  7028. }
  7029. }
  7030. if(isdigit(*p)) {
  7031. p++;
  7032. continue;
  7033. } else {
  7034. if(!isspace(*p) && *p!=ENDOFSTR)
  7035. return(0);
  7036. else {
  7037. end = p;
  7038. p = q;
  7039. valid = 0;
  7040. while(p!=end) {
  7041. if(isdigit(*p))
  7042. valid++;
  7043. p++;
  7044. }
  7045. if(valid)
  7046. return(1);
  7047. return(0);
  7048. }
  7049. }
  7050. }
  7051. }
  7052. return(0); /* NOTREACHED */
  7053. }
  7054. #ifdef TEST_HEADREAD
  7055. int headread_check(SFPROPS props,char *filename,int ifd)
  7056. {
  7057. infileptr inputfile;
  7058. int dummy;
  7059. if((inputfile = (infileptr)malloc(sizeof(struct filedata)))==NULL) {
  7060. sprintf(errstr,"Insufficient memory for headread_check on file %s.\n",filename);
  7061. return(MEMORY_ERROR);
  7062. }
  7063. if(sndgetprop(ifd,"sample rate", (char *)&(inputfile->srate), sizeof(int)) < 0){
  7064. fprintf(stdout,"INFO: Cannot read sample rate in file: %s\n",filename);
  7065. fflush(stdout);
  7066. return(DATA_ERROR);
  7067. }
  7068. if(props.srate != inputfile->srate) {
  7069. fprintf(stdout,"INFO: snd_headread gives srate %ld: correct val = %ld: file %s\n",props.srate,inputfile->srate,filename);
  7070. fflush(stdout);
  7071. }
  7072. if(sndgetprop(ifd,"channels", (char *)&(inputfile->channels), sizeof(int)) < 0){
  7073. fprintf(stdout,"INFO: Cannot read channel count in file: %s\n",filename);
  7074. fflush(stdout);
  7075. return(DATA_ERROR);
  7076. }
  7077. if(props.chans != inputfile->channels) {
  7078. fprintf(stdout,"INFO: snd_headread gives channels %ld: correct val = %ld: file %s\n",props.chans,inputfile->channels,filename);
  7079. fflush(stdout);
  7080. }
  7081. inputfile->filetype = SNDFILE;
  7082. if(sndgetprop(ifd,"is an envelope",(char *)&dummy,sizeof(int)) >= 0)
  7083. inputfile->filetype = ENVFILE;
  7084. else if(sndgetprop(ifd,"is a pitch file",(char *)&dummy,sizeof(int)) >= 0)
  7085. inputfile->filetype = PITCHFILE;
  7086. else if(sndgetprop(ifd,"is a transpos file",(char *)&dummy,sizeof(int)) >= 0)
  7087. inputfile->filetype = TRANSPOSFILE;
  7088. else if(sndgetprop(ifd,"is a formant file",(char *)&dummy,sizeof(int)) >= 0)
  7089. inputfile->filetype = FORMANTFILE;
  7090. else if(sndgetprop(ifd,"original sampsize", (char *)&(inputfile->origstype), sizeof(int)) >= 0)
  7091. inputfile->filetype = ANALFILE;
  7092. switch(inputfile->filetype) {
  7093. case(SNDFILE):
  7094. return(FINISHED);
  7095. case(ENVFILE):
  7096. if(sndgetprop(ifd,"window size", (char *)&(inputfile->window_size), sizeof(float)) < 0){
  7097. fprintf(stdout,"INFO: Cannot read envelope sindow size in file: %s\n",filename);
  7098. fflush(stdout);
  7099. return(DATA_ERROR);
  7100. }
  7101. if(props.window_size != inputfile->window_size) {
  7102. fprintf(stdout,"INFO: snd_headread gives window_size %f: correct val = %f: file %s\n",props.window_size,inputfile->window_size,filename);
  7103. fflush(stdout);
  7104. }
  7105. return(FINISHED);
  7106. case(FORMANTFILE):
  7107. if(sndgetprop(ifd,"specenvcnt", (char *)&(inputfile->specenvcnt), sizeof(int)) < 0){
  7108. fprintf(stdout,"INFO: Cannot read specenvcnt in file: %s\n",filename);
  7109. fflush(stdout);
  7110. return(DATA_ERROR);
  7111. }
  7112. if(props.specenvcnt != inputfile->specenvcnt) {
  7113. fprintf(stdout,"INFO: snd_headread gives specenvcnt %ld: correct val = %ld: file %s\n",props.specenvcnt,inputfile->specenvcnt,filename);
  7114. fflush(stdout);
  7115. }
  7116. /* fall through */
  7117. case(PITCHFILE):
  7118. case(TRANSPOSFILE):
  7119. if(sndgetprop(ifd,"orig channels", (char *)&(inputfile->origchans), sizeof(int)) < 0){
  7120. fprintf(stdout,"INFO: Cannot read origchans in file: %s\n",filename);
  7121. fflush(stdout);
  7122. return(DATA_ERROR);
  7123. }
  7124. if(props.origchans != inputfile->origchans) {
  7125. fprintf(stdout,"INFO: snd_headread gives origchans %ld: correct val = %ld: file %s\n",props.origchans,inputfile->origchans,filename);
  7126. fflush(stdout);
  7127. }
  7128. /* fall through */
  7129. case(ANALFILE):
  7130. if(sndgetprop(ifd,"original sampsize", (char *)&(inputfile->origstype), sizeof(int)) < 0){
  7131. fprintf(stdout,"INFO: Cannot read original sample type in file: %s\n",filename);
  7132. fflush(stdout);
  7133. return(DATA_ERROR);
  7134. }
  7135. if(sndgetprop(ifd,"original sample rate", (char *)&(inputfile->origrate), sizeof(int)) < 0){
  7136. fprintf(stdout,"INFO: Cannot read original sample rate in file: %s\n",filename);
  7137. fflush(stdout);
  7138. return(DATA_ERROR);
  7139. }
  7140. if(sndgetprop(ifd,"arate",(char *)&(inputfile->arate),sizeof(float)) < 0){
  7141. fprintf(stdout,"INFO: Cannot read analysis rate in file: %s\n",filename);
  7142. fflush(stdout);
  7143. return(DATA_ERROR);
  7144. }
  7145. if(sndgetprop(ifd,"analwinlen",(char *)&(inputfile->Mlen),sizeof(int)) < 0){
  7146. fprintf(stdout,"INFO: Cannot read analysis window length in file: %s\n",filename);
  7147. fflush(stdout);
  7148. return(DATA_ERROR);
  7149. }
  7150. if(sndgetprop(ifd,"decfactor",(char *)&(inputfile->Dfac),sizeof(int)) < 0) {
  7151. fprintf(stdout,"INFO: Cannot read decimation factor in file: %s\n",filename);
  7152. fflush(stdout);
  7153. return(DATA_ERROR);
  7154. }
  7155. if(props.origsize != inputfile->origstype) {
  7156. fprintf(stdout,"INFO: snd_headread gives origstype %ld: correct val = %ld: file %s\n",props.origsize,inputfile->origstype,filename);
  7157. fflush(stdout);
  7158. }
  7159. if(props.origrate != inputfile->origrate) {
  7160. fprintf(stdout,"INFO: snd_headread gives origrate %ld: correct val = %ld: file %s\n",props.origrate,inputfile->origrate,filename);
  7161. fflush(stdout);
  7162. }
  7163. if(props.arate != inputfile->arate) {
  7164. fprintf(stdout,"INFO: snd_headread gives arate %f: correct val = %f: file %s\n",props.arate,inputfile->arate,filename);
  7165. fflush(stdout);
  7166. }
  7167. if(props.winlen != inputfile->Mlen) {
  7168. fprintf(stdout,"INFO: snd_headread gives Mlen %d: correct val = %d: file %s\n",props.winlen,inputfile->Mlen,filename);
  7169. fflush(stdout);
  7170. }
  7171. if(props.decfac != inputfile->Dfac) {
  7172. fprintf(stdout,"INFO: snd_headread gives Dfac %d: correct val = %d: file %s\n",props.decfac,inputfile->Dfac,filename);
  7173. fflush(stdout);
  7174. }
  7175. break;
  7176. }
  7177. return(FINISHED);
  7178. }
  7179. #endif
  7180. /***************************************** COPY_TO_INFILEPTR ***********************************/
  7181. void copy_to_fileptr(infileptr i, fileptr f)
  7182. {
  7183. f->filetype = i->filetype;
  7184. f->srate = i->srate;
  7185. f->stype = i->stype;
  7186. f->origstype = i->origstype;
  7187. f->origrate = i->origrate;
  7188. f->channels = i->channels;
  7189. f->origchans = i->origchans;
  7190. f->specenvcnt = i->specenvcnt;
  7191. f->Mlen = i->Mlen;
  7192. f->Dfac = i->Dfac;
  7193. f->arate = i->arate;
  7194. f->window_size = i->window_size;
  7195. }
  7196. /***************************************** GETPEAKDATA ***********************************/
  7197. //TW get peak val and position
  7198. int getpeakdata(int ifd, float *peakval,int *peakpos,SFPROPS props)
  7199. {
  7200. CHPEAK peaks[16];
  7201. int chans, peaktime, maxpos = -1, pos_set = 0;
  7202. float maxamp = -2.0f;
  7203. chans = props.chans;
  7204. if(sndreadpeaks(ifd,chans,peaks,&peaktime)){
  7205. int i;
  7206. for(i=0;i < chans;i++) {
  7207. if(peaks[i].value > maxamp) {
  7208. maxamp = peaks[i].value;
  7209. maxpos = peaks[i].position;
  7210. pos_set = 1;
  7211. } else if(smpflteq(peaks[i].value,maxamp)) {
  7212. if(pos_set && (peaks[i].position < (unsigned int)maxpos))
  7213. maxpos = peaks[i].position;
  7214. }
  7215. }
  7216. if(maxpos < 0) {
  7217. return 0;
  7218. } else {
  7219. *peakval = maxamp;
  7220. *peakpos = maxpos;
  7221. }
  7222. return 1;
  7223. }
  7224. /* sf_headread error; but can't do much about it */
  7225. return 0;
  7226. }