tkusage_other.c 573 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519
  1. /*
  2. * Copyright (c) 1983-2020 Trevor Wishart and Composers Desktop Project Ltd
  3. * http://www.trevorwishart.co.uk
  4. * http://www.composersdesktop.com
  5. *
  6. This file is part of the CDP System.
  7. The CDP System is free software; you can redistribute it
  8. and/or modify it under the terms of the GNU Lesser General Public
  9. License as published by the Free Software Foundation; either
  10. version 2.1 of the License, or (at your option) any later version.
  11. The CDP System is distributed in the hope that it will be useful,
  12. but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14. GNU Lesser General Public License for more details.
  15. You should have received a copy of the GNU Lesser General Public
  16. License along with the CDP System; if not, write to the Free Software
  17. Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  18. 02111-1307 USA
  19. *
  20. */
  21. #include <stdio.h>
  22. #include <standalone.h>
  23. #include <string.h>
  24. #include <speccon.h>
  25. #include <science.h>
  26. #define RRRR_EXTEND (345)
  27. #define SEMITONES_PER_OCTAVE (12)
  28. static void RoomReverbFormat(void);
  29. const char* cdp_version = "6.1.0";
  30. /******************************** TKUSAGE_OTHER ********************************/
  31. int main(int argc, char *argv[])
  32. {
  33. int process, mode;
  34. if(argc==2 && (strcmp(argv[1],"--version") == 0)) {
  35. fprintf(stdout,"%s\n",cdp_version);
  36. fflush(stdout);
  37. return 0;
  38. }
  39. if(argc!=3) {
  40. fprintf(stdout,"ERROR: Error in usage program tkusage_other\n");
  41. return -1;
  42. }
  43. if(sscanf(argv[1],"%d",&process)!=1) {
  44. fprintf(stdout,"ERROR: Failed to read process number in tkusage_other\n");
  45. return -1;
  46. }
  47. if(sscanf(argv[2],"%d",&mode)!=1) {
  48. fprintf(stdout,"ERROR: Failed to read process number in tkusage_other\n");
  49. return -1;
  50. }
  51. switch(process) {
  52. case(TAPDELAY):
  53. fprintf(stdout,"INFO: STEREO MULTI-TAPPED DELAY WITH SPATIAL POSITIONING OF DELAYS.\n");
  54. fprintf(stdout,"INFO: \n");
  55. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------------\n");
  56. fprintf(stdout,"INFO: \n");
  57. fprintf(stdout,"INFO: DELAY TIMES AMPS (& POSITIONS). A Text Datafile.\n");
  58. fprintf(stdout,"INFO: Each line has either 2 values (TIME , AMPLITUDE of one delay).\n");
  59. fprintf(stdout,"INFO: or 3 values (third value specifies spatial POSITION of this delay in the stereo space).\n");
  60. fprintf(stdout,"INFO: TIMES (seconds) must be increasing. Duplicate times are ignored.\n");
  61. fprintf(stdout,"INFO: A zero time (no delay) overrides the mix parameter,\n");
  62. fprintf(stdout,"INFO: and determines the level and pan of the (effectively mono) input.\n");
  63. fprintf(stdout,"INFO: AMP values must be in the range 0.0 to 1.0\n");
  64. fprintf(stdout,"INFO: Empty lines and lines starting with a semi-colon (e.g. comments) are permitted.\n");
  65. fprintf(stdout,"INFO: If a Position value is used in any line, outfile will be stereo.\n");
  66. fprintf(stdout,"INFO: POSITION values are nominally in the range -1 to +1: 0 = centre.\n");
  67. fprintf(stdout,"INFO: If all position values are 0, the output will be mono.\n");
  68. fprintf(stdout,"INFO: Values beyond these limits result in attenuation according to the\n");
  69. fprintf(stdout,"INFO: inverse-square law, to suggest distance beyond the speakers.\n");
  70. fprintf(stdout,"INFO: \n");
  71. fprintf(stdout,"INFO: OUTPUT GAIN ...........Gain applied to output signal.\n");
  72. fprintf(stdout,"INFO: FEEDBACK ..............Proportion of output signal fed back into input.\n");
  73. fprintf(stdout,"INFO: (Negative values invert phase of feedback).\n");
  74. fprintf(stdout,"INFO: SOURCE SIGNAL IN MIX...Proportion of original src sound mixed with the delay-output.\n");
  75. fprintf(stdout,"INFO: DECAY TAIL DURATION....Time allowed for delays to decay to zero.\n");
  76. fprintf(stdout,"INFO: \n");
  77. break;
  78. case(RMRESP):
  79. fprintf(stdout,"INFO: GENERATE ROOM RESPONSE DATA SUITABLE FOR USE WITH REVERB PROGRAMS.\n");
  80. fprintf(stdout,"INFO: \n");
  81. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------------\n");
  82. fprintf(stdout,"INFO: \n");
  83. fprintf(stdout,"INFO: LIVENESS...................... degree of reflection from each surface.\n");
  84. fprintf(stdout,"INFO: NUMBER OF REFLECTIONS......... number of reflections from each surface.\n");
  85. fprintf(stdout,"INFO: (WARNING: high values will create extremely long data files!).\n");
  86. fprintf(stdout,"INFO: ROOM LENGTH, WIDTH, HEIGHT.... The size of the room, in metres.\n");
  87. fprintf(stdout,"INFO: SRC POSITION, LENGTHWAYS, WIDTHWAYS & HEIGHT within the room, in metres.\n");;
  88. fprintf(stdout,"INFO: LISTENER POSITION LENGTHWAYS, WIDTHWAYS, & HEIGHT within the room, in metres.\n");;
  89. fprintf(stdout,"INFO: PEAK AMPLITUDE OF DATA\n");
  90. fprintf(stdout,"INFO: REFLECTION TIME RESOLUTION (MS).\n");;
  91. fprintf(stdout,"INFO: \n");
  92. fprintf(stdout,"INFO: OUTPUT is a text datafile suitable for use with MULTIPLE-DELAYS, REVERB or ROOM REVERB processes.\n");
  93. fprintf(stdout,"INFO: \n");
  94. fprintf(stdout,"INFO: NB: The first output time is non-zero.\n");
  95. fprintf(stdout,"INFO: \n");
  96. break;
  97. case(RMVERB):
  98. fprintf(stdout,"INFO: MULTI-CHANNEL REVERB WITH ROOM SIMULATION.\n");
  99. fprintf(stdout,"INFO: \n");
  100. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------------\n");
  101. fprintf(stdout,"INFO: \n");
  102. fprintf(stdout,"INFO: An OPTIONAL Text Datafile. (Enter '0' to use preset values instead)......\n");
  103. RoomReverbFormat();
  104. fprintf(stdout,"INFO: \n");
  105. fprintf(stdout,"INFO: ROOM SIZE......................1 small, 2 medium, 3 large.\n");
  106. fprintf(stdout,"INFO: DENSE REVERB GAIN..............level of the dense reverberation.\n");
  107. fprintf(stdout,"INFO: SOURCE SIGNAL IN MIX...........Proportion of original src sound mixed with the delay-output.\n");
  108. fprintf(stdout,"INFO: FEEDBACK ......................Proportion of output signal fed back into input.\n");
  109. fprintf(stdout,"INFO: AIR-ABSORPTION FILTER CUTOFF...Cutoff frq (Hz) of low pass filter modelling air absorption.\n");
  110. fprintf(stdout,"INFO: (typically 2500Hz for Large room, 4200Hz for small: set to ZERO for NO absorption).\n");
  111. fprintf(stdout,"INFO: LOWPASS REVERB-INPUT CUTOFF....Cutoff frq (Hz) of low pass filter on input to reverb.\n");
  112. fprintf(stdout,"INFO: (set to ZERO for NO filtering of input).\n");
  113. fprintf(stdout,"INFO: DECAY TAIL DURATION............Time allowed for delays to decay to zero.\n");
  114. fprintf(stdout,"INFO: LOWPASS INPUT CUTOFF...........Cutoff frq (Hz) of low pass filter on source.\n");
  115. fprintf(stdout,"INFO: HIGHPASS INPUT CUTOFF..........Cutoff frq (Hz) of high pass filter on source.\n");
  116. fprintf(stdout,"INFO: REVERB PREDELAY (MS)...........Force delay to start at specified time.\n");
  117. fprintf(stdout,"INFO: NUMBER OF OUTPUT CHANNELS......Defaults to stereo.\n");
  118. fprintf(stdout,"INFO: DOUBLE AIR-ABSORPTION.........(Reduces reverb time: Increase Feedback to compensate).\n");
  119. fprintf(stdout,"INFO: FLOATING POINT OUTPUT FILE.....or not.\n");
  120. fprintf(stdout,"INFO: \n");
  121. break;
  122. case(MIXMULTI):
  123. fprintf(stdout,"INFO: MULTI-CHANNEL MIXING FOR UP TO 64-CHANNELS, WITH CHANNEL CROSS-THREADING.\n");
  124. fprintf(stdout,"INFO: \n");
  125. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------------\n");
  126. fprintf(stdout,"INFO: \n");
  127. fprintf(stdout,"INFO: MIXING STARTTIME...starttime in mix (to start mixing later than zero).\n");
  128. fprintf(stdout,"INFO: MIXING ENDTIME.....endtime in mix (to stop mix before its true end).\n");
  129. fprintf(stdout,"INFO: \n");
  130. fprintf(stdout,"INFO: Note that the START and END params intended for mix TESTING purposes only.\n");
  131. fprintf(stdout,"INFO: If you want to keep output from such a testmix, you should TOPNTAIL it.\n");
  132. fprintf(stdout,"INFO: \n");
  133. fprintf(stdout,"INFO: ATTENUATION.......reduce the mix level, if necessary.\n");
  134. fprintf(stdout,"INFO: \n");
  135. fprintf(stdout,"INFO: MIXFILE FORMAT FOR MULTICHANNEL MIXING:\n");
  136. fprintf(stdout,"INFO: The first line indicates the number of output channels.\n");
  137. fprintf(stdout,"INFO: \n");
  138. fprintf(stdout,"INFO: The ensuing lines have the following format e.g.\n");
  139. fprintf(stdout,"INFO: snd1.wav 0.0 4 1:1 .5 2:2 .5 3:3 .5 4:4 .5\n");
  140. fprintf(stdout,"INFO: snd2.wav 2.0 4 1:1 .25 2:1 .25 3:1 .25 4:1 .25\n");
  141. fprintf(stdout,"INFO: snd3.wav 2.0 16 2:3 .25 4:1 .25\n");
  142. fprintf(stdout,"INFO: \n");
  143. fprintf(stdout,"INFO: Each line consists of:\n");
  144. fprintf(stdout,"INFO: 1) Name of a soundfile\n");
  145. fprintf(stdout,"INFO: 2) Entry time of that sound in the mix\n");
  146. fprintf(stdout,"INFO: 3) Channel count of the input sound\n");
  147. fprintf(stdout,"INFO: 4) A ROUTING CODE for the input channels, followed by a level for that routing.\n");
  148. fprintf(stdout,"INFO: The code consists of a number indicating the input channel, a colon, and\n");
  149. fprintf(stdout,"INFO: a number indicating the output channel in the final mix.\n");
  150. fprintf(stdout,"INFO: In line 1 (1:1 2:2 3:3 4:4) each input channel goes to the corresponding output channel\n");
  151. fprintf(stdout,"INFO: In line 2 (1:1 2:1 3:1 4:1) all input channels are mixed into channel 1 of the output\n");
  152. fprintf(stdout,"INFO: In line 3 (2:3 4:1) channels 2 & 4 ONLY of input, are routed to chans 3 & 1 of the output\n");
  153. fprintf(stdout,"INFO: \n");
  154. fprintf(stdout,"INFO: So the input channels can be threaded to any output channel desired.\n");
  155. fprintf(stdout,"INFO: \n");
  156. break;
  157. case(ANALJOIN):
  158. fprintf(stdout,"INFO: SPLICE TOGETHER A SEQUENCE OF ANALYSIS FILES.\n");
  159. fprintf(stdout,"INFO: \n");
  160. fprintf(stdout,"INFO: NO PARAMETERS----------------------------------------------------------------\n");
  161. fprintf(stdout,"INFO: \n");
  162. break;
  163. case(PTOBRK):
  164. fprintf(stdout,"INFO: CONVERT BINARY PITCH DATA TO BRKPNT FILE, RETAINING NO-PITCH MARKERS.\n");
  165. fprintf(stdout,"INFO: \n");
  166. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------------\n");
  167. fprintf(stdout,"INFO: TIME, IN MS, THAT ANY STRETCH OF PITCH-DATA MUST PERSIST, TO BE VALID.\n");
  168. fprintf(stdout,"INFO: \n");
  169. break;
  170. case(PSOW_STRETCH):
  171. fprintf(stdout,"INFO: TIME-STRETCH A SOUND USING PITCH-SYNCHRONOUS ENVELOPED GRAINS.\n");
  172. fprintf(stdout,"INFO: \n");
  173. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------------\n");
  174. fprintf(stdout,"INFO: 1) PITCH BREAKPOINT FILE, POSSIBLY CONTAINING 'NO-SIGNAL' MARKERS AT SPECIFIC TIMES.\n");
  175. fprintf(stdout,"INFO: 2) STRETCH FACTOR\n");
  176. fprintf(stdout,"INFO: 3) NUMBER OF GRAINS PER BLOCK: Block preserved as-is during process.\n");
  177. fprintf(stdout,"INFO: \n");
  178. fprintf(stdout,"INFO: Timestretching alters pitch: twice as long, down an octave.\n");
  179. fprintf(stdout,"INFO: \n");
  180. break;
  181. case(PSOW_DUPL):
  182. fprintf(stdout,"INFO: DUPLICATE PITCH-SYNCHRONOUS ENVELOPED GRAINS.\n");
  183. fprintf(stdout,"INFO: \n");
  184. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------------\n");
  185. fprintf(stdout,"INFO: 1) PITCH BREAKPOINT FILE, POSSIBLY CONTAINING 'NO-SIGNAL' MARKERS AT SPECIFIC TIMES.\n");
  186. fprintf(stdout,"INFO: Extract the pitch to a binary file, then do the conversion to text.\n");
  187. fprintf(stdout,"INFO: 2) NUMBER OF DUPLICATIONS.\n");
  188. fprintf(stdout,"INFO: 3) NUMBER OF GRAINS PER BLOCK: Block preserved as-is during process.\n");
  189. fprintf(stdout,"INFO: \n");
  190. break;
  191. case(PSOW_DEL):
  192. fprintf(stdout,"INFO: DELETE PITCH-SYNCHRONOUS ENVELOPED GRAINS.\n");
  193. fprintf(stdout,"INFO: \n");
  194. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------------\n");
  195. fprintf(stdout,"INFO: 1) PITCH BREAKPOINT FILE, POSSIBLY CONTAINING 'NO-SIGNAL' MARKERS AT SPECIFIC TIMES.\n");
  196. fprintf(stdout,"INFO: Extract the pitch to a binary file, then do the conversion to text.\n");
  197. fprintf(stdout,"INFO: 2) ONE IN HOW MANY BLOCKS TO KEEP.\n");
  198. fprintf(stdout,"INFO: 3) NUMBER OF GRAINS PER BLOCK: Block preserved as-is during process.\n");
  199. fprintf(stdout,"INFO: \n");
  200. break;
  201. case(PSOW_STRFILL):
  202. fprintf(stdout,"INFO: TIME-STRETCH A SOUND USING PITCH-SYNCHRONOUS ENVELOPED GRAINS, AND GRAIN DUPLICATION.\n");
  203. fprintf(stdout,"INFO: \n");
  204. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------------\n");
  205. fprintf(stdout,"INFO: 1) PITCH BREAKPOINT FILE, POSSIBLY CONTAINING 'NO-SIGNAL' MARKERS AT SPECIFIC TIMES.\n");
  206. fprintf(stdout,"INFO: Extract the pitch to a binary file, then do the conversion to text.\n");
  207. fprintf(stdout,"INFO: 2) STRETCH FACTOR\n");
  208. fprintf(stdout,"INFO: 3) NUMBER OF GRAINS PER BLOCK: Block preserved as-is during process.\n");
  209. fprintf(stdout,"INFO: 4) TRANSPOSITION IN SEMITONES:\n");
  210. fprintf(stdout,"INFO: Only certain harmonics-related transpositions work.\n");
  211. fprintf(stdout,"INFO: and these interact in strange ways with the time-stretch parameter,");
  212. fprintf(stdout,"INFO: sometimes producing octaves.\n");
  213. fprintf(stdout,"INFO: e.g. with a time-stretch of 2, these transpositions work...\n");
  214. fprintf(stdout,"INFO: -12 (octave down), 12 (octave up) 24 (2 octaves up).\n");
  215. fprintf(stdout,"INFO: 7 (major 5th), 16 (octave + major 3rd) 19 (octave + 5th) 22 (octave + minor 7th).\n");
  216. fprintf(stdout,"INFO: \n");
  217. break;
  218. case(PSOW_FREEZE):
  219. fprintf(stdout,"INFO: GRAB ONE OR MORE PITCH-SYNCHRONISED GRAINS AND USE TO CONSTRUCT A NEW SOUND.\n");
  220. fprintf(stdout,"INFO: \n");
  221. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------------\n");
  222. fprintf(stdout,"INFO: 1) PITCH BREAKPOINT FILE, POSSIBLY CONTAINING 'NO-SIGNAL' MARKERS AT SPECIFIC TIMES.\n");
  223. fprintf(stdout,"INFO: Extract the pitch to a binary file, then do the conversion to text.\n");
  224. fprintf(stdout,"INFO: 2) TIME IN SOURCE WHERE GRAIN(S) GRABBED.\n");
  225. fprintf(stdout,"INFO: 3) DURATION OF FILE TO BE CREATED.\n");
  226. fprintf(stdout,"INFO: Duration oz ZERO will cause a single (block of) grain(s) to be grabbed,\n");
  227. fprintf(stdout,"INFO: 4) NUMBER OF GRAINS TO GRAB: IF more than 1, this set is used as a block.\n");
  228. fprintf(stdout,"INFO: 5) DENSITY (PITCH TRANSPOSITION)\n");
  229. fprintf(stdout,"INFO: Density 2 Grains overlap so there are always 2 grains playing at once.\n");
  230. fprintf(stdout,"INFO: Density 3 Grains overlap so there are always 3 grains playing at once.\n");
  231. fprintf(stdout,"INFO: Density 0.5 One grain followed by one gap, of same duration.\n");
  232. fprintf(stdout,"INFO: Density 0.25 One grain followed by a gap of three times the duration.\n");
  233. fprintf(stdout,"INFO: With a single (or very few) grain(s), Density can be equivalent to transposition ratio.\n");
  234. fprintf(stdout,"INFO: For pitched grains, the fundamental is transposed, but not the spectrum.\n");
  235. fprintf(stdout,"INFO: Very high fixed densities produce a file with just 2 thumps (only).\n");
  236. fprintf(stdout,"INFO: Glissandos through densities above c 2 produce pitch steps rather than a smooth glide.\n");
  237. fprintf(stdout,"INFO: 6) SPECTRAL TRANSPOSITION: transposes the spectrum but not the fundamental.\n");
  238. fprintf(stdout,"INFO: The particular way in which Density and Spectral Transpositions operate\n");
  239. fprintf(stdout,"INFO: depends on the size of segments (no of grains) you choose,\n");
  240. fprintf(stdout,"INFO: and the particular nature of the grains (pitched, noisy etc.).\n");
  241. fprintf(stdout,"INFO: 7) RANDOMISATION of the position of the output grain(blocks).\n");
  242. fprintf(stdout,"INFO: Randomisation adds noise to any clearly-pitched grain-source.\n");
  243. fprintf(stdout,"INFO: 8) OVERALL GAIN (If density is > 1.0, gain may need to be reduced).\n");
  244. fprintf(stdout,"INFO: \n");
  245. break;
  246. case(PSOW_CHOP):
  247. fprintf(stdout,"INFO: REMOVE PITCH-SYNCHRONOUD GRAINS FROM A FILE, AT SPECIFIED TIMES,\n");
  248. fprintf(stdout,"INFO: AND KEEP THE REMAINING SEPARATED PARTS OF THE SOUND.\n");
  249. fprintf(stdout,"INFO: \n");
  250. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------------\n");
  251. fprintf(stdout,"INFO: 1) PITCH BREAKPOINT FILE, POSSIBLY CONTAINING 'NO-SIGNAL' MARKERS AT SPECIFIC TIMES.\n");
  252. fprintf(stdout,"INFO: Extract the pitch to a binary file, then do the conversion to text.\n");
  253. fprintf(stdout,"INFO: 2) TIME - GRAIN-COUNT FILE.\n");
  254. fprintf(stdout,"INFO: Each pair specifies time at which grains are to be found\n");
  255. fprintf(stdout,"INFO: and how many grains to omit between the cut sections.\n");
  256. fprintf(stdout,"INFO: \n");
  257. fprintf(stdout,"INFO: Outputs are the sections of sound left behind once these grains are taken out.\n");
  258. fprintf(stdout,"INFO: \n");
  259. break;
  260. case(PSOW_INTERP):
  261. fprintf(stdout,"INFO: INTERPOLATE BETWEEN PITCH-SYNCHRONOUS GRAINS,\n");
  262. fprintf(stdout,"INFO: \n");
  263. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------------\n");
  264. fprintf(stdout,"INFO: 1) Sustain Duration of first grain.\n");
  265. fprintf(stdout,"INFO: 2) Duration of Interpolation.\n");
  266. fprintf(stdout,"INFO: 3) Sustain Duration of final grain.\n");
  267. fprintf(stdout,"INFO: 4) VIBRATO FREQUENCY.\n");
  268. fprintf(stdout,"INFO: 5) VIBRATO DEPTH.\n");
  269. fprintf(stdout,"INFO: 6) TREMOLO FREQUENCY.\n");
  270. fprintf(stdout,"INFO: 7) TREMOLO DEPTH.\n");
  271. fprintf(stdout,"INFO: \n");
  272. fprintf(stdout,"INFO: NB This process assumes that the input files are single pitch-synchronous grains.\n");
  273. fprintf(stdout,"INFO: \n");
  274. break;
  275. case(PSOW_FEATURES):
  276. fprintf(stdout,"INFO: ADD NEW FEATURES TO SOUND ANALYSED INTO PITCH-SYNCHRONOUS GRAINS.\n");
  277. fprintf(stdout,"INFO: \n");
  278. fprintf(stdout,"INFO: MODES----------------------------------------------------------------\n");
  279. fprintf(stdout,"INFO: \n");
  280. fprintf(stdout,"INFO: 1) PITCH SHIFTING IS ACCOMPANIED BY TIMEWARPING.\n");
  281. fprintf(stdout,"INFO: If the pitch goes up, the sound gets shorter, if down, longer.\n");
  282. fprintf(stdout,"INFO: 2) PITCH SHIFTING IS ACCOMPANIED BY PITCH_DIVISION.\n");
  283. fprintf(stdout,"INFO: Results in 2 pitches, the highest at the specified transposition.\n");
  284. fprintf(stdout,"INFO: \n");
  285. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------------\n");
  286. fprintf(stdout,"INFO: \n");
  287. fprintf(stdout,"INFO: 1) PITCH BREAKPOINT FILE, POSSIBLY CONTAINING 'NO-SIGNAL' MARKERS AT SPECIFIC TIMES.\n");
  288. fprintf(stdout,"INFO: Extract the pitch to a binary file, then do the conversion to text.\n");
  289. fprintf(stdout,"INFO: 2) NUMBER OF GRAINS PER BLOCK: Block preserved as-is during process.\n");
  290. fprintf(stdout,"INFO: 3) TRANSPOSITION (semitones).\n");
  291. fprintf(stdout,"INFO: 4) VIBRATO FREQUENCY.\n");
  292. fprintf(stdout,"INFO: 5) VIBRATO DEPTH (semitones).\n");
  293. fprintf(stdout,"INFO: 6) SPECTRAL TRANSPOSITION (semitones).\n");
  294. fprintf(stdout,"INFO: 7) HOARSENESS smaller values (c.0.04) are most effective.\n");
  295. fprintf(stdout,"INFO: 8) ATTENUATION.\n");
  296. fprintf(stdout,"INFO: 9) FOF-STRETCHING: N.B. This TURNS OFF spectral transposition.\n");
  297. fprintf(stdout,"INFO: 10) SUBHARMONIC NUMBER: Divides pitch-frequency to produce subharmonic. Must be at least 2.\n");
  298. fprintf(stdout,"INFO: 11) SUBHARMONIC LEVEL: Level of any subharmonic introduced.\n");
  299. fprintf(stdout,"INFO: 12) ALTERNATIVE ALGORITHM FOR FOF_STRETCH.\n");
  300. fprintf(stdout,"INFO: \n");
  301. fprintf(stdout,"INFO: NB Assumes the input file is clearly pitched (at least in some places).\n");
  302. fprintf(stdout,"INFO: \n");
  303. break;
  304. case(PSOW_SYNTH):
  305. fprintf(stdout,"INFO: USE VOCAL FOFS AS CONTOUR ON SYNTHESIZED SOUND.\n");
  306. fprintf(stdout,"INFO: \n");
  307. fprintf(stdout,"INFO: MODES----------------------------------------------------------------\n");
  308. fprintf(stdout,"INFO: \n");
  309. fprintf(stdout,"INFO: WITH A FIXED BAND OF OSCILLATORS.\n");
  310. fprintf(stdout,"INFO: Data file is exactly like that for a User-defined Filterbank.\n");
  311. fprintf(stdout,"INFO: 1) BANDS AS FRQ (HZ):..Filter-pitches as frq in Hz.....paired with an amplitude.\n");
  312. fprintf(stdout,"INFO: 2) BANDS AS MIDI:......Filter-pitches as MIDI values.....paired with an amplitude.\n");
  313. fprintf(stdout,"INFO: \n");
  314. fprintf(stdout,"INFO: WITH A TIME-VARYING BANK OF OSCILLATORS.\n");
  315. fprintf(stdout,"INFO: Data file is exactly like that for a User-defined Time-varying Filterbank.\n");
  316. fprintf(stdout,"INFO: 3) BANDS AS FRQ (HZ):..Filter-pitches as frq in Hz.\n");
  317. fprintf(stdout,"INFO: 4) BANDS AS MIDI:......Filter-pitches as MIDI values.\n");
  318. fprintf(stdout,"INFO: For full details, see 'User-defined Time-varying Filterbank' information.\n");
  319. fprintf(stdout,"INFO: \n");
  320. fprintf(stdout,"INFO: 5) WITH NOISE.\n");
  321. fprintf(stdout,"INFO: \n");
  322. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------------\n");
  323. fprintf(stdout,"INFO: \n");
  324. fprintf(stdout,"INFO: 1) TABLE OF FREQUENCIES AND AMPLITUDES, DEFINING A BANK OF OSCILLATORS.\n");
  325. fprintf(stdout,"INFO: 2) PITCH BREAKPOINT FILE, POSSIBLY CONTAINING 'NO-SIGNAL' MARKERS AT SPECIFIC TIMES.\n");
  326. fprintf(stdout,"INFO: Extract the pitch to a binary file, then do the conversion to text.\n");
  327. fprintf(stdout,"INFO: 3) DEPTH OF FOF CONTOURING (1 TOTAL .... 0, NONE AT ALL).\n");
  328. fprintf(stdout,"INFO: \n");
  329. fprintf(stdout,"INFO: NB Assumes the input file is clearly pitched (at least in some places).\n");
  330. fprintf(stdout,"INFO: \n");
  331. break;
  332. case(PSOW_IMPOSE):
  333. fprintf(stdout,"INFO: IMPOSE VOCAL FOFS IN 1ST SOUND ON A 2ND INPUT SOUND.\n");
  334. fprintf(stdout,"INFO: \n");
  335. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------------\n");
  336. fprintf(stdout,"INFO: \n");
  337. fprintf(stdout,"INFO: 1) PITCH BREAKPOINT FILE, POSSIBLY CONTAINING 'NO-SIGNAL' MARKERS AT SPECIFIC TIMES.\n");
  338. fprintf(stdout,"INFO: Extract the pitch to a binary file, then do the conversion to text.\n");
  339. fprintf(stdout,"INFO: 2) DEPTH OF FOF CONTOURING (1 TOTAL .... 0, NONE AT ALL).\n");
  340. fprintf(stdout,"INFO: 3) WINDOW SIZE (mS) FOR ENVELOPE TRACKING 2ND INPUT SOUND.\n");
  341. fprintf(stdout,"INFO: 4) GATE LEVEL (dB) BELOW WHICH 2ND INPUT SIGNAL IS TO BE IGNORED.\n");
  342. fprintf(stdout,"INFO: \n");
  343. fprintf(stdout,"INFO: NB Assumes the input file is clearly pitched (at least in some places).\n");
  344. fprintf(stdout,"INFO: \n");
  345. break;
  346. case(PSOW_SPLIT):
  347. fprintf(stdout,"INFO: SPLIT VOCAL SOUND INTO SUBHARMONICS AND UPWARD-TRANSPOSED FEATURES.\n");
  348. fprintf(stdout,"INFO: \n");
  349. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------------\n");
  350. fprintf(stdout,"INFO: \n");
  351. fprintf(stdout,"INFO: 1) PITCH BREAKPOINT FILE, POSSIBLY CONTAINING 'NO-SIGNAL' MARKERS AT SPECIFIC TIMES.\n");
  352. fprintf(stdout,"INFO: Extract the pitch to a binary file, then do the conversion to text.\n");
  353. fprintf(stdout,"INFO: 2) SUBHARMONIC NUMBER (DIVIDES VOICE FREQUENCY).\n");
  354. fprintf(stdout,"INFO: 3) UPWARD TRANSPOSITION (SEMITONES).\n");
  355. fprintf(stdout,"INFO: 4) SUPPRESSION OF UPWARD-TRANSPOSED COMPONENTS.\n");
  356. fprintf(stdout,"INFO: \n");
  357. fprintf(stdout,"INFO: NB Assumes the input file is clearly pitched (at least in some places).\n");
  358. fprintf(stdout,"INFO: \n");
  359. break;
  360. case(PSOW_SPACE):
  361. fprintf(stdout,"INFO: SEPARATE FOFS OF A MONO VOCAL SOUND IN STEREO SPACE.\n");
  362. fprintf(stdout,"INFO: \n");
  363. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------------\n");
  364. fprintf(stdout,"INFO: \n");
  365. fprintf(stdout,"INFO: 1) PITCH BREAKPOINT FILE, POSSIBLY CONTAINING 'NO-SIGNAL' MARKERS AT SPECIFIC TIMES.\n");
  366. fprintf(stdout,"INFO: Extract the pitch to a binary file, then do the conversion to text.\n");
  367. fprintf(stdout,"INFO: 2) SUBHARMONIC NUMBER (DIVIDES VOICE FREQUENCY).\n");
  368. fprintf(stdout,"INFO: 3) SPATIAL SEPARATION.\n");
  369. fprintf(stdout,"INFO: 0 NO SEPARATION.\n");
  370. fprintf(stdout,"INFO: 1 SPLITS ALTERNATELY TO FULL RIGHT/LEFT.\n");
  371. fprintf(stdout,"INFO: -1 SPLITS ALTERNATELY TO FULL LEFT/RIGHT.\n");
  372. fprintf(stdout,"INFO: 4) LEFT/RIGHT RELATIVE LEVEL.\n");
  373. fprintf(stdout,"INFO: RL = 1.0 LEFT & RIGHT LEVELS EQUAL.\n");
  374. fprintf(stdout,"INFO: RL > 1.0 LEFT SIGNAL DIVIDED BY RL. BIAS TO RIGHT\n");
  375. fprintf(stdout,"INFO: RL < 1.0 RIGHT SIGNAL MULTIPLIED BY RL. BIAS TO LEFT\n");
  376. fprintf(stdout,"INFO: 5) SUPPRESS HIGH COMPONENTS.\n");
  377. fprintf(stdout,"INFO: 0 = NONE.\n");
  378. fprintf(stdout,"INFO: 1 = COMPLETE.\n");
  379. fprintf(stdout,"INFO: \n");
  380. fprintf(stdout,"INFO: NB Assumes the input file is clearly pitched (at least in some places).\n");
  381. fprintf(stdout,"INFO: \n");
  382. break;
  383. case(PSOW_INTERLEAVE):
  384. fprintf(stdout,"INFO: INTERLEAVE FOFS OF 2 SOUNDS.\n");
  385. fprintf(stdout,"INFO: \n");
  386. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------------\n");
  387. fprintf(stdout,"INFO: \n");
  388. fprintf(stdout,"INFO: 1) PITCH BREAKPOINT FILE FOR 1ST SND, POSSIBLY CONTAINING 'NO-SIGNAL' MARKERS AT SPECIFIC TIMES.\n");
  389. fprintf(stdout,"INFO: Extract the pitch to a binary file, then do the conversion to text.\n");
  390. fprintf(stdout,"INFO: 2) PITCH BREAKPOINT FILE FOR 2ND SND, SIMILARLY.\n");
  391. fprintf(stdout,"INFO: 3) NO OF FOFS TREATED AS A UNIT FOR THE PROCESS.\n");
  392. fprintf(stdout,"INFO: 4) PITCH BIAS.\n");
  393. fprintf(stdout,"INFO: 0 NO BIAS.\n");
  394. fprintf(stdout,"INFO: 1 PITCH FORCED TOWARDS THAT OF 1ST SND.\n");
  395. fprintf(stdout,"INFO: -1 PITCH FORCED TOWARDS THAT OF 2ND SND.\n");
  396. fprintf(stdout,"INFO: 5) RELATIVE LEVEL.\n");
  397. fprintf(stdout,"INFO: RL = 1.0 1ST & 2ND SOUNDS OF EQUAL LEVEL.\n");
  398. fprintf(stdout,"INFO: RL > 1.0 2ND SOUND LEVEL DIVIDED BY RL. BIAS TO 1ST\n");
  399. fprintf(stdout,"INFO: RL < 1.0 1ST SOUND LEVEL MULTIPLIED BY RL. BIAS TO 2ND\n");
  400. fprintf(stdout,"INFO: 6) RELATIVE WEIGHT.\n");
  401. fprintf(stdout,"INFO: RW = 1.0 1ST & 2ND SOUNDS ALTERNATE.\n");
  402. fprintf(stdout,"INFO: RL > 1.0 1ST SOUND OCCURS RL TIMES MORE THAN 2ND\n");
  403. fprintf(stdout,"INFO: RL < 1.0 2ND SOUND OCCURS 1/RL TIMES MORE THAN 1ST\n");
  404. fprintf(stdout,"INFO: \n");
  405. fprintf(stdout,"INFO: NB Assumes the input file is clearly pitched (at least in some places).\n");
  406. fprintf(stdout,"INFO: \n");
  407. break;
  408. case(PSOW_REPLACE):
  409. fprintf(stdout,"INFO: COMBINE FOFS OF 1ST SOUND WITH PITCH OF 2ND.\n");
  410. fprintf(stdout,"INFO: \n");
  411. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------------\n");
  412. fprintf(stdout,"INFO: \n");
  413. fprintf(stdout,"INFO: 1) PITCH BREAKPOINT FILE FOR 1ST SND, POSSIBLY CONTAINING 'NO-SIGNAL' MARKERS AT SPECIFIC TIMES.\n");
  414. fprintf(stdout,"INFO: Extract the pitch to a binary file, then do the conversion to text.\n");
  415. fprintf(stdout,"INFO: 2) PITCH BREAKPOINT FILE FOR 2ND SND, SIMILARLY.\n");
  416. fprintf(stdout,"INFO: 3) NO OF FOFS TREATED AS A UNIT FOR THE PROCESS.\n");
  417. fprintf(stdout,"INFO: \n");
  418. fprintf(stdout,"INFO: NB Assumes the input file is clearly pitched (at least in some places).\n");
  419. fprintf(stdout,"INFO: \n");
  420. break;
  421. case(PSOW_EXTEND):
  422. fprintf(stdout,"INFO: EXTEND A SOUND BY FREEZING IT AT A SPECIFIED TIME, USING A PITCH-SYNCD GRAIN.\n");
  423. fprintf(stdout,"INFO: \n");
  424. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------------\n");
  425. fprintf(stdout,"INFO: 1) PITCH BREAKPOINT FILE, POSSIBLY CONTAINING 'NO-SIGNAL' MARKERS AT SPECIFIC TIMES.\n");
  426. fprintf(stdout,"INFO: Extract the pitch to a binary file, then do the conversion to text.\n");
  427. fprintf(stdout,"INFO: 2) TIME IN SOURCE WHERE GRAIN(S) GRABBED.\n");
  428. fprintf(stdout,"INFO: 3) DURATION OF TOTAL FILE ONCE IT IS STRETCHED.\n");
  429. fprintf(stdout,"INFO: 4) NUMBER OF GRAINS TO GRAB: IF more than 1, this set is used as a block.\n");
  430. fprintf(stdout,"INFO: 5) VIBRATO FREQUENCY.\n");
  431. fprintf(stdout,"INFO: 6) VIBRATO DEPTH (semitones).\n");
  432. fprintf(stdout,"INFO: 7) GRAIN PITCH TRANSPOSITION (semitones).\n");
  433. fprintf(stdout,"INFO: In any brkpntfiles used here, zero time refers to start of \n");
  434. fprintf(stdout,"INFO: bring expanded, and NOT (necessarily) to start of sound.\n");
  435. fprintf(stdout,"INFO: \n");
  436. fprintf(stdout,"INFO: 8) SMOOTH FOFS.\n");
  437. fprintf(stdout,"INFO: Imposes a smoothing window on the extracted FOF(s)\n");
  438. fprintf(stdout,"INFO: attempting to remove any high frequency buzz effects.\n");
  439. fprintf(stdout,"INFO: \n");
  440. break;
  441. case(PSOW_EXTEND2):
  442. fprintf(stdout,"INFO: EXTEND A SOUND BY FREEZING IT AT A SPECIFIED TIME, USING A PITCH-SYNCD GRAIN.\n");
  443. fprintf(stdout,"INFO: \n");
  444. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------------\n");
  445. fprintf(stdout,"INFO: 1) TIME AT WHICH GRAIN STARTS.\n");
  446. fprintf(stdout,"INFO: 2) TIME AT WHICH GRAIN ENDS.\n");
  447. fprintf(stdout,"INFO: 3) DURATION OF TOTAL FILE ONCE IT IS STRETCHED.\n");
  448. fprintf(stdout,"INFO: 4) VIBRATO FREQUENCY.\n");
  449. fprintf(stdout,"INFO: 5) VIBRATO DEPTH (semitones).\n");
  450. fprintf(stdout,"INFO: 6) NUDGE: GRAIN-TIMES MOVED FORWARD OR BACK BY 'NUDGE' ZERO-CROSSINGS.\n");
  451. fprintf(stdout,"INFO: \n");
  452. break;
  453. case(PSOW_LOCATE):
  454. fprintf(stdout,"INFO: LOCATE EXACT TIME OF START OF GRAIN, NEAREST TO A GIVEN TIME.\n");
  455. fprintf(stdout,"INFO: \n");
  456. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------------\n");
  457. fprintf(stdout,"INFO: 1) PITCH BREAKPOINT FILE, POSSIBLY CONTAINING 'NO-SIGNAL' MARKERS AT SPECIFIC TIMES.\n");
  458. fprintf(stdout,"INFO: Extract the pitch to a binary file, then do the conversion to text.\n");
  459. fprintf(stdout,"INFO: 2) TIME.\n");
  460. fprintf(stdout,"INFO: \n");
  461. break;
  462. case(PSOW_CUT):
  463. fprintf(stdout,"INFO: CUT SOUND AT GRAIN START NEAREST TO SPECIFIED TIME.\n");
  464. fprintf(stdout,"INFO: \n");
  465. fprintf(stdout,"INFO: MODES----------------------------------------------------------------\n");
  466. fprintf(stdout,"INFO: 1) KEEP SOUND BEFORE SPECIFIED GRAIN-TIME.\n");
  467. fprintf(stdout,"INFO: 2) KEEP SOUND AT AND AFTER SPECIFIED GRAIN-TIME.\n");
  468. fprintf(stdout,"INFO: \n");
  469. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------------\n");
  470. fprintf(stdout,"INFO: 1) PITCH BREAKPOINT FILE, POSSIBLY CONTAINING 'NO-SIGNAL' MARKERS AT SPECIFIC TIMES.\n");
  471. fprintf(stdout,"INFO: Extract the pitch to a binary file, then do the conversion to text.\n");
  472. fprintf(stdout,"INFO: 2) TIME.\n");
  473. fprintf(stdout,"INFO: \n");
  474. break;
  475. case(ONEFORM_GET):
  476. fprintf(stdout,"INFO: EXTRACT FORMANT AT A SPECIFIED TIME, FROM A FORMANT FILE.\n");
  477. fprintf(stdout,"INFO: \n");
  478. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------------\n");
  479. fprintf(stdout,"INFO: 1) TIME AT WHICH TO EXTRACT FORMANT.\n");
  480. fprintf(stdout,"INFO: \n");
  481. break;
  482. case(ONEFORM_PUT):
  483. fprintf(stdout,"INFO: IMPOSE ON SPECTRUM IN AN ANALYSIS FILE\n");
  484. fprintf(stdout,"INFO: THE SPECTRAL ENVELOPE IN A SINGLE-FORMANT FILE.\n");
  485. fprintf(stdout,"INFO: \n");
  486. fprintf(stdout,"INFO: MODES---------------------------------------------------------------\n");
  487. fprintf(stdout,"INFO: \n");
  488. fprintf(stdout,"INFO: REPLACE FORMANTS......New formants REPLACE existing formant envelope.\n");
  489. fprintf(stdout,"INFO: SUPERIMPOSE FORMANTS..New formants IMPOSED ON TOP OF existing formants.\n");
  490. fprintf(stdout,"INFO: \n");
  491. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------\n");
  492. fprintf(stdout,"INFO: \n");
  493. fprintf(stdout,"INFO: LOW FRQ LIMIT...frq, below which spectrum is set to zero.\n");
  494. fprintf(stdout,"INFO: HIGH FRQ LIMIT..frq, above which spectrum is set to zero.\n");
  495. fprintf(stdout,"INFO: GAIN............adjustment to spectrum loudness (normally < 1.0).\n");
  496. fprintf(stdout,"INFO: \n");
  497. break;
  498. case(ONEFORM_COMBINE):
  499. fprintf(stdout,"INFO: GENERATE SPECTRUM FROM BINARY-PITCHFILE & SINGLE-FORMANT-DATA.\n");
  500. fprintf(stdout,"INFO: \n");
  501. fprintf(stdout,"INFO: outfile is analysis file which must be resynthesized to hear.\n");
  502. fprintf(stdout,"INFO: \n");
  503. break;
  504. case(NEWGATE):
  505. fprintf(stdout,"INFO: GATE A SIGNAL TO ZERO WHERE IT FALLS BELOW A CERTAIN LEVEL.\n");
  506. fprintf(stdout,"INFO: \n");
  507. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------\n");
  508. fprintf(stdout,"INFO: \n");
  509. fprintf(stdout,"INFO: GATE LEVEL...in decibels.\n");
  510. fprintf(stdout,"INFO: \n");
  511. break;
  512. case(SPEC_REMOVE):
  513. fprintf(stdout,"INFO: REMOVE SPECIFIC PITCH (AREA) FROM A SPECTRUM, OR REMOVE COMPONENTS NOT OF PITCH (AREA).\n");
  514. fprintf(stdout,"INFO: \n");
  515. fprintf(stdout,"INFO: MODES----------------------------------------------------------------\n");
  516. fprintf(stdout,"INFO: 1) REMOVE PITCH.\n");
  517. fprintf(stdout,"INFO: 2) REMOVE NON_PITCH.\n");
  518. fprintf(stdout,"INFO: \n");
  519. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------\n");
  520. fprintf(stdout,"INFO: \n");
  521. fprintf(stdout,"INFO: MINIMUM PITCH (MIDI).\n");
  522. fprintf(stdout,"INFO: MAXIMUM PITCH (MIDI).\n");
  523. fprintf(stdout,"INFO: MODE 1) FREQUENCY ABOVE WHICH HARMONICS ARE NOT REMOVED (HZ).\n");
  524. fprintf(stdout,"INFO: MODE 2) FREQUENCY ABOVE WHICH HARMONICS ARE NOT RETAINED (HZ).\n");
  525. fprintf(stdout,"INFO: ATENUATION OF SPECIFIED COMPONENTS.\n");
  526. fprintf(stdout,"INFO: (1 = full attenuation, 0 = no attenuation).\n");
  527. fprintf(stdout,"INFO: \n");
  528. fprintf(stdout,"INFO: Process removes all components, and their harmonics, in the given pitch range,\n");
  529. fprintf(stdout,"INFO: as far as the given frequency limit.\n");
  530. fprintf(stdout,"INFO: (Or, mode 2, removes all components which are NOT in the pitch range or that of its harmonics)\n");
  531. fprintf(stdout,"INFO: as far as the given frequency limit.\n");
  532. fprintf(stdout,"INFO: Pitch range of an octave or more will remove (retain) all spectral components\n");
  533. fprintf(stdout,"INFO: between the lower pitch and the upper frequency limit\n");
  534. fprintf(stdout,"INFO: \n");
  535. break;
  536. case(PREFIXSIL):
  537. fprintf(stdout,"INFO: ADD SILENCE AT START OF SOUND.\n");
  538. fprintf(stdout,"INFO: \n");
  539. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------\n");
  540. fprintf(stdout,"INFO: \n");
  541. fprintf(stdout,"INFO: DURATION of silence to add.\n");
  542. fprintf(stdout,"INFO: \n");
  543. break;
  544. case(STRANS):
  545. fprintf(stdout,"INFO: CHANGE SPEED & PITCH OF MULTICHANNEL SOURCE SOUND, OR CREATE VIBRATO.\n");
  546. fprintf(stdout,"INFO: \n");
  547. fprintf(stdout,"INFO: MODES---------------------------------------------------------------\n");
  548. fprintf(stdout,"INFO: \n");
  549. fprintf(stdout,"INFO: 1) SPEED CHANGE...............also changing sound pitch.\n");
  550. fprintf(stdout,"INFO: 2) SPEED CHANGE IN SEMITONES..speed shift given in semitones.\n");
  551. fprintf(stdout,"INFO: For BOTH these modes, brkpnt times are infiletimes, unless flagged as outfiletimes.\n");
  552. fprintf(stdout,"INFO: 3) ACCELERATE SOURCE TO GIVEN SPEED..speed shift given as multiplier.\n");
  553. fprintf(stdout,"INFO: 4) VIBRATO THE SOURCE....with given speed and depth (possibly time-varying).\n");
  554. fprintf(stdout,"INFO: \n");
  555. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------------\n");
  556. fprintf(stdout,"INFO: \n");
  557. fprintf(stdout,"INFO: MODE 1. Speed change as a speed multiplier.\n");
  558. fprintf(stdout,"INFO: MODE 2. Speed change in semitones.\n");
  559. fprintf(stdout,"INFO: MODE 3\n");
  560. fprintf(stdout,"INFO: ACCELERATION as speed multiplier at the goal time.\n");
  561. fprintf(stdout,"INFO: GOAL TIME is speed at which 'acceleration' speed is achieved.\n");
  562. fprintf(stdout,"INFO: START TIME is time in source where acceleration begins.\n");
  563. fprintf(stdout,"INFO: MODE 4\n");
  564. fprintf(stdout,"INFO: VIBRATO FREQUENCY is rate of vibrato, in Hz (can vary over time).\n");
  565. fprintf(stdout,"INFO: VIBRATO DEPTH is depth of vibrato, in semitones (can vary over time).\n");
  566. fprintf(stdout,"INFO: \n");
  567. break;
  568. case(PSOW_REINF):
  569. fprintf(stdout,"INFO: REINFORCE HARMONICS OR ADD INHARMONIC CONSTITUENTS IN SOUND WITH (VOCAL) FOFS.\n");
  570. fprintf(stdout,"INFO: \n");
  571. fprintf(stdout,"INFO: MODES---------------------------------------------------------------\n");
  572. fprintf(stdout,"INFO: \n");
  573. fprintf(stdout,"INFO: 1) REINFORCE HARMONICS.\n");
  574. fprintf(stdout,"INFO: 2) ADD INHARMONIC ELEMENTS.\n");
  575. fprintf(stdout,"INFO: \n");
  576. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------------\n");
  577. fprintf(stdout,"INFO: \n");
  578. fprintf(stdout,"INFO: 1) TABLE OF HARMONIC NUMBERS AND AMPLITUDES.\n");
  579. fprintf(stdout,"INFO: These define which harmonics are added to the original source, (range 2 to 256)\n");
  580. fprintf(stdout,"INFO: and what their relative-levels are (src assumed to be at level 1.0) (range >0 to 16).\n");
  581. fprintf(stdout,"INFO: The output is scaled down in level, if clipping might occur.\n");
  582. fprintf(stdout,"INFO: In MODE 2, these 'harmonics' can be FRACTIONAL.\n");
  583. fprintf(stdout,"INFO: \n");
  584. fprintf(stdout,"INFO: 2) PITCH BREAKPOINT FILE, POSSIBLY CONTAINING 'NO-SIGNAL' MARKERS AT SPECIFIC TIMES.\n");
  585. fprintf(stdout,"INFO: Extract the pitch to a binary file, then do the conversion to text.\n");
  586. fprintf(stdout,"INFO: \n");
  587. fprintf(stdout,"INFO: NB Assumes the input file is clearly pitched (at least in some places).\n");
  588. fprintf(stdout,"INFO: \n");
  589. fprintf(stdout,"INFO: In MODE 1\n");
  590. fprintf(stdout,"INFO: \n");
  591. fprintf(stdout,"INFO: DON'T DUPLICATE HARMONICS : FOFs corresponding to higher harmonics which\n");
  592. fprintf(stdout,"INFO: coincide with FOFs corresponding to lower harmonics, are omitted.\n");
  593. fprintf(stdout,"INFO: \n");
  594. fprintf(stdout,"INFO: In MODE 1\n");
  595. fprintf(stdout,"INFO: \n");
  596. fprintf(stdout,"INFO: DELAY OF HARMONICS: mS delay applied (progressively) to harmonics.\n");
  597. fprintf(stdout,"INFO: \n");
  598. fprintf(stdout,"INFO: In MODE 2\n");
  599. fprintf(stdout,"INFO: \n");
  600. fprintf(stdout,"INFO: WEIGTH : Determines how long inharmonic constituents are sustained.\n");
  601. fprintf(stdout,"INFO: In some circumstances very high weights may cause the memory to overflow.\n");
  602. fprintf(stdout,"INFO: \n");
  603. break;
  604. case(PARTIALS_HARM):
  605. fprintf(stdout,"INFO: EXTRACT RELATIVE AMPLITUDES OF PARTIALS IN A PITCHED SOURCE.\n");
  606. fprintf(stdout,"INFO: \n");
  607. fprintf(stdout,"INFO: MODES---------------------------------------------------------------\n");
  608. fprintf(stdout,"INFO: \n");
  609. fprintf(stdout,"INFO: 1) SINGLE-WINDOW ANALYSIS FILE -> FRQ DATA.\n");
  610. fprintf(stdout,"INFO: 2) SINGLE-WINDOW ANALYSIS FILE -> MIDI DATA.\n");
  611. fprintf(stdout,"INFO: 3) MULTI-WINDOW ANALYSIS FILE -> FRQ DATA.\n");
  612. fprintf(stdout,"INFO: 4) MULTI-WINDOW ANALYSIS FILE -> MIDI DATA.\n");
  613. fprintf(stdout,"INFO: \n");
  614. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------------\n");
  615. fprintf(stdout,"INFO: \n");
  616. fprintf(stdout,"INFO: 1) FUNDAMENTAL FREQUENCY: Fundamental frequency of the window.\n");
  617. fprintf(stdout,"INFO: 2) THRESHOLD AMPLITUDE: Relative level below which partials are ignored.\n");
  618. fprintf(stdout,"INFO: 3) TIME OF WINDOW: (Modes 3 & 4 only) Time, in analysis file, where partials to be found.\n");
  619. fprintf(stdout,"INFO: 4) OUTPUT IN VARIPARTIALS FILTER FORMAT: Outputs data in file-format for varipartials filter.\n");
  620. fprintf(stdout,"INFO: \n");
  621. fprintf(stdout,"INFO: NB Assumes the input file is clearly pitched (at least in the relevant place).\n");
  622. break;
  623. case(SPECROSS):
  624. fprintf(stdout,"INFO: INTERPOLATE PARTIALS OF PITCHED SRC2 TOWARDS THOSE OF PITCHED SRC 1,\n");
  625. fprintf(stdout,"INFO: RETAINING THE DURATION OF SRC2, AND THE ATTACK LOCATION OF SRC1.\n");
  626. fprintf(stdout,"INFO: \n");
  627. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------------\n");
  628. fprintf(stdout,"INFO: \n");
  629. fprintf(stdout,"INFO: IN-TUNE RANGE: Semitone range within which harmonics 'in tune'.\n");
  630. fprintf(stdout,"INFO: MIN WINDOWS TO CONFIRM PITCH: Minimum number of adjacent windows that must be pitched,\n");
  631. fprintf(stdout,"INFO: for a pitch-value to be registered.\n");
  632. fprintf(stdout,"INFO: SIGNAL TO NOISE RATIO: Signal to noise ratio, in decibels.\n");
  633. fprintf(stdout,"INFO: Windows which fall at or below this level, relative to the maximum level in the sound,\n");
  634. fprintf(stdout,"INFO: are assumed to be noise, & any detected pitch is ignored.\n");
  635. fprintf(stdout,"INFO: VALID HARMONICS COUNT: Number of the 8 loudest peaks in spectrum which must be harmonics\n");
  636. fprintf(stdout,"INFO: to confirm that the sound is pitched: Default 5.\n");
  637. fprintf(stdout,"INFO: LOW PITCH LIMIT: Lowest acceptable frequency (Hz) at which a pitch value is acceptable.\n");
  638. fprintf(stdout,"INFO: HIGH PITCH LIMIT: Highest acceptable frequency (Hz) at which a pitch value is acceptable.\n");
  639. fprintf(stdout,"INFO: PARTIAL THRESHOLD AMPLITUDE: The threshold amplitude is measured relative to the loudest partial in the window.\n");
  640. fprintf(stdout,"INFO: Any (possible) partial data which falls below this level is ignored.\n");
  641. fprintf(stdout,"INFO: OUTPUT LEVEL: Level of the output spectrum. Vary only if reapplying src1 to several src2s,\n");
  642. fprintf(stdout,"INFO: when the relative levels of the src2s are important.\n");
  643. fprintf(stdout,"INFO: SPECTRAL_INTERPOLATION: Degree of interpolation between Src2 and Src1.\n");
  644. fprintf(stdout,"INFO: Zero gives the original (cleaned) src 2, 1 gives src1 only.\n");
  645. fprintf(stdout,"INFO: The degree of interpolation may vary (with time) through the sound.\n");
  646. fprintf(stdout,"INFO: Times in any breakpoint file will be scaled to the duration of Src1.\n");
  647. fprintf(stdout,"INFO: RETAIN FILE2 CONTOUR UNDER FILE1 CONTOUR so amplitude fluctuations of File1 still apparent at max interpolation.\n");
  648. fprintf(stdout,"INFO: EXTEND 1ST STABLE PITCH OF FILE1 TO START so very start of File 1 is assumed to be pitched.\n");
  649. fprintf(stdout,"INFO: \n");
  650. fprintf(stdout,"INFO: NB Assumes the input files are clearly pitched (at least in the relevant place).\n");
  651. fprintf(stdout,"INFO: \n");
  652. fprintf(stdout,"INFO: A typical application would use a (relatively) stable-pitched source for Src1,\n");
  653. fprintf(stdout,"INFO: while Src2 might vary in pitch (e.g. a speaking voice), but this is not essential.\n");
  654. break;
  655. case(LUCIER_GETF):
  656. fprintf(stdout,"INFO: EXTRACT ROOM-RESONANCE FROM A RECORDING AND CREATE A FILTER-DATA FILE FOR 'FILTER VARIBANK'.\n");
  657. fprintf(stdout,"INFO: \n");
  658. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------------\n");
  659. fprintf(stdout,"INFO: \n");
  660. fprintf(stdout,"INFO: MIN ROOM DIMENSION (METRES): Enter ZERO to ignore roomsize.\n");
  661. fprintf(stdout,"INFO: ROLLOFF INTERVAL: Interval (in semitones) over which resonance fades to zero, above the max resonance frq dictated by room dimensions.\n");
  662. fprintf(stdout,"INFO: LOW_FRQ_CUTOFF: Ignore resonances below this frequency.\n");
  663. fprintf(stdout,"INFO: \n");
  664. fprintf(stdout,"INFO: Longer recordings give better results.\n");
  665. fprintf(stdout,"INFO: \n");
  666. break;
  667. case(LUCIER_GET):
  668. fprintf(stdout,"INFO: EXTRACT ROOM-RESONANCE FROM A RECORDING AND CREATE A CORRESPONDING ANALYSIS DATA FILE.\n");
  669. fprintf(stdout,"INFO: \n");
  670. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------------\n");
  671. fprintf(stdout,"INFO: \n");
  672. fprintf(stdout,"INFO: MIN ROOM DIMENSION (METRES): Enter ZERO to ignore roomsize.\n");
  673. fprintf(stdout,"INFO: ROLLOFF INTERVAL: Interval (in semitones) over which resonance fades to zero, above the max resonance frq dictated by room dimensions.\n");
  674. fprintf(stdout,"INFO: RESOLVE LOW FRQS: Attempt to resolve low frequency resonances more accurately.\n");
  675. fprintf(stdout,"INFO: \n");
  676. break;
  677. case(LUCIER_PUT):
  678. fprintf(stdout,"INFO: IMPOSE ROOM-RESONANCE FROM A RECORDING (EXTRACTED USING 'LUCIER GET') ONTO AN ANALYSIS FILE.\n");
  679. fprintf(stdout,"INFO: \n");
  680. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------------\n");
  681. fprintf(stdout,"INFO: \n");
  682. fprintf(stdout,"INFO: RESONANCE COUNT: Number of times the room resonance is (cumulatively) added to the sound.\n");
  683. fprintf(stdout,"INFO: OCTAVE DUPLICATION ROLLOFF: If NOT set to zero (default), room resonance is duplicated at higher octaves,\n");
  684. fprintf(stdout,"INFO: with resonance level multiplied (cumulatively) by this attenuation from 8va to 8va.\n");
  685. fprintf(stdout,"INFO: \n");
  686. break;
  687. case(LUCIER_DEL):
  688. fprintf(stdout,"INFO: ATTEMPT TO REMOVE ROOM-RESONANCE (EXTRACTED USING 'LUCIER GET') FROM A RECORDING.\n");
  689. fprintf(stdout,"INFO: \n");
  690. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------------\n");
  691. fprintf(stdout,"INFO: \n");
  692. fprintf(stdout,"INFO: SUPPRESSION: Degree of suppression of room acoustic.\n");
  693. fprintf(stdout,"INFO: \n");
  694. break;
  695. case(SPECLEAN):
  696. fprintf(stdout,"INFO: REMOVE PERSISTENT NOISE FROM SPECTRUM, BY COMPARISON WITH AN EXTRACT OF THE NOISE.\n");
  697. fprintf(stdout,"INFO: \n");
  698. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------------\n");
  699. fprintf(stdout,"INFO: \n");
  700. fprintf(stdout,"INFO: PERSISTANCE (mS): Time for which signal in a channel must exceed threshold defined by noise input before it is allowed to pass.\n");
  701. fprintf(stdout,"INFO: NOISE PREGAIN: Threshold level for passing clean signal is level of noise signal times this pregain.\n");
  702. fprintf(stdout,"INFO: \n");
  703. break;
  704. case(SPECTRACT):
  705. fprintf(stdout,"INFO: REMOVE PERSISTENT NOISE FROM SPECTRUM, BY SUBTRACTING AN EXTRACT OF THE NOISE.\n");
  706. fprintf(stdout,"INFO: \n");
  707. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------------\n");
  708. fprintf(stdout,"INFO: \n");
  709. fprintf(stdout,"INFO: PERSISTANCE (mS): Time for which signal in a channel must exceed threshold defined by noise input before it is allowed to pass.\n");
  710. fprintf(stdout,"INFO: NOISE PREGAIN: Threshold level for passing clean signal is level of noise signal times this pregain.\n");
  711. fprintf(stdout,"INFO: \n");
  712. fprintf(stdout,"INFO: The noise-signal level is also subtracted from any signal exceeding the threshold.\n");
  713. fprintf(stdout,"INFO: \n");
  714. break;
  715. case(PHASE):
  716. fprintf(stdout,"INFO: INVERT PHASE, OR ENHANCE STEREO IMAGE BY PHASE CANCELLATION.\n");
  717. fprintf(stdout,"INFO: \n");
  718. fprintf(stdout,"INFO: MODES---------------------------------------------------------------\n");
  719. fprintf(stdout,"INFO: \n");
  720. fprintf(stdout,"INFO: 1) INVERT PHASE OF MONO OR STEREO SIGNAL.\n");
  721. fprintf(stdout,"INFO: 2) ENHANCE STEREO IMAGE, BY PHASE CANCELLATION.\n");
  722. fprintf(stdout,"INFO: \n");
  723. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------------\n");
  724. fprintf(stdout,"INFO: \n");
  725. fprintf(stdout,"INFO: PHASE TRANSFER: (Mode 2 only) Amount of phase-inverted other-channel used to enhance stereo.\n");
  726. fprintf(stdout,"INFO: \n");
  727. break;
  728. case(BRKTOPI):
  729. fprintf(stdout,"INFO: CONVERT TEXT PITCH-DATA TO BINARY PITCH DATA.\n");
  730. fprintf(stdout,"INFO: \n");
  731. fprintf(stdout,"INFO: Pitch data is written to a default format binary file.\n");
  732. break;
  733. case(SPECSLICE):
  734. fprintf(stdout,"INFO: SALAMI-SLICE SPECTRUM INTO (INTERLEAVED) FREQUENCY BANDS.\n");
  735. fprintf(stdout,"INFO: \n");
  736. fprintf(stdout,"INFO: MODES---------------------------------------------------------------\n");
  737. fprintf(stdout,"INFO: \n");
  738. fprintf(stdout,"INFO: 1) SLICE SPECTRUM BY ANALYSIS CHANNELS.\n");
  739. fprintf(stdout,"INFO: 2) SLICE SPECTRUM BY FREQUENCY BANDS.\n");
  740. fprintf(stdout,"INFO: 3) SLICE SPECTRUM BY PITCH BANDS.\n");
  741. fprintf(stdout,"INFO: 4) SLICE SPECTRUM BY HARMONICS OF EXTRACTED PITCH.\n");
  742. fprintf(stdout,"INFO: \n");
  743. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------------\n");
  744. fprintf(stdout,"INFO: \n");
  745. fprintf(stdout,"INFO: NUMBER_OF_SLICES : with 3 slices (and 1 channel per slice) Slice-1 = chans 1,4,7...etc Slice-2 = chans 2,4,8.etc Slice-3 = chans 3,6,9.etc\n");
  746. fprintf(stdout,"INFO: ANALYSIS_CHANNEL_GROUPING : with 3 slices and grouping 2 Slice-1 = chans 1-2,7-8,13-14...etc Slice-2 = chans 3-4,9-10..etc Slice-3 = chans 5-6,11-12..etc\n");
  747. fprintf(stdout,"INFO: SLICE_BANDWIDTH: width of slices in Hz: with Hz 100 and 2 slices: Slice-1 = 0-100Hz + 200-300Hz + 400-500Hz..etc Slice-2 = 100-200Hz + 300-400Hz ..etc\n");
  748. fprintf(stdout,"INFO: SLICE_WIDTH_IN_SEMITONES: width of slices in semitones.\n");
  749. fprintf(stdout,"INFO: \n");
  750. break;
  751. case(FOFEX_EX):
  752. fprintf(stdout,"INFO: EXTRACT AND ORGANISE FOFS IN A SOUND IN ORDER TO RE-USE THEM.\n");
  753. fprintf(stdout,"INFO: \n");
  754. fprintf(stdout,"INFO: MODES----------------------------------------------------------------\n");
  755. fprintf(stdout,"INFO: \n");
  756. fprintf(stdout,"INFO: 1) EXTRACT ALL FOF(GROUP)S SUBJECT TO EXCLUSIONS, TO SPECIAL FOF-STORAGE SOUNDFILE.\n");
  757. fprintf(stdout,"INFO: 2) EXTRACT SINGLE FOF(GROUP) AT SPECIFIED TIME.\n");
  758. fprintf(stdout,"INFO: 3) EXTRACT ALL FOF(GROUP)S SUBJECT TO EXCLUSIONS, TO SEPARATE SOUNDFILES.\n");
  759. fprintf(stdout,"INFO: \n");
  760. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------------\n");
  761. fprintf(stdout,"INFO: \n");
  762. fprintf(stdout,"INFO: MODES 1 & 3\n");
  763. fprintf(stdout,"INFO: \n");
  764. fprintf(stdout,"INFO: 1) LIST OF SECTIONS OF THE SOURCE (AS PAIRS OF SAMPLETIMES) FROM WHICH ~NO~ FOFS ARE TO BE TAKEN.\n");
  765. fprintf(stdout,"INFO: IF THERE ARE NO SUCH AREAS, ENTER THE PARAMETER VALUE \"0\"\n");
  766. fprintf(stdout,"INFO: 2) PITCH BREAKPOINT FILE, POSSIBLY CONTAINING 'NO-SIGNAL' MARKERS AT SPECIFIC TIMES,\n");
  767. fprintf(stdout,"INFO: AND DERIVED FROM THE INPUT SOUNDFILE.\n");
  768. fprintf(stdout,"INFO: Extract the pitch to a binary file, then do the conversion to text.\n");
  769. fprintf(stdout,"INFO: 3) A dB VALUE: FOFS WHICH ARE LESS THAN THIS LEVEL BELOW THE MAX FOF LEVEL ARE REJECTED.\n");
  770. fprintf(stdout,"INFO: N.B. A value of ZERO, RETAINS ALL FOFS.\n");
  771. fprintf(stdout,"INFO: 4) GROUPED FOFS: Extracts FOFs in (originally adjacent) pairs, triples, etc.\n");
  772. fprintf(stdout,"INFO: 5) NO FOF WINDOWING: Cosine shaping is normally applied to starts and ends of FOFs. Set this flag for NO windowing.\n");
  773. fprintf(stdout,"INFO: \n");
  774. fprintf(stdout,"INFO: IN MODE 1: OUTPUT IS A SPECIAL SOUNDFILE CONTAINING A BANK OF FOFS,\n");
  775. fprintf(stdout,"INFO: AND A TEXTFILE PROVIDING INFORMATION ABOUT THE 'FOFBANK'\n");
  776. fprintf(stdout,"INFO: THESE CAN BE USED WITH 'FOF reconstruct'\n");
  777. fprintf(stdout,"INFO: IN MODE 3: OUTPUT IS A SET OF SOUNDFILES EACH CONTAINING A SINGLE (GROUP OF) FOF(S).\n");
  778. fprintf(stdout,"INFO: \n");
  779. fprintf(stdout,"INFO: MODE 2\n");
  780. fprintf(stdout,"INFO: \n");
  781. fprintf(stdout,"INFO: 1) PITCH BREAKPOINT FILE, AS ABOVE\n");
  782. fprintf(stdout,"INFO: 2) TIME IN FILE AT WHICH TO EXTRACT FOF(GROUP).\n");
  783. fprintf(stdout,"INFO: 3) GROUPED FOFS: EXTRACT A GROUP OF N FOFs.\n");
  784. fprintf(stdout,"INFO: 4) NO FOF WINDOWING: AS ABOVE.\n");
  785. fprintf(stdout,"INFO: \n");
  786. break;
  787. case(FOFEX_CO):
  788. fprintf(stdout,"INFO: USE A BANK OF FOFS EXTRACTED WITH 'FOF extract' TO SYNTHESIZE A NEW SOUND OVER A PITCHLINE.\n");
  789. fprintf(stdout,"INFO: \n");
  790. fprintf(stdout,"INFO: INPUT FILE----------------------------------------------------------------\n");
  791. fprintf(stdout,"INFO: \n");
  792. fprintf(stdout,"INFO: MUST BE A BANK OF FOFS DERIVED FROM A SOUND USING 'FOF extract'\n");
  793. fprintf(stdout,"INFO: \n");
  794. fprintf(stdout,"INFO: MODES----------------------------------------------------------------\n");
  795. fprintf(stdout,"INFO: \n");
  796. fprintf(stdout,"INFO: 1) Use 1 FOF.\n");
  797. fprintf(stdout,"INFO: 2) All FOFs superimposed to make output FOF.\n");
  798. fprintf(stdout,"INFO: 3) Low FOFs superimposed to make output FOF.\n");
  799. fprintf(stdout,"INFO: 4) Midrange FOFs superimposed to make output FOF.\n");
  800. fprintf(stdout,"INFO: 5) High FOFs superimposed to make output FOF.\n");
  801. fprintf(stdout,"INFO: 6) 2 FOFs whose balance varies with pitch.\n");
  802. fprintf(stdout,"INFO: 7) 3 FOFs whose balance varies with pitch and level.\n");
  803. fprintf(stdout,"INFO: \n");
  804. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------------\n");
  805. fprintf(stdout,"INFO: \n");
  806. fprintf(stdout,"INFO: 1) TEXTFILE DERIVED FROM 'FOF extract' WHEN YOU CREATED THE (INPUT) FOFBANK.\n");
  807. fprintf(stdout,"INFO: 2) PITCH BREAKPOINT FILE, POSSIBLY CONTAINING 'NO-SIGNAL' MARKERS AT SPECIFIC TIMES.\n");
  808. fprintf(stdout,"INFO: (But no NO-PITCH markers). Extract the pitch to a binary file, then do the conversion to text.\n");
  809. fprintf(stdout,"INFO: 3) LOUDNESS CONTOUR BREAKPOINT DATA, AS TEXT.\n");
  810. fprintf(stdout,"INFO: 4) OVERALL GAIN (FOFS may overlap one another).\n");
  811. fprintf(stdout,"INFO: 5) THE FOF(S) TO BE USED (their number in the FOFBANK file, counting from 1) - USE \"SOUND VIEW\"\n");
  812. fprintf(stdout,"INFO: 6) EQUALISE FOF LEVELS: Adjusts all FOFs to same level before synthesizing output.\n");
  813. fprintf(stdout,"INFO: \n");
  814. break;
  815. case(GREV_EXTEND):
  816. fprintf(stdout,"INFO: LOCATE AND EXTEND 'GRAINS', USING ENVELOPE TROUGHS AND ZERO-CROSSING.\n");
  817. fprintf(stdout,"INFO: \n");
  818. fprintf(stdout,"INFO: This process locates elements of a sound by searching for troughs in the envelope.\n");
  819. fprintf(stdout,"INFO: and extends the segment in a coherent way.\n");
  820. fprintf(stdout,"INFO: \n");
  821. fprintf(stdout,"INFO: PARAMETERS ----------------------------------------------------\n");
  822. fprintf(stdout,"INFO: \n");
  823. fprintf(stdout,"INFO: ENVELOPE WINDOW SIZE (MS) .... This determines the size of grains that might be found..\n");
  824. fprintf(stdout,"INFO: DEPTH OF TROUGHS AS PROPORTION OF PEAK HEIGHT .... e.g. with value .5, troughs between peaks\n");
  825. fprintf(stdout,"INFO: which do not fall to half the peak-height, are ignored\n");
  826. fprintf(stdout,"INFO: EXTEND_BY_HOW_MUCH .... How much time to add to file, by extending specified grain area\n");
  827. fprintf(stdout,"INFO: TIME_WHERE_GRAINS_START\n");
  828. fprintf(stdout,"INFO: TIME_WHERE_GRAINS_END\n");
  829. fprintf(stdout,"INFO: \n");
  830. break;
  831. case(PEAKFIND):
  832. fprintf(stdout,"INFO: LIST TIMES OF PEAKS IN A SOUNDFILE (ESPECIALLY FOR SPEECH).\n");
  833. fprintf(stdout,"INFO: \n");
  834. fprintf(stdout,"INFO: Locates prominent peaks, separated by troughs, and save a list of their timings.\n");
  835. fprintf(stdout,"INFO: \n");
  836. fprintf(stdout,"INFO: PARAMETERS ----------------------------------------------------\n");
  837. fprintf(stdout,"INFO: \n");
  838. fprintf(stdout,"INFO: ENVELOPE WINDOW SIZE (MS) .... This determines the width of peaks that might be found..\n");
  839. fprintf(stdout,"INFO: THRESHOLD .... any window falling entirely below this level is assumed to contain no peaks.\n");
  840. fprintf(stdout,"INFO: Peaks must have a level greater than the threshold, and be separated by signal lower than the threshold.\n");
  841. fprintf(stdout,"INFO: \n");
  842. fprintf(stdout,"INFO: If \"threshold\" is set to ZERO, program searches for threshold values appropriate to the local level,\n");
  843. fprintf(stdout,"INFO: by finding the local maximum in %d windows around the immediate window\n",LOCALMAX_WINDOW);
  844. fprintf(stdout,"INFO: and then divides this by a factor of %d\n",LOCALPEAK_DECIMATE);
  845. fprintf(stdout,"INFO: \n");
  846. break;
  847. case(CONSTRICT):
  848. fprintf(stdout,"INFO: SHRINK THE DURATION OF ANY ZERO-LEVEL SEGMENTS IN A SOUND, BY A GIVEN PERCENTAGE.\n");
  849. fprintf(stdout,"INFO: \n");
  850. fprintf(stdout,"INFO: Works only with sounds having segments of (completely) zero level.\n");
  851. fprintf(stdout,"INFO: \n");
  852. fprintf(stdout,"INFO: PARAMETERS ----------------------------------------------------\n");
  853. fprintf(stdout,"INFO: \n");
  854. fprintf(stdout,"INFO: PERCENTAGE DECIMATION .... Percentage of zero-level segments to delete\n");
  855. fprintf(stdout,"INFO: Values greater than 100 cause the separated segments to be overlaid.\n");
  856. fprintf(stdout,"INFO: e.g. 102 overlays very slightly, 200 overlays completely.\n");
  857. fprintf(stdout,"INFO: \n");
  858. break;
  859. case(EXPDECAY):
  860. fprintf(stdout,"INFO: CURTAIL SOUND USING A TRUE EXPONENTIAL ENVELOPE.\n");
  861. fprintf(stdout,"INFO: \n");
  862. fprintf(stdout,"INFO: PARAMETERS ----------------------------------------------------\n");
  863. fprintf(stdout,"INFO: \n");
  864. fprintf(stdout,"INFO: DECAY START TIME\n");
  865. fprintf(stdout,"INFO: DECAY END TIME.\n");
  866. fprintf(stdout,"INFO: \n");
  867. break;
  868. case(PEAKCHOP):
  869. fprintf(stdout,"INFO: ISOLATE PEAKS IN SOURCE, AND PLAY THEM BACK AT A SPECIFIED TEMPO.\n");
  870. fprintf(stdout,"INFO: \n");
  871. fprintf(stdout,"INFO: MODES----------------------------------------------------------------\n");
  872. fprintf(stdout,"INFO: \n");
  873. fprintf(stdout,"INFO: 1) PLAY BACK PEAKS AT SPECIFIED TEMPO\n");
  874. fprintf(stdout,"INFO: 2) OUTPUT PEAK-ISOLATING ENVELOPE\n");
  875. fprintf(stdout,"INFO: 3) PLAY BACK PEAKS IN SPECIFIED RHYTHMIC CELLS AT SPECIFIED TEMPO\n");
  876. fprintf(stdout,"INFO: \n");
  877. fprintf(stdout,"INFO: PARAMETERS ----------------------------------------------------\n");
  878. fprintf(stdout,"INFO: \n");
  879. fprintf(stdout,"INFO: RHYTHM CELL .... rhythm-cell speficied in integers = relative durations of rhythmic units.\n");
  880. fprintf(stdout,"INFO: Rhythmic units DIVIDE beat, so e.g. \"3 1 2\" becomes \"1/2 1/6 1/3\".\n");
  881. fprintf(stdout,"INFO: WINDOW SIZE (MS) .... windowsize (in mS) for creating envelope.\n");
  882. fprintf(stdout,"INFO: PEAK WIDTH (MS).... width of retained peaks (in mS).\n");
  883. fprintf(stdout,"INFO: RISE TIME (MS).... time for signal to rise to (and fall from) the retained peaks.\n");
  884. fprintf(stdout,"INFO: TEMPO .... tempo of resulting output as MM (events per minute).\n");
  885. fprintf(stdout,"INFO: GAIN .... where tempo and peakwidth combine to make events overlap, may be necessary to reduce gain.\n");
  886. fprintf(stdout,"INFO: TEMPO SCATTER ....randomisation of output times (0-1)\n");
  887. fprintf(stdout,"INFO: GATE ....level (relative to maximum signal level) below which peaks are ignored (0-1)\n");
  888. fprintf(stdout,"INFO: LEVELLING .... force peakevent levels towards level of maximum event.\n");
  889. fprintf(stdout,"INFO: CENTRING ....centring of envelope on peak (0-1): 0 = at peak at envelope start; 1 = peak at envelope end.\n");
  890. fprintf(stdout,"INFO: REPETITION .... repeat peakevents in the source.\n");
  891. fprintf(stdout,"INFO: SKIP BY .... after using a peakevent, miss out the next 'skip by' peakevents.\n");
  892. fprintf(stdout,"INFO: \n");
  893. break;
  894. case(MCHANPAN):
  895. fprintf(stdout,"INFO: PAN A FILE OVER MORE THAN 2 OUTPUT CHANNELS.\n");
  896. fprintf(stdout,"INFO: \n");
  897. switch(mode) {
  898. case(0):
  899. fprintf(stdout,"INFO: MODE 1: MOVE MONO SOUND AROUND A MULTICHANNEL SPACE.\n");
  900. fprintf(stdout,"INFO: \n");
  901. fprintf(stdout,"INFO: PARAMETERS ----------------------------------------------------\n");
  902. fprintf(stdout,"INFO: \n");
  903. fprintf(stdout,"INFO: PANNING DATA .... is a file containing value triples : time pan-position pantype\n");
  904. fprintf(stdout,"INFO: \n");
  905. fprintf(stdout,"INFO: PAN-POSITION vals lie between (channel) 1 and a max no-of-channels >= 3.\n");
  906. fprintf(stdout,"INFO: positions between 0 and 1 are also possible (see below).\n");
  907. fprintf(stdout,"INFO: \n");
  908. fprintf(stdout,"INFO: PANTYPE values can be\n");
  909. fprintf(stdout,"INFO: 0 = direct pan: pan from 1 to 4 goes directly between lspkrs 1->4\n");
  910. fprintf(stdout,"INFO: 1 = clockwise rotation: pan from 1 to 4 goes through intermediate lspkrs 1->2->3->4\n");
  911. fprintf(stdout,"INFO: (assuming lspks are arranged with numbering increasing in a clockwise direction).\n");
  912. fprintf(stdout,"INFO: -1 = anticlockwise rotation: pan from 1 to 4 (with 8 lspkrs) goes 1->8->7->6->5->4\n");
  913. fprintf(stdout,"INFO: \n");
  914. fprintf(stdout,"INFO: Direct pans must start at a single loudspeaker, so position vals must be integers (and NOT 0).\n");
  915. fprintf(stdout,"INFO: Rotations can start and stop anywhere, so position values can be fractional,\n");
  916. fprintf(stdout,"INFO: and values between 0 & 1 are positions between maximum lspkr (e.g. 8) and lspkr 1\n");
  917. fprintf(stdout,"INFO: \n");
  918. fprintf(stdout,"INFO: CHANNELS IN OUTPUT FILE ..... This should not be less than the maximum channel number in the panning data.\n");
  919. fprintf(stdout,"INFO: but it can be greater.\n");
  920. fprintf(stdout,"INFO: \n");
  921. fprintf(stdout,"INFO: FOCUS ......... Degree to which positioned sound is focused in the loudspeaker.\n");
  922. fprintf(stdout,"INFO: If focus = 1.0, position set to (e.g.) '2' puts all the signal in lspkr 2.\n");
  923. fprintf(stdout,"INFO: If focus = 0.9, position '2' puts 90%% of the signal in lspkr 2\n");
  924. fprintf(stdout,"INFO: and the remainder in the 2 adjacent lspkrs (1 and 3).\n");
  925. fprintf(stdout,"INFO: \n");
  926. break;
  927. case(1):
  928. fprintf(stdout,"INFO: MODE 2: SWITCH (SILENCE-SEPARATED) MONO EVENTS IN SOUND BETWEEN SPECIFIED CHANNELS OF OUTPUT.\n");
  929. fprintf(stdout,"INFO: \n");
  930. fprintf(stdout,"INFO: PARAMETERS ----------------------------------------------------\n");
  931. fprintf(stdout,"INFO: \n");
  932. fprintf(stdout,"INFO: OUT-CHANNEL SEQUENCE .... is a file containing a list of output channels.\n");
  933. fprintf(stdout,"INFO: \n");
  934. fprintf(stdout,"INFO: Each output channel in the list will be visited, in turn.\n");
  935. fprintf(stdout,"INFO: If the end of the list is reached, the sequence wraps back to the start of the list.\n");
  936. fprintf(stdout,"INFO: \n");
  937. fprintf(stdout,"INFO: CHANNELS IN OUTPUT FILE ..... This should not be less than the maximum channel number in the switching data.\n");
  938. fprintf(stdout,"INFO: but it can be greater.\n");
  939. fprintf(stdout,"INFO: \n");
  940. fprintf(stdout,"INFO: FOCUS ......... Degree to which positioned sound is focused in the loudspeaker.\n");
  941. fprintf(stdout,"INFO: If focus = 1.0, position set to (e.g.) '2' puts all the signal in lspkr 2.\n");
  942. fprintf(stdout,"INFO: If focus = 0.9, position '2' puts 90%% of the signal in lspkr 2\n");
  943. fprintf(stdout,"INFO: and the remainder in the 2 adjacent lspkrs (1 and 3).\n");
  944. fprintf(stdout,"INFO: \n");
  945. fprintf(stdout,"INFO: MINIMUM DURATION OF SILENCES ..... minimum duration (mS) of consecutive zero-samples\n");
  946. fprintf(stdout,"INFO: to constitute a silent 'gap' between peak-events.\n");
  947. fprintf(stdout,"INFO: \n");
  948. break;
  949. case(2):
  950. fprintf(stdout,"INFO: MODE 3: SPREAD SUCCESSIVE (SILENCE-SEPARATED) MONO EVENTS ON DIFFERENT NUMBERS OF CHANNELS.\n");
  951. fprintf(stdout,"INFO: \n");
  952. fprintf(stdout,"INFO: Events are spread over specified output channels.\n");
  953. fprintf(stdout,"INFO: If the centre, width or depth of the spread are changing in time,\n");
  954. fprintf(stdout,"INFO: the placement of events changes only at the onset of a new event in the input.\n");
  955. fprintf(stdout,"INFO: \n");
  956. fprintf(stdout,"INFO: PARAMETERS ----------------------------------------------------\n");
  957. fprintf(stdout,"INFO: \n");
  958. fprintf(stdout,"INFO: CHANNELS IN OUTPUT FILE.\n");
  959. fprintf(stdout,"INFO: \n");
  960. fprintf(stdout,"INFO: CENTRE OF SPREAD ....... Channel from which spreading radiates.\n");
  961. fprintf(stdout,"INFO: CHANNEL SPREAD ......... Total Number of channels over which spreading extends.\n");
  962. fprintf(stdout,"INFO: DEPTH OF SPREAD FRONT .. Number of channels (on each side) activated behind spreading front.\n");
  963. fprintf(stdout,"INFO: LEVEL ROLLOFF WITH ADDED CHANNELS .... Level compensation for addition of new output channels.\n");
  964. fprintf(stdout,"INFO: 0, No rolloff, all channels go up to full level as they are added.\n");
  965. fprintf(stdout,"INFO: 1, Full rolloff, level falls to 1/N for N channels of output.\n");
  966. fprintf(stdout,"INFO: Intermediate values are possible.\n");
  967. fprintf(stdout,"INFO: MINIMUM DURATION OF SILENCES ..... minimum duration (mS) of consecutive zero-samples\n");
  968. fprintf(stdout,"INFO: to constitute a silent 'gap' between peak-events.\n");
  969. fprintf(stdout,"INFO: \n");
  970. fprintf(stdout,"INFO: CENTRE, SPREAD and DEPTH can vary over time.\n");
  971. fprintf(stdout,"INFO: \n");
  972. break;
  973. case(3):
  974. fprintf(stdout,"INFO: MODE 4: SPREAD SOUND GRADUALLY OVER DIFFERENT NUMBERS OF CHANNELS (MONO OR STEREO INPUT).\n");
  975. fprintf(stdout,"INFO: \n");
  976. fprintf(stdout,"INFO: Events are spread over specified output channels.\n");
  977. fprintf(stdout,"INFO: If the centre, width or depth of the spread are changing in time,\n");
  978. fprintf(stdout,"INFO: the placement of events changes continuously.\n");
  979. fprintf(stdout,"INFO: \n");
  980. fprintf(stdout,"INFO: PARAMETERS ----------------------------------------------------\n");
  981. fprintf(stdout,"INFO: \n");
  982. fprintf(stdout,"INFO: CHANNELS IN OUTPUT FILE.\n");
  983. fprintf(stdout,"INFO: \n");
  984. fprintf(stdout,"INFO: CENTRE OF SPREAD ....... Channel from which spreading radiates (must be an integer).\n");
  985. fprintf(stdout,"INFO: CHANNEL SPREAD ......... Total Number of channels over which spreading extends.\n");
  986. fprintf(stdout,"INFO: DEPTH OF SPREAD FRONT .. Number of channels (on each side) activated behind spreading front.\n");
  987. fprintf(stdout,"INFO: LEVEL ROLLOFF WITH ADDED CHANNELS .... Level compensation for addition of new output channels.\n");
  988. fprintf(stdout,"INFO: 0, No rolloff, all channels go up to full level as they are added.\n");
  989. fprintf(stdout,"INFO: 1, Full rolloff, level falls to 1/N for N channels of output.\n");
  990. fprintf(stdout,"INFO: Intermediate values are possible.\n");
  991. fprintf(stdout,"INFO: \n");
  992. fprintf(stdout,"INFO: CENTRE AND SPREAD can vary continuously over time.\n");
  993. fprintf(stdout,"INFO: \n");
  994. break;
  995. case(4):
  996. fprintf(stdout,"INFO: MODE 5: ANTIPHONALLY SWAP (SILENCE-SEPARATED) EVENTS IN SOUND BETWEEN TWO SETS OF OUTPUT-CHANNELS.\n");
  997. fprintf(stdout,"INFO: \n");
  998. fprintf(stdout,"INFO: Events are switched between one set of output channels and another.\n");
  999. fprintf(stdout,"INFO: Event switching occurs only at the onset of a new event.\n");
  1000. fprintf(stdout,"INFO: \n");
  1001. fprintf(stdout,"INFO: PARAMETERS ----------------------------------------------------\n");
  1002. fprintf(stdout,"INFO: \n");
  1003. fprintf(stdout,"INFO: ANTIPHONAL CHANNEL SETS ..... two strings of letters, with separator ('-')\n");
  1004. fprintf(stdout,"INFO: representing the 2 sets of output channels to alternate between.\n");
  1005. fprintf(stdout,"INFO: e.g. abcd-efgh = antiphony between output channels 1,2,3,4 and output channels 5,6,7,8.\n");
  1006. fprintf(stdout,"INFO: \n");
  1007. fprintf(stdout,"INFO: CHANNELS IN OUTPUT FILE ..... This should not be less than the maximum channel number in the antiphony data,\n");
  1008. fprintf(stdout,"INFO: but it can be greater.\n");
  1009. fprintf(stdout,"INFO: \n");
  1010. fprintf(stdout,"INFO: MINIMUM DURATION OF SILENCES ..... minimum duration (mS) of consecutive zero-samples\n");
  1011. fprintf(stdout,"INFO: to constitute a silent 'gap' between peak-events.\n");
  1012. fprintf(stdout,"INFO: \n");
  1013. break;
  1014. case(5):
  1015. fprintf(stdout,"INFO: MODE 6: ANTIPHONALLY SWITCH BETWEEN TWO SETS OF OUTPUT-CHANNELS, USING 1 OR MORE SOUNDS.\n");
  1016. fprintf(stdout,"INFO: \n");
  1017. fprintf(stdout,"INFO: Sound output is switched between one set of output channels and another.\n");
  1018. fprintf(stdout,"INFO: Event switching occurs at specified times and, if several files are input, the next sound in the input list is used.\n");
  1019. fprintf(stdout,"INFO: \n");
  1020. fprintf(stdout,"INFO: PARAMETERS ----------------------------------------------------\n");
  1021. fprintf(stdout,"INFO: \n");
  1022. fprintf(stdout,"INFO: ANTIPHONAL CHANNEL SETS ..... two strings of letters, with separator ('-')\n");
  1023. fprintf(stdout,"INFO: representing the 2 sets of output channels to alternate between.\n");
  1024. fprintf(stdout,"INFO: e.g. abcd-efgh = antiphony between output channels 1,2,3,4 and output channels 5,6,7,8.\n");
  1025. fprintf(stdout,"INFO: \n");
  1026. fprintf(stdout,"INFO: CHANNELS IN OUTPUT FILE ..... This should not be less than the maximum channel number in the antiphony data,\n");
  1027. fprintf(stdout,"INFO: but it can be greater.\n");
  1028. fprintf(stdout,"INFO: \n");
  1029. fprintf(stdout,"INFO: ANTIPHONY_TIMESTEP ..... Timestep before the output switches to the next set of output channels.\n");
  1030. fprintf(stdout,"INFO: Can vary through time.\n");
  1031. fprintf(stdout,"INFO: SILENT GAP BETWEEN ANTIPHONAL EVENTS ... Silence separating antiphonal events (if any).\n");
  1032. fprintf(stdout,"INFO: Can vary through time.\n");
  1033. fprintf(stdout,"INFO: Cannot be equal to or less than the minimum antiphony_timestep.\n");
  1034. fprintf(stdout,"INFO: SPLICELENGTH (mS) ...... Length of splices fading in and out the antiphonal events.\n");
  1035. fprintf(stdout,"INFO: \n");
  1036. fprintf(stdout,"INFO: MINIMUM DURATION OF SILENCES ..... minimum duration (mS) of consecutive zero-samples\n");
  1037. fprintf(stdout,"INFO: to constitute a silent 'gap' between peak-events.\n");
  1038. fprintf(stdout,"INFO: \n");
  1039. break;
  1040. case(6):
  1041. fprintf(stdout,"INFO: MODE 7: PAN FROM ONE CHANNEL CONFIGURATION TO ANOTHER, PASSING \"THROUGH the CENTRE\".\n");
  1042. fprintf(stdout,"INFO: \n");
  1043. fprintf(stdout,"INFO: PARAMETERS ----------------------------------------------------\n");
  1044. fprintf(stdout,"INFO: \n");
  1045. fprintf(stdout,"INFO: PANNING DATA .... is a file containing a list of lines, each having : time pan-positions\n");
  1046. fprintf(stdout,"INFO: \n");
  1047. fprintf(stdout,"INFO: TIME value must increase, from one entry to the next.\n");
  1048. fprintf(stdout,"INFO: \n");
  1049. fprintf(stdout,"INFO: PAN-POSITIONS is a list of ALL the output channels in any order.\n");
  1050. fprintf(stdout,"INFO: Input channels 1 to N are mapped, in order, to the channels in your list.\n");
  1051. fprintf(stdout,"INFO: \n");
  1052. fprintf(stdout,"INFO: On moving from one list to the next, every input channel spreads outwards until\n");
  1053. fprintf(stdout,"INFO: it feeds every output channel, then gradually focuses into its next output-channel position.\n");
  1054. fprintf(stdout,"INFO: \n");
  1055. fprintf(stdout,"INFO: To force all inputs to feed all outputs at the start of the sound, at the end of the sound,\n");
  1056. fprintf(stdout,"INFO: or at any point during the sound, enter a map of zeros (one zero for every input channel)\n");
  1057. fprintf(stdout,"INFO: at the starttime, and at the endtime, of the desired period.\n");
  1058. fprintf(stdout,"INFO: \n");
  1059. fprintf(stdout,"INFO: LEVEL ROLLOFF WITH ADDED CHANNELS .... Level compensation for addition of new output channels.\n");
  1060. fprintf(stdout,"INFO: 0, No rolloff, all channels go up to full level as they are added.\n");
  1061. fprintf(stdout,"INFO: 1, Full rolloff, level falls to 1/N for N channels of output.\n");
  1062. fprintf(stdout,"INFO: Intermediate values are possible.\n");
  1063. fprintf(stdout,"INFO: \n");
  1064. break;
  1065. case(7):
  1066. fprintf(stdout,"INFO: MODE 8: PAN A PROCESS ROUND A MULTICHANNEL FILE.\n");
  1067. fprintf(stdout,"INFO: \n");
  1068. fprintf(stdout,"INFO: The input multichannel sound remains where it is.\n");
  1069. fprintf(stdout,"INFO: The processing itself progresses around the output space in the manner you define.\n");
  1070. fprintf(stdout,"INFO: \n");
  1071. fprintf(stdout,"INFO: PARAMETERS ----------------------------------------------------\n");
  1072. fprintf(stdout,"INFO: \n");
  1073. fprintf(stdout,"INFO: CENTRE OF PROCESSING ....... Channel where processing is located.\n");
  1074. fprintf(stdout,"INFO: CHANNEL SPREAD OF PROCESSING .....Total Number of channels over which processing spreads.\n");
  1075. fprintf(stdout,"INFO: \n");
  1076. break;
  1077. case(8):
  1078. fprintf(stdout,"INFO: MODE 9: ROTATE MONO SOUND AROUND MULTICHANNEL SPACE, SPECIFYING (POSSIBLY VARYING) SPEED.\n");
  1079. fprintf(stdout,"INFO: \n");
  1080. fprintf(stdout,"INFO: PARAMETERS ----------------------------------------------------\n");
  1081. fprintf(stdout,"INFO: \n");
  1082. fprintf(stdout,"INFO: CHANNELS IN OUTPUT FILE ..... This should not be less than the maximum channel number in the panning data.\n");
  1083. fprintf(stdout,"INFO: but it can be greater.\n");
  1084. fprintf(stdout,"INFO: \n");
  1085. fprintf(stdout,"INFO: START CHANNEL ...... Channel in which sound starts out.\n");
  1086. fprintf(stdout,"INFO: \n");
  1087. fprintf(stdout,"INFO: SPEED (CYCLES PER SEC) ...... Speed of rotation.\n");
  1088. fprintf(stdout,"INFO: \n");
  1089. fprintf(stdout,"INFO: FOCUS ......... Degree to which positioned sound is focused in the loudspeaker.\n");
  1090. fprintf(stdout,"INFO: If focus = 1.0, position set to (e.g.) '2' puts all the signal in lspkr 2.\n");
  1091. fprintf(stdout,"INFO: If focus = 0.9, position '2' puts 90%% of the signal in lspkr 2\n");
  1092. fprintf(stdout,"INFO: and the remainder in the 2 adjacent lspkrs (1 and 3).\n");
  1093. fprintf(stdout,"INFO: \n");
  1094. fprintf(stdout,"INFO: ANTICLOCKWISE ...... Force rotation to be anticlockwise (default: clockwise).\n");
  1095. fprintf(stdout,"INFO: \n");
  1096. break;
  1097. case(9):
  1098. fprintf(stdout,"INFO: MODE 10: SWITCH (SILENCE-SEPARATED) MONO EVENTS IN SOUND BETWEEN RANDOMLY PERMUTED CHANNELS OF OUTPUT.\n");
  1099. fprintf(stdout,"INFO: \n");
  1100. fprintf(stdout,"INFO: PARAMETERS ----------------------------------------------------\n");
  1101. fprintf(stdout,"INFO: \n");
  1102. fprintf(stdout,"INFO: CHANNELS IN OUTPUT FILE.\n");
  1103. fprintf(stdout,"INFO: \n");
  1104. fprintf(stdout,"INFO: FOCUS ......... Degree to which positioned sound is focused in the loudspeaker.\n");
  1105. fprintf(stdout,"INFO: If focus = 1.0, position set to (e.g.) '2' puts all the signal in lspkr 2.\n");
  1106. fprintf(stdout,"INFO: If focus = 0.9, position '2' puts 90%% of the signal in lspkr 2\n");
  1107. fprintf(stdout,"INFO: and the remainder in the 2 adjacent lspkrs (1 and 3).\n");
  1108. fprintf(stdout,"INFO: \n");
  1109. fprintf(stdout,"INFO: MINIMUM DURATION OF SILENCES ..... minimum duration (mS) of consecutive zero-samples\n");
  1110. fprintf(stdout,"INFO: to constitute a silent 'gap' between events in source-sound.\n");
  1111. fprintf(stdout,"INFO: \n");
  1112. fprintf(stdout,"INFO: EVENT GROUP SIZE ......... number of events at any channel, before switching to next.\n");
  1113. fprintf(stdout,"INFO: Can vary through time.\n");
  1114. fprintf(stdout,"INFO: \n");
  1115. fprintf(stdout,"INFO: NO STEPS TO ADJACENT CHANNELS.......Reject moving to an adjacent output channel.\n");
  1116. fprintf(stdout,"INFO: \n");
  1117. fprintf(stdout,"INFO: RANDOMLY VARY GROUP SIZE.......number of events at any channel, before switching to next,\n");
  1118. fprintf(stdout,"INFO: can vary randomly from specified size down to just 1.\n");
  1119. fprintf(stdout,"INFO: \n");
  1120. break;
  1121. }
  1122. break;
  1123. case(TEX_MCHAN):
  1124. fprintf(stdout,"INFO: TEXTURE MADE FROM ONE OR SEVERAL INPUT SOUND FILES, TO MANY OUTPUT CHANNELS\n");
  1125. fprintf(stdout,"INFO: \n");
  1126. fprintf(stdout,"INFO: --------------------------------------------------------------------------------\n");
  1127. fprintf(stdout,"INFO: HARMONIC TYPES OF TEXTURE------------------------------------------------------\n");
  1128. fprintf(stdout,"INFO: --------------------------------------------------------------------------------\n");
  1129. fprintf(stdout,"INFO: \n");
  1130. fprintf(stdout,"INFO: Textures are specified WITHIN A (possibly varying) RANGE OF PITCHES\n");
  1131. fprintf(stdout,"INFO: and within that range, the chosen pitches may be\n");
  1132. fprintf(stdout,"INFO: entirely RANDOM, on a HARMONIC SET (using pitches given),\n");
  1133. fprintf(stdout,"INFO: on a HARMONIC FIELD (uses 8va transpositions of pitches given),\n");
  1134. fprintf(stdout,"INFO: or on HARMONIC SETS, OR FIELDS, WHICH CHANGE THROUGH TIME.\n");
  1135. fprintf(stdout,"INFO: \n");
  1136. fprintf(stdout,"INFO: First note (only) of motifs are guaranteed to be on a harmonic set(field) note\n");
  1137. fprintf(stdout,"INFO: except in MOTIFS IN HF, where motifs notes are forced onto set (field) notes.\n");
  1138. fprintf(stdout,"INFO: \n");
  1139. fprintf(stdout,"INFO: --------------------------------------------------------------------------------\n");
  1140. fprintf(stdout,"INFO: PARAMETERS FOR TEXTURE---------------------------------------------------------\n");
  1141. fprintf(stdout,"INFO: --------------------------------------------------------------------------------\n");
  1142. fprintf(stdout,"INFO: \n");
  1143. fprintf(stdout,"INFO: (** starred items CANNOT VARY in time)\n");
  1144. fprintf(stdout,"INFO: \n");
  1145. fprintf(stdout,"INFO: OUTPUT DURATION...........**.(min) duration of outfile\n");
  1146. fprintf(stdout,"INFO: \n");
  1147. fprintf(stdout,"INFO: ----------------------------- TIMING PARAMETERS -----------------------------\n");
  1148. fprintf(stdout,"INFO: \n");
  1149. fprintf(stdout,"INFO: EVENT PACKING ...............(average) time between event onsets.\n");
  1150. fprintf(stdout,"INFO: SKIPTIME BETWEEN GROUP,MOTIF ONSETS..(average) time between group,motif onsets.\n");
  1151. fprintf(stdout,"INFO: EVENT SCATTER................randomisation of event, group or motif onsets.\n");
  1152. fprintf(stdout,"INFO: TIME GRID UNIT...............minstep(MS) quantised timegrid (for event starttimes)\n");
  1153. fprintf(stdout,"INFO: \n");
  1154. fprintf(stdout,"INFO: ----------------------------- SOUND PARAMETERS -----------------------------\n");
  1155. fprintf(stdout,"INFO: \n");
  1156. fprintf(stdout,"INFO: 1ST SND-IN-LIST TO USE,LAST..1st,last snd to use,from listed input sounds.\n");
  1157. fprintf(stdout,"INFO: \n");
  1158. fprintf(stdout,"INFO: ----------------------------- LOUDNESS PARAMETERS -----------------------------\n");
  1159. fprintf(stdout,"INFO: \n");
  1160. fprintf(stdout,"INFO: MIN EVENT GAIN, MAX..........min & max level of input events\n");
  1161. fprintf(stdout,"INFO: MIN EVENT SUSTAIN, MAX.......min & max sustain-time of events.\n");
  1162. fprintf(stdout,"INFO: OVERALL ATTENUATION..........overall attenuation of the output\n");
  1163. fprintf(stdout,"INFO: \n");
  1164. fprintf(stdout,"INFO: ----------------------------- PITCH PARAMETERS -----------------------------\n");
  1165. fprintf(stdout,"INFO: \n");
  1166. fprintf(stdout,"INFO: MIN PITCH, MAX...............min & max pitch(MIDI): (gives transposition of input)\n");
  1167. fprintf(stdout,"INFO: \n");
  1168. fprintf(stdout,"INFO: ----------------------------- SPATIAL PARAMETERS -----------------------------\n");
  1169. fprintf(stdout,"INFO: \n");
  1170. fprintf(stdout,"INFO: SPATIAL POSITION.............centre of output sound-image.\n");
  1171. fprintf(stdout,"INFO: SPATIAL SPREAD...............spatial-spread of texture events (0 to all-outchans).\n");
  1172. fprintf(stdout,"INFO: \n");
  1173. fprintf(stdout,"INFO: If spatial spread is set to ZERO ....\n");
  1174. fprintf(stdout,"INFO: With MONO sources, output is distributed randomly over all output channels\n");
  1175. fprintf(stdout,"INFO: with no events in positions BETWEEN output channels (all events IN single loudspeakers).\n");
  1176. fprintf(stdout,"INFO: With STEREO sources, each stereo event is assigned to a random pair of output channels,\n");
  1177. fprintf(stdout,"INFO: and these pairs are randomly permuted, so all channels used before any channel visited a 2nd time.\n");
  1178. fprintf(stdout,"INFO: With panning sources, this produces a set of random pan-motions using all channels equally.\n");
  1179. fprintf(stdout,"INFO: \n");
  1180. fprintf(stdout,"INFO: ----------------------------- OTHER PARAMETERS -----------------------------\n");
  1181. fprintf(stdout,"INFO: \n");
  1182. fprintf(stdout,"INFO: SEED.........................same seed-number: reproducible output (0: not so)\n");
  1183. fprintf(stdout,"INFO: PLAY ALL OF INSOUND..........always play whole input-sound (ignoring dur vals).\n");
  1184. fprintf(stdout,"INFO: PLAY FILES CYCLICALLY........play sounds in input order (always uses ALL input sounds).\n");
  1185. fprintf(stdout,"INFO: RANDOMLY PERMUTE EACH CYCLE..permute order of sounds, in each complete cycle.\n");
  1186. fprintf(stdout,"INFO: FIXED POSITIONS..............infiles set at fixed positions in output.\n");
  1187. fprintf(stdout,"INFO: This option only functions if the output channel count > 2\n");
  1188. fprintf(stdout,"INFO: and output positions are located on stereo-images formed by alternate lspkrs\n");
  1189. fprintf(stdout,"INFO: (i.e. stereo 1-3, stereo 2-4, stereo 3-5 etc)\n");
  1190. fprintf(stdout,"INFO: In this case, \"SPATIAL POSITION\" is read as an offset of the placement of output positions\n");
  1191. fprintf(stdout,"INFO: With no offset, first sounds entered are on the channels 1-3 stereo image.\n");
  1192. fprintf(stdout,"INFO: With offset of 1 first sounds entered are on the channels 2-4 stereo image, and so on\n");
  1193. fprintf(stdout,"INFO: \"SPATIAL SPREAD\" is read as a randomisation of these positions\n");
  1194. fprintf(stdout,"INFO: with a range 0 to 1 (entered values above 1 are truncated to 1).\n");
  1195. fprintf(stdout,"INFO: \n");
  1196. fprintf(stdout,"INFO: --------------------------------------------------------------------------------\n");
  1197. fprintf(stdout,"INFO: NOTEDATA IS A TEXTFILE CONTAINING-----------------------------------------------\n");
  1198. fprintf(stdout,"INFO: --------------------------------------------------------------------------------\n");
  1199. fprintf(stdout,"INFO: \n");
  1200. fprintf(stdout,"INFO: LINE 1: list of (possibly fictional) MIDI pitch of each input snd.\n");
  1201. fprintf(stdout,"INFO: \n");
  1202. fprintf(stdout,"INFO: Then, where harmonic sets or harmonic fields are required,\n");
  1203. fprintf(stdout,"INFO: each subsequent group of lines specifies a NOTELIST\n");
  1204. fprintf(stdout,"INFO: \n");
  1205. fprintf(stdout,"INFO: --------------------------------------------------------------------------------\n");
  1206. fprintf(stdout,"INFO: NOTELISTS HAVE THE FOLLOWING FORMAT---------------------------------------------\n");
  1207. fprintf(stdout,"INFO: --------------------------------------------------------------------------------\n");
  1208. fprintf(stdout,"INFO: \n");
  1209. fprintf(stdout,"INFO: first line: #N\n");
  1210. fprintf(stdout,"INFO: other lines: time(SECS) infile_no pitch(MIDI) amp(MIDI) dur(SECS)\n");
  1211. fprintf(stdout,"INFO: \n");
  1212. fprintf(stdout,"INFO: where N = number of notes (and therefore lines) in notelist to follow,\n");
  1213. fprintf(stdout,"INFO: and times in notelist must never decrease.\n");
  1214. fprintf(stdout,"INFO: \n");
  1215. fprintf(stdout,"INFO: (The amp(MIDI) and dur(SECS) params are now redundant, but need to be included).\n");
  1216. fprintf(stdout,"INFO: \n");
  1217. break;
  1218. case(MANYSIL):
  1219. fprintf(stdout,"INFO: INSERT SEVERAL SILENCES IN A SOUND.\n");
  1220. fprintf(stdout,"INFO: \n");
  1221. fprintf(stdout,"INFO: PARAMETERS ----------------------------------------------------\n");
  1222. fprintf(stdout,"INFO: \n");
  1223. fprintf(stdout,"INFO: SILENCE LOCATION & DURATION .....time/duration value pairs, being the times in the sound to insert the silences,\n");
  1224. fprintf(stdout,"INFO: and the durations of the inserted silences..\n");
  1225. fprintf(stdout,"INFO: SPLICE LENGTH .... length of splices, in mS.\n");
  1226. fprintf(stdout,"INFO: \n");
  1227. break;
  1228. case(RETIME):
  1229. switch(mode) {
  1230. case(0):
  1231. fprintf(stdout,"INFO: MODE 1: RETIME USER-IDENTIFIED PEAKS IN SOUND, PLACING THEM AT REGULAR BEATS AT SPECIFIED MM.\n");
  1232. fprintf(stdout,"INFO: \n");
  1233. fprintf(stdout,"INFO: PARAMETERS ----------------------------------------------------\n");
  1234. fprintf(stdout,"INFO: \n");
  1235. fprintf(stdout,"INFO: LOCATIONS OF BEATS .....list of times of events corresponding to beats, in original sound.\n");
  1236. fprintf(stdout,"INFO: \n");
  1237. fprintf(stdout,"INFO: METRONOME MARK OR BEAT DURATION .... indicating required output tempo.\n");
  1238. fprintf(stdout,"INFO: (Marked events in source will be placed at regular beats at this MM in output)\n");
  1239. fprintf(stdout,"INFO: Values between 20 and 400 are interpreted as MM\n");
  1240. fprintf(stdout,"INFO: Values below 1.0 are interpreted as beat duration\n");
  1241. fprintf(stdout,"INFO: \n");
  1242. break;
  1243. case(1):
  1244. fprintf(stdout,"INFO: MODE 2: RETIME EVENTS IN ANY SOUND, USING RETIMING DATA.\n");
  1245. fprintf(stdout,"INFO: \n");
  1246. fprintf(stdout,"INFO: PARAMETERS ----------------------------------------------------\n");
  1247. fprintf(stdout,"INFO: \n");
  1248. fprintf(stdout,"INFO: RETIMING DATA .....which consists of.\n");
  1249. fprintf(stdout,"INFO: (a) MM of rhythm of accents in original sound.\n");
  1250. fprintf(stdout,"INFO: (b) Time, in the outfile, of the first accented event.\n");
  1251. fprintf(stdout,"INFO: (c) Two columns of (increasing) time-data. \n");
  1252. fprintf(stdout,"INFO: (1) The true position of the attacks in the original sound.\n");
  1253. fprintf(stdout,"INFO: (2) The ideal(ised) position of those attacks.\n");
  1254. fprintf(stdout,"INFO: NB time of first-accented event must equal a time in this 2nd list.\n");
  1255. fprintf(stdout,"INFO: \n");
  1256. fprintf(stdout,"INFO: This Data can be generated AUTOMATICALLY from the 'rcode' property in a properties file.\n");
  1257. fprintf(stdout,"INFO: \n");
  1258. fprintf(stdout,"INFO: METRONOME MARK OR BEAT DURATION .... indicating required OUTPUT tempo.\n");
  1259. fprintf(stdout,"INFO: Values between 20 and 400 are interpreted as MM\n");
  1260. fprintf(stdout,"INFO: Values below 1.0 are interpreted as beat duration\n");
  1261. fprintf(stdout,"INFO: \n");
  1262. fprintf(stdout,"INFO: PEAKWIDTH (mS) .... ..width to which peak events will be cut, in output.\n");
  1263. fprintf(stdout,"INFO: \n");
  1264. fprintf(stdout,"INFO: SPLICE LENGTH (mS) .... risetime to events.\n");
  1265. fprintf(stdout,"INFO: \n");
  1266. break;
  1267. case(2):
  1268. fprintf(stdout,"INFO: MODE 3: SHORTEN (SILENCE-SEPARATED) EVENTS IN A SOUND, USING PEAKWIDTH DATA.\n");
  1269. fprintf(stdout,"INFO: \n");
  1270. fprintf(stdout,"INFO: PARAMETERS ----------------------------------------------------\n");
  1271. fprintf(stdout,"INFO: \n");
  1272. fprintf(stdout,"INFO: MINIMUM INTER-EVENT SILENCE (mS) .... minimum duration of any silence\n");
  1273. fprintf(stdout,"INFO: between peak events.\n");
  1274. fprintf(stdout,"INFO: \n");
  1275. fprintf(stdout,"INFO: OUTPUT PEAKWIDTH .............. width (in mS) of peaks required in output sound.\n");
  1276. fprintf(stdout,"INFO: \n");
  1277. fprintf(stdout,"INFO: OUTPUT SPLICE LENGTH .... ...time (in mS) for splice cutoff of events.\n");
  1278. fprintf(stdout,"INFO: \n");
  1279. fprintf(stdout,"INFO: ORIGINAL SPLICE LENGTH .. time (in mS) of splices at end of events in original data.\n");
  1280. fprintf(stdout,"INFO: \n");
  1281. break;
  1282. case(3):
  1283. fprintf(stdout,"INFO: MODE 4: RETIME (SILENCE-SEPARATED) EVENTS IN SOUND, PLACING THEM AT REGULAR BEATS AT SPECIFIED MM.\n");
  1284. fprintf(stdout,"INFO: \n");
  1285. fprintf(stdout,"INFO: PARAMETERS ----------------------------------------------------\n");
  1286. fprintf(stdout,"INFO: \n");
  1287. fprintf(stdout,"INFO: METRONOME MARK OR BEAT DURATION .... indicating required output tempo.\n");
  1288. fprintf(stdout,"INFO: (Marked events in source will be placed at regular beats at this MM in output)\n");
  1289. fprintf(stdout,"INFO: Values between 20 and 400 are interpreted as MM\n");
  1290. fprintf(stdout,"INFO: Values below 1.0 are interpreted as beat duration\n");
  1291. fprintf(stdout,"INFO: \n");
  1292. fprintf(stdout,"INFO: MINIMUM INTER-EVENT SILENCE (mS) .... minimum duration of any silence\n");
  1293. fprintf(stdout,"INFO: between peak events.\n");
  1294. fprintf(stdout,"INFO: \n");
  1295. fprintf(stdout,"INFO: PREGAIN .... Gain applied to input\n");
  1296. fprintf(stdout,"INFO: possibly set less than 1.0 where existing grains overlap in output.\n");
  1297. fprintf(stdout,"INFO: \n");
  1298. break;
  1299. case(4):
  1300. fprintf(stdout,"INFO: MODE 5: RETIME (SILENCE-SEPARATED) EVENTS IN SOUND, CHANGING THEIR TIMING BY A GIVEN FACTOR.\n");
  1301. fprintf(stdout,"INFO: \n");
  1302. fprintf(stdout,"INFO: PARAMETERS ----------------------------------------------------\n");
  1303. fprintf(stdout,"INFO: \n");
  1304. fprintf(stdout,"INFO: TEMPO-CHANGE FACTOR .... increases or decreases tempo of events.\n");
  1305. fprintf(stdout,"INFO: Factor may vary over time.\n");
  1306. fprintf(stdout,"INFO: \n");
  1307. fprintf(stdout,"INFO: MINIMUM INTER-EVENT SILENCE (mS) .... minimum duration of any silence\n");
  1308. fprintf(stdout,"INFO: between peak events.\n");
  1309. fprintf(stdout,"INFO: \n");
  1310. fprintf(stdout,"INFO: TEMPO-CHANGE STARTS AFTER .... Events not moved before this time.\n");
  1311. fprintf(stdout,"INFO: \n");
  1312. fprintf(stdout,"INFO: TEMPO-CHANGE ENDS BEFORE .... Events not moved after this time.\n");
  1313. fprintf(stdout,"INFO: \n");
  1314. fprintf(stdout,"INFO: SYNCHRONISATION TIME .... .. Time of event in input which will sync with its copy in output.\n");
  1315. fprintf(stdout,"INFO: Time should be WITHIN the desired event. Zero implies sync at 1st event.\n");
  1316. fprintf(stdout,"INFO: \n");
  1317. break;
  1318. case(5):
  1319. fprintf(stdout,"INFO: MODE 6: REPOSITION (SILENCE-SEPARATED) EVENTS AT SPECIFIED BEATS, AT SPECIFIED TEMPO.\n");
  1320. fprintf(stdout,"INFO: \n");
  1321. fprintf(stdout,"INFO: PARAMETERS ----------------------------------------------------\n");
  1322. fprintf(stdout,"INFO: \n");
  1323. fprintf(stdout,"INFO: BEAT LOCATIONS OF EVENTS .... positioning of output events, counted as beats.\n");
  1324. fprintf(stdout,"INFO: \n");
  1325. fprintf(stdout,"INFO: METRONOME MARK OR BEAT DURATION .... indicating required output tempo.\n");
  1326. fprintf(stdout,"INFO: Values between 20 and 1000 are interpreted as MM\n");
  1327. fprintf(stdout,"INFO: Values below 1.0 are interpreted as beat duration\n");
  1328. fprintf(stdout,"INFO: \n");
  1329. fprintf(stdout,"INFO: TIME OF FIRST SOUNDING EVENT IN OUTPUT .... in seconds.\n");
  1330. fprintf(stdout,"INFO: \n");
  1331. fprintf(stdout,"INFO: MINIMUM INTER-EVENT SILENCE (mS) .... minimum duration of any silence\n");
  1332. fprintf(stdout,"INFO: between peak events.\n");
  1333. fprintf(stdout,"INFO: PREGAIN .... Applied to output: may be necessary if retimed events overlap one another.\n");
  1334. fprintf(stdout,"INFO: \n");
  1335. break;
  1336. case(6):
  1337. fprintf(stdout,"INFO: MODE 7: REPOSITION (SILENCE-SEPARATED) EVENTS AT SPECIFIED TIMES.\n");
  1338. fprintf(stdout,"INFO: \n");
  1339. fprintf(stdout,"INFO: PARAMETERS ----------------------------------------------------\n");
  1340. fprintf(stdout,"INFO: \n");
  1341. fprintf(stdout,"INFO: TIME LOCATIONS OF EVENTS .... positioning of output events, indicated in seconds.\n");
  1342. fprintf(stdout,"INFO: \n");
  1343. fprintf(stdout,"INFO: TIME OF FIRST SOUNDING EVENT IN OUTPUT .... in seconds.\n");
  1344. fprintf(stdout,"INFO: \n");
  1345. fprintf(stdout,"INFO: MINIMUM INTER-EVENT SILENCE (mS) .... minimum duration of any silence\n");
  1346. fprintf(stdout,"INFO: between peak events.\n");
  1347. fprintf(stdout,"INFO: \n");
  1348. fprintf(stdout,"INFO: PREGAIN .... Applied to output: may be necessary if retimed events overlap one another.\n");
  1349. fprintf(stdout,"INFO: \n");
  1350. break;
  1351. case(7):
  1352. fprintf(stdout,"INFO: MODE 8: REPEAT SPECIFIED (SILENCE-SEPARATED) EVENT, WITHIN SOUND, AT SPECIFIED TEMPO.\n");
  1353. fprintf(stdout,"INFO: \n");
  1354. fprintf(stdout,"INFO: PARAMETERS ----------------------------------------------------\n");
  1355. fprintf(stdout,"INFO: \n");
  1356. fprintf(stdout,"INFO: MINIMUM INTER-EVENT SILENCE (mS) .... minimum duration of any silence\n");
  1357. fprintf(stdout,"INFO: between peak events.\n");
  1358. fprintf(stdout,"INFO: \n");
  1359. fprintf(stdout,"INFO: METRONOME MARK OR BEAT DURATION .... indicating required output tempo.\n");
  1360. fprintf(stdout,"INFO: Values between 20 and 1000 are interpreted as MM\n");
  1361. fprintf(stdout,"INFO: Values below 1.0 are interpreted as beat duration\n");
  1362. fprintf(stdout,"INFO: \n");
  1363. fprintf(stdout,"INFO: EVENT LOCATION .... (rough) start-time in file of event to be repeated (must be INSIDE event).\n");
  1364. fprintf(stdout,"INFO: \n");
  1365. fprintf(stdout,"INFO: BEATS IN EVENT .... Number of beats (at specified tempo) within the event to repeat.\n");
  1366. fprintf(stdout,"INFO: \n");
  1367. fprintf(stdout,"INFO: EVENT REPETITIONS .... How many times (1 or more) to repeat the event.\n");
  1368. fprintf(stdout,"INFO: \n");
  1369. fprintf(stdout,"INFO: MINIMUM INTER-EVENT SILENCE (mS) .... minimum duration of any silence\n");
  1370. fprintf(stdout,"INFO: between peak events.\n");
  1371. fprintf(stdout,"INFO: \n");
  1372. break;
  1373. case(8):
  1374. fprintf(stdout,"INFO: MODE 9: MASK (REPLACE BY SILENCE) (SILENCE-SEPARATED) EVENTS, IN A SPECIFIED PATTERN OF 'DELETIONS'.\n");
  1375. fprintf(stdout,"INFO: \n");
  1376. fprintf(stdout,"INFO: PARAMETERS ----------------------------------------------------\n");
  1377. fprintf(stdout,"INFO: \n");
  1378. fprintf(stdout,"INFO: MASKING PATTERN......sequence of 0s (mask) and 1s (don't mask) describing masking pattern.\n");
  1379. fprintf(stdout,"INFO: \n");
  1380. fprintf(stdout,"INFO: MINIMUM INTER-EVENT SILENCE (mS) .... minimum duration of any silence\n");
  1381. fprintf(stdout,"INFO: between peak events.\n");
  1382. fprintf(stdout,"INFO: \n");
  1383. break;
  1384. case(9):
  1385. fprintf(stdout,"INFO: MODE 10: EQUALISE LEVELS, OR ACCENT, (SILENCE-SEPARATED) EVENTS.\n");
  1386. fprintf(stdout,"INFO: \n");
  1387. fprintf(stdout,"INFO: PARAMETERS ----------------------------------------------------\n");
  1388. fprintf(stdout,"INFO: \n");
  1389. fprintf(stdout,"INFO: MINIMUM INTER-EVENT SILENCE (mS) .... minimum duration of any silence\n");
  1390. fprintf(stdout,"INFO: between peak events.\n");
  1391. fprintf(stdout,"INFO: \n");
  1392. fprintf(stdout,"INFO: DEGREE OF LEVEL EQUALISATION .... Range from 0 to 1.\n");
  1393. fprintf(stdout,"INFO: 1 Boosts level of all events to that of loudest. 0 has no effect.\n");
  1394. fprintf(stdout,"INFO: \n");
  1395. fprintf(stdout,"INFO: ACCENT_GROUPING .... If set to ZERO, existing accentuation pattern retained,\n");
  1396. fprintf(stdout,"INFO: and quieter events are boosted by \"equalisation\".\n");
  1397. fprintf(stdout,"INFO: If set to (e.g.) 3, every 3rd events is accented,\n");
  1398. fprintf(stdout,"INFO: (others are set at \"equalisation\" level.\n");
  1399. fprintf(stdout,"INFO: \n");
  1400. fprintf(stdout,"INFO: PREGAIN .... Applied to output, only where accent-grouping > 0.\n");
  1401. fprintf(stdout,"INFO: \n");
  1402. break;
  1403. case(10):
  1404. fprintf(stdout,"INFO: MODE 11: REPORT DURATION OF SHORTEST (AND LONGEST) (SILENCE-SEPARATED) EVENT.\n");
  1405. fprintf(stdout,"INFO: \n");
  1406. fprintf(stdout,"INFO: PARAMETERS ----------------------------------------------------\n");
  1407. fprintf(stdout,"INFO: \n");
  1408. fprintf(stdout,"INFO: MINIMUM INTER-EVENT SILENCE (mS) .... minimum duration of any silence\n");
  1409. fprintf(stdout,"INFO: between peak events.\n");
  1410. fprintf(stdout,"INFO: \n");
  1411. break;
  1412. case(11):
  1413. fprintf(stdout,"INFO: MODE 12: LOCATE START OF SOUND (FIRST NON-ZERO SAMPLE) IN FILE.\n");
  1414. fprintf(stdout,"INFO: \n");
  1415. fprintf(stdout,"INFO: PARAMETERS ----------------------------------------------------\n");
  1416. fprintf(stdout,"INFO: \n");
  1417. fprintf(stdout,"INFO: OUTPUT TEXTFILE .... Data can be written to a new file, or to an existing file.\n");
  1418. fprintf(stdout,"INFO: The outputfile must have a '.txt' extension, or NO extension.\n");
  1419. fprintf(stdout,"INFO: \n");
  1420. fprintf(stdout,"INFO: The output data consists of the sound-start-time plus the name of the soundfile.\n");
  1421. fprintf(stdout,"INFO: The same file can be used for successive calls to this process:\n");
  1422. fprintf(stdout,"INFO: new data will be appended to the end of the file.\n");
  1423. fprintf(stdout,"INFO: Hence this process can be applied as a BULK PROCESS on a list of input files.\n");
  1424. fprintf(stdout,"INFO: \n");
  1425. break;
  1426. case(12):
  1427. fprintf(stdout,"INFO: MODE 13: MOVE ALL DATA IN FILE SO FILE PEAK FOUND MOVES TO SPECIFIED TIME.\n");
  1428. fprintf(stdout,"INFO: \n");
  1429. fprintf(stdout,"INFO: PARAMETERS ----------------------------------------------------\n");
  1430. fprintf(stdout,"INFO: \n");
  1431. fprintf(stdout,"INFO: NEW PEAK TIME ......... Time to which to move peak in file.\n");
  1432. fprintf(stdout,"INFO: \n");
  1433. break;
  1434. case(13):
  1435. fprintf(stdout,"INFO: MODE 14: MOVE ALL DATA IN FILE SO FILE EVENT SPECIFIED MOVES TO SPECIFIED TIME.\n");
  1436. fprintf(stdout,"INFO: \n");
  1437. fprintf(stdout,"INFO: PARAMETERS ----------------------------------------------------\n");
  1438. fprintf(stdout,"INFO: \n");
  1439. fprintf(stdout,"INFO: NEW PEAK TIME ......... Time to which to move peak in file.\n");
  1440. fprintf(stdout,"INFO: \n");
  1441. fprintf(stdout,"INFO: ORIGINAL PEAK TIME .... Time of existing peak in file.\n");
  1442. fprintf(stdout,"INFO: \n");
  1443. break;
  1444. }
  1445. break;
  1446. case(HOVER):
  1447. fprintf(stdout,"INFO: WANDER THROUGH FILE, ZIGZAG READING SOUND.\n");
  1448. fprintf(stdout,"INFO: \n");
  1449. fprintf(stdout,"INFO: PARAMETERS ----------------------------------------------------\n");
  1450. fprintf(stdout,"INFO: \n");
  1451. fprintf(stdout,"INFO: RATE OF HOVER (Hz) .... slow rate read lots of samples forwards, then backwards\n");
  1452. fprintf(stdout,"INFO: fast rate read fewer samples forwards, then backwards\n");
  1453. fprintf(stdout,"INFO: LOCATION OF HOVERING .. Time in input sound where samples are read.\n");
  1454. fprintf(stdout,"INFO: RANDOMISATION OF RATE (0-1)\n");
  1455. fprintf(stdout,"INFO: RANDOMISATION OF LOCATION (0-1)\n");
  1456. fprintf(stdout,"INFO: SPLICE LENGTH (mS) .... Must by less then 2 divided by max \"rate\" used\n");
  1457. fprintf(stdout,"INFO: OUTPUT DURATION ....... Total Duration of output file.\n");
  1458. fprintf(stdout,"INFO: \n");
  1459. break;
  1460. case(MULTIMIX):
  1461. fprintf(stdout,"INFO: GENERATE MULTI-CHANNEL MIXFILES FROM A LIST OF SOUNDFILES.\n");
  1462. fprintf(stdout,"INFO: \n");
  1463. fprintf(stdout,"INFO: MODES----------------------------------------------------------------\n");
  1464. fprintf(stdout,"INFO: \n");
  1465. fprintf(stdout,"INFO: (1) ALL FILES START AT TIME ZERO. OUTPUT CHANNEL COUNT IS MAX INPUT CHANNEL COUNT.\n");
  1466. fprintf(stdout,"INFO: (2) EACH FILE STARTS WHERE PREVIOUS FILE ENDS. OUT CHANNEL CNT IS MAX INPUT CHANNEL CNT.\n");
  1467. fprintf(stdout,"INFO: (3) EACH FILE STARTS AT A FIXED 'TIMESTEP' AFTER THE PREVIOUS ONE. OUT CHANNEL CNT IS MAX INPUT CHANNEL CNT.\n");
  1468. fprintf(stdout,"INFO: (4) STEREO (or mono) SOUND DISTRIBUTED TO NARROW AND WIDE STEREO PAIRS (4 of 8).\n");
  1469. fprintf(stdout,"INFO: (5) STEREO (or mono) SOUND DISTRIBUTED OVER AN 8-CHANNEL (PAIR-AT FRONT) SYSTEM.\n");
  1470. fprintf(stdout,"INFO: in modes 4 and 5, mono is treated as stereo with same signal in each channel.\n");
  1471. fprintf(stdout,"INFO: (6) N MONO SOUNDS SENT, IN ORDER, TO N SEPARATE OUTPUT CHANNELS.\n");
  1472. fprintf(stdout,"INFO: (7) MONO SOUNDS SENT, IN ORDER, TO SEPARATE OUTPUT CHANNELS.\n");
  1473. fprintf(stdout,"INFO: wrapping back to initial position, if more input files than output channels.\n");
  1474. fprintf(stdout,"INFO: (8) ALL FILES START AT TIME ZERO. OUTPUT CHANNEL COUNT SPECIFIED BY PARAMETER.\n");
  1475. fprintf(stdout,"INFO: \n");
  1476. fprintf(stdout,"INFO: PARAMETERS ----------------------------------------------------\n");
  1477. fprintf(stdout,"INFO: \n");
  1478. fprintf(stdout,"INFO: TIME STEP BETWEEN ENTRIES ..... (Mode 3).\n");
  1479. fprintf(stdout,"INFO: RELATIVE LEVEL OF OUTER PAIR .. (Mode 4) Assuming inner pair is at level 1, this is outer pair level.\n");
  1480. fprintf(stdout,"INFO: All levels are adjusted to avoid distortion.\n");
  1481. fprintf(stdout,"INFO: FRONT PAIR LEVEL ........ (Mode 5) Level of stereo signal on front pair of loudspeakers.\n");
  1482. fprintf(stdout,"INFO: FRONT WIDE PAIR LEVEL ... (Mode 5) Level of stereo signal on front pair of loudspeakers.\n");
  1483. fprintf(stdout,"INFO: REAR WIDE PAIR LEVEL .... (Mode 5) Level of stereo signal on front pair of loudspeakers.\n");
  1484. fprintf(stdout,"INFO: REAR PAIR LEVEL ......... (Mode 5) Level of stereo signal on front pair of loudspeakers.\n");
  1485. fprintf(stdout,"INFO: \n");
  1486. fprintf(stdout,"INFO: MODE 7:\n");
  1487. fprintf(stdout,"INFO: \n");
  1488. fprintf(stdout,"INFO: OUTPUT CHANNEL COUNT .....No of channels in output file.\n");
  1489. fprintf(stdout,"INFO: START CHANNEL ........... Output channel to which first input file is sent.\n");
  1490. fprintf(stdout,"INFO: CHANNEL SKIP ............ Step between output-channel assignment.\n");
  1491. fprintf(stdout,"INFO: SKIP 1 assign to successive channels.\n");
  1492. fprintf(stdout,"INFO: SKIP 2 assign to alternate channels.\n");
  1493. fprintf(stdout,"INFO: SKIP -1 assign to successive channels, counting downwards.\n");
  1494. fprintf(stdout,"INFO: TIMESTEP ................ Timestep between successive entries in mixfile.\n");
  1495. break;
  1496. case(FRAME):
  1497. switch(mode) {
  1498. case(0):
  1499. fprintf(stdout,"INFO: MODE 1: ROTATE ENTIRE SPATIAL FRAME OF A MULTICHANNEL SOUNDFILE.\n");
  1500. fprintf(stdout,"INFO: \n");
  1501. fprintf(stdout,"INFO: PARAMETERS ----------------------------------------------------\n");
  1502. fprintf(stdout,"INFO: \n");
  1503. fprintf(stdout,"INFO: SNAKING SEQUENCE ...... \n");
  1504. fprintf(stdout,"INFO: In a clockwise frame rotation, an input channel proceeds on a path around all the lspkrs,\n");
  1505. fprintf(stdout,"INFO: e.g. in an 8-chan file, input-chan 1 follows the path 1- 2->3->4->5->6->7->8->1 etc\n");
  1506. fprintf(stdout,"INFO: and the other input channels follow it in a \"snake\".\n");
  1507. fprintf(stdout,"INFO: This ROTATION-snake is the DEFAULT motion, and you should enter\n");
  1508. fprintf(stdout,"INFO: a ZERO for the snaking sequence, to generate a rotation.\n");
  1509. fprintf(stdout,"INFO: \n");
  1510. fprintf(stdout,"INFO: However, the channels might snake around the lspkrs on a different route\n");
  1511. fprintf(stdout,"INFO: e.g. (for an 8-channel file) \"1 3 5 4 6 8 7 2\"\n");
  1512. fprintf(stdout,"INFO: and these routes could vary over time.\n");
  1513. fprintf(stdout,"INFO: You can specify such alternative routes in a text datafile of \"time : route\" values\n");
  1514. fprintf(stdout,"INFO: A line in the datafile for the above route, starting at time zero, would be\n");
  1515. fprintf(stdout,"INFO: \"0.0 1 3 5 4 6 8 7 2\"\n");
  1516. fprintf(stdout,"INFO: A changed route could be specified at a later time, on the next line\n");
  1517. fprintf(stdout,"INFO: e.g. \"1.3327 1 4 6 3 8 5 7 2\"\n");
  1518. fprintf(stdout,"INFO: In the datafile, the first time used must be zero, and times must increase.\n");
  1519. fprintf(stdout,"INFO: \n");
  1520. fprintf(stdout,"INFO: ROTATION SPEED ........\n");
  1521. fprintf(stdout,"INFO: The speed of frame-rotation, in complete-rotations per second. This can vary over time.\n");
  1522. fprintf(stdout,"INFO: Positive values give clockwise rotation; negative values, anticlockwise.\n");
  1523. fprintf(stdout,"INFO: \n");
  1524. fprintf(stdout,"INFO: SMEAR ........\n");
  1525. fprintf(stdout,"INFO: Extent to which signal in any OUTPUT channel bleeds onto its 2 adjacent channels.\n");
  1526. fprintf(stdout,"INFO: \n");
  1527. break;
  1528. case(1):
  1529. fprintf(stdout,"INFO: MODE 2: ROTATE ENTIRE SPATIAL FRAME OF SOUNDFILE, ROTATING ODD AND EVEN CHANNELS INDEPENDENTLY.\n");
  1530. fprintf(stdout,"INFO: \n");
  1531. fprintf(stdout,"INFO: PARAMETERS ----------------------------------------------------\n");
  1532. fprintf(stdout,"INFO: \n");
  1533. fprintf(stdout,"INFO: SNAKING SEQUENCE ...... \n");
  1534. fprintf(stdout,"INFO: In a clockwise frame rotation here,\n");
  1535. fprintf(stdout,"INFO: an ODD input channel proceeds on a path around all ODD outchannels,\n");
  1536. fprintf(stdout,"INFO: e.g. in an 8-chan file, input-chan 1 follows the path 1->3->5->7->1 etc\n");
  1537. fprintf(stdout,"INFO: and the other ODD input channels follow it in a \"snake\" around the ODD outchannels,\n");
  1538. fprintf(stdout,"INFO: while an EVEN input channel proceeds on a path around all EVEN outchannels,\n");
  1539. fprintf(stdout,"INFO: e.g. in an 8-chan file, input-chan 2 follows the path 2->4->6->8->2 etc\n");
  1540. fprintf(stdout,"INFO: and the other EVEN input channels follow it in a \"snake\" around the EVEN outchannels.\n");
  1541. fprintf(stdout,"INFO: This ROTATION-snake is the DEFAULT motion, and you should enter\n");
  1542. fprintf(stdout,"INFO: a ZERO for the snaking sequence, to generate a double rotation.\n");
  1543. fprintf(stdout,"INFO: \n");
  1544. fprintf(stdout,"INFO: but you can redefine the snaking sequences with a datafile\n");
  1545. fprintf(stdout,"INFO: e.g. the snake \"8 6 5 2 7 3 4 1\" produces one snake around the odd entries\n");
  1546. fprintf(stdout,"INFO: i.e. 8 -> 5 -> 7 -> 4 -> 8 etc\n");
  1547. fprintf(stdout,"INFO: and a 2nd snake around the even entries\n");
  1548. fprintf(stdout,"INFO: i.e. 6 -> 2 -> 3 -> 1 -> 6 etc\n");
  1549. fprintf(stdout,"INFO: \n");
  1550. fprintf(stdout,"INFO: 1ST ROTATION SPEED ........\n");
  1551. fprintf(stdout,"INFO: The speed of frame-rotation for the ODD input channels, in complete-rotations per second. This can vary over time.\n");
  1552. fprintf(stdout,"INFO: Positive values give clockwise rotation; negative values, anticlockwise.\n");
  1553. fprintf(stdout,"INFO: \n");
  1554. fprintf(stdout,"INFO: 2ND ROTATION SPEED ........\n");
  1555. fprintf(stdout,"INFO: The speed of frame-rotation for the EVEN input channels, in complete-rotations per second. This can vary over time.\n");
  1556. fprintf(stdout,"INFO: Positive values give clockwise rotation; negative values, anticlockwise.\n");
  1557. fprintf(stdout,"INFO: \n");
  1558. fprintf(stdout,"INFO: SMEAR ........\n");
  1559. fprintf(stdout,"INFO: Extent to which signal in any OUTPUT channel bleeds onto its 2 adjacent channels.\n");
  1560. fprintf(stdout,"INFO: \n");
  1561. break;
  1562. case(2):
  1563. fprintf(stdout,"INFO: MODE 3: REORIENTATE THE CHANNELS OF THE INPUT FILE TO (FIXED) NEW POSITIONS.\n");
  1564. fprintf(stdout,"INFO: \n");
  1565. fprintf(stdout,"INFO: PARAMETERS ----------------------------------------------------\n");
  1566. fprintf(stdout,"INFO: \n");
  1567. fprintf(stdout,"INFO: REORIENTATION ..... a list of ALL the output channels, in some order.\n");
  1568. fprintf(stdout,"INFO: Each successive input channel will be sent to the next output channel in the list.\n");
  1569. fprintf(stdout,"INFO: \n");
  1570. fprintf(stdout,"INFO: For example, the list \"2 4 6 8 1 3 5 7\" will cause the input channels to be routed\n");
  1571. fprintf(stdout,"INFO: 1 to 2 : 2 to 4 : 3 to 6 : 4 to 8 : 5 to 1 : 6 to 3 : 7 to 5 : 8 to 7\n");
  1572. fprintf(stdout,"INFO: \n");
  1573. break;
  1574. case(3):
  1575. fprintf(stdout,"INFO: MODE 4: MIRROR the FRAME OF THE INPUT FILE ABOUT A SPECIFIED AXIS.\n");
  1576. fprintf(stdout,"INFO: \n");
  1577. fprintf(stdout,"INFO: PARAMETERS ----------------------------------------------------\n");
  1578. fprintf(stdout,"INFO: \n");
  1579. fprintf(stdout,"INFO: MIRROR PLANE .... Channel number, or Channel-number + 0.5.\n");
  1580. fprintf(stdout,"INFO: The output channels are symmetrically mirrored about the channel given \n");
  1581. fprintf(stdout,"INFO: or around the midpoint between channels (1.5 is midpoint between 1 and 2).\n");
  1582. fprintf(stdout,"INFO: With an N-channel file, N.5 is midpoint between channels N and 1.\n");
  1583. fprintf(stdout,"INFO: \n");
  1584. break;
  1585. case(4):
  1586. fprintf(stdout,"INFO: MODE 5: RENUMBER the OUTPUT CHANNELS, FROM A RING TO A BILATERAL SCHEMA (OR VICE VERSA).\n");
  1587. fprintf(stdout,"INFO: \n");
  1588. fprintf(stdout,"INFO: PARAMETERS ----------------------------------------------------\n");
  1589. fprintf(stdout,"INFO: \n");
  1590. fprintf(stdout,"INFO: TO RING FORMAT ....\n");
  1591. fprintf(stdout,"INFO: WITHOUT this flag, converts from ring schema to bilateral schema.\n");
  1592. fprintf(stdout,"INFO: WITH this flag, converts from bilateral schema to ring schema.\n");;
  1593. fprintf(stdout,"INFO: Ring Bilateral Ring Bilateral\n");
  1594. fprintf(stdout,"INFO: 1 1 1 1\n");
  1595. fprintf(stdout,"INFO: 8 2 2 3 5 2 2 3\n");
  1596. fprintf(stdout,"INFO: 7 3 4 5 4 3 4 5\n");
  1597. fprintf(stdout,"INFO: 6 4 6 7\n");
  1598. fprintf(stdout,"INFO: 5 8\n");
  1599. fprintf(stdout,"INFO: All multichannel processes assume RING format. If using a bilateral numbering schema\n");
  1600. fprintf(stdout,"INFO: convert from and to Bilateral format, before and after processing data.\n");
  1601. fprintf(stdout,"INFO: \n");
  1602. break;
  1603. case(5):
  1604. fprintf(stdout,"INFO: MODE 6: SWAP ANY 2 CHANNEL OF A MLTICHANNEL FILE.\n");
  1605. fprintf(stdout,"INFO: \n");
  1606. fprintf(stdout,"INFO: PARAMETERS ----------------------------------------------------\n");
  1607. fprintf(stdout,"INFO: \n");
  1608. fprintf(stdout,"INFO: CHANNEL TO SWAP .... The channel to exchange.\n");
  1609. fprintf(stdout,"INFO: CHANNEL TO SWAP WITH .... The channel to exchange it with.\n");
  1610. fprintf(stdout,"INFO: \n");
  1611. break;
  1612. case(6):
  1613. fprintf(stdout,"INFO: MODE 7: ADJUST LEVEL IN (OR ENVELOPE) ONLY SPECIFIED CHANNELS OF A MULTICHANNEL FILE.\n");
  1614. fprintf(stdout,"INFO: \n");
  1615. fprintf(stdout,"INFO: PARAMETERS ----------------------------------------------------\n");
  1616. fprintf(stdout,"INFO: \n");
  1617. fprintf(stdout,"INFO: CHANNELS TO MODIFY ....... Either a channel number, or a text file list of channel numbers.\n");
  1618. fprintf(stdout,"INFO: Only these channels are modified by the process.\n");
  1619. fprintf(stdout,"INFO: GAIN OR ENVELOPE ....... The gain, or the time-varying gain in the envelope file\n");
  1620. fprintf(stdout,"INFO: to apply to the specified channels.\n");
  1621. fprintf(stdout,"INFO: \n");
  1622. break;
  1623. case(7):
  1624. fprintf(stdout,"INFO: MODE 8: RENUMBER the OUTPUT CHANNELS, FROM A RING TO BEAST BILATERAL SCHEMA (OR VICE VERSA).\n");
  1625. fprintf(stdout,"INFO: \n");
  1626. fprintf(stdout,"INFO: PARAMETERS ----------------------------------------------------\n");
  1627. fprintf(stdout,"INFO: \n");
  1628. fprintf(stdout,"INFO: TO RING FORMAT ....\n");
  1629. fprintf(stdout,"INFO: WITHOUT this flag, converts from ring schema to BEAST bilateral schema.\n");
  1630. fprintf(stdout,"INFO: WITH this flag, converts from BEAST bilateral schema to ring schema.\n");;
  1631. fprintf(stdout,"INFO: Ring Bilateral Ring Bilateral\n");
  1632. fprintf(stdout,"INFO: 1 7 1 5\n");
  1633. fprintf(stdout,"INFO: 8 2 1 2 5 2 1 2\n");
  1634. fprintf(stdout,"INFO: 7 3 3 4 4 3 3 4\n");
  1635. fprintf(stdout,"INFO: 6 4 5 6\n");
  1636. fprintf(stdout,"INFO: 5 8\n");
  1637. fprintf(stdout,"INFO: All multichannel processes assume RING format. If using a bilateral numbering schema\n");
  1638. fprintf(stdout,"INFO: convert from and to Bilateral format, before and after processing data.\n");
  1639. fprintf(stdout,"INFO: \n");
  1640. fprintf(stdout,"INFO: \"BEAST\" = Birmingham Electro-Acoustic Sound Theatre sound-diffusion system.\n");
  1641. break;
  1642. }
  1643. break;
  1644. case(SEARCH):
  1645. fprintf(stdout,"INFO: FIND THE FIRST REAL SIGNAL IN FILE(S) WHICH START(S) WITH SILENCE.\n");
  1646. fprintf(stdout,"INFO: \n");
  1647. break;
  1648. case(MCHANREV):
  1649. fprintf(stdout,"INFO: CREATE MULTICHANNEL ECHO OR REVERBERATION AROUND A SOUND.\n");
  1650. fprintf(stdout,"INFO: \n");
  1651. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------\n");
  1652. fprintf(stdout,"INFO: \n");
  1653. fprintf(stdout,"INFO: INPUT GAIN................Attenuates signal input to stadium.\n");
  1654. fprintf(stdout,"INFO: \n");
  1655. fprintf(stdout,"INFO: LEVEL LOSS WITH DISTANCE..across stadium.\n");
  1656. fprintf(stdout,"INFO: \n");
  1657. fprintf(stdout,"INFO: STADIUM SIZE MULTIPLIER...Multiplies average time between echoes.\n");
  1658. fprintf(stdout,"INFO: ..........................(Default average echo time = 0.1 secs).\n");
  1659. fprintf(stdout,"INFO: \n");
  1660. fprintf(stdout,"INFO: NUMBER OF ECHOS...........Number of stadium echoes produced.\n");
  1661. fprintf(stdout,"INFO: \n");
  1662. fprintf(stdout,"INFO: NUMBER OF OUTPUT CHANNELS....Number of channels in output sound.\n");
  1663. fprintf(stdout,"INFO: \n");
  1664. fprintf(stdout,"INFO: CENTRE OF SOUND IMAGE........Centre of sound image amongst output channels.\n");
  1665. fprintf(stdout,"INFO: Values from 0, to the total number of output channels.\n");
  1666. fprintf(stdout,"INFO: Values can be fractional. Values below 1, lie between Channel N and channel 1.\n");
  1667. fprintf(stdout,"INFO: \n");
  1668. fprintf(stdout,"INFO: SPREAD_OF_ECHOS/REVERB.......Spread of echoes/reverb across output channels.\n");
  1669. fprintf(stdout,"INFO: values from 2, to the total number of output channels.\n");
  1670. fprintf(stdout,"INFO: \n");
  1671. break;
  1672. case(WRAPPAGE):
  1673. fprintf(stdout,"INFO: GRANULAR RECONSTITUTION OF ONE OR MORE SOUNDFILES, MOVING AROUND A MULTICHANNEL SPACE.\n");
  1674. fprintf(stdout,"INFO: \n");
  1675. fprintf(stdout,"INFO: CENTRE OF SPREAD ............ Channel from which sound radiates.Any number between 0 & last output channel.\n");
  1676. fprintf(stdout,"INFO: Values less than 1, represent locations between the last outchan and the 1st.\n");
  1677. fprintf(stdout,"INFO: The centre can be moved by supplying a datafile of triples: \"Time Centre Direction\"\n");
  1678. fprintf(stdout,"INFO: Direction, either 1 (clockwise) or -1 (anticlockwise), is direction of motion from PREVIOUS value.\n");
  1679. fprintf(stdout,"INFO: OUTPUT CHANNELS ............. Number of channels of MULTICHANNEL OUTPUT (>2).\n");
  1680. fprintf(stdout,"INFO: CHANNEL SPREAD ............... Total Number of channels over which sound image extends.\n");
  1681. fprintf(stdout,"INFO: DEPTH OF SPREAD FRONT ..... Number of channels (on each side) activated behind spreading front.\n");
  1682. fprintf(stdout,"INFO: TIMESHRINK...... ................Speed of advance in infiles, relative to outfile. (>=0)\n");
  1683. fprintf(stdout,"INFO: Inverse of timestretch, (& permits infinite timestretch).\n");
  1684. fprintf(stdout,"INFO: DENSITY...........................Amount of grain overlap (>0 : <1 leaves intergrain silence)\n");
  1685. fprintf(stdout,"INFO: Extremely small values will cease to perform predictably.\n");
  1686. fprintf(stdout,"INFO: GRAINSIZE........................grainsize in MS (must be > 2 * splicelen)\n");
  1687. fprintf(stdout,"INFO: PITCHSHIFT.......... ............is pitchshift of grains in +|- (fractions of) semitones.\n");
  1688. fprintf(stdout,"INFO: LOUDNESS RANGE................is range of gain on grains.\n");
  1689. fprintf(stdout,"INFO: Use only if amp is to vary (over range &/or through time)\n");
  1690. fprintf(stdout,"INFO: STARTSPLICE.....................length of startsplices on grains,in MS.\n");
  1691. fprintf(stdout,"INFO: ENDSPLICE........................length of endsplices on grains,in MS.\n");
  1692. fprintf(stdout,"INFO: SEARCHRANGE...................for nextgrain, before current 'now' in infile (Default 0 MS).\n");
  1693. fprintf(stdout,"INFO: SCATTER..........................Randomisation of grain position (Range 0-1).\n");
  1694. fprintf(stdout,"INFO: OUTPUT LENGTH.................max outfile length (if end of data not reached).\n");
  1695. fprintf(stdout,"INFO: Set to zero (Default) for this parameter to be ignored.\n");
  1696. fprintf(stdout,"INFO: BUT if TIMESHRINK is ANYWHERE 0: OUTLENGTH must be given.\n");
  1697. fprintf(stdout,"INFO: EXPONENTIAL SPLICES.........Default, Linear.\n");
  1698. fprintf(stdout,"INFO: RELATIVE TO OUTPUT TIME..Timeshrink parameters are ALWAYS read relative to time in INPUT file.\n");
  1699. fprintf(stdout,"INFO: All other parameters are normally also read relative to time in input file.\n");
  1700. fprintf(stdout,"INFO: Set this flag to force those parameters to be read relative to time in OUTPUT file.\n");
  1701. fprintf(stdout,"INFO: TIMESHRINK LIMIT,DENSITY LIMIT ETC.......allow range of values to be specified\n");
  1702. fprintf(stdout,"INFO: for any of these params. e.g. With Density & Density Limit set\n");
  1703. fprintf(stdout,"INFO: a random density is generated between these values,\n");
  1704. fprintf(stdout,"INFO: while Density & Density Limit can THEMSELVES vary through time.\n");
  1705. fprintf(stdout,"INFO: \n");
  1706. break;
  1707. case(MCHSTEREO):
  1708. fprintf(stdout,"INFO: INSERT STEREO FILES INTO A MULTICHANNEL OUTPUT SPACE.\n");
  1709. fprintf(stdout,"INFO: \n");
  1710. fprintf(stdout,"INFO: This process allows, for example, stereo outputs from processing the individual channels\n");
  1711. fprintf(stdout,"INFO: of a multichannel file (e.g. reverberation) to be remixed into the multichannel context,\n");
  1712. fprintf(stdout,"INFO: at the sample location as their original mono sources.\n");
  1713. fprintf(stdout,"INFO: \n");
  1714. fprintf(stdout,"INFO: PREGAIN.......gain applied to stereo inputs before they are mixed to the output.\n");
  1715. fprintf(stdout,"INFO: \n");
  1716. fprintf(stdout,"INFO: OUT CHANNEL ON WHICH STEREO INPUT CENTRED.......either a channel number,\n");
  1717. fprintf(stdout,"INFO: or a textfile of channel numbers, one for each stereo inputfile.\n");
  1718. fprintf(stdout,"INFO: Each stereo input image will be centred (in turn) at the output positions given,\n");
  1719. fprintf(stdout,"INFO: BUT ...\n");
  1720. fprintf(stdout,"INFO: CENTRE BETWEEN OUTCHANS .... if this flag is set, the output stereo-images are centred\n");
  1721. fprintf(stdout,"INFO: to the right of the specified output centre, between the 2 output channels.\n");
  1722. fprintf(stdout,"INFO: e.g. Stereo signal sent to output 2, will be centred between output channels 2 & 3.\n");
  1723. break;
  1724. case(MTON):
  1725. fprintf(stdout,"INFO: CONVERT MONO SOURCE TO MULTICHANNEL SOUND, WITH IDENTICAL DATA IN EVERY CHANNEL.\n");
  1726. fprintf(stdout,"INFO: \n");
  1727. fprintf(stdout,"INFO: OUTPUT CHANNEL COUNT.......Number of (identical) channels in the output file.\n");
  1728. break;
  1729. case(FLUTTER):
  1730. fprintf(stdout,"INFO: IMPOSE MULTICHANNEL-DISPERSED LOUDNESS FLUTTERING ON A MULTICHANNEL FILE.\n");
  1731. fprintf(stdout,"INFO: \n");
  1732. fprintf(stdout,"INFO: CHANNEL SET SEQUENCE ..... The change in loudness occurs first in one set of output channels,\n");
  1733. fprintf(stdout,"INFO: then in another, as the fluttering proceeds.\n");
  1734. fprintf(stdout,"INFO: Each line contains a list of 1 or more of the output channels\n");
  1735. fprintf(stdout,"INFO: forming a 'channel set' which will flutter.\n");
  1736. fprintf(stdout,"INFO: The flutter passes from the channels in one set, to the channels in the next,\n");
  1737. fprintf(stdout,"INFO: on every pulse of the fluttering. When all the defined channels sets are used up,\n");
  1738. fprintf(stdout,"INFO: The sequence begins again at the start (BUT see the 'randomisation' flag, below),\n");
  1739. fprintf(stdout,"INFO: \n");
  1740. fprintf(stdout,"INFO: FLUTTER FREQUENCY (Hz) ...Frequency of loudness fluctuations. May vary over time.\n");
  1741. fprintf(stdout,"INFO: FLUTTER DEPTH ................... Depth of loudness fluctuations. May vary over time.\n");
  1742. fprintf(stdout,"INFO: Depth between 0 and 1 determines the trough level of the flutter cycle.\n");
  1743. fprintf(stdout,"INFO: Depth above 1, makes flutter peaks narrower (troughing still at zero).\n");
  1744. fprintf(stdout,"INFO: GAIN ...................................... Overall gain on the output.\n");
  1745. fprintf(stdout,"INFO: \n");
  1746. fprintf(stdout,"INFO: RANDOMISE CHANNEL-SETS ORDER .... With this flag set, once all channel-sets have been used\n");
  1747. fprintf(stdout,"INFO: they are randomly permuted into a different order before the next flutter,\n");
  1748. fprintf(stdout,"INFO: and when all sets, in this new order, have been used, they are permuted again\n");
  1749. fprintf(stdout,"INFO: and so on. (The sets themselves are not changed by this process).\n");
  1750. fprintf(stdout,"INFO: \n");
  1751. break;
  1752. case(ABFPAN):
  1753. fprintf(stdout,"INFO: APPLY FIXED OR ORBITING 1st ORDER B_FORMAT PAN TO A MONO INPUT.\n");
  1754. fprintf(stdout,"INFO: \n");
  1755. fprintf(stdout,"INFO: START POSITION ..... 0 is front centre, with values increasing clockwise\n");
  1756. fprintf(stdout,"INFO: until we reach centre again at 1.\n");
  1757. fprintf(stdout,"INFO: \n");
  1758. fprintf(stdout,"INFO: END POSITION ....... \"N.M\" means \"N\" complete orbits, finishing at position \"M\".\n");
  1759. fprintf(stdout,"INFO: positive values give clockwise orbits, negative values anticlockwise orbits.\n");
  1760. fprintf(stdout,"INFO: \n");
  1761. fprintf(stdout,"INFO: NUMBER OF B FORMAT OUTPUT CHANNELS .... Either 3 or (default) 4.\n");
  1762. fprintf(stdout,"INFO: \n");
  1763. fprintf(stdout,"INFO: OUTPUT AS STANDARD WAV: AMBISONIC.\n");
  1764. fprintf(stdout,"INFO: OUTPUT AS STANDARD WAV ........ (NB You cannot set both of these flags)\n");
  1765. fprintf(stdout,"INFO: The default output is a WAVEX B-FORMAT Ambisonic File.\n");
  1766. fprintf(stdout,"INFO: \n");
  1767. break;
  1768. case(ABFPAN2):
  1769. fprintf(stdout,"INFO: APPLY FIXED OR ORBITING 2nd ORDER B_FORMAT PAN TO A MONO INPUT.\n");
  1770. fprintf(stdout,"INFO: \n");
  1771. fprintf(stdout,"INFO: START POSITION ..... 0 is front centre, with values increasing clockwise\n");
  1772. fprintf(stdout,"INFO: until we reach centre again at 1.\n");
  1773. fprintf(stdout,"INFO: \n");
  1774. fprintf(stdout,"INFO: END POSITION ....... \"N.M\" means \"N\" complete orbits, finishing at position \"M\".\n");
  1775. fprintf(stdout,"INFO: positive values give clockwise orbits, negative values anticlockwise orbits.\n");
  1776. fprintf(stdout,"INFO: \n");
  1777. fprintf(stdout,"INFO: PREGAIN .... ... Change the input file amplitude.\n");
  1778. fprintf(stdout,"INFO: \n");
  1779. fprintf(stdout,"INFO: STANDARD WAV (AMBISONIC) OUTPUT ...... default is WAVEX B-FORMAT.\n");
  1780. fprintf(stdout,"INFO: \n");
  1781. break;
  1782. case(ABFPAN2P):
  1783. fprintf(stdout,"INFO: APPLY FIXED OR ORBITING 2nd ORDER B_FORMAT PAN TO A MONO INPUT, IN 3-DIMENSIONS.\n");
  1784. fprintf(stdout,"INFO: \n");
  1785. fprintf(stdout,"INFO: START POSITION ..... 0 is front centre, with values increasing clockwise\n");
  1786. fprintf(stdout,"INFO: until we reach centre again at 1.\n");
  1787. fprintf(stdout,"INFO: \n");
  1788. fprintf(stdout,"INFO: END POSITION ....... \"N.M\" means \"N\" complete orbits, finishing at position \"M\".\n");
  1789. fprintf(stdout,"INFO: positive values give clockwise orbits, negative values anticlockwise orbits.\n");
  1790. fprintf(stdout,"INFO: \n");
  1791. fprintf(stdout,"INFO: PREGAIN .... ... Change the input file amplitude.\n");
  1792. fprintf(stdout,"INFO: \n");
  1793. fprintf(stdout,"INFO: HEIGHT.......... 90 is directly above, -90 directly below.\n");
  1794. fprintf(stdout,"INFO: \n");
  1795. fprintf(stdout,"INFO: STANDARD WAV (AMBISONIC) OUTPUT ...... default is WAVEX B-FORMAT.\n");
  1796. fprintf(stdout,"INFO: \n");
  1797. break;
  1798. case(CHANNELX):
  1799. fprintf(stdout,"INFO: EXTRACT CHANNELS FROM A MULTICHANNEL FILE OF ANY FORMAT.\n");
  1800. fprintf(stdout,"INFO: \n");
  1801. fprintf(stdout,"INFO: INPUT CHANNELS TO EXTRACT.......... Textfile with a list of input channels to extract.\n");
  1802. fprintf(stdout,"INFO: \n");
  1803. break;
  1804. case(CHORDER):
  1805. fprintf(stdout,"INFO: REORDER CHANNELS INSIDE A MULTICHANNEL FILE OF ANY FORMAT.\n");
  1806. fprintf(stdout,"INFO: \n");
  1807. fprintf(stdout,"INFO: REORDERING STRING.......... String consisting of (lower-case) letters, with or without zeros.\n");
  1808. fprintf(stdout,"INFO: The string cannot contain more than 26 items.\n");
  1809. fprintf(stdout,"INFO: For example, for a 4-channel input file, the channels are represented by \"a\",\"b\",\"c\" and \"d\".\n");
  1810. fprintf(stdout,"INFO: \"0\" represents a (possible) silent output channel.\n");
  1811. fprintf(stdout,"INFO: Ordering strings for this 4-channel file could be.....\n");
  1812. fprintf(stdout,"INFO: \"abcd\" same order as the input (input file not altered).\n");
  1813. fprintf(stdout,"INFO: \"dcba\" reversed channel-order of the input.\n");
  1814. fprintf(stdout,"INFO: \"a00b\" input channel 1 to out-channel 1, input channel 2 to out-channel 4, with 2 silent channels.\n");
  1815. fprintf(stdout,"INFO: \"aababc00ddd\" etc (note that channels can be duplicated in the output).\n");
  1816. fprintf(stdout,"INFO: \n");
  1817. fprintf(stdout,"INFO: For an 8-channel input file, channels are represented by \"a\",\"b\",\"c\",\"d\",\"e\",\"f\",\"g\" and \"h\".\n");
  1818. fprintf(stdout,"INFO: and so on.\n");
  1819. fprintf(stdout,"INFO: \n");
  1820. fprintf(stdout,"INFO: FORCE A .amb FILENAME EXTENSION (CARE!!)\n");
  1821. fprintf(stdout,"INFO: specifying a \".amb\" file extension does NOT automatically produce an ambisonic output file.\n");
  1822. fprintf(stdout,"INFO: This can only be guaranteed by the internal structure of the data.\n");
  1823. fprintf(stdout,"INFO: Forcing a \".amb\" extension onto non-ambisonic data may cause confusion at a later data!\n");
  1824. fprintf(stdout,"INFO: \n");
  1825. fprintf(stdout,"INFO: This program permits low level manipulation of the data format of files.\n");
  1826. fprintf(stdout,"INFO: With ambisonic or other non-trivial data structures, it should be used WITH CAUTION!!\n");
  1827. fprintf(stdout,"INFO: \n");
  1828. fprintf(stdout,"INFO: \n");
  1829. break;
  1830. case(FMDCODE):
  1831. fprintf(stdout,"INFO: PLAIN MULTI-LAYOUT DECODER FOR AMBISONIC FILES.\n");
  1832. fprintf(stdout,"INFO: (No shelf filter or NF compensation used).\n");
  1833. fprintf(stdout,"INFO: \n");
  1834. fprintf(stdout,"INFO: OUTPUT LAYOUT.......... This can take one of the following values.\n");
  1835. fprintf(stdout,"INFO: 1 : * Mono (= W signal only).\n");
  1836. fprintf(stdout,"INFO: 2 : * Stereo (quasi mid/side, = W +- Y) \n");
  1837. fprintf(stdout,"INFO: 3 : Square (FL FR RR RL order)\n");
  1838. fprintf(stdout,"INFO: 4 : * Quad (FL FR RL RR order)\n");
  1839. fprintf(stdout,"INFO: 5 : Pentagon \n");
  1840. fprintf(stdout,"INFO: 6 : * 5.0 (WAVEX order)\n");
  1841. fprintf(stdout,"INFO: 7 : * 5.1 (WAVEX order : silent LFE)\n");
  1842. fprintf(stdout,"INFO: 8 : hexagon \n");
  1843. fprintf(stdout,"INFO: 9 : octagon 1 (pair at front)\n");
  1844. fprintf(stdout,"INFO: 10 : octagon 2 (single lspkr at front centre)\n");
  1845. fprintf(stdout,"INFO: 11 : cube (as 3 : low/high interleaved)\n");
  1846. fprintf(stdout,"INFO: 12 : * cube (as 4 : low quad followed by high quad)\n");
  1847. fprintf(stdout,"INFO: \n");
  1848. fprintf(stdout,"INFO: WRITE WAVEX LSPKR POSITIONS TO HEADER ....... NB only applies to \"*\" layouts above.\n");
  1849. fprintf(stdout,"INFO: PLAIN WAV OUTFILE FORMAT ...... Default is generic wavex format.\n");
  1850. fprintf(stdout,"INFO: \n");
  1851. break;
  1852. case(CHXFORMAT):
  1853. fprintf(stdout,"INFO: SET OR CHANGE THE LOUDSPEAKER POSITION MASK IN A WAVEX FILE.\n");
  1854. fprintf(stdout,"INFO: \n");
  1855. fprintf(stdout,"INFO: \nLSPKR_POSITION_MASK ....... Indicates the loudspeaker positions for sound output.");
  1856. fprintf(stdout,"INFO: 0 : Unsets the loudspeaker mask.\n");
  1857. fprintf(stdout,"INFO: \n");
  1858. break;
  1859. case(CHXFORMATG):
  1860. fprintf(stdout,"INFO: CHANGE GUID TYPE FROM WAVEX TO AMBISONIC, UNSETTING THE LSPKR POSITION MASK.\n");
  1861. fprintf(stdout,"INFO: \n");
  1862. break;
  1863. case(CHXFORMATM):
  1864. fprintf(stdout,"INFO: SET THE POSSIBLE LOUDSPEAKER POSITION MASK VALUES FOR A WAVEX FILE.\n");
  1865. fprintf(stdout,"INFO: \n");
  1866. break;
  1867. case(INTERLX):
  1868. fprintf(stdout,"INFO: INTERELAVE LIST OF MONO OR STEREO SOUNDS (IN A TEXTFILE) TO A MULTICHANNEL OUTPUT.\n");
  1869. fprintf(stdout,"INFO: \n");
  1870. fprintf(stdout,"INFO: OUTPUT CHANNEL FORMAT ....... Indicates the output soundfile format.\n");
  1871. fprintf(stdout,"INFO: \n");
  1872. fprintf(stdout,"INFO: 0 : Standard (wav, aiff etc.) format.\n");
  1873. fprintf(stdout,"INFO: 1 : generic WAV_EX (no loudspeaker assignments).\n");
  1874. fprintf(stdout,"INFO: 2 : WAV_EX mono/stereo/quad (FL FR RL RR). 1,2 or 4 input channels needed.\n");
  1875. fprintf(stdout,"INFO: 3 : WAV_EX quad surround (L, C, R, S). Four input channels needed.\n");
  1876. fprintf(stdout,"INFO: 4 : WAV_EX 5.1 format surround. Six input channels needed.\n");
  1877. fprintf(stdout,"INFO: 5 : WAV_EX Ambisonic B-Format (W,X,Y,Z....). 3,4,5,6,7,8,9,11 or 16 input chans needed.\n");
  1878. fprintf(stdout,"INFO: 6 : WAV_EX 5.0 surround. Five input channels needed.\n");
  1879. fprintf(stdout,"INFO: 7 : WAV_EX 7.1 surround. Eight input channels needed.\n");
  1880. fprintf(stdout,"INFO: 8 : WAV_EX Cube surround. Eight input channels needed.\n");
  1881. fprintf(stdout,"INFO: \n");
  1882. fprintf(stdout,"INFO: Input files must match in sample rate, and number of channels, but can have different sample types.\n");
  1883. fprintf(stdout,"INFO: If Input files are WAVEX, any loudspeaker position information is ignored.\n");
  1884. fprintf(stdout,"INFO: The same input file can be listed several times, if required to send to several output channels.\n");
  1885. break;
  1886. case(COPYSFX):
  1887. fprintf(stdout,"INFO: COPY SOUNDFILE, CHANGING THE FORMAT.\n");
  1888. fprintf(stdout,"INFO: \n");
  1889. fprintf(stdout,"INFO: SAMPLE TYPE ....... Indicates the output sample type.\n");
  1890. fprintf(stdout,"INFO: \n");
  1891. fprintf(stdout,"INFO: 0 : Retain sample type of input file.\n");
  1892. fprintf(stdout,"INFO: 1 : 16 bit integer (short).\n");
  1893. fprintf(stdout,"INFO: 2 : 32 bit integer (long).\n");
  1894. fprintf(stdout,"INFO: 3 : 32 bit floating-point.\n");
  1895. fprintf(stdout,"INFO: 4 : 24 bit integer (packed).\n");
  1896. fprintf(stdout,"INFO: \n");
  1897. fprintf(stdout,"INFO: OUTFILE FORMAT ....... Indicates the output soundfile format.\n");
  1898. fprintf(stdout,"INFO: \n");
  1899. fprintf(stdout,"INFO: -1 : Retain format of input file.\n");
  1900. fprintf(stdout,"INFO: 0 : Standard wav format.\n");
  1901. fprintf(stdout,"INFO: 1 : generic WAV_EX (no loudspeaker assignments).\n");
  1902. fprintf(stdout,"INFO: 2 : WAV_EX mono/stereo/quad (FL FR RL RR). 1,2 or 4 input channels needed.\n");
  1903. fprintf(stdout,"INFO: 3 : WAV_EX quad surround (L, C, R, S). Four input channels needed.\n");
  1904. fprintf(stdout,"INFO: 4 : WAV_EX 5.1 format surround. Six input channels needed.\n");
  1905. fprintf(stdout,"INFO: 5 : WAV_EX Ambisonic B-Format (W,X,Y,Z....). 3,4,5,6,7,8,9,11 or 16 input chans needed.\n");
  1906. fprintf(stdout,"INFO: 6 : WAV_EX 5.0 surround. Five input channels needed.\n");
  1907. fprintf(stdout,"INFO: 7 : WAV_EX 7.1 surround. Eight input channels needed.\n");
  1908. fprintf(stdout,"INFO: 8 : WAV_EX Cube surround. Eight input channels needed.\n");
  1909. fprintf(stdout,"INFO: \n");
  1910. fprintf(stdout,"INFO: ADD TDPF DITHER TO 16 BIT OUTFILE .... improving quality of low level signals.\n");
  1911. fprintf(stdout,"INFO: WRITE MINIMAL HEADER (NO PEAKDATA) ... header gets no information about peaks in the output file.\n");
  1912. fprintf(stdout,"INFO: \n");
  1913. break;
  1914. case(NJOINCH):
  1915. fprintf(stdout,"INFO: CHECK COMPATIBLITY OF FILES FOR CONCATENATION.\n");
  1916. fprintf(stdout,"INFO: \n");
  1917. fprintf(stdout,"INFO: CD COMPATIBLE FILES ONLY .... All files must have sample-rate 44100\n");
  1918. fprintf(stdout,"INFO: and must be at least 4 seconds in duration. \n");
  1919. fprintf(stdout,"INFO: \n");
  1920. fprintf(stdout,"INFO: All files must match in sample-rate and number of channels,\n");
  1921. fprintf(stdout,"INFO: but may have different sample types (e.g. 16-bit, 32-bit etc.)\n");
  1922. fprintf(stdout,"INFO: \n");
  1923. break;
  1924. case(NJOIN):
  1925. fprintf(stdout,"INFO: CONCATENATE FILES e.g. FOR C.D. COMPILATION.\n");
  1926. fprintf(stdout,"INFO: \n");
  1927. fprintf(stdout,"INFO: SILENCE BETWEEN FILES ...... silence separating the files in concatenated output.\n");
  1928. fprintf(stdout,"INFO: To eliminate silence BEFORE 1st file in output, enter a NEGATIVE value.\n");
  1929. fprintf(stdout,"INFO: \n");
  1930. fprintf(stdout,"INFO: CD COMPATIBLE FILES ONLY .... All files must have sample-rate 44100\n");
  1931. fprintf(stdout,"INFO: and must be at least 4 seconds in duration. \n");
  1932. fprintf(stdout,"INFO: \n");
  1933. fprintf(stdout,"INFO: OUTPUT A TEXTFILE OF CUES .... Output extra file, with cue points in compilation. \n");
  1934. fprintf(stdout,"INFO: \n");
  1935. fprintf(stdout,"INFO: All files must match in sample-rate and number of channels,\n");
  1936. fprintf(stdout,"INFO: but may have different sample types (e.g. 16-bit, 32-bit etc.)\n");
  1937. fprintf(stdout,"INFO: \n");
  1938. fprintf(stdout,"INFO: The output sample format is taken from the file with the highest precision.\n");
  1939. fprintf(stdout,"INFO: \n");
  1940. break;
  1941. case(NMIX):
  1942. fprintf(stdout,"INFO: MIX TWO FILES OF THE SAME FORMAT.\n");
  1943. fprintf(stdout,"INFO: \n");
  1944. fprintf(stdout,"INFO: Any format is accepted, so long as both files have the same format.\n");
  1945. fprintf(stdout,"INFO: Formats may be wav, aiff, WAVEX, Ambisonic, etc.\n");
  1946. fprintf(stdout,"INFO: (WAVEX files must have the same loudspeaker layout).\n");
  1947. fprintf(stdout,"INFO: \n");
  1948. fprintf(stdout,"INFO: Files may have different sample types (16bit, 32bit etc.)\n");
  1949. fprintf(stdout,"INFO: and (unless \"Float Output\" flag is set) output takes the sample-type of the FIRST file.\n");
  1950. fprintf(stdout,"INFO: \n");
  1951. fprintf(stdout,"INFO: START TIME OF 2nd FILE .... First file starts at zero; 2nd file starts at time specified here.\n");
  1952. fprintf(stdout,"INFO: \n");
  1953. fprintf(stdout,"INFO: APPLY DITHER TO 16bit OUTPUT .... Enhance quality of low level signal (only with 16bit output).\n");
  1954. fprintf(stdout,"INFO: FLOAT OUTPUT ......................... Force 32bit floating point output type.\n");
  1955. fprintf(stdout,"INFO: \n");
  1956. break;
  1957. case(RMSINFO):
  1958. fprintf(stdout,"INFO: REPORT RMS AND AVERAGE POWER.\n");
  1959. fprintf(stdout,"INFO: \n");
  1960. fprintf(stdout,"INFO: Scans the file (between the times specified) and reports the loudness in various forms.\n");
  1961. fprintf(stdout,"INFO: \n");
  1962. fprintf(stdout,"INFO: Output is a table of values showing, for each channel,\n");
  1963. fprintf(stdout,"INFO: \n");
  1964. fprintf(stdout,"INFO: 1) the RMS loudness, as amplitude(0-1) and in dB\n");
  1965. fprintf(stdout,"INFO: 2) the average loudness (power) as amplitude(0-1) and in dB\n");
  1966. fprintf(stdout,"INFO: 3) the NET DC loudness as amplitude(0-1) and in dB\n");
  1967. fprintf(stdout,"INFO: \n");
  1968. break;
  1969. case(SFEXPROPS):
  1970. fprintf(stdout,"INFO: DISPLAY PROPERTIES OF WAVEX FILE.\n");
  1971. fprintf(stdout,"INFO: \n");
  1972. fprintf(stdout,"INFO: These include\n");
  1973. fprintf(stdout,"INFO: \n");
  1974. fprintf(stdout,"INFO: The File Format.\n");
  1975. fprintf(stdout,"INFO: The loudspeaker configuration.\n");
  1976. fprintf(stdout,"INFO: The loudspeaker positions (if specified).\n");
  1977. fprintf(stdout,"INFO: Creation date of the file.\n");
  1978. fprintf(stdout,"INFO: Sample Rate.\n");
  1979. fprintf(stdout,"INFO: Channel Count.\n");
  1980. fprintf(stdout,"INFO: Sample Type (16-bit,32-bit etc.)\n");
  1981. fprintf(stdout,"INFO: Duration.\n");
  1982. fprintf(stdout,"INFO: Peak data information for each channel.\n");
  1983. fprintf(stdout,"INFO: \n");
  1984. break;
  1985. case(SETHARES):
  1986. fprintf(stdout,"INFO: EXTRACT PEAKS FROM ANALYSIS DATA.\n");
  1987. fprintf(stdout,"INFO: \n");
  1988. fprintf(stdout,"INFO: MODES----------------------------------------------------------------\n");
  1989. fprintf(stdout,"INFO: \n");
  1990. fprintf(stdout,"INFO: (1) LIST (TIME-VARYING) PEAKS\n");
  1991. fprintf(stdout,"INFO: List peaks in each window - windows may have different numbers of peaks.\n");
  1992. fprintf(stdout,"INFO: (2) STREAM MAXIMUM NUMBER OF PEAKS.\n");
  1993. fprintf(stdout,"INFO: Number of streams = maximum number of peaks in any one window in the file.\n");
  1994. fprintf(stdout,"INFO: Where a window has insufficient peaks to fill all the streams\n");
  1995. fprintf(stdout,"INFO: a zero-amplitude peak, at an estimated frequency , is set in the stream for that window.\n");
  1996. fprintf(stdout,"INFO: In this process, all peaks are retained.\n");
  1997. fprintf(stdout,"INFO: (3) STREAM MOST PROMINENT PEAKS.\n");
  1998. fprintf(stdout,"INFO: This process assumes that the spectrum is relatively stable.\n");
  1999. fprintf(stdout,"INFO: The peaks at every semitone interval in every window are counted.\n");
  2000. fprintf(stdout,"INFO: This determines the weighting of each pitch among the peaks in the entire file.\n");
  2001. fprintf(stdout,"INFO: The most prominent pitches are chosen as the stream-centres.\n");
  2002. fprintf(stdout,"INFO: Time-varying pitch/amp data is then assigned to these streams.\n");
  2003. fprintf(stdout,"INFO: In this process, some peaks may be discarded.\n");
  2004. fprintf(stdout,"INFO: (4) OUTPUT AVERAGE PITCHES.\n");
  2005. fprintf(stdout,"INFO: This process assumes that the spectrum is relatively stable.\n");
  2006. fprintf(stdout,"INFO: Streams are calculated as in Mode 3, and an average value calculated for each stream.\n");
  2007. fprintf(stdout,"INFO: The output data does not vary in time.\n");
  2008. fprintf(stdout,"INFO: \n");
  2009. fprintf(stdout,"INFO: PARAMETERS ----------------------------------------------------\n");
  2010. fprintf(stdout,"INFO: \n");
  2011. fprintf(stdout,"INFO: SEARCH WINDOW SIZE (SEMITONES) .... semitone width of subwindow used to search for local peaks in spectrum.\n");
  2012. fprintf(stdout,"INFO: PEAKING RATIO .............................. a peak is defined as a channel whose amplitude\n");
  2013. fprintf(stdout,"INFO: exceeds the median amplitude of all the channels in the subwindow, by this factor.\n");
  2014. fprintf(stdout,"INFO: AMPLITUDE FLOOR .......................... peak must also exceed a floor value to be retained.\n");
  2015. fprintf(stdout,"INFO: Entered value is first multiplied by the maximum channel amplitude found in the file.\n");
  2016. fprintf(stdout,"INFO: LOW PITCH LIMIT ............................ Minimum frequency to accept as a peak.\n");
  2017. fprintf(stdout,"INFO: HIGH PITCH LIMIT ............................ Maximum frequency to accept as a peak.\n");
  2018. fprintf(stdout,"INFO: IN-TUNE RANGE (SEMITONES) ............. range within which harmonics accepted as in tune.\n");
  2019. fprintf(stdout,"INFO: If NON-ZERO, peaks which are harmonics of other peaks are not retained.\n");
  2020. fprintf(stdout,"INFO: If set to zero, ALL peaks are retained.\n");
  2021. fprintf(stdout,"INFO: NO AMPLITUDES ............................. Discard the amplitude information.\n");
  2022. fprintf(stdout,"INFO: NB: If the output is in \"FILTER FORMAT\", all amplitudes are set to 1.0.\n");
  2023. fprintf(stdout,"INFO: MIDI OUTPUT ................................. Frequency data output as MIDI values.\n");
  2024. fprintf(stdout,"INFO: QUANTISE TO QUARTERTONES ........... Quantise frqs to tempered-scale quartertone.\n");
  2025. fprintf(stdout,"INFO: MARK ZEROS ................................. Mark windows which have NO peaks.\n");
  2026. fprintf(stdout,"INFO: If set, peak-free areas are marked by (timed) zeros in the output data.\n");
  2027. fprintf(stdout,"INFO: FILTER FORMAT ............................. Output data in filter varibank format.\n");
  2028. fprintf(stdout,"INFO: This overrides the \"MARK ZEROS\" flag.\n");
  2029. fprintf(stdout,"INFO: \n");
  2030. break;
  2031. case(MCHSHRED):
  2032. fprintf(stdout,"INFO: MULTICHANNEL SOUND SHREDDING.\n");
  2033. fprintf(stdout,"INFO: \n");
  2034. fprintf(stdout,"INFO: MODES----------------------------------------------------------------\n");
  2035. fprintf(stdout,"INFO: \n");
  2036. fprintf(stdout,"INFO: (1) SHRED MONO FILE TO N OUTPUT CHANNELS\n");
  2037. fprintf(stdout,"INFO: (2) SHRED MULTICHANNEL FILE\n");
  2038. fprintf(stdout,"INFO: \n");
  2039. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------------\n");
  2040. fprintf(stdout,"INFO: \n");
  2041. fprintf(stdout,"INFO: Cut file into segments, rearrange the segments: Repeat the process on the output.\n");
  2042. fprintf(stdout,"INFO: The output chunks are also sent to a randomly permuted sequence of output channels.\n");
  2043. fprintf(stdout,"INFO: \n");
  2044. fprintf(stdout,"INFO: NUMBER OF SHREDS. ...number of repeats of shredding process.\n");
  2045. fprintf(stdout,"INFO: AVERAGE CHUNKLENGTH..average length of chunks to cut & permute.\n");
  2046. fprintf(stdout,"INFO: CUT SCATTER..........randomisation of cuts (0 to K): default 1.\n");
  2047. fprintf(stdout,"INFO: .....................where K = total number of chunks (snd-duration/chunklen).\n");
  2048. fprintf(stdout,"INFO: .....................If scatter = 0: sound is reordered without shredding.\n");
  2049. fprintf(stdout,"INFO: OUTPUT CHANNEL CNT...For Mode 1 only.\n");
  2050. fprintf(stdout,"INFO: \n");
  2051. break;
  2052. case(MCHZIG):
  2053. fprintf(stdout,"INFO: READ BACK AND FORTH INSIDE SOUNDFILE, WITH RANDOM PANS\n");
  2054. fprintf(stdout,"INFO: \n");
  2055. fprintf(stdout,"INFO: MODES----------------------------------------------------------------\n");
  2056. fprintf(stdout,"INFO: \n");
  2057. fprintf(stdout,"INFO: (1) RANDOM ZIGZAGS\n");
  2058. fprintf(stdout,"INFO: (2) ZIGZAG BETWEEN USER SPECIFIED TIMES\n");
  2059. fprintf(stdout,"INFO: \n");
  2060. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------------\n");
  2061. fprintf(stdout,"INFO: \n");
  2062. fprintf(stdout,"INFO: In mode USER SPECIFIED\n");
  2063. fprintf(stdout,"INFO: Required data is textfile containing sequence of times to zigzag (and pan) between.\n");
  2064. fprintf(stdout,"INFO: Each step-between-times must be > (3 * splicelen).\n");
  2065. fprintf(stdout,"INFO: Successive zigsteps moving in same (time-)direction are concatenated.\n");
  2066. fprintf(stdout,"INFO: \n");
  2067. fprintf(stdout,"INFO: ZIGZAGGING START TIME..... Start time of the area of the infile where zigzagging will happen.\n");
  2068. fprintf(stdout,"INFO: ZIGZAGGING END TIME ........ End time of the area of the infile where zigzagging will happen.\n");
  2069. fprintf(stdout,"INFO: MIN DURATION OUTFILE ...... output will be at least this long.\n");
  2070. fprintf(stdout,"INFO: MIN ZIG LENGTH ............... in \"Random\" mode, minimum duration of any zig or zag.\n");
  2071. fprintf(stdout,"INFO: OUTPUT CHANNEL CNT\n");
  2072. fprintf(stdout,"INFO: SPLICE LENGTH (MS)\n");
  2073. fprintf(stdout,"INFO: MAX ZIG LENGTH ............... in \"Random\" mode, maximum duration of any zig or zag.\n");
  2074. fprintf(stdout,"INFO: \n");
  2075. fprintf(stdout,"INFO: RANDOM SEED..a number to generate a replicable random sequence. (>0)\n");
  2076. fprintf(stdout,"INFO: .............enter same number on next program run, to get same outfile.\n");
  2077. fprintf(stdout,"INFO: .............(Default: (0) random sequence is different every time).\n");
  2078. fprintf(stdout,"INFO: NO PANS BETWEEN ADJACENT CHANNELS.......Reject zigs between adjacent output channels.\n");
  2079. fprintf(stdout,"INFO: \n");
  2080. break;
  2081. case(MCHITER):
  2082. fprintf(stdout,"INFO: ITERATE INPUT SOUND IN FLUID MANNER, DISTRIBUTING TO MANY CHANNELS\n");
  2083. fprintf(stdout,"INFO: \n");
  2084. fprintf(stdout,"INFO: **** WARNING: Do NOT use with large files. ****\n");
  2085. fprintf(stdout,"INFO: \n");
  2086. fprintf(stdout,"INFO: DELAY..................(average) delay between iterations. Default:infile dur.\n");
  2087. fprintf(stdout,"INFO: \n");
  2088. fprintf(stdout,"INFO: RANDOMISATION OF DELAY.\n");
  2089. fprintf(stdout,"INFO: \n");
  2090. fprintf(stdout,"INFO: PITCH SCATTER..........max of random pitchshift of each iteration: semitones\n");
  2091. fprintf(stdout,"INFO: \n");
  2092. fprintf(stdout,"INFO: AMPLITUDE SCATTER......max of random amp-reduction on each iteration.\n");
  2093. fprintf(stdout,"INFO: \n");
  2094. fprintf(stdout,"INFO: PROGRESSIVE FADE.......(average) amplitude reduction between iterations.\n");
  2095. fprintf(stdout,"INFO: A small value is a small amplitude reduction.\n");
  2096. fprintf(stdout,"INFO: \n");
  2097. fprintf(stdout,"INFO: OVERALL GAIN...........(special) value 0, gives best guess for no distortion.\n");
  2098. fprintf(stdout,"INFO: \n");
  2099. fprintf(stdout,"INFO: SEED RANDOM GENERATOR..same number produces identical output on rerun,\n");
  2100. fprintf(stdout,"INFO: \n");
  2101. break;
  2102. case(SPECSPHINX):
  2103. switch(mode) {
  2104. case(0):
  2105. fprintf(stdout,"INFO: IMPOSE CHANNEL AMPLITUDES OF FILE2 ON CHANNEL FRQS OF FILE 1\n");
  2106. fprintf(stdout,"INFO: \n");
  2107. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------------\n");
  2108. fprintf(stdout,"INFO: \n");
  2109. fprintf(stdout,"INFO: \n");
  2110. fprintf(stdout,"INFO: AMPLITUDE BALANCE..... Proportion of File1 Channel-amplitudes retained.\n");
  2111. fprintf(stdout,"INFO: FREQUENCY BALANCE..... Proportion of File2 Channel-frequencies retained in output spectrum.\n");
  2112. fprintf(stdout,"INFO: \n");
  2113. break;
  2114. case(1):
  2115. fprintf(stdout,"INFO: MULTIPLY CHANNEL AMPLITUDES OF TWO SPECTRA\n");
  2116. fprintf(stdout,"INFO: \n");
  2117. fprintf(stdout,"INFO: Note that the spectral FREQUENCIES of the FIRST input are always retained.\n");
  2118. fprintf(stdout,"INFO: \n");
  2119. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------------\n");
  2120. fprintf(stdout,"INFO: \n");
  2121. fprintf(stdout,"INFO: BIAS ....... If NON-zero, a proportion of the (channel-by-channel) amplitude of original signal is added to the output.\n");
  2122. fprintf(stdout,"INFO: If less than 1, a proportion of the 1st input signal is added to the multiplied output.\n");
  2123. fprintf(stdout,"INFO: If greater than 1, a proportion of the 2nd input signal is added to the multiplied output.\n");
  2124. fprintf(stdout,"INFO: Ratio of original to multiplied signal, in the output = abs(bias)/(1.0 - abs(bias))\n");
  2125. fprintf(stdout,"INFO: where \"abs(bias)\" is the absolute (unsigned) value of \"bias\"\n");
  2126. fprintf(stdout,"INFO: \n");
  2127. fprintf(stdout,"INFO: GAIN ....... Overall gain on output.\n");
  2128. fprintf(stdout,"INFO: \n");
  2129. break;
  2130. case(2):
  2131. fprintf(stdout,"INFO: CARVE SPECTRUM OF FILE 1 WITH FORMANT ENVELOPE OF FILE 2\n");
  2132. fprintf(stdout,"INFO: \n");
  2133. fprintf(stdout,"INFO: If file 2 is continuous, it's continuity is largely retained.\n");
  2134. fprintf(stdout,"INFO: \n");
  2135. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------------\n");
  2136. fprintf(stdout,"INFO: \n");
  2137. fprintf(stdout,"INFO: CARVE DEPTH ............ How deeply does the spectral envelope of File 2 bite into the spectrum of File 1. (Range 0 to 1). Time-variable.\n");
  2138. fprintf(stdout,"INFO: OUTPUT GAIN ............ Overall gain on output.\n");
  2139. fprintf(stdout,"INFO: CUTOFF FREQUENCY ... Where in the spectrum does the carving stop (Range 0 - nyquist). Zero value leaves the 1st sound unchanged.\n");
  2140. fprintf(stdout,"INFO: \n");
  2141. fprintf(stdout,"INFO: USE LOUDNESS ENVELOPE OF 2nd SPECTRUM ... The loudness contour of the 1st sound affects that of the output.\n");
  2142. fprintf(stdout,"INFO: Default, the loudness contour of the 1st sound is largely unaffected.\n");
  2143. break;
  2144. }
  2145. break;
  2146. case(SUPERACCU):
  2147. fprintf(stdout,"INFO: SUSTAIN EACH SPECTRAL BAND, UNTIL LOUDER DATA APPEARS IN THAT BAND\n");
  2148. fprintf(stdout,"INFO: \n");
  2149. fprintf(stdout,"INFO: This process is similar to \"FOCUS ACCUMULATE\"\n");
  2150. fprintf(stdout,"INFO: but at the file end, any decaying channels are retained until they decay to zero.\n");
  2151. fprintf(stdout,"INFO: \n");
  2152. fprintf(stdout,"INFO: MODES----------------------------------------------------------------\n");
  2153. fprintf(stdout,"INFO: \n");
  2154. fprintf(stdout,"INFO: (1) SUSTAIN (AND POSSIBLY GLISS) LOUDEST PARTIALS.\n");
  2155. fprintf(stdout,"INFO: (2) AS (1) BUT TUNE (START OF) SUSTAINED PARTIALS TO TEMPERED SCALE.\n");
  2156. fprintf(stdout,"INFO: (3) AS (1) BUT TUNE (START OF) SUSTAINED PARTIALS TO NEAREST OF SPECIFIED FREQUENCIES.\n");
  2157. fprintf(stdout,"INFO: (HARMONIC SET GIVEN IN INPUT DATA FILE).\n");
  2158. fprintf(stdout,"INFO: (4) AS (1) BUT TUNE (START OF) SUSTAINED PARTIALS TO NEAREST OF SPECIFIED FREQUENCIES OR THEIR 8vas\n");
  2159. fprintf(stdout,"INFO: (HARMONIC FIELD GIVEN IN INPUT DATA FILE).\n");
  2160. fprintf(stdout,"INFO: \n");
  2161. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------------\n");
  2162. fprintf(stdout,"INFO: \n");
  2163. fprintf(stdout,"INFO: DECAY RATE....sutained channel data decays by DECAYRATE per sec.\n");
  2164. fprintf(stdout,"INFO: GLISS RATE....sutained channel data glisses at GLISRATE 8vas per sec.\n");
  2165. fprintf(stdout,"INFO: \n");
  2166. fprintf(stdout,"INFO: TUNING....forces the (start) frq of sustained partials to one of the specified frequencies.\n");
  2167. fprintf(stdout,"INFO: \n");
  2168. fprintf(stdout,"INFO: REASSIGN CHANNELS .... glissing data is moved into more appropriate channel\n");
  2169. fprintf(stdout,"INFO: if it strays beond the channel frq limits.\n");
  2170. fprintf(stdout,"INFO: (can cause sustained glissandi to persist for longer.\n");
  2171. fprintf(stdout,"INFO: \n");
  2172. break;
  2173. case(PARTITION):
  2174. fprintf(stdout,"INFO: PARTITION MONO SOUND FILE INTO DISJUNCT BLOCKS, ASSIGNING EVERY Nth BLOCK TO ONE OF N OUTPUT FILES\n");
  2175. fprintf(stdout,"INFO: \n");
  2176. fprintf(stdout,"INFO: For input file \"abcdefghijklmno....\" and 3 output files\n");
  2177. fprintf(stdout,"INFO: (where \"a\",\"b\" etc are successive blocks), we produce\n");
  2178. fprintf(stdout,"INFO: \n");
  2179. fprintf(stdout,"INFO: Outfile1 \"a--d--g--j--m--...\n");
  2180. fprintf(stdout,"INFO: Outfile2 \"-b--e--h--k--n-...\n");
  2181. fprintf(stdout,"INFO: Outfile3 \"--c--f--i--l--o...\n");
  2182. fprintf(stdout,"INFO: \n");
  2183. fprintf(stdout,"INFO: where \"--\" is silence replacing the missing blocks\n");
  2184. fprintf(stdout,"INFO: \n");
  2185. fprintf(stdout,"INFO: MODES----------------------------------------------------------------\n");
  2186. fprintf(stdout,"INFO: \n");
  2187. fprintf(stdout,"INFO: (1) BLOCKS DEFINED BY THE COUNT OF THE WAVESETS THEY CONTAIN.\n");
  2188. fprintf(stdout,"INFO: (2) BLOCKS DEFINED BY THEIR DURATION.\n");
  2189. fprintf(stdout,"INFO: \n");
  2190. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------------\n");
  2191. fprintf(stdout,"INFO: \n");
  2192. fprintf(stdout,"INFO: GRID COUNT ..... is the number of output files to generate.\n");
  2193. fprintf(stdout,"INFO: WAVESET COUNT PER GRID BLOCK (Mode 1) ..... is the number of wavesets in each Block in the output files.\n");
  2194. fprintf(stdout,"INFO: DURATION OF GRID BLOCKS (Mode 2) ..... is the duration (in seconds) of each Block.\n");
  2195. fprintf(stdout,"INFO: RANDOMISATION OF DURATION (Mode 2) ..... is the randomisation of that duration (Range 0 -1).\n");
  2196. fprintf(stdout,"INFO: SPLICE LENGTH (Mode 2) ..... is the duration of the splices used to cut the blocks, in milliseconds.\n");
  2197. fprintf(stdout,"INFO: \n");
  2198. break;
  2199. case(SPECGRIDS):
  2200. fprintf(stdout,"INFO: PARTITION SPECTRUM INTO PARTS, OVER A GRID\n");
  2201. fprintf(stdout,"INFO: \n");
  2202. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------------\n");
  2203. fprintf(stdout,"INFO: \n");
  2204. fprintf(stdout,"INFO: OUTFILECNT Number of output spectral files.\n");
  2205. fprintf(stdout,"INFO: CHANGROUPING Number of adjacent channels per group in the output spectra.\n");
  2206. fprintf(stdout,"INFO: \n");
  2207. fprintf(stdout,"INFO: The product of the 2 parameters must be a divisor of the channel count.\n");
  2208. fprintf(stdout,"INFO: \n");
  2209. fprintf(stdout,"INFO: If the input file has 16 channels \"abcdefghijklmnop\"\n");
  2210. fprintf(stdout,"INFO: With 2 outfiles and changrouping 1\n");
  2211. fprintf(stdout,"INFO: The outfiles contain \"a-c-e-g-i-k-m-o\" and \"b-d-f-h-j-l-n-p\" respectively.\n");
  2212. fprintf(stdout,"INFO: With 2 outfiles and changrouping 2\n");
  2213. fprintf(stdout,"INFO: The outfiles contain \"ab-ef-ij-mn\" and \"cd-gh-kl-op\".\n");
  2214. fprintf(stdout,"INFO: With 2 outfiles and changrouping 4\n");
  2215. fprintf(stdout,"INFO: The outfiles contain \"abcd-ijkl\" and \"efgh-mnop\".\n");
  2216. fprintf(stdout,"INFO: With 2 outfiles and changrouping 8\n");
  2217. fprintf(stdout,"INFO: The outfiles contain \"abcdefgh\" and \"mnopijkl\".\n");
  2218. fprintf(stdout,"INFO: \n");
  2219. fprintf(stdout,"INFO: With 4 outfiles and changrouping 1\n");
  2220. fprintf(stdout,"INFO: The outfiles contain \"a-e-i-m\" \"b-f-j-n\" \"c-g-k-o\" and \"d-h-l-p\".\n");
  2221. fprintf(stdout,"INFO: With 4 outfiles and changrouping 2\n");
  2222. fprintf(stdout,"INFO: With changrouping 2 and 4 outfiles\n");
  2223. fprintf(stdout,"INFO: The outfiles contain \"ab-ij\" \"cd-kl\" \"ef-mn\" and \"gh-op\".\n");
  2224. fprintf(stdout,"INFO: With 4 outfiles and changrouping 4\n");
  2225. fprintf(stdout,"INFO: The outfiles contain \"abcd\" \"efgh\" \"ijkl\" and \"mnop\".\n");
  2226. fprintf(stdout,"INFO: \n");
  2227. break;
  2228. case(GLISTEN):
  2229. fprintf(stdout,"INFO: RANDOM PARTITION THE SPECTRUM INTO BINS AND PLAY THESE BACK IN ORDER\n");
  2230. fprintf(stdout,"INFO: \n");
  2231. fprintf(stdout,"INFO: All the channels of the spectrum are partitioned into N mutually exclusive sets\n");
  2232. fprintf(stdout,"INFO: with channels assigned at random to each set. These sets form 1 complete group.\n");
  2233. fprintf(stdout,"INFO: \n");
  2234. fprintf(stdout,"INFO: Then channels in the first set are played, for a given number of windows,\n");
  2235. fprintf(stdout,"INFO: at which point channels in the 2nd set are played, and so on.\n");
  2236. fprintf(stdout,"INFO: \n");
  2237. fprintf(stdout,"INFO: (As this happens, we are progressing through the original spectrum at the original rate.\n");
  2238. fprintf(stdout,"INFO: The process determines merely which channels are used - the others being zeroed).\n");
  2239. fprintf(stdout,"INFO: \n");
  2240. fprintf(stdout,"INFO: Once all N sets are exhausted, a new group is made by random partition, and so on.\n");
  2241. fprintf(stdout,"INFO: \n");
  2242. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------------\n");
  2243. fprintf(stdout,"INFO: \n");
  2244. fprintf(stdout,"INFO: GROUP DIVISIONS ..... Number of sets to divide analysis-channels into\n");
  2245. fprintf(stdout,"INFO: (e.g. with value 4, process partitions channels randomly\n");
  2246. fprintf(stdout,"INFO: among 4 sets with [totalchans/4] channels per set).\n");
  2247. fprintf(stdout,"INFO: NB Must be an exact divisior of the channel count.\n");
  2248. fprintf(stdout,"INFO: WINDOW LENGTH ....... Number of windows for which each channel-set persists\n");
  2249. fprintf(stdout,"INFO: before we switch to next set-of-channels (Range 1-1024)\n");
  2250. fprintf(stdout,"INFO: PITCHSHIFT ............. Maximum +- range of random pitch shifting of each set\n");
  2251. fprintf(stdout,"INFO: (Range 0 to 12.0 semitones)\n");
  2252. fprintf(stdout,"INFO: WINDOWLENGTH RANDOMISE ... Randomisation of Window length to use (between 1 and value set)\n");
  2253. fprintf(stdout,"INFO: GROUPDIVIDE RANDOMISE ..... Randomise number of channels in each set in a group\n");
  2254. fprintf(stdout,"INFO: Without randomisation, each set-in-a-group has an equal number of channels.\n");
  2255. fprintf(stdout,"INFO: With randomisation, a group has sets of different sizes.\n");
  2256. break;
  2257. case(TUNEVARY):
  2258. fprintf(stdout,"INFO: REPLACE SPECTRAL FRQS BY HARMONICS OF SPECIFIED PITCH(ES), POSSIBLY IN MOTION\n");
  2259. fprintf(stdout,"INFO: \n");
  2260. fprintf(stdout,"INFO: Data required a time-changing template of MIDI pitch-values\n");
  2261. fprintf(stdout,"INFO: Each line must start with a time, in seconds,\n");
  2262. fprintf(stdout,"INFO: and be followed by (possibly fractional) MIDI values (range 0 - 127).\n");
  2263. fprintf(stdout,"INFO: \n");
  2264. fprintf(stdout,"INFO: Times must start at zero and increase from line to line.\n");
  2265. fprintf(stdout,"INFO: Lines must have equal numbers of entries,\n");
  2266. fprintf(stdout,"INFO: but duplicated MIDI values can be used on any line.\n");
  2267. fprintf(stdout,"INFO: \n");
  2268. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------------\n");
  2269. fprintf(stdout,"INFO: \n");
  2270. fprintf(stdout,"INFO: FOCUS..........degree of focusing of partial pitches onto template.\n");
  2271. fprintf(stdout,"INFO: \n");
  2272. fprintf(stdout,"INFO: CLARITY........degree to which non-template partials are suppressed.\n");
  2273. fprintf(stdout,"INFO: \n");
  2274. fprintf(stdout,"INFO: TRACE..........number of (window_by_window) most prominent channels\n");
  2275. fprintf(stdout,"INFO: ...............to be replaced by template frqs. (default, all channels)\n");
  2276. fprintf(stdout,"INFO: \n");
  2277. fprintf(stdout,"INFO: LOW FRQ LIMIT..frqs below this are ignored.\n");
  2278. fprintf(stdout,"INFO: \n");
  2279. case(ISOLATE):
  2280. switch(mode) {
  2281. case(0):
  2282. fprintf(stdout,"INFO: ISOLATE, IN PLACE, SINGLE SPECIFIED SEGMENT(S) OF A SOURCE, TO DISTINCT OUTFILES\n");
  2283. fprintf(stdout,"INFO: \n");
  2284. fprintf(stdout,"INFO: Specified segments are cut from the input file to distinct output files\n");
  2285. fprintf(stdout,"INFO: but the segments retain silent preambles\n");
  2286. fprintf(stdout,"INFO: so they occur at SAME TIME in the outfiles, as in the input file.\n");
  2287. fprintf(stdout,"INFO: \n");
  2288. fprintf(stdout,"INFO: Process concludes by generating a file of all material left over after segment removal.\n");
  2289. fprintf(stdout,"INFO: \n");
  2290. fprintf(stdout,"INFO: The original file is reconstructible by mixing all these components.\n");
  2291. fprintf(stdout,"INFO: \n");
  2292. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------------\n");
  2293. fprintf(stdout,"INFO: \n");
  2294. fprintf(stdout,"INFO: CUT SEGMENT TIMES .....The datafile is a list of time-pairs,\n");
  2295. fprintf(stdout,"INFO: being the start and end times of segments to be cut.\n");
  2296. fprintf(stdout,"INFO: These should be in time order, and must not overlap one another.\n");
  2297. fprintf(stdout,"INFO: \n");
  2298. fprintf(stdout,"INFO: If 2 cuts abutt each other, or are so close that the end and start splices overlap,\n");
  2299. fprintf(stdout,"INFO: the end of the first cut will be moved back, and the start of 2nd cut moved forward\n");
  2300. fprintf(stdout,"INFO: so that they overlap by a single splicelength.\n");
  2301. fprintf(stdout,"INFO: \n");
  2302. fprintf(stdout,"INFO: On the Loom, the \"Sound View\" window allows cut-segments to be marked\n");
  2303. fprintf(stdout,"INFO: on a graphic of the input file waveform.\n");
  2304. fprintf(stdout,"INFO: Input segments are sorted into order and checked for overlap.\n");
  2305. fprintf(stdout,"INFO: \n");
  2306. fprintf(stdout,"INFO: SPLICELEN ............ Length of the splices in mS\n");
  2307. fprintf(stdout,"INFO: \n");
  2308. fprintf(stdout,"INFO: EXTEND END-SILENCES TO ENDTIME OF SOURCE forces all output files to be the same length.\n");
  2309. fprintf(stdout,"INFO: REVERSE SEGMENT OUTPUT outputs the segmented data backwards-in-time.\n");
  2310. fprintf(stdout,"INFO: This is useful if the segments are to be INVERSE-PROCESSED.\n");
  2311. fprintf(stdout,"INFO: i.e. a time-reversed file is processed and the process-output re-reversed, restoring the original time-direction.\n");
  2312. fprintf(stdout,"INFO: This might be useful where a process generates a tail of sound after the end of the original source e.g. reverb\n");
  2313. fprintf(stdout,"INFO: Reverse-processing in this way causes the 'tail' to PRECEDE the source in the final output.\n");
  2314. fprintf(stdout,"INFO: \n");
  2315. fprintf(stdout,"INFO: NB If all outputs are the same length in \"ISOLATE\", the reversed files can be processed\n");
  2316. fprintf(stdout,"INFO: then rejoined with the remnant file using \"REJOIN\", WITHOUT needing to re-reverse them first.\n");
  2317. fprintf(stdout,"INFO: \n");
  2318. break;
  2319. case(1):
  2320. fprintf(stdout,"INFO: ISOLATE, IN PLACE, SETS OF SPECIFIED SEGMENT(S) OF A SOURCE, TO DISTINCT OUTFILES\n");
  2321. fprintf(stdout,"INFO: \n");
  2322. fprintf(stdout,"INFO: Specified sets of isolated segments are cut from the input file.\n");
  2323. fprintf(stdout,"INFO: Each output file has a different set of isolated segments of the source.\n");
  2324. fprintf(stdout,"INFO: The files have silent preambles so that events occur at SAME TIME in the outfiles\n");
  2325. fprintf(stdout,"INFO: as in the source file.\n");
  2326. fprintf(stdout,"INFO: \n");
  2327. fprintf(stdout,"INFO: The original file is reconstructible by mixing all these components.\n");
  2328. fprintf(stdout,"INFO: \n");
  2329. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------------\n");
  2330. fprintf(stdout,"INFO: \n");
  2331. fprintf(stdout,"INFO: CUT SEGMENT TIMES ...... Each line of the datafile has a list of time-pairs,\n");
  2332. fprintf(stdout,"INFO: the start & end times of segments to be cut for that particular output file.\n");
  2333. fprintf(stdout,"INFO: These should be in time order, in each line.\n");
  2334. fprintf(stdout,"INFO: None of segments (in any of the lines) must overlap one another.\n");
  2335. fprintf(stdout,"INFO: \n");
  2336. fprintf(stdout,"INFO: If 2 cuts abutt each other, or are so close that the end and start splices overlap,\n");
  2337. fprintf(stdout,"INFO: the end of the first cut will be moved back, and the start of 2nd cut moved forward\n");
  2338. fprintf(stdout,"INFO: so that they overlap by a single splicelength.\n");
  2339. fprintf(stdout,"INFO: \n");
  2340. fprintf(stdout,"INFO: On the Loom, the \"Sound View\" window allows cut-segments to be marked\n");
  2341. fprintf(stdout,"INFO: on a graphic of the input file waveform.\n");
  2342. fprintf(stdout,"INFO: Marked segments which succeed each other in time are placed on the same line.\n");
  2343. fprintf(stdout,"INFO: (assumed to be part of the data for the same output file).\n");
  2344. fprintf(stdout,"INFO: If a new marked segment preceeds (in time) a previous marked segment,\n");
  2345. fprintf(stdout,"INFO: a new data line is initiated for a 2nd output file, and so on.\n");
  2346. fprintf(stdout,"INFO: Input segments are also checked for overlap.\n");
  2347. fprintf(stdout,"INFO: \n");
  2348. fprintf(stdout,"INFO: SPLICELEN ............ Length of the splices in mS\n");
  2349. fprintf(stdout,"INFO: \n");
  2350. fprintf(stdout,"INFO: EXTEND END-SILENCES TO ENDTIME OF SOURCE forces all output files to be the same length.\n");
  2351. fprintf(stdout,"INFO: REVERSE SEGMENT OUTPUT outputs the segmented data backwards-in-time.\n");
  2352. fprintf(stdout,"INFO: This is useful if the segments are to be INVERSE-PROCESSED.\n");
  2353. fprintf(stdout,"INFO: i.e. a time-reversed file is processed and the process-output re-reversed, restoring the original time-direction.\n");
  2354. fprintf(stdout,"INFO: This might be useful where a process generates a tail of sound after the end of the original source e.g. reverb\n");
  2355. fprintf(stdout,"INFO: Reverse-processing in this way causes the 'tail' to PRECEDE the source in the final output.\n");
  2356. fprintf(stdout,"INFO: \n");
  2357. fprintf(stdout,"INFO: NB If all outputs are the same length in \"ISOLATE\", the reversed files can be processed\n");
  2358. fprintf(stdout,"INFO: then rejoined with the remnant file using \"REJOIN\", WITHOUT needing to re-reverse them first.\n");
  2359. fprintf(stdout,"INFO: \n");
  2360. fprintf(stdout,"INFO: \n");
  2361. break;
  2362. case(2):
  2363. fprintf(stdout,"INFO: ISOLATE, IN PLACE, SEVERAL SEGMENT(S) OF A SOURCE, TO A SINGLE OUTFILE\n");
  2364. fprintf(stdout,"INFO: \n");
  2365. fprintf(stdout,"INFO: Specified segments are cut from the input file and placed in the same output file.\n");
  2366. fprintf(stdout,"INFO: but the segments retain silent surrounds\n");
  2367. fprintf(stdout,"INFO: so they occur at SAME TIME in the outfiles, as in the input file.\n");
  2368. fprintf(stdout,"INFO: \n");
  2369. fprintf(stdout,"INFO: Segment starts and ends are located using threshold-on and threshold-off parameters.\n");
  2370. fprintf(stdout,"INFO: If a segment-length is set, only the initial part (length specified) of each segment is retained.\n");
  2371. fprintf(stdout,"INFO: \n");
  2372. fprintf(stdout,"INFO: Process concludes by generating a file of all material left over after segment removal.\n");
  2373. fprintf(stdout,"INFO: \n");
  2374. fprintf(stdout,"INFO: The original file is reconstructible by mixing both these components.\n");
  2375. fprintf(stdout,"INFO: \n");
  2376. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------------\n");
  2377. fprintf(stdout,"INFO: \n");
  2378. fprintf(stdout,"INFO: THRESHOLD ON .......... dB level at which a segment is triggered to be cut.\n");
  2379. fprintf(stdout,"INFO: THRESHOLD OFF ......... dB level at which a cut segment is triggered to end.\n");
  2380. fprintf(stdout,"INFO: MINIMUM SEGMENT LENGTH.. Minimum Duration in mS which segment must have, to be accepted.\n");
  2381. fprintf(stdout,"INFO: SEGMENT RETAIN LENGTH .. Duration in mS of (start-)portion of segments to retain.\n");
  2382. fprintf(stdout,"INFO: If segment length is set to zero, the complete segments are retained.\n");
  2383. fprintf(stdout,"INFO: SPLICELEN ............ Length of the splices in mS\n");
  2384. fprintf(stdout,"INFO: \n");
  2385. fprintf(stdout,"INFO: EXTEND END-SILENCES TO ENDTIME OF SOURCE forces all output files to be the same length.\n");
  2386. fprintf(stdout,"INFO: REVERSE SEGMENT OUTPUT outputs the segmented data backwards-in-time.\n");
  2387. fprintf(stdout,"INFO: This is useful if the segments are to be INVERSE-PROCESSED.\n");
  2388. fprintf(stdout,"INFO: i.e. a time-reversed file is processed and the process-output re-reversed, restoring the original time-direction.\n");
  2389. fprintf(stdout,"INFO: This might be useful where a process generates a tail of sound after the end of the original source e.g. reverb\n");
  2390. fprintf(stdout,"INFO: Reverse-processing in this way causes the 'tail' to PRECEDE the source in the final output.\n");
  2391. fprintf(stdout,"INFO: \n");
  2392. fprintf(stdout,"INFO: NB If all outputs are the same length in \"ISOLATE\", the reversed files can be processed\n");
  2393. fprintf(stdout,"INFO: then rejoined with the remnant file using \"REJOIN\", WITHOUT needing to re-reverse them first.\n");
  2394. fprintf(stdout,"INFO: \n");
  2395. break;
  2396. case(3):
  2397. fprintf(stdout,"INFO: ISOLATE, IN PLACE, ALL THE SLICED UP SEGMENT(S) OF A SOUNDFILE\n");
  2398. fprintf(stdout,"INFO: \n");
  2399. fprintf(stdout,"INFO: The source is segmented into successive adjacent segments, written to distinct output files.\n");
  2400. fprintf(stdout,"INFO: The files have silent preambles so that events occur at SAME TIME in the outfiles\n");
  2401. fprintf(stdout,"INFO: as in the source file.\n");
  2402. fprintf(stdout,"INFO: \n");
  2403. fprintf(stdout,"INFO: The original file is reconstructible by mixing all these components.\n");
  2404. fprintf(stdout,"INFO: \n");
  2405. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------------\n");
  2406. fprintf(stdout,"INFO: \n");
  2407. fprintf(stdout,"INFO: SLICE TIMES ...... Datafile contains a list of (increasing) times where the source is to be cut.\n");
  2408. fprintf(stdout,"INFO: \n");
  2409. fprintf(stdout,"INFO: On the Loom, the \"Sound View\" window allows cut-times to be marked\n");
  2410. fprintf(stdout,"INFO: on a graphic of the input file waveform.\n");
  2411. fprintf(stdout,"INFO: Cut-times are sorted into ascending order.\n");
  2412. fprintf(stdout,"INFO: \n");
  2413. fprintf(stdout,"INFO: SPLICELEN ............ Length of the splices in mS\n");
  2414. fprintf(stdout,"INFO: \n");
  2415. fprintf(stdout,"INFO: EXTEND END-SILENCES TO ENDTIME OF SOURCE forces all output files to be the same length.\n");
  2416. fprintf(stdout,"INFO: REVERSE SEGMENT OUTPUT outputs the segmented data backwards-in-time.\n");
  2417. fprintf(stdout,"INFO: This is useful if the segments are to be INVERSE-PROCESSED.\n");
  2418. fprintf(stdout,"INFO: i.e. a time-reversed file is processed and the process-output re-reversed, restoring the original time-direction.\n");
  2419. fprintf(stdout,"INFO: This might be useful where a process generates a tail of sound after the end of the original source e.g. reverb\n");
  2420. fprintf(stdout,"INFO: Reverse-processing in this way causes the 'tail' to PRECEDE the source in the final output.\n");
  2421. fprintf(stdout,"INFO: \n");
  2422. fprintf(stdout,"INFO: NB If all outputs are the same length in \"ISOLATE\", the reversed files can be processed using \"REJOIN\",\n");
  2423. fprintf(stdout,"INFO: WITHOUT needing to re-reverse them first.\n");
  2424. fprintf(stdout,"INFO: \n");
  2425. break;
  2426. case(4):
  2427. fprintf(stdout,"INFO: ISOLATE, IN PLACE, ALL THE SLICED UP SEGMENT(S) OF A SOUNDFILE, WITH SLIGHT OVERLAPS\n");
  2428. fprintf(stdout,"INFO: \n");
  2429. fprintf(stdout,"INFO: The source is segmented into successive adjacent segments, written to distinct output files.\n");
  2430. fprintf(stdout,"INFO: The files have silent preambles so that events occur at SAME TIME in the outfiles\n");
  2431. fprintf(stdout,"INFO: as in the source file.\n");
  2432. fprintf(stdout,"INFO: \n");
  2433. fprintf(stdout,"INFO: The cut segments are made to overlap slightly (good for isolating speech syllables).\n");
  2434. fprintf(stdout,"INFO: \n");
  2435. fprintf(stdout,"INFO: The original file is reconstructible by mixing all these components.\n");
  2436. fprintf(stdout,"INFO: \n");
  2437. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------------\n");
  2438. fprintf(stdout,"INFO: \n");
  2439. fprintf(stdout,"INFO: SLICE TIMES ...... Datafile contains a list of (increasing) times where the source is to be cut.\n");
  2440. fprintf(stdout,"INFO: \n");
  2441. fprintf(stdout,"INFO: On the Loom, the \"Sound View\" window allows cut-times to be marked\n");
  2442. fprintf(stdout,"INFO: on a graphic of the input file waveform.\n");
  2443. fprintf(stdout,"INFO: Cut-times are sorted into ascending order.\n");
  2444. fprintf(stdout,"INFO: \n");
  2445. fprintf(stdout,"INFO: SPLICELEN ............ Length of the splices in mS\n");
  2446. fprintf(stdout,"INFO: DOVETAIL ............ Length of segment overlaps in mS\n");
  2447. fprintf(stdout,"INFO: \n");
  2448. fprintf(stdout,"INFO: EXTEND END-SILENCES TO ENDTIME OF SOURCE forces all output files to be the same length.\n");
  2449. fprintf(stdout,"INFO: REVERSE SEGMENT OUTPUT outputs the segmented data backwards-in-time.\n");
  2450. fprintf(stdout,"INFO: This is useful if the segments are to be INVERSE-PROCESSED.\n");
  2451. fprintf(stdout,"INFO: i.e. a time-reversed file is processed and the process-output re-reversed, restoring the original time-direction.\n");
  2452. fprintf(stdout,"INFO: This might be useful where a process generates a tail of sound after the end of the original source e.g. reverb\n");
  2453. fprintf(stdout,"INFO: Reverse-processing in this way causes the 'tail' to PRECEDE the source in the final output.\n");
  2454. fprintf(stdout,"INFO: \n");
  2455. fprintf(stdout,"INFO: NB If all outputs are the same length in \"ISOLATE\", the reversed files can be processed using \"REJOIN\",\n");
  2456. fprintf(stdout,"INFO: WITHOUT needing to re-reverse them first.\n");
  2457. fprintf(stdout,"INFO: \n");
  2458. break;
  2459. }
  2460. break;
  2461. case(REJOIN):
  2462. switch(mode) {
  2463. case(0):
  2464. fprintf(stdout,"INFO: REMIX SEGMENT-FILES ORIGINATING IN THE \"ISOLATE\" PROCESS\n");
  2465. fprintf(stdout,"INFO: \n");
  2466. fprintf(stdout,"INFO: Process assumes the source files are semgents cut from a source, using \"ISOLATE\"\n");
  2467. fprintf(stdout,"INFO: \n");
  2468. fprintf(stdout,"INFO: The (possibly processed) files are here remixed together\n");
  2469. fprintf(stdout,"INFO: returning segments to their original timings in the source.\n");
  2470. fprintf(stdout,"INFO: \n");
  2471. fprintf(stdout,"INFO: If the segments were originally REVERSED by the isolate process\n");
  2472. fprintf(stdout,"INFO: setting \"REVERSE SEGMENTS\" here will automatically re-reverse the (possibly processed) segments\n");
  2473. fprintf(stdout,"INFO: before mixing them.\n");
  2474. fprintf(stdout,"INFO: \n");
  2475. fprintf(stdout,"INFO: GAIN ....... Changes the output level (Range 0 - 1).\n");
  2476. fprintf(stdout,"INFO: (Note that output level is automatically turned down if output clips).\n");
  2477. fprintf(stdout,"INFO: \n");
  2478. break;
  2479. case(1):
  2480. fprintf(stdout,"INFO: REMIX SEGMENT-FILES ORIGINATING IN THE \"ISOLATE\" PROCESS, WITH THE REMNANT FILE\n");
  2481. fprintf(stdout,"INFO: \n");
  2482. fprintf(stdout,"INFO: Process assumes the source files are segments cut from a source, using \"ISOLATE\"\n");
  2483. fprintf(stdout,"INFO: PLUS the remnant file, which must be LAST in the list of input files.\n");
  2484. fprintf(stdout,"INFO: \n");
  2485. fprintf(stdout,"INFO: The (possibly processed) files are here remixed together\n");
  2486. fprintf(stdout,"INFO: returning segments to their original timings in the source.\n");
  2487. fprintf(stdout,"INFO: \n");
  2488. fprintf(stdout,"INFO: If the segments were originally REVERSED by the isolate process\n");
  2489. fprintf(stdout,"INFO: setting \"REVERSE SEGMENTS\" here will automatically re-reverse the (possibly processed) segments\n");
  2490. fprintf(stdout,"INFO: before mixing them with the remnant file.\n");
  2491. fprintf(stdout,"INFO: \n");
  2492. fprintf(stdout,"INFO: GAIN ....... Changes the output level (Range 0 - 1).\n");
  2493. fprintf(stdout,"INFO: (Note that output level is automatically turned down if output clips).\n");
  2494. fprintf(stdout,"INFO: \n");
  2495. break;
  2496. }
  2497. break;
  2498. case(PANORAMA):
  2499. fprintf(stdout,"INFO: CREATE PANORAMA OF INPUT FILES, SPREADING ACROSS MULTICHANNEL SURROUND SPACE\n");
  2500. fprintf(stdout,"INFO: \n");
  2501. fprintf(stdout,"INFO: Loudspeakers assumed to be effectively surrounding the listening area from the front outwards.\n");
  2502. fprintf(stdout,"INFO: Input sounds distributed in order from leftmost to rightmost position\n");
  2503. fprintf(stdout,"INFO: (with a 360 degree spread specified, 180 is assumed to be the rightmost position).\n");
  2504. fprintf(stdout,"INFO: \n");
  2505. fprintf(stdout,"INFO: MODES ----------------------------------------------------------------\n");
  2506. fprintf(stdout,"INFO: \n");
  2507. fprintf(stdout,"INFO: 1) SPECIFY THE NUMBER OF LOUDSPEAKERS, AND THE TOTAL ANGULAR WIDTH ( >= 190 degrees )\n");
  2508. fprintf(stdout,"INFO: 2) LIST OF LOUDSPEAKER POSITIONS, IN A FILE (TOTAL ANGULAR WIDTH >= 190 degrees)\n");
  2509. fprintf(stdout,"INFO: \n");
  2510. fprintf(stdout,"INFO: PARAMETERS -------------------------------------------------------------\n");
  2511. fprintf(stdout,"INFO: \n");
  2512. fprintf(stdout,"INFO: MODE 1:\n");
  2513. fprintf(stdout,"INFO: NO. OF LOUDSPEAKERS ........ Assumed equally spaced.\n");
  2514. fprintf(stdout,"INFO: TOTAL ANGULAR WIDTH OF LSPKRS ......(190 - 360).\n");
  2515. fprintf(stdout,"INFO: The loudspeaker array is assumed to be symmetrical around its centre-line.\n");
  2516. fprintf(stdout,"INFO: MODE 2:\n");
  2517. fprintf(stdout,"INFO: LOUDSPEAKER POSITIONS ....... A textfile list of the angular positions of the loudspeakers.\n");
  2518. fprintf(stdout,"INFO: positions to the right of centre lie between 0 (front) and 180 (rear)\n");
  2519. fprintf(stdout,"INFO: positions to the left of centre lie between >180 (rear) and 360(=0) (front)\n");
  2520. fprintf(stdout,"INFO: \n");
  2521. fprintf(stdout,"INFO: ANGULAR WIDTH OF SOUND IMAGE .......... (0 - 360 degrees).\n");
  2522. fprintf(stdout,"INFO: \n");
  2523. fprintf(stdout,"INFO: ANGULAR OFFSET OF SOUND IMAGE ...... angle between centre-line of sounds and centre-line of loudspeakers.\n");
  2524. fprintf(stdout,"INFO: \n");
  2525. fprintf(stdout,"INFO: SOUND CONFIGURATION ........ Distribution of output sounds within the sound image angle.\n");
  2526. fprintf(stdout,"INFO: 1: sounds are equally spaced\n");
  2527. fprintf(stdout,"INFO: 2: two sounds are equally spaced, followed by a gap, etc.\n");
  2528. fprintf(stdout,"INFO: 3: three sounds are equally spaced, followed by a gap, etc.\n");
  2529. fprintf(stdout,"INFO: and so on\n");
  2530. fprintf(stdout,"INFO: Must be a divisor of the number of input sounds used.\n");
  2531. fprintf(stdout,"INFO: \n");
  2532. fprintf(stdout,"INFO: RANDOMISATION ............... Randomisation of sound positions (0-1).\n");
  2533. fprintf(stdout,"INFO: \n");
  2534. fprintf(stdout,"INFO: FRONT-PAIR LSPKRS ....... If the angular width of the loudspeakers is 360 degrees.\n");
  2535. fprintf(stdout,"INFO: The speaker orientation is ambiguous.\n");
  2536. fprintf(stdout,"INFO: Default assumes that there is a single loudspeaker at centre front.\n");
  2537. fprintf(stdout,"INFO: Setting this flag forces a pair of lspkrs, symmetrically placed to each side of centre-front.\n");
  2538. fprintf(stdout,"INFO: (The flag is IGNORED if TOTAL ANGULAR WIDTH OF LSPKRS is less than 360 degrees )\n");
  2539. fprintf(stdout,"INFO: FRONT-PAIR SOUND IMAGES ....... The same logic applied to the SOUND positions\n");
  2540. fprintf(stdout,"INFO: (ignored if the ANGULAR WIDTH OF SOUND IMAGE is less than 360 degrees )\n");
  2541. fprintf(stdout,"INFO: \n");
  2542. break;
  2543. case(TREMOLO):
  2544. fprintf(stdout,"INFO: TREMOLO A SOUND, WITH ADJUSTABLE PEAK-WIDTH\n");
  2545. fprintf(stdout,"INFO: \n");
  2546. fprintf(stdout,"INFO: MODES---------------------------------------------------------------\n");
  2547. fprintf(stdout,"INFO: \n");
  2548. fprintf(stdout,"INFO: FRQWISE....Interpolate linearly between frqs in any frq brktable (default).\n");
  2549. fprintf(stdout,"INFO: PITCHWISE..Interpolate logarithmically (like pitch). (Care with zero frqs).\n");
  2550. fprintf(stdout,"INFO: \n");
  2551. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------\n");
  2552. fprintf(stdout,"INFO: \n");
  2553. fprintf(stdout,"INFO: TREMOLO FREQUENCY..is frequency of the tremolo vibration itself.\n");
  2554. fprintf(stdout,"INFO: TREMOLO DEPTH......amplitude depth of tremolo.\n");
  2555. fprintf(stdout,"INFO: OVERALL GAIN.......Overall signal gain, or envelope.\n");
  2556. fprintf(stdout,"INFO: PEAK NARROWING ....Tremolo peaks can be made narrower.\n");
  2557. fprintf(stdout,"INFO: \n");
  2558. break;
  2559. case(ECHO):
  2560. fprintf(stdout,"INFO: REPEATEDLY ECHO A SOUND\n");
  2561. fprintf(stdout,"INFO: \n");
  2562. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------\n");
  2563. fprintf(stdout,"INFO: \n");
  2564. fprintf(stdout,"INFO: DELAY...................must be greater than the sound duration.\n");
  2565. fprintf(stdout,"INFO: (use the \"DELAY\" program otherwise).\n");
  2566. fprintf(stdout,"INFO: ATTENUATION.............change in level from one echo to the next.\n");
  2567. fprintf(stdout,"INFO: MAXIMUM DURATION....... maximum duration of output (output may be shorter).\n");
  2568. fprintf(stdout,"INFO: RANDOMISATION ......... Randomisation of echo times.\n");
  2569. fprintf(stdout,"INFO: CUTOFF LEVEL .......... Level below which output signal is cut off.\n");
  2570. fprintf(stdout,"INFO: \n");
  2571. break;
  2572. case(PACKET):
  2573. fprintf(stdout,"INFO: CREATE AN ENVELOPED SOUND-PACKET, CUT AND SHAPED FROM A SOURCE.\n");
  2574. fprintf(stdout,"INFO: \n");
  2575. fprintf(stdout,"INFO: MODES---------------------------------------------------------------\n");
  2576. fprintf(stdout,"INFO: \n");
  2577. fprintf(stdout,"INFO: FOUND....Use signal minima around the specified location in the source, to determine where to cut a packet.\n");
  2578. fprintf(stdout,"INFO: FORCED...Cut a packet at the specified location in the source.\n");
  2579. fprintf(stdout,"INFO: \n");
  2580. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------\n");
  2581. fprintf(stdout,"INFO: \n");
  2582. fprintf(stdout,"INFO: PACKET LOCATION IN SOURCE ........ Time in source around which packet is to be cut.\n");
  2583. fprintf(stdout,"INFO: A single time value or a textfile list of times.\n");
  2584. fprintf(stdout,"INFO: \n");
  2585. fprintf(stdout,"INFO: DURATION ......... Duration (of forced packet) or minimum-duration (of found packet) in mS.\n");
  2586. fprintf(stdout,"INFO: (Must be less than half the source duration).\n");
  2587. fprintf(stdout,"INFO: \n");
  2588. fprintf(stdout,"INFO: NARROWING ........ Narrowing of the packet envelope, which is normally cosinusoidal.\n");
  2589. fprintf(stdout,"INFO: Values below 1.0 broaden the packet.\n");
  2590. fprintf(stdout,"INFO: Values very close to zero may produce clicks (square-wave envelope).\n");
  2591. fprintf(stdout,"INFO: High vals with short packets may produce click-impulses or silence.\n");
  2592. fprintf(stdout,"INFO: \n");
  2593. fprintf(stdout,"INFO: CENTRING ........ Centring of the peak of the packet envelope.\n");
  2594. fprintf(stdout,"INFO: 0 gives a peak at centre: -ve values move the peak towards the start of packet\n");
  2595. fprintf(stdout,"INFO: +ve values move the peak towards the end of the packet.\n");
  2596. fprintf(stdout,"INFO: If the packet content has varying level, the true peak position may not correspond\n");
  2597. fprintf(stdout,"INFO: to the envelope peak position, unless the \"-f\" flag is used.\n");
  2598. fprintf(stdout,"INFO: \n");
  2599. fprintf(stdout,"INFO: NORMALISE ........ Normalise the packet level.\n");
  2600. fprintf(stdout,"INFO: \n");
  2601. fprintf(stdout,"INFO: EXPAND ........... Packet wave maxima(minima) are forced up(down) to the envelope contour of the packet.\n");
  2602. fprintf(stdout,"INFO: (default, the packet envelope is simply imposed on the existing signal).\n");
  2603. fprintf(stdout,"INFO: \n");
  2604. fprintf(stdout,"INFO: SHAVE SILENCE..... Remove leading or trailing silence in resultant packet.\n");
  2605. fprintf(stdout,"INFO: \n");
  2606. break;
  2607. case(SYNTHESIZER):
  2608. switch(mode) {
  2609. case(0):
  2610. fprintf(stdout,"INFO: SYNTHESIZE COMPLEX TONES\n");
  2611. fprintf(stdout,"INFO: \n");
  2612. fprintf(stdout,"INFO: Creates tones with any number of partials which may vary through time in frequency and level.\n");
  2613. fprintf(stdout,"INFO: \n");
  2614. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------\n");
  2615. fprintf(stdout,"INFO: \n");
  2616. fprintf(stdout,"INFO: SPECTRUM DATA ..... A textfile Listing of partial ratios and relative levels, against time.\n");
  2617. fprintf(stdout,"INFO: Data is a text file of lines of data and every line must have the same number of entries.\n");
  2618. fprintf(stdout,"INFO: \n");
  2619. fprintf(stdout,"INFO: The 1ST ENTRY on each line is a time. Times must start at zero and increase.\n");
  2620. fprintf(stdout,"INFO: \n");
  2621. fprintf(stdout,"INFO: All EVEN NUMBERED entries are partial numbers\n");
  2622. fprintf(stdout,"INFO: For synthesizing tones, the first partial number on each line must be 1.\n");
  2623. fprintf(stdout,"INFO: Partial numbers must increase through a line.\n");
  2624. fprintf(stdout,"INFO: \n");
  2625. fprintf(stdout,"INFO: All other ODD NUMBERED entries are partial levels and may have any numeric value.\n");
  2626. fprintf(stdout,"INFO: -ve values invert the phase of the partial.\n");
  2627. fprintf(stdout,"INFO: \n");
  2628. fprintf(stdout,"INFO: SAMPLE_RATE ....... Sample rate of the synthesized sound.\n");
  2629. fprintf(stdout,"INFO: DURATION .......... Total Duration of the synthesized sound.\n");
  2630. fprintf(stdout,"INFO: FREQUENCY ......... Fundamental frequency of the synthesized sound (possibly time-varying).\n");
  2631. break;
  2632. case(1):
  2633. fprintf(stdout,"INFO: SYNTHESIZE PACKET_STREAMS\n");
  2634. fprintf(stdout,"INFO: \n");
  2635. fprintf(stdout,"INFO: Creates a stream of wave-packets, which may vary in content through time.\n");
  2636. fprintf(stdout,"INFO: \n");
  2637. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------\n");
  2638. fprintf(stdout,"INFO: \n");
  2639. fprintf(stdout,"INFO: SPECTRUM DATA ..... A textfile Listing of partial ratios and relative levels, against time.\n");
  2640. fprintf(stdout,"INFO: Data is a text file of lines of data and every line must have the same number of entries.\n");
  2641. fprintf(stdout,"INFO: \n");
  2642. fprintf(stdout,"INFO: The 1ST ENTRY on each line is a time. Times must start at zero and increase.\n");
  2643. fprintf(stdout,"INFO: \n");
  2644. fprintf(stdout,"INFO: All EVEN NUMBERED entries are partial numbers\n");
  2645. fprintf(stdout,"INFO: For synthesizing tones, the first partial number on each line must be 1.\n");
  2646. fprintf(stdout,"INFO: Partial numbers must increase through a line.\n");
  2647. fprintf(stdout,"INFO: \n");
  2648. fprintf(stdout,"INFO: All other ODD NUMBERED entries are partial levels and may have any numeric value.\n");
  2649. fprintf(stdout,"INFO: -ve values invert the phase of the partial.\n");
  2650. fprintf(stdout,"INFO: \n");
  2651. fprintf(stdout,"INFO: SAMPLE_RATE ....... Sample rate of the synthesized sound.\n");
  2652. fprintf(stdout,"INFO: DURATION .......... Total Duration of the synthesized sound.\n");
  2653. fprintf(stdout,"INFO: FREQUENCY ......... Fundamental frequency of the synthesized sound (possibly time-varying).\n");
  2654. fprintf(stdout,"INFO: \n");
  2655. fprintf(stdout,"INFO: NARROWING ......... Narrowing of the packet envelope, which is normally cosinusoidal.\n");
  2656. fprintf(stdout,"INFO: Values below 1.0 broaden the packet.\n");
  2657. fprintf(stdout,"INFO: Values very close to zero may produce clicks (square-wave envelope).\n");
  2658. fprintf(stdout,"INFO: High vals with high frequencies may produce click-impulses or silence.\n");
  2659. fprintf(stdout,"INFO: \n");
  2660. fprintf(stdout,"INFO: CENTRING ......... Centring of the peak of the packet envelope.\n");
  2661. fprintf(stdout,"INFO: 0 gives a peak at centre: -ve values move the peak towards the start of packet\n");
  2662. fprintf(stdout,"INFO: +ve values move the peak towards the end of the packet.\n");
  2663. fprintf(stdout,"INFO: If the packet content has varying level, the true peak position may not correspond\n");
  2664. fprintf(stdout,"INFO: to the envelope peak position.\n");
  2665. fprintf(stdout,"INFO: \n");
  2666. fprintf(stdout,"INFO: STATIONARY PACKET PARAMS .......\n");
  2667. fprintf(stdout,"INFO: With this flag set, packet parameters are set at the outset of a packet,\n");
  2668. fprintf(stdout,"INFO: and remain the same until its end.\n");
  2669. fprintf(stdout,"INFO: With no flag set, frq and level parameters of partials continue to vary WITHIN the packets.\n");
  2670. break;
  2671. case(2):
  2672. fprintf(stdout,"INFO: SYNTHESIZE GLISTENING SOUNDS\n");
  2673. fprintf(stdout,"INFO: \n");
  2674. fprintf(stdout,"INFO: Creates a distribution of partials-components of spectrum (which may vary through time), varying in time and space.\n");
  2675. fprintf(stdout,"INFO: \n");
  2676. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------\n");
  2677. fprintf(stdout,"INFO: \n");
  2678. fprintf(stdout,"INFO: SPECTRUM DATA ..... A textfile Listing of partial ratios and relative levels, against time.\n");
  2679. fprintf(stdout,"INFO: Data is a text file of lines of data and every line must have the same number of entries.\n");
  2680. fprintf(stdout,"INFO: \n");
  2681. fprintf(stdout,"INFO: The 1ST ENTRY on each line is a time. Times must start at zero and increase.\n");
  2682. fprintf(stdout,"INFO: \n");
  2683. fprintf(stdout,"INFO: All EVEN NUMBERED entries are partial numbers\n");
  2684. fprintf(stdout,"INFO: For synthesizing tones, the first partial number on each line must be 1.\n");
  2685. fprintf(stdout,"INFO: Partial numbers must increase through a line.\n");
  2686. fprintf(stdout,"INFO: \n");
  2687. fprintf(stdout,"INFO: All other ODD NUMBERED entries are partial levels and may have any numeric value.\n");
  2688. fprintf(stdout,"INFO: -ve values invert the phase of the partial.\n");
  2689. fprintf(stdout,"INFO: \n");
  2690. fprintf(stdout,"INFO: SAMPLE_RATE ....... Sample rate of the synthesized sound.\n");
  2691. fprintf(stdout,"INFO: DURATION ............ Total Duration of the synthesized sound.\n");
  2692. fprintf(stdout,"INFO: FREQUENCY ......... Fundamental frequency of the synthesized sound (possibly time-varying).\n");
  2693. fprintf(stdout,"INFO: CHANNEL COUNT ... Number of output channels.\n");
  2694. fprintf(stdout,"INFO: MAX OCTAVE TRANSPOSITION.. Maximum transposition of spectral components.\n");
  2695. fprintf(stdout,"INFO: \n");
  2696. fprintf(stdout,"INFO: TIMESTEP ............ Average timestep between changes in partials-content of output.\n");
  2697. fprintf(stdout,"INFO: RISETIME ............ Time taken to attain max octave transposition range, at start of sound.\n");
  2698. fprintf(stdout,"INFO: FALLTIME ............ Time taken to return to minimal range.\n");
  2699. fprintf(stdout,"INFO: STEADY STATE ...... Time spent in minimal range at end of sound.\n");
  2700. fprintf(stdout,"INFO: FROM FUNDAMENTAL Initial rise in number of partials is from fundamental only.\n");
  2701. fprintf(stdout,"INFO: TO FUNDAMENTAL .... Final \"steady state\" gradually contracts to using fundamental only.\n");
  2702. fprintf(stdout,"INFO: SPLICETIME (mS).... Length of fade-in/out times of components in output sound, in milliseconds.\n");
  2703. fprintf(stdout,"INFO: PARTIALS IN PLAY . Number of partials used in any segment: If set to zero, number of partials used is random.\n");
  2704. fprintf(stdout,"INFO: MAXCHANGE PARTIALS .. As far as possible, always change partials used, from one segment to the next.\n");
  2705. fprintf(stdout,"INFO: \n");
  2706. fprintf(stdout,"INFO: SPATIALISE ............ Distribute components in space.\n");
  2707. fprintf(stdout,"INFO: EMERGENCE CHANNEL .. If spatial image emerges from a single channel, to fill the space, this is the channel.\n");
  2708. fprintf(stdout,"INFO: EMERGENCE TIME .... If spatial image emerges from a single channel, time taken to fully emerge.\n");
  2709. fprintf(stdout,"INFO: CONVERGENCE CHANNEL .. If spatial image converges to a single channel at end of sound, this is the channel.\n");
  2710. fprintf(stdout,"INFO: CONVERGENCE TIME . If spatial image converges to a single channel, time taken to fully converge.\n");
  2711. fprintf(stdout,"INFO: JUMP .................. Use same spatial position for all partials in a segment.\n");
  2712. fprintf(stdout,"INFO: ROTATION SPEED .... Rotation speed for Special Space Type 3 (only).\n");
  2713. fprintf(stdout,"INFO: \n");
  2714. fprintf(stdout,"INFO: SPECIAL SPACE TYPE (8-channel files only) .... Special types of spatialisation.\n");
  2715. fprintf(stdout,"INFO: 1: Left-Right Rand ........... Alternate Left and Right sides, random positions.\n");
  2716. fprintf(stdout,"INFO: 2: Front-Back Rand .......... Alternate Front and back areas of space , random positions.\n");
  2717. fprintf(stdout,"INFO: 3: Rotate ...................... (Requires a positive or negative rotation speed).\n");
  2718. fprintf(stdout,"INFO: 4: Superspace1 ............... Single channel positions only.\n");
  2719. fprintf(stdout,"INFO: 5: Superspace2 ............... Single channels and channel-pairs only.\n");
  2720. fprintf(stdout,"INFO: 6: Superspace3 ............... Single channels and channel-pairs and channel-triples only.\n");
  2721. fprintf(stdout,"INFO: 7: Superspace4 ............... Single channels, channel-pairs, channel-triples, square, diamond and all-positions.\n");
  2722. fprintf(stdout,"INFO: 8: Left-Right Alternate ....... Alternate Left and Right sides, using all channels of each.\n");
  2723. fprintf(stdout,"INFO: 9: Back-Front Alternate ...... Alternate Back and Front areas, using all channels of each.\n");
  2724. fprintf(stdout,"INFO: 10: Frameswitch ............... Alternate Between Square and Diamond 4-sets.\n");
  2725. fprintf(stdout,"INFO: 11: Triangle Rotate 1 ......... Rotate a triple of alternate channels, clockwise.\n");
  2726. fprintf(stdout,"INFO: 12: Triangle AntiRotate 1 ..... Rotate a triple of alternate channels, anticlockwise.\n");
  2727. fprintf(stdout,"INFO: 13: Triangle Rotate 2 ......... Rotate a channel and the pair opposite, clockwise.\n");
  2728. fprintf(stdout,"INFO: 14: Triangle AntiRotate 2 ..... Rotate a channel and the pair opposite, anticlockwise.\n");
  2729. break;
  2730. case(3):
  2731. fprintf(stdout,"INFO: SYNTHESIZE FRACTALLY-ARRAYED SEQUENCES OF SPIKES\n");
  2732. fprintf(stdout,"INFO: \n");
  2733. fprintf(stdout,"INFO: Creates waveform with fractal distribution of spikes.\n");
  2734. fprintf(stdout,"INFO: \n");
  2735. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------\n");
  2736. fprintf(stdout,"INFO: \n");
  2737. fprintf(stdout,"INFO: SAMPLE_RATE ....... Sample rate of the synthesized sound.\n");
  2738. fprintf(stdout,"INFO: DURATION ............ Total Duration of the synthesized sound.\n");
  2739. fprintf(stdout,"INFO: FREQUENCY ......... Fundamental frequency of the synthesized sound (possibly time-varying).\n");
  2740. fprintf(stdout,"INFO: \n");
  2741. fprintf(stdout,"INFO: Shape of waveform is \"ON OFF ON OFF TAIL\" where ...\n");
  2742. fprintf(stdout,"INFO: \"ON\" segments contain signal, and are of same duration.\n");
  2743. fprintf(stdout,"INFO: \"OFF\" segments contain NO signal, and are of same duration.\n");
  2744. fprintf(stdout,"INFO: \"TAIL\" (can be zero length) is additional silence at waveform end.\n");
  2745. fprintf(stdout,"INFO: The \"ON\" segments are then themselves divided in similar proportions, the resulting smaller \"ON\" segments similarly, and so on,\n");
  2746. fprintf(stdout,"INFO: producing a fractal distribution.\n");
  2747. fprintf(stdout,"INFO: Signal spikes are then placed in the \"ON\" segments.\n");
  2748. fprintf(stdout,"INFO: Spikes alternate from +ve to -ve at the specified level of fractalisation.\n");
  2749. fprintf(stdout,"INFO: \n");
  2750. fprintf(stdout,"INFO: SAMPLES IN SPIKE ATTACK ... Number of samples in the spike attack (can be zero).\n");
  2751. fprintf(stdout,"INFO: SLOPE OF SPIKE ATTACK ..... Slope of attack : 1 = linear : >1 rises slowly-then-faster : <1 rises fast-then-slower.\n");
  2752. fprintf(stdout,"INFO: SAMPLES IN SPIKE DECAY .... Number of samples in the spike decay (can be zero).\n");
  2753. fprintf(stdout,"INFO: SLOPE OF SPIKE DECAY ...... Slope of decay : 1 = linear : >1 falls fast-then-slower : <1 falls slowly-then-faster.\n");
  2754. fprintf(stdout,"INFO: RATIO ONSEG TO ONOFF GROUPLENGTH ............ Determines relative size of \"ON\" and \"OFF\" segments.\n");
  2755. fprintf(stdout,"INFO: RATIO ONOFFONOFF GROUPLENGTH TO WAVECYCLE LENGTH ............ \n");
  2756. fprintf(stdout,"INFO: Determines relative size of the 4 (\"ON\",\"OFF\",\"ON\",\"OFF\") segments group, and the total wavecycle length.\n");
  2757. fprintf(stdout,"INFO: RANDOMISATION OF SPIKES ............ Degree of time-randomisation of the spikes.\n");
  2758. fprintf(stdout,"INFO: FRACTALISATION LEVEL FOR SPIKES TO FLIP POS TO NEG ...... Level of fractalisation at which spikes flip from +ve to -ve.\n");
  2759. break;
  2760. }
  2761. break;
  2762. case(TAN_ONE):
  2763. fprintf(stdout,"INFO: PLAY REPETITIONS OF MONO SOUND ON TANGENT PATH TO AN 8-CHANNEL RING OF LSPKRS.\n");
  2764. fprintf(stdout,"INFO: \n");
  2765. fprintf(stdout,"INFO: loudspeaker array is numbered clockwise, starting with \"1\" at front-centre.\n");
  2766. fprintf(stdout,"INFO: \n");
  2767. fprintf(stdout,"INFO: MODES---------------------------------------------------------------\n");
  2768. fprintf(stdout,"INFO: \n");
  2769. fprintf(stdout,"INFO: Different modes have different tangent styles...\n");
  2770. fprintf(stdout,"INFO: \n");
  2771. fprintf(stdout,"INFO: FAR TANGENT .... For focus at speaker 1, starts along line at right-angles to speaker 2.\n");
  2772. fprintf(stdout,"INFO: NEAR TANGENT .... For focus at speaker 1, starts along line formed by speakers 2 and 3.\n");
  2773. fprintf(stdout,"INFO: \n");
  2774. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------\n");
  2775. fprintf(stdout,"INFO: \n");
  2776. fprintf(stdout,"INFO: DURATION ....... Duration of output file.\n");
  2777. fprintf(stdout,"INFO: \n");
  2778. fprintf(stdout,"INFO: EVENT COUNT ... Count of the events in the tangent stream (Single and Two src modes only).\n");
  2779. fprintf(stdout,"INFO: \n");
  2780. fprintf(stdout,"INFO: MAXIMUM ANGLE .. (Far Tangent Modes) The motion lies between 3 lspkr pairs (e.g. 1-2, 2-3, 3-4)\n");
  2781. fprintf(stdout,"INFO: Max angle of rotation of the motion lies between 3rd pair ( i.e. between 90 to 135 degrees).\n");
  2782. fprintf(stdout,"INFO: (lsprks 3-4 in the example)\n");
  2783. fprintf(stdout,"INFO: \n");
  2784. fprintf(stdout,"INFO: SKEW ....... .. (Near Tangent Modes) The motion lies between 3 lspkr pairs (e.g. 1-2, 2-3, 3-4)\n");
  2785. fprintf(stdout,"INFO: Skew is the ratio (0-1) of time spent between the last pair & the penultimate pair of lspkrs.\n");
  2786. fprintf(stdout,"INFO: (lspkr pairs 3-4 and 2-3, in the example)\n");
  2787. fprintf(stdout,"INFO: \n");
  2788. fprintf(stdout,"INFO: DECIMATION ..... Loudness decimation on passing from one event to the next.\n");
  2789. fprintf(stdout,"INFO: \n");
  2790. fprintf(stdout,"INFO: FOCUS POSITION .. Loudpseaker at which the motion ends (approaching motion) or begins (receding motion).\n");
  2791. fprintf(stdout,"INFO: \n");
  2792. fprintf(stdout,"INFO: JITTER .......... Randomisation of event timings (0-1, default 0) Can vary over time.\n");
  2793. fprintf(stdout,"INFO: \n");
  2794. fprintf(stdout,"INFO: DRAG ........... (Far Tangent Modes) Slows the pan-motion acceleration.\n");
  2795. fprintf(stdout,"INFO: Smaller values make stream proceed more slowly to (or from) the focus position.\n");
  2796. fprintf(stdout,"INFO: For approaching motion, 0.5 avoids the arrival being too fast to tell.\n");
  2797. fprintf(stdout,"INFO: For receding motion, 1.0, makes the initial motion rapid.\n");
  2798. fprintf(stdout,"INFO: \n");
  2799. fprintf(stdout,"INFO: RECEDE ........ Sounds Recede (default, sounds approach).\n");
  2800. fprintf(stdout,"INFO: \n");
  2801. fprintf(stdout,"INFO: AT LEFT ....... Motion is to or from the left of the focal lspkr (default: motion is to or from the right).\n");
  2802. fprintf(stdout,"INFO: \n");
  2803. fprintf(stdout,"INFO: Note that in the part of the stream closest to the focal lspkr,\n");
  2804. fprintf(stdout,"INFO: the SAME final (approaching) or initial (receding) event is repeated, at fixed level.\n");
  2805. fprintf(stdout,"INFO: These repeated events are ADDITIONAL to the event-count.\n");
  2806. break;
  2807. case(TAN_TWO):
  2808. fprintf(stdout,"INFO: PLAY REPETITIONS OF TWO MERGED MONO SOUNDS ON TANGENT PATH TO AN 8-CHANNEL RING OF LSPKRS.\n");
  2809. fprintf(stdout,"INFO: \n");
  2810. fprintf(stdout,"INFO: loudspeaker array is numbered clockwise, starting with \"1\" at front-centre.\n");
  2811. fprintf(stdout,"INFO: \n");
  2812. fprintf(stdout,"INFO: The two sources are superimposed along the tangent path, beginning with only the 1st sound\n");
  2813. fprintf(stdout,"INFO: and gradually mixing in more of the 2nd sound from one event to the next.\n");
  2814. fprintf(stdout,"INFO: If one input is a filtered version of the other, this suggest it might be more distant.\n");
  2815. fprintf(stdout,"INFO: Hence for approaching motion the filterd sound should be first,\n");
  2816. fprintf(stdout,"INFO: whereas for receding motion the filtered sound should be second.\n");
  2817. fprintf(stdout,"INFO: \n");
  2818. fprintf(stdout,"INFO: MODES---------------------------------------------------------------\n");
  2819. fprintf(stdout,"INFO: \n");
  2820. fprintf(stdout,"INFO: Different modes have different tangent styles...\n");
  2821. fprintf(stdout,"INFO: \n");
  2822. fprintf(stdout,"INFO: FAR TANGENT .... For focus at speaker 1, starts along line at right-angles to speaker 2.\n");
  2823. fprintf(stdout,"INFO: NEAR TANGENT .... For focus at speaker 1, starts along line formed by speakers 2 and 3.\n");
  2824. fprintf(stdout,"INFO: \n");
  2825. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------\n");
  2826. fprintf(stdout,"INFO: \n");
  2827. fprintf(stdout,"INFO: DURATION ....... Duration of output file.\n");
  2828. fprintf(stdout,"INFO: \n");
  2829. fprintf(stdout,"INFO: EVENT COUNT ... Count of the events in the tangent stream (Single and Two src modes only).\n");
  2830. fprintf(stdout,"INFO: \n");
  2831. fprintf(stdout,"INFO: MAXIMUM ANGLE .. (Far Tangent Modes) The motion lies between 3 lspkr pairs (e.g. 1-2, 2-3, 3-4)\n");
  2832. fprintf(stdout,"INFO: Max angle of rotation of the motion lies between 3rd pair ( i.e. between 90 to 135 degrees).\n");
  2833. fprintf(stdout,"INFO: (lsprks 3-4 in the example)\n");
  2834. fprintf(stdout,"INFO: \n");
  2835. fprintf(stdout,"INFO: SKEW ....... .. (Near Tangent Modes) The motion lies between 3 lspkr pairs (e.g. 1-2, 2-3, 3-4)\n");
  2836. fprintf(stdout,"INFO: Skew is the ratio (0-1) of time spent between the last pair & the penultimate pair of lspkrs.\n");
  2837. fprintf(stdout,"INFO: (lspkr pairs 3-4 and 2-3, in the example)\n");
  2838. fprintf(stdout,"INFO: \n");
  2839. fprintf(stdout,"INFO: DECIMATION ..... Loudness decimation on passing from one event to the next.\n");
  2840. fprintf(stdout,"INFO: \n");
  2841. fprintf(stdout,"INFO: BALANCE ACCUMULATOR ... Progressive accumulation of 2nd sound in the mix.\n");
  2842. fprintf(stdout,"INFO: For an accumulation value of 0.33, succeesive mix would be [1.0 : 0.0] [0.66 : 0.33] [0.44 : 0.56] etc.\n");
  2843. fprintf(stdout,"INFO: \n");
  2844. fprintf(stdout,"INFO: FOCUS POSITION .. Loudpseaker at which the motion ends (approaching motion) or begins (receding motion).\n");
  2845. fprintf(stdout,"INFO: \n");
  2846. fprintf(stdout,"INFO: JITTER .......... Randomisation of event timings (0-1, default 0) Can vary over time.\n");
  2847. fprintf(stdout,"INFO: \n");
  2848. fprintf(stdout,"INFO: DRAG ........... (Far Tangent Modes) Slows the pan-motion acceleration.\n");
  2849. fprintf(stdout,"INFO: Smaller values make stream proceed more slowly to (or from) the focus position.\n");
  2850. fprintf(stdout,"INFO: For approaching motion, 0.5 avoids the arrival being too fast to tell.\n");
  2851. fprintf(stdout,"INFO: For receding motion, 1.0, makes the initial motion rapid.\n");
  2852. fprintf(stdout,"INFO: \n");
  2853. fprintf(stdout,"INFO: RECEDE ........ Sounds Recede (default, sounds approach).\n");
  2854. fprintf(stdout,"INFO: \n");
  2855. fprintf(stdout,"INFO: AT LEFT ....... Motion is to or from the left of the focal lspkr (default: motion is to or from the right).\n");
  2856. fprintf(stdout,"INFO: \n");
  2857. fprintf(stdout,"INFO: Note that in the part of the stream closest to the focal lspkr,\n");
  2858. fprintf(stdout,"INFO: the SAME final (approaching) or initial (receding) event is repeated, at fixed level.\n");
  2859. fprintf(stdout,"INFO: These repeated events are ADDITIONAL to the event-count, and there are no balance changes here.\n");
  2860. break;
  2861. case(TAN_SEQ):
  2862. fprintf(stdout,"INFO: PLAY SEQUENCE OF MONO SOUNDS ON TANGENT PATH TO AN 8-CHANNEL RING OF LSPKRS.\n");
  2863. fprintf(stdout,"INFO: \n");
  2864. fprintf(stdout,"INFO: loudspeaker array is numbered clockwise, starting with \"1\" at front-centre.\n");
  2865. fprintf(stdout,"INFO: \n");
  2866. fprintf(stdout,"INFO: MODES---------------------------------------------------------------\n");
  2867. fprintf(stdout,"INFO: \n");
  2868. fprintf(stdout,"INFO: Different modes have different tangent styles...\n");
  2869. fprintf(stdout,"INFO: \n");
  2870. fprintf(stdout,"INFO: FAR TANGENT .... For focus at speaker 1, starts along line at right-angles to speaker 2.\n");
  2871. fprintf(stdout,"INFO: NEAR TANGENT .... For focus at speaker 1, starts along line formed by speakers 2 and 3.\n");
  2872. fprintf(stdout,"INFO: \n");
  2873. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------\n");
  2874. fprintf(stdout,"INFO: \n");
  2875. fprintf(stdout,"INFO: DURATION ....... Duration of output file.\n");
  2876. fprintf(stdout,"INFO: \n");
  2877. fprintf(stdout,"INFO: MAXIMUM ANGLE .. (Far Tangent Modes) The motion lies between 3 lspkr pairs (e.g. 1-2, 2-3, 3-4)\n");
  2878. fprintf(stdout,"INFO: Max angle of rotation of the motion lies between 3rd pair ( i.e. between 90 to 135 degrees).\n");
  2879. fprintf(stdout,"INFO: (lsprks 3-4 in the example)\n");
  2880. fprintf(stdout,"INFO: \n");
  2881. fprintf(stdout,"INFO: SKEW ....... .. (Near Tangent Modes) The motion lies between 3 lspkr pairs (e.g. 1-2, 2-3, 3-4)\n");
  2882. fprintf(stdout,"INFO: Skew is the ratio (0-1) of time spent between the last pair & the penultimate pair of lspkrs.\n");
  2883. fprintf(stdout,"INFO: (lspkr pairs 3-4 and 2-3, in the example)\n");
  2884. fprintf(stdout,"INFO: \n");
  2885. fprintf(stdout,"INFO: DECIMATION ..... Loudness decimation on passing from one event to the next.\n");
  2886. fprintf(stdout,"INFO: \n");
  2887. fprintf(stdout,"INFO: FOCUS POSITION .. Loudpseaker at which the motion ends (approaching motion) or begins (receding motion).\n");
  2888. fprintf(stdout,"INFO: \n");
  2889. fprintf(stdout,"INFO: JITTER .......... Randomisation of event timings (0-1, default 0) Can vary over time.\n");
  2890. fprintf(stdout,"INFO: \n");
  2891. fprintf(stdout,"INFO: DRAG ........... (Far Tangent Modes) Slows the pan-motion acceleration.\n");
  2892. fprintf(stdout,"INFO: Smaller values make stream proceed more slowly to (or from) the focus position.\n");
  2893. fprintf(stdout,"INFO: For approaching motion, 0.5 avoids the arrival being too fast to tell.\n");
  2894. fprintf(stdout,"INFO: For receding motion, 1.0, makes the initial motion rapid.\n");
  2895. fprintf(stdout,"INFO: \n");
  2896. fprintf(stdout,"INFO: RECEDE ........ Sounds Recede (default, sounds approach).\n");
  2897. fprintf(stdout,"INFO: \n");
  2898. fprintf(stdout,"INFO: AT LEFT ....... Motion is to or from the left of the focal lspkr (default: motion is to or from the right).\n");
  2899. fprintf(stdout,"INFO: \n");
  2900. fprintf(stdout,"INFO: Note that in the part of the stream closest to the focal lspkr,\n");
  2901. fprintf(stdout,"INFO: the SAME final (approaching) or initial (receding) event is repeated, at fixed level\n");
  2902. fprintf(stdout,"INFO: and these events are ADDED to the input events.\n");
  2903. break;
  2904. case(TAN_LIST):
  2905. fprintf(stdout,"INFO: PLAY SEQUENCE OF MONO SOUNDS (IN A TEXTFILE LIST OF SOUNDS) ON TANGENT PATH TO AN 8-CHANNEL RING OF LSPKRS.\n");
  2906. fprintf(stdout,"INFO: \n");
  2907. fprintf(stdout,"INFO: loudspeaker array is numbered clockwise, starting with \"1\" at front-centre.\n");
  2908. fprintf(stdout,"INFO: \n");
  2909. fprintf(stdout,"INFO: MODES---------------------------------------------------------------\n");
  2910. fprintf(stdout,"INFO: \n");
  2911. fprintf(stdout,"INFO: Different modes have different tangent styles...\n");
  2912. fprintf(stdout,"INFO: \n");
  2913. fprintf(stdout,"INFO: FAR TANGENT .... For focus at speaker 1, starts along line at right-angles to speaker 2.\n");
  2914. fprintf(stdout,"INFO: NEAR TANGENT .... For focus at speaker 1, starts along line formed by speakers 2 and 3.\n");
  2915. fprintf(stdout,"INFO: \n");
  2916. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------\n");
  2917. fprintf(stdout,"INFO: \n");
  2918. fprintf(stdout,"INFO: DURATION ....... Duration of output file.\n");
  2919. fprintf(stdout,"INFO: \n");
  2920. fprintf(stdout,"INFO: MAXIMUM ANGLE .. (Far Tangent Modes) The motion lies between 3 lspkr pairs (e.g. 1-2, 2-3, 3-4)\n");
  2921. fprintf(stdout,"INFO: Max angle of rotation of the motion lies between 3rd pair ( i.e. between 90 to 135 degrees).\n");
  2922. fprintf(stdout,"INFO: (lsprks 3-4 in the example)\n");
  2923. fprintf(stdout,"INFO: \n");
  2924. fprintf(stdout,"INFO: SKEW ....... .. (Near Tangent Modes) The motion lies between 3 lspkr pairs (e.g. 1-2, 2-3, 3-4)\n");
  2925. fprintf(stdout,"INFO: Skew is the ratio (0-1) of time spent between the last pair & the penultimate pair of lspkrs.\n");
  2926. fprintf(stdout,"INFO: (lspkr pairs 3-4 and 2-3, in the example)\n");
  2927. fprintf(stdout,"INFO: \n");
  2928. fprintf(stdout,"INFO: DECIMATION ..... Loudness decimation on passing from one event to the next.\n");
  2929. fprintf(stdout,"INFO: \n");
  2930. fprintf(stdout,"INFO: FOCUS POSITION .. Loudpseaker at which the motion ends (approaching motion) or begins (receding motion).\n");
  2931. fprintf(stdout,"INFO: \n");
  2932. fprintf(stdout,"INFO: JITTER .......... Randomisation of event timings (0-1, default 0) Can vary over time.\n");
  2933. fprintf(stdout,"INFO: \n");
  2934. fprintf(stdout,"INFO: DRAG ........... Slows the pan-motion acceleration.\n");
  2935. fprintf(stdout,"INFO: Smaller values make stream proceed more slowly to (or from) the focus position.\n");
  2936. fprintf(stdout,"INFO: For approaching motion, 0.5 avoids the arrival being too fast to tell.\n");
  2937. fprintf(stdout,"INFO: For receding motion, 1.0, makes the initial motion rapid.\n");
  2938. fprintf(stdout,"INFO: \n");
  2939. fprintf(stdout,"INFO: RECEDE ........ Sounds Recede (default, sounds approach).\n");
  2940. fprintf(stdout,"INFO: \n");
  2941. fprintf(stdout,"INFO: AT LEFT ....... Motion is to or from the left of the focal lspkr (default: motion is to or from the right).\n");
  2942. fprintf(stdout,"INFO: \n");
  2943. fprintf(stdout,"INFO: Note that in the part of the stream closest to the focal lspkr,\n");
  2944. fprintf(stdout,"INFO: the SAME final (approaching) or initial (receding) event is repeated, at fixed level.\n");
  2945. fprintf(stdout,"INFO: and these repeated events are ADDED to the input events.\n");
  2946. break;
  2947. case(SPECTWIN):
  2948. fprintf(stdout,"INFO: INTERBREED THE SPECTRAL CONTENT OF TWO DIFFERENT SOUNDS\n");
  2949. fprintf(stdout,"INFO: \n");
  2950. fprintf(stdout,"INFO: Spectral envelope may be drawn over the local-maxima of the channel-levels (Formant Envelope)\n");
  2951. fprintf(stdout,"INFO: or simply follow the amplitude changes from one channel to the next (Absolute Envelope)\n");
  2952. fprintf(stdout,"info: Spectral envelops are interbred as follows ....\n");
  2953. fprintf(stdout,"INFO: \n");
  2954. fprintf(stdout,"INFO: MODES---------------------------------------------------------------\n");
  2955. fprintf(stdout,"INFO: \n");
  2956. fprintf(stdout,"INFO: FORMANTS SND 1 WITH FORMANTS SND 2.\n");
  2957. fprintf(stdout,"INFO: FORMANTS SND 1 WITH ABSOLUTE SND 2.\n");
  2958. fprintf(stdout,"INFO: ABSOLUTE SND 1 WITH FORMANTS SND 2.\n");
  2959. fprintf(stdout,"INFO: ABSOLUTE SND 1 WITH ABSOLUTE SND 2.\n");
  2960. fprintf(stdout,"INFO: \n");
  2961. fprintf(stdout,"INFO: PARAMETERS---------------------------------------------------------------\n");
  2962. fprintf(stdout,"INFO: \n");
  2963. fprintf(stdout,"INFO: FREQUENCY INTERPOLATION .... Dominance of spectral frequencies of 2nd input file.\n");
  2964. fprintf(stdout,"INFO: Values > 0 move channel frequencies from those of file 1 towards those of file 2.\n");
  2965. fprintf(stdout,"INFO: ENVELOPE INTERPOLATION ..... Dominance of spectral envelope of 2nd input file.\n");
  2966. fprintf(stdout,"INFO: Values > 0 move the envelope from that of file 1 towards that of file 2.\n");
  2967. fprintf(stdout,"INFO: Note that when Formant and Absolute envelopes are combined,\n");
  2968. fprintf(stdout,"INFO: the formant peaks are moved onto the absolute envelope,\n");
  2969. fprintf(stdout,"INFO: with all other channels moving proportionately.\n");
  2970. fprintf(stdout,"INFO: SPECTRAL DUPLICATIONS .... Adds transposed copies to spectrum 1, before proceeding.\n");
  2971. fprintf(stdout,"INFO: DUPLICATION INTERVAL .... Transposition from one duplication to next, in semitones.\n");
  2972. fprintf(stdout,"INFO: DUPLICATION ROLLOFF .... Level change in passing to next higher duplication.\n");
  2973. break;
  2974. case(TRANSIT):
  2975. fprintf(stdout,"INFO: CREATE MULTICHANNEL MIX WHICH POSITIONS REPETITIONS OF A MONO SOUND\n");
  2976. fprintf(stdout,"INFO: ON TANGENT PATH TO AND FROM AN 8-CHANNEL RING OF LSPKRS.\n");
  2977. fprintf(stdout,"INFO: \n");
  2978. fprintf(stdout,"INFO: Loudspeakers assumed to be equidistant in a ring, and numbered clockwise.\n");
  2979. fprintf(stdout,"INFO: \n");
  2980. fprintf(stdout,"INFO: MODES---------------------------------------------------------------\n");
  2981. fprintf(stdout,"INFO: \n");
  2982. fprintf(stdout,"INFO: GLANCING EDGEWISE CROSSING CLOSE CENTRAL\n");
  2983. fprintf(stdout,"INFO: ---O->> ->>--O---O->> O O O O\n");
  2984. fprintf(stdout,"INFO: O O ->>--O-------O->> O O\n");
  2985. fprintf(stdout,"INFO: O O ->>-O--------------O->>\n");
  2986. fprintf(stdout,"INFO: O O O O ->>-O---------------O->>\n");
  2987. fprintf(stdout,"INFO: O O O O\n");
  2988. fprintf(stdout,"INFO: O O O O O O\n");
  2989. fprintf(stdout,"INFO: O O O O O O O\n");
  2990. fprintf(stdout,"INFO: \n");
  2991. fprintf(stdout,"INFO: PARAMETERS---------------------------------------------------------------\n");
  2992. fprintf(stdout,"INFO: \n");
  2993. fprintf(stdout,"INFO: FOCUS ............ Centre of motion. Integer for odd modes, 1.5 ; 2.5 etc for even modes.\n");
  2994. fprintf(stdout,"INFO: DURATION ......... Duration of motion from centre to edge (ONLY).\n");
  2995. fprintf(stdout,"INFO: REPETITIONS ...... Count of events from centre to edge (ONLY).\n");
  2996. fprintf(stdout,"INFO: \n");
  2997. fprintf(stdout,"INFO: Total duration and number of repetitions will be double these values, as the mix approaches and then recedes.\n");
  2998. fprintf(stdout,"INFO: \n");
  2999. fprintf(stdout,"INFO: MAXIMUM RANGE .... (Modes 1-4) Maximum angle from centreline reached ( < 90).\n");
  3000. fprintf(stdout,"INFO: (Mode 5) Maximum distance from centre, where centre-to-loudspeaker distance is 1.\n");
  3001. fprintf(stdout,"INFO: DECIMATION ....... Gain multiplier (>0 <1) on passing from one event to the next, away from the focus.\n");
  3002. fprintf(stdout,"INFO: \n");
  3003. fprintf(stdout,"INFO: To extend the motion further (which increases the duration and the number of repetitions)....\n");
  3004. fprintf(stdout,"INFO: the (gain) decimation can be modified with these 4 parameters ... \n");
  3005. fprintf(stdout,"INFO: \n");
  3006. fprintf(stdout,"INFO: THRESHOLD FOR EXTENSION.. Value of (decimated) gain at which gain the decimation starts to increase.\n");
  3007. fprintf(stdout,"INFO: DECIMATION MAXIMUM ......... Maximum level of decimation after it starts to increase (> DECIMATION).\n");
  3008. fprintf(stdout,"INFO: FINAL GAIN ....................... Decimated gain at which the event concludes ( < THRESHOLD).\n");
  3009. fprintf(stdout,"INFO: MAXIMUM DURATION .......... Maximum duration of motion from centre to edge (in case FINAL GAIN is never reached) ( >= DURATION).\n");
  3010. fprintf(stdout,"INFO: \n");
  3011. fprintf(stdout,"INFO: LEFTWARDS FROM FOCUS .... Motion towards left of focal position (Default: motion towards right).\n");
  3012. break;
  3013. case(TRANSITF):
  3014. fprintf(stdout,"INFO: CREATE MULTICHANNEL MIX WHICH POSITIONS REPETITIONS OF A PAIR OF MONO SOUNDS\n");
  3015. fprintf(stdout,"INFO: ON TANGENT PATH TO AND FROM AN 8-CHANNEL RING OF LSPKRS.\n");
  3016. fprintf(stdout,"INFO: \n");
  3017. fprintf(stdout,"INFO: The 2nd sound is gradually mixed in to the first as distance from focus increases.\n");
  3018. fprintf(stdout,"INFO: If 2nd sound is a filtered version of the first, this may suggest greater distance.\n");
  3019. fprintf(stdout,"INFO: Loudspeakers assumed to be equidistant in a ring, and numbered clockwise.\n");
  3020. fprintf(stdout,"INFO: \n");
  3021. fprintf(stdout,"INFO: MODES---------------------------------------------------------------\n");
  3022. fprintf(stdout,"INFO: \n");
  3023. fprintf(stdout,"INFO: GLANCING EDGEWISE CROSSING CLOSE CENTRAL\n");
  3024. fprintf(stdout,"INFO: ---O->> ->>--O---O->> O O O O\n");
  3025. fprintf(stdout,"INFO: O O ->>--O-------O->> O O\n");
  3026. fprintf(stdout,"INFO: O O ->>-O--------------O->>\n");
  3027. fprintf(stdout,"INFO: O O O O ->>-O---------------O->>\n");
  3028. fprintf(stdout,"INFO: O O O O\n");
  3029. fprintf(stdout,"INFO: O O O O O O\n");
  3030. fprintf(stdout,"INFO: O O O O O O O\n");
  3031. fprintf(stdout,"INFO: \n");
  3032. fprintf(stdout,"INFO: PARAMETERS---------------------------------------------------------------\n");
  3033. fprintf(stdout,"INFO: \n");
  3034. fprintf(stdout,"INFO: FOCUS ............ Centre of motion. Integer for odd modes, 1.5 ; 2.5 etc for even modes.\n");
  3035. fprintf(stdout,"INFO: DURATION ......... Duration of motion from centre to edge (ONLY).\n");
  3036. fprintf(stdout,"INFO: REPETITIONS ...... Count of events from centre to edge (ONLY).\n");
  3037. fprintf(stdout,"INFO: \n");
  3038. fprintf(stdout,"INFO: Total duration and number of repetitions will be double these values, as the mix approaches and then recedes.\n");
  3039. fprintf(stdout,"INFO: \n");
  3040. fprintf(stdout,"INFO: MAXIMUM RANGE .... (Modes 1-4) Maximum angle from centreline reached ( < 90).\n");
  3041. fprintf(stdout,"INFO: (Mode 5) Maximum distance from centre, where centre-to-loudspeaker distance is 1.\n");
  3042. fprintf(stdout,"INFO: DECIMATION ....... Gain multiplier (>0 <1) on passing from one event to the next, away from the focus.\n");
  3043. fprintf(stdout,"INFO: BALANCE DECIMATION ..Proportion of 2nd sound mixed into first as sound becomes more distant from focus.\n");
  3044. fprintf(stdout,"INFO: \n");
  3045. fprintf(stdout,"INFO: To extend the motion further (which increases the duration and the number of repetitions)....\n");
  3046. fprintf(stdout,"INFO: the (gain) decimation can be modified with these 4 parameters ... \n");
  3047. fprintf(stdout,"INFO: \n");
  3048. fprintf(stdout,"INFO: THRESHOLD FOR EXTENSION.. Value of (decimated) gain at which gain the decimation starts to increase.\n");
  3049. fprintf(stdout,"INFO: DECIMATION MAXIMUM ......... Maximum level of decimation after it starts to increase (> DECIMATION).\n");
  3050. fprintf(stdout,"INFO: FINAL GAIN ....................... Decimated gain at which the event concludes ( < THRESHOLD).\n");
  3051. fprintf(stdout,"INFO: MAXIMUM DURATION .......... Maximum duration of motion from centre to edge (in case FINAL GAIN is never reached) ( >= DURATION).\n");
  3052. fprintf(stdout,"INFO: \n");
  3053. fprintf(stdout,"INFO: LEFTWARDS FROM FOCUS .... Motion towards left of focal position (Default: motion towards right).\n");
  3054. break;
  3055. case(TRANSITD):
  3056. fprintf(stdout,"INFO: CREATE MULTICHANNEL MIX WHICH POSITIONS REPETITIONS OF A MONO SOUND\n");
  3057. fprintf(stdout,"INFO: ON TANGENT PATH TO AND FROM AN 8-CHANNEL RING OF LSPKRS,\n");
  3058. fprintf(stdout,"INFO: SHIFTING TO 2nd SOUND ON PASSING FOCUS.\n");
  3059. fprintf(stdout,"INFO: \n");
  3060. fprintf(stdout,"INFO: The 2nd sound replaces the first once the focus of the motion is passed.\n");
  3061. fprintf(stdout,"INFO: If the 2nd sound is a pitch-shifted version of the 1st, this may suggest doppler-shift.\n");
  3062. fprintf(stdout,"INFO: \n");
  3063. fprintf(stdout,"INFO: Additional sounds may be input, to place at the centre point of the mix (near the focus)\n");
  3064. fprintf(stdout,"INFO: suggesting gradual changes in pitch at the doppler-shift moment.\n");
  3065. fprintf(stdout,"INFO: \n");
  3066. fprintf(stdout,"INFO: Loudspeakers assumed to be equidistant in a ring, and numbered clockwise.\n");
  3067. fprintf(stdout,"INFO: \n");
  3068. fprintf(stdout,"INFO: MODES---------------------------------------------------------------\n");
  3069. fprintf(stdout,"INFO: \n");
  3070. fprintf(stdout,"INFO: GLANCING EDGEWISE CROSSING CLOSE CENTRAL\n");
  3071. fprintf(stdout,"INFO: ---O->> ->>--O---O->> O O O O\n");
  3072. fprintf(stdout,"INFO: O O ->>--O-------O->> O O\n");
  3073. fprintf(stdout,"INFO: O O ->>-O--------------O->>\n");
  3074. fprintf(stdout,"INFO: O O O O ->>-O---------------O->>\n");
  3075. fprintf(stdout,"INFO: O O O O\n");
  3076. fprintf(stdout,"INFO: O O O O O O\n");
  3077. fprintf(stdout,"INFO: O O O O O O O\n");
  3078. fprintf(stdout,"INFO: \n");
  3079. fprintf(stdout,"INFO: PARAMETERS---------------------------------------------------------------\n");
  3080. fprintf(stdout,"INFO: \n");
  3081. fprintf(stdout,"INFO: FOCUS ............ Centre of motion. Integer for odd modes, 1.5 ; 2.5 etc for even modes.\n");
  3082. fprintf(stdout,"INFO: DURATION ......... Duration of motion from centre to edge (ONLY).\n");
  3083. fprintf(stdout,"INFO: REPETITIONS ...... Count of events from centre to edge (ONLY).\n");
  3084. fprintf(stdout,"INFO: \n");
  3085. fprintf(stdout,"INFO: Total duration and number of repetitions will be double these values, as the mix approaches and then recedes.\n");
  3086. fprintf(stdout,"INFO: \n");
  3087. fprintf(stdout,"INFO: MAXIMUM RANGE .... (Modes 1-4) Maximum angle from centreline reached ( < 90).\n");
  3088. fprintf(stdout,"INFO: (Mode 5) Maximum distance from centre, where centre-to-loudspeaker distance is 1.\n");
  3089. fprintf(stdout,"INFO: DECIMATION ....... Gain multiplier (>0 <1) on passing from one event to the next, away from the focus.\n");
  3090. fprintf(stdout,"INFO: \n");
  3091. fprintf(stdout,"INFO: To extend the motion further (which increases the duration and the number of repetitions)....\n");
  3092. fprintf(stdout,"INFO: the (gain) decimation can be modified with these 4 parameters ... \n");
  3093. fprintf(stdout,"INFO: \n");
  3094. fprintf(stdout,"INFO: THRESHOLD FOR EXTENSION.. Value of (decimated) gain at which gain the decimation starts to increase.\n");
  3095. fprintf(stdout,"INFO: DECIMATION MAXIMUM ......... Maximum level of decimation after it starts to increase (> DECIMATION).\n");
  3096. fprintf(stdout,"INFO: FINAL GAIN ....................... Decimated gain at which the event concludes ( < THRESHOLD).\n");
  3097. fprintf(stdout,"INFO: MAXIMUM DURATION .......... Maximum duration of motion from centre to edge (in case FINAL GAIN is never reached) ( >= DURATION).\n");
  3098. fprintf(stdout,"INFO: \n");
  3099. fprintf(stdout,"INFO: LEFTWARDS FROM FOCUS .... Motion towards left of focal position (Default: motion towards right).\n");
  3100. break;
  3101. case(TRANSITFD):
  3102. fprintf(stdout,"INFO: CREATE MULTICHANNEL MIX WHICH POSITIONS REPETITIONS OF A PAIR OF MONO SOUNDS\n");
  3103. fprintf(stdout,"INFO: ON TANGENT PATH TO AND FROM AN 8-CHANNEL RING OF LSPKRS,\n");
  3104. fprintf(stdout,"INFO: SHIFTING TO 2nd PAIR ON PASSING FOCUS.\n");
  3105. fprintf(stdout,"INFO: \n");
  3106. fprintf(stdout,"INFO: The 2nd sound is gradually mixed in to the first as distance from focus increases.\n");
  3107. fprintf(stdout,"INFO: If 2nd sound is a filtered version of the first, this may suggest greater distance.\n");
  3108. fprintf(stdout,"INFO: \n");
  3109. fprintf(stdout,"INFO: The 3rd sound replaces the first once the focus of the motion is passed.\n");
  3110. fprintf(stdout,"INFO: If the 3rd sound is a pitch-shifted version of the 1st, this may suggest doppler-shift.\n");
  3111. fprintf(stdout,"INFO: \n");
  3112. fprintf(stdout,"INFO: The 4th sound is gradually mixed in to the 3rd, as with sounds 1 and 2.\n");
  3113. fprintf(stdout,"INFO: \n");
  3114. fprintf(stdout,"INFO: Additional sounds may be input, to place at the centre point of the mix (near the focus)\n");
  3115. fprintf(stdout,"INFO: suggesting gradual changes in pitch at the doppler-shift moment.\n");
  3116. fprintf(stdout,"INFO: \n");
  3117. fprintf(stdout,"INFO: Loudspeakers assumed to be equidistant in a ring, and numbered clockwise.\n");
  3118. fprintf(stdout,"INFO: \n");
  3119. fprintf(stdout,"INFO: MODES---------------------------------------------------------------\n");
  3120. fprintf(stdout,"INFO: \n");
  3121. fprintf(stdout,"INFO: GLANCING EDGEWISE CROSSING CLOSE CENTRAL\n");
  3122. fprintf(stdout,"INFO: ---O->> ->>--O---O->> O O O O\n");
  3123. fprintf(stdout,"INFO: O O ->>--O-------O->> O O\n");
  3124. fprintf(stdout,"INFO: O O ->>-O--------------O->>\n");
  3125. fprintf(stdout,"INFO: O O O O ->>-O---------------O->>\n");
  3126. fprintf(stdout,"INFO: O O O O\n");
  3127. fprintf(stdout,"INFO: O O O O O O\n");
  3128. fprintf(stdout,"INFO: O O O O O O O\n");
  3129. fprintf(stdout,"INFO: \n");
  3130. fprintf(stdout,"INFO: PARAMETERS---------------------------------------------------------------\n");
  3131. fprintf(stdout,"INFO: \n");
  3132. fprintf(stdout,"INFO: FOCUS ............ Centre of motion. Integer for odd modes, 1.5 ; 2.5 etc for even modes.\n");
  3133. fprintf(stdout,"INFO: DURATION ......... Duration of motion from centre to edge (ONLY).\n");
  3134. fprintf(stdout,"INFO: REPETITIONS ...... Count of events from centre to edge (ONLY).\n");
  3135. fprintf(stdout,"INFO: \n");
  3136. fprintf(stdout,"INFO: Total duration and number of repetitions will be double these values, as the mix approaches and then recedes.\n");
  3137. fprintf(stdout,"INFO: \n");
  3138. fprintf(stdout,"INFO: MAXIMUM RANGE .... (Modes 1-4) Maximum angle from centreline reached ( < 90).\n");
  3139. fprintf(stdout,"INFO: (Mode 5) Maximum distance from centre, where centre-to-loudspeaker distance is 1.\n");
  3140. fprintf(stdout,"INFO: DECIMATION ....... Gain multiplier (>0 <1) on passing from one event to the next, away from the focus.\n");
  3141. fprintf(stdout,"INFO: BALANCE DECIMATION ..Proportion of 2nd(4th) sound mixed into 1st(3rd) as sound becomes more distant from focus.\n");
  3142. fprintf(stdout,"INFO: \n");
  3143. fprintf(stdout,"INFO: To extend the motion further (which increases the duration and the number of repetitions)....\n");
  3144. fprintf(stdout,"INFO: the (gain) decimation can be modified with these 4 parameters ... \n");
  3145. fprintf(stdout,"INFO: \n");
  3146. fprintf(stdout,"INFO: THRESHOLD FOR EXTENSION.. Value of (decimated) gain at which gain the decimation starts to increase.\n");
  3147. fprintf(stdout,"INFO: DECIMATION MAXIMUM ......... Maximum level of decimation after it starts to increase (> DECIMATION).\n");
  3148. fprintf(stdout,"INFO: FINAL GAIN ....................... Decimated gain at which the event concludes ( < THRESHOLD).\n");
  3149. fprintf(stdout,"INFO: MAXIMUM DURATION .......... Maximum duration of motion from centre to edge (in case FINAL GAIN is never reached) ( >= DURATION).\n");
  3150. fprintf(stdout,"INFO: \n");
  3151. fprintf(stdout,"INFO: LEFTWARDS FROM FOCUS .... Motion towards left of focal position (Default: motion towards right).\n");
  3152. break;
  3153. case(TRANSITS):
  3154. fprintf(stdout,"INFO: CREATE MULTICHANNEL MIX WHICH POSITIONS A SEQUENCE OF MONO SOUND\n");
  3155. fprintf(stdout,"INFO: ON TANGENT PATH TO AND FROM AN 8-CHANNEL RING OF LSPKRS.\n");
  3156. fprintf(stdout,"INFO: \n");
  3157. fprintf(stdout,"INFO: Loudspeakers assumed to be equidistant in a ring, and numbered clockwise.\n");
  3158. fprintf(stdout,"INFO: \n");
  3159. fprintf(stdout,"INFO: MODES---------------------------------------------------------------\n");
  3160. fprintf(stdout,"INFO: \n");
  3161. fprintf(stdout,"INFO: GLANCING EDGEWISE CROSSING CLOSE CENTRAL\n");
  3162. fprintf(stdout,"INFO: ---O->> ->>--O---O->> O O O O\n");
  3163. fprintf(stdout,"INFO: O O ->>--O-------O->> O O\n");
  3164. fprintf(stdout,"INFO: O O ->>-O--------------O->>\n");
  3165. fprintf(stdout,"INFO: O O O O ->>-O---------------O->>\n");
  3166. fprintf(stdout,"INFO: O O O O\n");
  3167. fprintf(stdout,"INFO: O O O O O O\n");
  3168. fprintf(stdout,"INFO: O O O O O O O\n");
  3169. fprintf(stdout,"INFO: \n");
  3170. fprintf(stdout,"INFO: PARAMETERS---------------------------------------------------------------\n");
  3171. fprintf(stdout,"INFO: \n");
  3172. fprintf(stdout,"INFO: FOCUS ............ Centre of motion. Integer for odd modes, 1.5 ; 2.5 etc for even modes.\n");
  3173. fprintf(stdout,"INFO: DURATION ......... Duration of motion from centre to edge (ONLY).\n");
  3174. fprintf(stdout,"INFO: \n");
  3175. fprintf(stdout,"INFO: Total duration will be double this value, as the mix approaches and then recedes.\n");
  3176. fprintf(stdout,"INFO: \n");
  3177. fprintf(stdout,"INFO: MAXIMUM RANGE .... (Modes 1-4) Maximum angle from centreline reached ( < 90).\n");
  3178. fprintf(stdout,"INFO: (Mode 5) Maximum distance from centre, where centre-to-loudspeaker distance is 1.\n");
  3179. fprintf(stdout,"INFO: DECIMATION ....... Gain multiplier (>0 <1) on passing from one event to the next, away from the focus.\n");
  3180. fprintf(stdout,"INFO: \n");
  3181. fprintf(stdout,"INFO: LEFTWARDS FROM FOCUS .... Motion towards left of focal position (Default: motion towards right).\n");
  3182. break;
  3183. case(TRANSITL):
  3184. fprintf(stdout,"INFO: CREATE MULTICHANNEL MIX WHICH POSITIONS A SEQUENCE OF MONO SOUND LISTED IN A TEXTFILE\n");
  3185. fprintf(stdout,"INFO: ON TANGENT PATH TO AND FROM AN 8-CHANNEL RING OF LSPKRS.\n");
  3186. fprintf(stdout,"INFO: \n");
  3187. fprintf(stdout,"INFO: Loudspeakers assumed to be equidistant in a ring, and numbered clockwise.\n");
  3188. fprintf(stdout,"INFO: \n");
  3189. fprintf(stdout,"INFO: MODES---------------------------------------------------------------\n");
  3190. fprintf(stdout,"INFO: \n");
  3191. fprintf(stdout,"INFO: GLANCING EDGEWISE CROSSING CLOSE CENTRAL\n");
  3192. fprintf(stdout,"INFO: ---O->> ->>--O---O->> O O O O\n");
  3193. fprintf(stdout,"INFO: O O ->>--O-------O->> O O\n");
  3194. fprintf(stdout,"INFO: O O ->>-O--------------O->>\n");
  3195. fprintf(stdout,"INFO: O O O O ->>-O---------------O->>\n");
  3196. fprintf(stdout,"INFO: O O O O\n");
  3197. fprintf(stdout,"INFO: O O O O O O\n");
  3198. fprintf(stdout,"INFO: O O O O O O O\n");
  3199. fprintf(stdout,"INFO: \n");
  3200. fprintf(stdout,"INFO: PARAMETERS---------------------------------------------------------------\n");
  3201. fprintf(stdout,"INFO: \n");
  3202. fprintf(stdout,"INFO: FOCUS ............ Centre of motion. Integer for odd modes, 1.5 ; 2.5 etc for even modes.\n");
  3203. fprintf(stdout,"INFO: DURATION ......... Duration of motion from centre to edge (ONLY).\n");
  3204. fprintf(stdout,"INFO: \n");
  3205. fprintf(stdout,"INFO: Total duration will be double this value, as the mix approaches and then recedes.\n");
  3206. fprintf(stdout,"INFO: \n");
  3207. fprintf(stdout,"INFO: MAXIMUM RANGE .... (Modes 1-4) Maximum angle from centreline reached ( < 90).\n");
  3208. fprintf(stdout,"INFO: (Mode 5) Maximum distance from centre, where centre-to-loudspeaker distance is 1.\n");
  3209. fprintf(stdout,"INFO: DECIMATION ....... Gain multiplier (>0 <1) on passing from one event to the next, away from the focus.\n");
  3210. fprintf(stdout,"INFO: \n");
  3211. fprintf(stdout,"INFO: LEFTWARDS FROM FOCUS .... Motion towards left of focal position (Default: motion towards right).\n");
  3212. break;
  3213. case(CANTOR):
  3214. fprintf(stdout,"INFO: GRADUALLY INSERT HOLES INTO A SOURCE, IN THE MANNER OF A CANTOR SET\n");
  3215. fprintf(stdout,"INFO: \n");
  3216. fprintf(stdout,"INFO: A hole is gradually cut in the middle of the source sound, dividing into two parts.\n");
  3217. fprintf(stdout,"INFO: Then holes are cut in these two parts, and so on.\n");
  3218. fprintf(stdout,"INFO: The output is a set of versions of the source, with more and more holes.\n");
  3219. fprintf(stdout,"INFO: \n");
  3220. fprintf(stdout,"INFO: MODES---------------------------------------------------------------\n");
  3221. fprintf(stdout,"INFO: \n");
  3222. fprintf(stdout,"INFO: MODE 1 .... Holesize proportional to size of segment they cut.\n");
  3223. fprintf(stdout,"INFO: MODE 2 .... Holesize is fixed.\n");
  3224. fprintf(stdout,"INFO: MODE 3 .... Holes generated by superimposed layers of sinusoindal envelope-shapng..\n");
  3225. fprintf(stdout,"INFO: \n");
  3226. fprintf(stdout,"INFO: PARAMETERS---------------------------------------------------------------\n");
  3227. fprintf(stdout,"INFO: \n");
  3228. fprintf(stdout,"INFO: In Modes 1 & 2\n");
  3229. fprintf(stdout,"INFO: \n");
  3230. fprintf(stdout,"INFO: HOLE SIZE ........ Percentage of the input sound (or sound segment) taken up by the hole.\n");
  3231. fprintf(stdout,"INFO: DIG DEPTH ........ Depth of each cut (as a fraction of 1) as hole is gradually created.\n");
  3232. fprintf(stdout,"INFO: TRIGGER DEPTH .... Depth of hole at which next pair of holes start to be dug.\n");
  3233. fprintf(stdout,"INFO: SPLICE LENGTH .... Splice length in milliseconds.\n");
  3234. fprintf(stdout,"INFO: MAXIMUM DURATION.. Maximum total duration of all the output sounds.\n");
  3235. fprintf(stdout,"INFO: EXTEND TO LIMIT .. Proceed with hole digging even when there are not enough samples left to create splices.\n");
  3236. fprintf(stdout,"INFO: \n");
  3237. fprintf(stdout,"INFO: In Modes 3\n");
  3238. fprintf(stdout,"INFO: \n");
  3239. fprintf(stdout,"INFO: MNIMUM HOLE LEVEL .. Level of signal at base of holes.\n");
  3240. fprintf(stdout,"INFO: DIG DEPTH .......... Number of repetitions for hole to reach its maximum depth.\n");
  3241. fprintf(stdout,"INFO: LAYER COUNT ........ Number of enveloping layers used.\n");
  3242. fprintf(stdout,"INFO: LAYER DECIMATION ... Relative depth at which each layer is imposed.\n");
  3243. fprintf(stdout,"INFO: MAXIMUM DURATION.... Maximum total duration of all the output sounds.\n");
  3244. break;
  3245. case(SHRINK):
  3246. switch(mode) {
  3247. case(0):
  3248. case(1):
  3249. case(2):
  3250. case(3):
  3251. switch(mode) {
  3252. case(0):
  3253. fprintf(stdout,"INFO: REPEAT A SOUND, SHRINKING IT, BY REMOVING ITS END, AS THE REPETITIONS PROCEEDS.\n");
  3254. break;
  3255. case(1):
  3256. fprintf(stdout,"INFO: REPEAT A SOUND, SHRINKING IT AROUND ITS MIDPOINT AS THE REPETITIONS PROCEEDS.\n");
  3257. break;
  3258. case(2):
  3259. fprintf(stdout,"INFO: REPEAT A SOUND, SHRINKING IT, BY REMOVING ITS BEGINNING, AS THE REPETITIONS PROCEEDS.\n");
  3260. break;
  3261. case(3):
  3262. fprintf(stdout,"INFO: REPEAT A SOUND, SHRINKING IT AROUND A SPECIFIED TIME, AS THE REPETITIONS PROCEEDS.\n");
  3263. break;
  3264. }
  3265. fprintf(stdout,"INFO: \n");
  3266. fprintf(stdout,"INFO: PARAMETERS---------------------------------------------------------------\n");
  3267. fprintf(stdout,"INFO: \n");
  3268. if(mode == 3)
  3269. fprintf(stdout,"INFO: CENTRE OF SHRINKAGE.. Time around which shrinkage takes place.\n");
  3270. fprintf(stdout,"INFO: SOUND SHRINKAGE ..... Shortening factor of sound from one repeat to the next.\n");
  3271. fprintf(stdout,"INFO: Shrinkage stops once events become too short for the splices.\n");
  3272. fprintf(stdout,"INFO: EVENT GAP ........... Initial timestep between output events (>= input sound duration).\n");
  3273. fprintf(stdout,"INFO: TIME CONTRACTION .....Shortening of time between placement of sounds in output stream.\n");
  3274. fprintf(stdout,"INFO: 1.0 = events equally spaced, < 1.0 events become closer\n");
  3275. fprintf(stdout,"INFO: Events cannot overlap, so the minimum value of \"contraction\" = value of \"sound shrinkage\".\n");
  3276. fprintf(stdout,"INFO: DURATION ............ (Minimum) duration of the output.\n");
  3277. fprintf(stdout,"INFO: SPLICE LENGTH ....... Length of splices, in millseconds.\n");
  3278. fprintf(stdout,"INFO: MINIMUM EVENT DURATION ....... When sound duration reaches this minimum, shrinkage stops and events thereafter are of equal length.\n");
  3279. fprintf(stdout,"INFO: MINIMUM EVENT SEPARATION ..... When event separation reaches this minimum, contraction stops and events thereafter are equally spaced in time.\n");
  3280. fprintf(stdout,"INFO: EVENT TIME RANDOMISATION ..... Randomisation of entry times of events.\n");
  3281. fprintf(stdout,"INFO: EQUALISE EVENT LEVELS ........ Force the (maximum) level of all output events to that of the input event (if possible).\n");
  3282. fprintf(stdout,"INFO: REVERSE SEGMENTS ............. Output events are each reversed, but remain in the same time order.\n");
  3283. break;
  3284. case(4):
  3285. case(5):
  3286. switch(mode) {
  3287. case(4):
  3288. fprintf(stdout,"INFO: IN A SOUND, SHRINK EVENTS CENTRED ROUND DETECTABLE PEAKS.\n");
  3289. break;
  3290. case(5):
  3291. fprintf(stdout,"INFO: IN A SOUND, SHRINK EVENTS CENTRED ROUND USER-SPECIFIED PEAKS.\n");
  3292. break;
  3293. }
  3294. fprintf(stdout,"INFO: \n");
  3295. fprintf(stdout,"INFO: PARAMETERS---------------------------------------------------------------\n");
  3296. fprintf(stdout,"INFO: \n");
  3297. if(mode == 5)
  3298. fprintf(stdout,"INFO: PEAK TIMES .......... A textfile listing the times of peaks in the input sound file.\n");
  3299. fprintf(stdout,"INFO: SOUND SHRINKAGE ..... Shortening factor of sound from one repeat to the next.\n");
  3300. fprintf(stdout,"INFO: Shrinkage stops once events become too short for the splices.\n");
  3301. if(mode == 4)
  3302. fprintf(stdout,"INFO: WINDOW SIZE ......... Size of window for peak detection (in milliSeconds).\n");
  3303. else
  3304. fprintf(stdout,"INFO: WINDOW SIZE ......... Size of window for minima detection (in milliSeconds).\n");
  3305. fprintf(stdout,"INFO: TIME CONTRACTION .....Shortening of time between placement of sounds in output stream.\n");
  3306. fprintf(stdout,"INFO: 1.0 = events equally spaced, < 1.0 events become closer\n");
  3307. fprintf(stdout,"INFO: Events cannot overlap, so the minimum value of \"contraction\" = value of \"sound shrinkage\".\n");
  3308. fprintf(stdout,"INFO: SHRINKAGE START...... Time at which shrinking begins.\n");
  3309. fprintf(stdout,"INFO: SPLICE LENGTH ....... Length of splices, in millseconds.\n");
  3310. fprintf(stdout,"INFO: MINIMUM EVENT DURATION ....... When sound duration reaches this minimum, shrinkage stops.\n");
  3311. fprintf(stdout,"INFO: MINIMUM EVENT SEPARATION ..... When event separation reaches this minimum, contraction stops.\n");
  3312. fprintf(stdout,"INFO: EVENT TIME RANDOMISATION ..... Randomisation of entry times of events.\n");
  3313. fprintf(stdout,"INFO: \n");
  3314. fprintf(stdout,"INFO: MINIMUM LENGTH FOR SQUEEZE START.....\n");
  3315. fprintf(stdout,"INFO: Minimum source-segment length before sound squeezing can begin (for the \"SQUEEZE EVENLY\" option)\n");
  3316. fprintf(stdout,"INFO: INPUT GATE .......... Input level (relative to the maximum level of the source) below which source-peaks are ignored.\n");
  3317. if(mode == 4)
  3318. fprintf(stdout,"INFO: SKEW ................ Where, in the found source-segment, the sound is cut. e.g. 0 = at start : 0.5 = in the middle : 1 = at end.\n");
  3319. fprintf(stdout,"INFO: \n");
  3320. fprintf(stdout,"INFO: EQUALISE EVENT LEVELS ........ Force the (maximum) level of all output events to that of the input event (if possible).\n");
  3321. fprintf(stdout,"INFO: REVERSE SEGMENTS ............. Output events are each reversed, but remain in the same time order.\n");
  3322. fprintf(stdout,"INFO: Mixing the output, then reversing the resultant sound produces an 'Expansion' of events,\n");
  3323. fprintf(stdout,"INFO: opposite to the 'Shrinkage/Contraction'.\n");
  3324. fprintf(stdout,"INFO: Note that the mixed sequence can be developed (each sound processed) to produce new, related sequences\n");
  3325. fprintf(stdout,"INFO: which can be mixed using the same mix times as in the original.\n");
  3326. fprintf(stdout,"INFO: If sounds processing involves any time-extension, start-times in the mix for the reversed segments will be altered.\n");
  3327. fprintf(stdout,"INFO: Hence, with this flag set, an additional file is output listing the gaps between sound-ENDS in any mix\n");
  3328. fprintf(stdout,"INFO: of the processed events.\n");
  3329. fprintf(stdout,"INFO: SQUEEZE EVENLY ............... If \"shrinkage\" > 0, sounds shorten in a regular manner.\n");
  3330. fprintf(stdout,"INFO: If \"contraction\" > 0, output accelerates in a regular manner.\n");
  3331. fprintf(stdout,"INFO: OUTPUT GATE .................. Omit any too-quiet events, once a fixed end tempo has been reached.\n");
  3332. break;
  3333. }
  3334. break;
  3335. case(NEWTEX):
  3336. switch(mode) {
  3337. case(0):
  3338. fprintf(stdout,"INFO: GRANULATE SOURCE SOUND OVER TIME AND SPACE.\n");
  3339. fprintf(stdout,"INFO: \n");
  3340. fprintf(stdout,"INFO: Granulate several streams from a SINGLE source, where the source can be transposed.\n");
  3341. fprintf(stdout,"INFO: \n");
  3342. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------\n");
  3343. fprintf(stdout,"INFO: \n");
  3344. fprintf(stdout,"INFO: TRANSPOSITION DATA ..... A textfile Listing of transposition ratios and relative levels, against time.\n");
  3345. fprintf(stdout,"INFO: Data is a text file of lines of data and every line must have the same number of entries.\n");
  3346. fprintf(stdout,"INFO: \n");
  3347. fprintf(stdout,"INFO: The 1ST ENTRY on each line is a time. Times must start at zero and increase.\n");
  3348. fprintf(stdout,"INFO: \n");
  3349. fprintf(stdout,"INFO: All EVEN NUMBERED entries are transpositions, and these must increase through a line.\n");
  3350. fprintf(stdout,"INFO: \n");
  3351. fprintf(stdout,"INFO: All other ODD NUMBERED entries are loudness levels for those transposition, between -1 and 1.\n");
  3352. fprintf(stdout,"INFO: -ve values invert the phase of the source.\n");
  3353. fprintf(stdout,"INFO: \n");
  3354. fprintf(stdout,"INFO: DURATION ............ Total Duration of the output sound.\n");
  3355. fprintf(stdout,"INFO: CHANNEL COUNT ... Number of output channels.\n");
  3356. fprintf(stdout,"INFO: OCTAVE TRANSPOSITION.. Current range of additional octave transpositions of the original components.\n");
  3357. fprintf(stdout,"INFO: \n");
  3358. fprintf(stdout,"INFO: TIMESTEP ............ Average timestep between changes in stream-content of output.\n");
  3359. fprintf(stdout,"INFO: SPLICETIME (mS).... Length of fade-in/out times of components in output sound, in milliseconds.\n");
  3360. fprintf(stdout,"INFO: STREAMS IN PLAY . Number of streams used in any segment: If set to ZERO, number of streams used is random.\n");
  3361. fprintf(stdout,"INFO: MAXCHANGE COMPONENTS As far as possible, always change components used, from one segment to the next.\n");
  3362. fprintf(stdout,"INFO: \n");
  3363. fprintf(stdout,"INFO: EMERGENCE CHANNEL .. If spatial image emerges from a single channel, to fill the space, this is the channel.\n");
  3364. fprintf(stdout,"INFO: EMERGENCE TIME .... If spatial image emerges from a single channel, time taken to fully emerge.\n");
  3365. fprintf(stdout,"INFO: CONVERGENCE CHANNEL .. If spatial image converges to a single channel at end of sound, this is the channel.\n");
  3366. fprintf(stdout,"INFO: CONVERGENCE TIME . If spatial image converges to a single channel, time taken to fully converge.\n");
  3367. fprintf(stdout,"INFO: \n");
  3368. fprintf(stdout,"INFO: Note that Emergence always works but, because of the nature of the algorithm, Convergence is only a tendency\n");
  3369. fprintf(stdout,"INFO: and the signal may not all converge to the specified convergence channel.\n");
  3370. fprintf(stdout,"INFO: \n");
  3371. fprintf(stdout,"INFO: For NO EMERGENCE or NO CONVERGENCE, set the relevant values to ZERO.\n");
  3372. fprintf(stdout,"INFO: \n");
  3373. fprintf(stdout,"INFO: JUMP .................. Use same spatial position for all components in a segment.\n");
  3374. fprintf(stdout,"INFO: ROTATION SPEED .... Rotation speed for Special Space Type 3 (only).\n");
  3375. fprintf(stdout,"INFO: \n");
  3376. fprintf(stdout,"INFO: SPECIAL SPACE TYPE (8-channel files only) .... Special types of spatialisation.\n");
  3377. fprintf(stdout,"INFO: 1: Left-Right Rand ........... Alternate Left and Right sides, random positions.\n");
  3378. fprintf(stdout,"INFO: 2: Front-Back Rand .......... Alternate Front and back areas of space , random positions.\n");
  3379. fprintf(stdout,"INFO: 3: Rotate ...................... (Requires a positive or negative rotation speed).\n");
  3380. fprintf(stdout,"INFO: 4: Superspace1 ............... Single channel positions only.\n");
  3381. fprintf(stdout,"INFO: 5: Superspace2 ............... Single channels and channel-pairs only.\n");
  3382. fprintf(stdout,"INFO: 6: Superspace3 ............... Single channels and channel-pairs and channel-triples only.\n");
  3383. fprintf(stdout,"INFO: 7: Superspace4 ............... Single channels, channel-pairs, channel-triples, square, diamond and all-positions.\n");
  3384. fprintf(stdout,"INFO: 8: Left-Right Alternate ....... Alternate Left and Right sides, using all channels of each.\n");
  3385. fprintf(stdout,"INFO: 9: Back-Front Alternate ...... Alternate Back and Front areas, using all channels of each.\n");
  3386. fprintf(stdout,"INFO: 10: Frameswitch ............... Alternate Between Square and Diamond 4-sets.\n");
  3387. fprintf(stdout,"INFO: 11: Triangle Rotate 1 ......... Rotate a triple of alternate channels, clockwise.\n");
  3388. fprintf(stdout,"INFO: 12: Triangle AntiRotate 1 ..... Rotate a triple of alternate channels, anticlockwise.\n");
  3389. fprintf(stdout,"INFO: 13: Triangle Rotate 2 ......... Rotate a channel and the pair opposite, clockwise.\n");
  3390. fprintf(stdout,"INFO: 14: Triangle AntiRotate 2 ..... Rotate a channel and the pair opposite, anticlockwise.\n");
  3391. break;
  3392. case(1):
  3393. fprintf(stdout,"INFO: GRANULATE SEVERAL SOURCE SOUNDS OVER TIME AND SPACE.\n");
  3394. fprintf(stdout,"INFO: \n");
  3395. fprintf(stdout,"INFO: Granulate a group of sounds, where the sources are not transposed.\n");
  3396. fprintf(stdout,"INFO: \n");
  3397. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------\n");
  3398. fprintf(stdout,"INFO: \n");
  3399. fprintf(stdout,"INFO: DURATION ............ Total Duration of the output sound.\n");
  3400. fprintf(stdout,"INFO: CHANNEL COUNT ... Number of output channels.\n");
  3401. fprintf(stdout,"INFO: MAX SOURCE DUPLICATION...... Maximum number of simultaneous streams of any one source.\n");
  3402. fprintf(stdout,"INFO: DELAY ................. Time delay between duplicated streams.\n");
  3403. fprintf(stdout,"INFO: \n");
  3404. fprintf(stdout,"INFO: TIMESTEP ............ Average timestep between changes in stream-content of output.\n");
  3405. fprintf(stdout,"INFO: SPLICETIME (mS).... Length of fade-in/out times of components in output sound, in milliseconds.\n");
  3406. fprintf(stdout,"INFO: STREAMS IN PLAY . Number of streams used in any segment: If set to ZERO, number of streams used is random.\n");
  3407. fprintf(stdout,"INFO: MAXCHANGE COMPONENTS As far as possible, always change components used, from one segment to the next.\n");
  3408. fprintf(stdout,"INFO: \n");
  3409. fprintf(stdout,"INFO: EMERGENCE CHANNEL .. If spatial image emerges from a single channel, to fill the space, this is the channel.\n");
  3410. fprintf(stdout,"INFO: EMERGENCE TIME .... If spatial image emerges from a single channel, time taken to fully emerge.\n");
  3411. fprintf(stdout,"INFO: CONVERGENCE CHANNEL .. If spatial image converges to a single channel at end of sound, this is the channel.\n");
  3412. fprintf(stdout,"INFO: CONVERGENCE TIME . If spatial image converges to a single channel, time taken to fully converge.\n");
  3413. fprintf(stdout,"INFO: \n");
  3414. fprintf(stdout,"INFO: Note that Emergence always works but, because of the nature of the algorithm, Convergence is only a tendency\n");
  3415. fprintf(stdout,"INFO: and the signal may not all converge to the specified convergence channel.\n");
  3416. fprintf(stdout,"INFO: \n");
  3417. fprintf(stdout,"INFO: For NO EMERGENCE or NO CONVERGENCE, set the relevant values to ZERO.\n");
  3418. fprintf(stdout,"INFO: \n");
  3419. fprintf(stdout,"INFO: JUMP .................. Use same spatial position for all components in a segment.\n");
  3420. fprintf(stdout,"INFO: ROTATION SPEED .... Rotation speed for Special Space Type 3 (only).\n");
  3421. fprintf(stdout,"INFO: \n");
  3422. fprintf(stdout,"INFO: SPECIAL SPACE TYPE (8-channel files only) .... Special types of spatialisation.\n");
  3423. fprintf(stdout,"INFO: 1: Left-Right Rand ........... Alternate Left and Right sides, random positions.\n");
  3424. fprintf(stdout,"INFO: 2: Front-Back Rand .......... Alternate Front and back areas of space , random positions.\n");
  3425. fprintf(stdout,"INFO: 3: Rotate ...................... (Requires a positive or negative rotation speed).\n");
  3426. fprintf(stdout,"INFO: 4: Superspace1 ............... Single channel positions only.\n");
  3427. fprintf(stdout,"INFO: 5: Superspace2 ............... Single channels and channel-pairs only.\n");
  3428. fprintf(stdout,"INFO: 6: Superspace3 ............... Single channels and channel-pairs and channel-triples only.\n");
  3429. fprintf(stdout,"INFO: 7: Superspace4 ............... Single channels, channel-pairs, channel-triples, square, diamond and all-positions.\n");
  3430. fprintf(stdout,"INFO: 8: Left-Right Alternate ....... Alternate Left and Right sides, using all channels of each.\n");
  3431. fprintf(stdout,"INFO: 9: Back-Front Alternate ...... Alternate Back and Front areas, using all channels of each.\n");
  3432. fprintf(stdout,"INFO: 10: Frameswitch ............... Alternate Between Square and Diamond 4-sets.\n");
  3433. fprintf(stdout,"INFO: 11: Triangle Rotate 1 ......... Rotate a triple of alternate channels, clockwise.\n");
  3434. fprintf(stdout,"INFO: 12: Triangle AntiRotate 1 ..... Rotate a triple of alternate channels, anticlockwise.\n");
  3435. fprintf(stdout,"INFO: 13: Triangle Rotate 2 ......... Rotate a channel and the pair opposite, clockwise.\n");
  3436. fprintf(stdout,"INFO: 14: Triangle AntiRotate 2 ..... Rotate a channel and the pair opposite, anticlockwise.\n");
  3437. break;
  3438. case(2):
  3439. fprintf(stdout,"INFO: GRANULATE SOURCE SOUND(S) OVER TIME AND SPACE, WITH DRUNKEN WALK THROUGH SOURCE(S).\n");
  3440. fprintf(stdout,"INFO: \n");
  3441. fprintf(stdout,"INFO: The sources are not transposed.\n");
  3442. fprintf(stdout,"INFO: \n");
  3443. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------\n");
  3444. fprintf(stdout,"INFO: \n");
  3445. fprintf(stdout,"INFO: DURATION ............ Total Duration of the output sound.\n");
  3446. fprintf(stdout,"INFO: CHANNEL COUNT ... Number of output channels.\n");
  3447. fprintf(stdout,"INFO: MAX SOURCE DUPLICATION...... Maximum number of simultaneous streams of any one source.\n");
  3448. fprintf(stdout,"INFO: LOCUS ................................. Time around which (next) source-read begins.\n");
  3449. fprintf(stdout,"INFO: AMBITUS ............................ Area around locus within which next source-segment read may start.\n");
  3450. fprintf(stdout,"INFO: DRUNK STEP ..................... Maximum size of random leap in source between start of this read and start of next.\n");
  3451. fprintf(stdout,"INFO: \n");
  3452. fprintf(stdout,"INFO: TIMESTEP ............ Average timestep in output between changes in stream-content.\n");
  3453. fprintf(stdout,"INFO: SPLICETIME (mS).... Length of fade-in/out times of components in output sound, in milliseconds.\n");
  3454. fprintf(stdout,"INFO: STREAMS IN PLAY . Number of streams used in any segment: If set to ZERO, number of streams used is random.\n");
  3455. fprintf(stdout,"INFO: MAXCHANGE COMPONENTS As far as possible, always change components used, from one segment to the next.\n");
  3456. fprintf(stdout,"INFO: \n");
  3457. fprintf(stdout,"INFO: EMERGENCE CHANNEL .. If spatial image emerges from a single channel, to fill the space, this is the channel.\n");
  3458. fprintf(stdout,"INFO: EMERGENCE TIME .... If spatial image emerges from a single channel, time taken to fully emerge.\n");
  3459. fprintf(stdout,"INFO: CONVERGENCE CHANNEL .. If spatial image converges to a single channel at end of sound, this is the channel.\n");
  3460. fprintf(stdout,"INFO: CONVERGENCE TIME . If spatial image converges to a single channel, time taken to fully converge.\n");
  3461. fprintf(stdout,"INFO: \n");
  3462. fprintf(stdout,"INFO: Note that Emergence always works but, because of the nature of the algorithm, Convergence is only a tendency\n");
  3463. fprintf(stdout,"INFO: and the signal may not all converge to the specified convergence channel.\n");
  3464. fprintf(stdout,"INFO: \n");
  3465. fprintf(stdout,"INFO: For NO EMERGENCE or NO CONVERGENCE, set the relevant values to ZERO.\n");
  3466. fprintf(stdout,"INFO: \n");
  3467. fprintf(stdout,"INFO: JUMP .................. Use same spatial position for all components in a segment.\n");
  3468. fprintf(stdout,"INFO: ROTATION SPEED .... Rotation speed for Special Space Type 3 (only).\n");
  3469. fprintf(stdout,"INFO: \n");
  3470. fprintf(stdout,"INFO: SPECIAL SPACE TYPE (8-channel files only) .... Special types of spatialisation.\n");
  3471. fprintf(stdout,"INFO: 1: Left-Right Rand ........... Alternate Left and Right sides, random positions.\n");
  3472. fprintf(stdout,"INFO: 2: Front-Back Rand .......... Alternate Front and back areas of space , random positions.\n");
  3473. fprintf(stdout,"INFO: 3: Rotate ...................... (Requires a positive or negative rotation speed).\n");
  3474. fprintf(stdout,"INFO: 4: Superspace1 ............... Single channel positions only.\n");
  3475. fprintf(stdout,"INFO: 5: Superspace2 ............... Single channels and channel-pairs only.\n");
  3476. fprintf(stdout,"INFO: 6: Superspace3 ............... Single channels, channel-pairs and triangles only.\n");
  3477. fprintf(stdout,"INFO: 7: Superspace4 ............... Single channels, channel-pairs, triangles, square, diamond and all-positions.\n");
  3478. fprintf(stdout,"INFO: 8: Left-Right Alternate ....... Alternate Left and Right sides, using all channels of each.\n");
  3479. fprintf(stdout,"INFO: 9: Back-Front Alternate ...... Alternate Back and Front areas, using all channels of each.\n");
  3480. fprintf(stdout,"INFO: 10: Frameswitch ............... Alternate Between Square and Diamond 4-sets.\n");
  3481. fprintf(stdout,"INFO: 11: Triangle Rotate 1 ......... Rotate a triple of alternate channels, clockwise, speed determined by \"Timestep\".\n");
  3482. fprintf(stdout,"INFO: 12: Triangle AntiRotate 1 ..... Rotate a triple of alternate channels, anticlockwise, speed determined by \"Timestep\".\n");
  3483. fprintf(stdout,"INFO: 13: Triangle Rotate 2 ......... Rotate a channel and the pair opposite, clockwise, speed determined by \"Timestep\".\n");
  3484. fprintf(stdout,"INFO: 14: Triangle AntiRotate 2 ..... Rotate a channel and the pair opposite, anticlockwise, speed determined by \"Timestep\".\n");
  3485. break;
  3486. }
  3487. break;
  3488. case(CERACU):
  3489. fprintf(stdout,"INFO: SUPERIMPOSE DIFFERENT CYCLIC REPETITIONS OF A SOUND, UNTIL THE CYCLES RESYNCHRONISE.\n");
  3490. fprintf(stdout,"INFO: \n");
  3491. fprintf(stdout,"INFO: The source sound repeats at regular time-intervals.\n");
  3492. fprintf(stdout,"INFO: There are 2 or more streams of such repetition, each with a different repetition time-interval.\n");
  3493. fprintf(stdout,"INFO: A \"complete-cycle\" takes us from one point where all the streams are in sync to the next point where this is the case.\n");
  3494. fprintf(stdout,"INFO: \n");
  3495. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------\n");
  3496. fprintf(stdout,"INFO: \n");
  3497. fprintf(stdout,"INFO: CYCLE COUNT DATA ................... A list of integers.\n");
  3498. fprintf(stdout,"INFO: The number of items in the list determines the number of simultaneous cycle-streams.\n");
  3499. fprintf(stdout,"INFO: The values entered determined how many repeats there are in each stream before all streams resynchronise.\n");
  3500. fprintf(stdout,"INFO: SHORTEST REPEAT TIME .............. Time before the first repeat in the fastest cycle. If set to ZERO, assumed to be duration of input file.\n");
  3501. fprintf(stdout,"INFO: NB With many prime-number cycles, the \"Shortest Repeat Time\" may be adjusted upwards (sometimes considerably!)\n");
  3502. fprintf(stdout,"INFO: to allow all the repeating cycles to fit into a cycle with the correct number of repeats.\n");
  3503. fprintf(stdout,"INFO: (The minimum output duration, in samples, cannot be less than the Lowest Common Multiple of all the cycle-counts,\n");
  3504. fprintf(stdout,"INFO: and the cyclecnts will all be factors of this duration).\n");
  3505. fprintf(stdout,"INFO: OUTPUT CHANNEL COUNT ............ Number of output channels.\n");
  3506. fprintf(stdout,"INFO: MINIMUM OUTPUT DURATION......... Minimum duration of the output. If set to ZERO, assumed to be one complete-cycle.\n");
  3507. fprintf(stdout,"INFO: Process always outputs a WHOLE NUMBER of complete-cycles\n");
  3508. fprintf(stdout,"INFO: and this output will be equal to or longer in duration than the output duration specified.\n");
  3509. fprintf(stdout,"INFO: OVERRIDE LENGTH LIMIT ............. Force output to continue until a complete cycle is generated, no matter how long this may take.\n");
  3510. fprintf(stdout,"INFO: A warning will be given after 1 hour of output(!).\n");
  3511. fprintf(stdout,"INFO: No guarantee can be given that the program will not crash for extremely long durations.\n");
  3512. fprintf(stdout,"INFO: ECHO DELAY ................................. An optional echo of the entire output can be added. To avoid this echo, set parameter to ZERO.\n");
  3513. fprintf(stdout,"INFO: The echo delay should not be greater than the \"Shortest Repeat Time\" BUT\n");
  3514. fprintf(stdout,"INFO: the \"Shortest Repeat Time\" may be recalculated (see program output) to accomodate\n");
  3515. fprintf(stdout,"INFO: ECHO SPATIAL OFFSET ................ Any optional echo can be offset to a different channel.\n");
  3516. fprintf(stdout,"INFO: 1 offset it 1 channel to the right, -1 offsets it 1 chyannel to the left, and so on.\n");
  3517. fprintf(stdout,"INFO: LINEAR OUTPUT ARRAY ................ If output > stereo, loudspeaker array assumed to be in surround (circling the audience).\n");
  3518. fprintf(stdout,"INFO: But if this flag is set, the array is assumed to be linear (reaching from a leftmost to a rightmost point).\n");
  3519. break;
  3520. case(MADRID):
  3521. switch(mode) {
  3522. case(0):
  3523. fprintf(stdout,"INFO: REPEAT SOUND(S) WITH SPATIALISED ACCENTUATIONS.\n");
  3524. fprintf(stdout,"INFO: \n");
  3525. fprintf(stdout,"INFO: The source sounds repeat, with several superimposed copies played at different spatial locations.\n");
  3526. fprintf(stdout,"INFO: By randomly deleting events from these streams spatial relocations and accents are produced.\n");
  3527. fprintf(stdout,"INFO: \n");
  3528. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------\n");
  3529. fprintf(stdout,"INFO: \n");
  3530. fprintf(stdout,"INFO: OUTPUT DURATION ....................... Maximum Duration of output.\n");
  3531. fprintf(stdout,"INFO: OUTPUT CHANNEL COUNT ............... Number of channels in the output sound.\n");
  3532. fprintf(stdout,"INFO: NUMBER OF STREAMS .................... Number of spatially distinct streams.\n");
  3533. fprintf(stdout,"INFO: DELETION FACTOR ........................ Proportion of events to delete.\n");
  3534. fprintf(stdout,"INFO: Values between 0 and 1 delete that proportion of events in the various streams.\n");
  3535. fprintf(stdout,"INFO: For values greater than 1, the proportion of events at a single location increases.\n");
  3536. fprintf(stdout,"INFO: and, if you \"ALLOW GAPS IN OUTPUT\", the proportion of empty events also increases.\n");
  3537. fprintf(stdout,"INFO: EVENT TIME STEP .......................... Time-step between event repetitions.\n");
  3538. fprintf(stdout,"INFO: EVENT TIME RANDOMISATION .......... Randomisation of time-step between event repetitions.\n");
  3539. fprintf(stdout,"INFO: DELETION SEED VALUE .................... If the process is run a 2nd time, with the SAME parameters,\n");
  3540. fprintf(stdout,"INFO: If the seed value is set to the same POSITIVE value, deletions will be the same.\n");
  3541. fprintf(stdout,"INFO: If set to zero however, deletions will always be different, even when all other parameters are the same.\n");
  3542. fprintf(stdout,"INFO: ALLOW GAPS IN OUTPUT ................. Some repeptition points may have NO sound at all.\n");
  3543. fprintf(stdout,"INFO: LINEAR OUTPUT ARRAY .................. If output > stereo, loudspeaker array assumed to be in surround (circling the audience).\n");
  3544. fprintf(stdout,"INFO: But if this flag is set, the array is assumed to be linear (reaching from a leftmost to a rightmost point).\n");
  3545. fprintf(stdout,"INFO: RANDOMLY_PERMUTE_INFILE_ORDER . Randomly permuter order of input files, and play 1 of each in this order before creating the next order permutation.\n");
  3546. fprintf(stdout,"INFO: RANDOMLY_SELECT_INFILE .............. Randomly select the next input file to use, independently of any previous selection.\n");
  3547. fprintf(stdout,"INFO: \n");
  3548. fprintf(stdout,"INFO: You cannot use BOTH Random Permutation AND Random Selection.\n");
  3549. fprintf(stdout,"INFO: Neither of these flags is operational where there is only ONE input sound.\n");
  3550. break;
  3551. case(1):
  3552. fprintf(stdout,"INFO: SEQUENCE SOUND(S) WITH SPATIALISED ACCENTUATIONS.\n");
  3553. fprintf(stdout,"INFO: \n");
  3554. fprintf(stdout,"INFO: The source sounds follow each other in a defined sequence\n");
  3555. fprintf(stdout,"INFO: with several superimposed copies played at different spatial locations.\n");
  3556. fprintf(stdout,"INFO: By randomly deleting events from these streams spatial relocations and accents are produced.\n");
  3557. fprintf(stdout,"INFO: \n");
  3558. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------\n");
  3559. fprintf(stdout,"INFO: \n");
  3560. fprintf(stdout,"INFO: SEQUENCE DATA ........................ Textfile of integers between 1 and the number of input files.\n");
  3561. fprintf(stdout,"INFO: The sequence of numbers in this file determines the sequence of input files used in the output.\n");
  3562. fprintf(stdout,"INFO: OUTPUT DURATION ....................... Maximum Duration of output.\n");
  3563. fprintf(stdout,"INFO: OUTPUT CHANNEL COUNT ............... Number of channels in the output sound.\n");
  3564. fprintf(stdout,"INFO: NUMBER OF STREAMS .................... Number of spatially distinct streams.\n");
  3565. fprintf(stdout,"INFO: DELETION FACTOR ........................ Proportion of events to delete.\n");
  3566. fprintf(stdout,"INFO: Values between 0 and 1 delete that proportion of events in the various streams.\n");
  3567. fprintf(stdout,"INFO: For values greater than 1, the proportion of events at a single location increases.\n");
  3568. fprintf(stdout,"INFO: and, if you \"ALLOW GAPS IN OUTPUT\", the proportion of empty events also increases.\n");
  3569. fprintf(stdout,"INFO: EVENT TIME STEP .......................... Time-step between event repetitions.\n");
  3570. fprintf(stdout,"INFO: EVENT TIME RANDOMISATION .......... Randomisation of time-step between event repetitions.\n");
  3571. fprintf(stdout,"INFO: DELETION SEED VALUE .................... If the process is run a 2nd time, with the SAME parameters,\n");
  3572. fprintf(stdout,"INFO: If the seed value is set to the same POSITIVE value, deletions will be the same.\n");
  3573. fprintf(stdout,"INFO: If set to zero however, deletions will always be different, even when all other parameters are the same.\n");
  3574. fprintf(stdout,"INFO: ALLOW GAPS IN OUTPUT ................. Some repeptition points may have NO sound at all.\n");
  3575. fprintf(stdout,"INFO: LINEAR OUTPUT ARRAY .................. If output > stereo, loudspeaker array assumed to be in surround (circling the audience).\n");
  3576. fprintf(stdout,"INFO: But if this flag is set, the array is assumed to be linear (reaching from a leftmost to a rightmost point).\n");
  3577. fprintf(stdout,"INFO: \n");
  3578. fprintf(stdout,"INFO: You cannot use BOTH Random Permutation AND Random Selection.\n");
  3579. fprintf(stdout,"INFO: Neither of these flags is operational where there is only ONE input sound.\n");
  3580. break;
  3581. }
  3582. break;
  3583. case(SHIFTER):
  3584. fprintf(stdout,"INFO: GENERATE A SERIES OF SIMULTANEOUS REPETITION STREAMS WHERE THE RHYTHMIC PULSE SHIFTS FROM ONE TO THE OTHER.\n");
  3585. fprintf(stdout,"INFO: \n");
  3586. fprintf(stdout,"INFO: The source sound repeats regularly in (specified) cycles.\n");
  3587. fprintf(stdout,"INFO: The tempi of the cycles is arranged so that the streams resynchronise after a set number of repetitions.\n");
  3588. fprintf(stdout,"INFO: e.g. 11,12,13 would set up 3 streams which repeat the sound 11,12 and 13 times, respectively, before the streams resynchronise.\n");
  3589. fprintf(stdout,"INFO: The focus may shift from one stream to another (by loudness emphasis), as the output sound evolves.\n");
  3590. fprintf(stdout,"INFO: \n");
  3591. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------\n");
  3592. fprintf(stdout,"INFO: \n");
  3593. fprintf(stdout,"INFO: CYCLE DATA ................................. Textfile list of at least 2 different integers with values >= 2.\n");
  3594. fprintf(stdout,"INFO: In Mode 2, the number of entries should equal the number of input sound-sources.\n");
  3595. fprintf(stdout,"INFO: These numbers represent the count of repetitions in each output stream before the streams resynchronise.\n");
  3596. fprintf(stdout,"INFO: CYCLE DURATION ........................ Duration from one streams-synchronisation-point to the next.\n");
  3597. fprintf(stdout,"INFO: Cycle duration and cycle data together determine the tempi of the different streams.\n");
  3598. fprintf(stdout,"INFO: MIN OUTPUT DURATION ................ Minimum Duration of the output.\n");
  3599. fprintf(stdout,"INFO: OUTPUT CHANNEL COUNT ............. Number of channels in the output sound. The cycles play at fixed locations distributed over the output array.\n");
  3600. fprintf(stdout,"INFO: MINIMUM BEAT DIVISION .............. Smallest integer subdivision of the beat: a multiple of 2 or 3, and greater than 4.\n");
  3601. fprintf(stdout,"INFO: This determines the quantisation of the entry-times in the various streams.\n");
  3602. fprintf(stdout,"INFO: LINGER CYCLES .......................... Number of cycles for which the focus is on any one cycle.\n");
  3603. fprintf(stdout,"INFO: TRANSITION CYCLES .................... Number of cycles during which the focus moves from one cycle to another.\n");
  3604. fprintf(stdout,"INFO: The sum of Linger cycles and Transition cycles must be >= 1.\n");
  3605. fprintf(stdout,"INFO: FOCUS LEVEL BOOST .................... If the standard stream level is \"L\", the focus stream is increased in level by \"L\" times \"FOCUS LEVEL BOOST\".\n");
  3606. fprintf(stdout,"INFO: LINEAR OUTPUT ARRAY .................. If output > stereo, loudspeaker array assumed to be in surround (circling the audience).\n");
  3607. fprintf(stdout,"INFO: But if this flag is set, the array is assumed to be linear (reaching from a leftmost to a rightmost point).\n");
  3608. fprintf(stdout,"INFO: \n");
  3609. fprintf(stdout,"INFO: In standard operation, focus shifts to each of the listed cycles in the order they appear in the data file.\n");
  3610. fprintf(stdout,"INFO: \n");
  3611. fprintf(stdout,"INFO: READ BACK AND FORTH_THROUGH FOCUS .. Focus shifts gradually to the end of the data list, then back gradually towards the start, and so on.\n");
  3612. fprintf(stdout,"INFO: RANDOMLY PERMUTE FOCUS ........... The cycle to focus on is determined by a random permutation of the order of the cycles.\n");
  3613. fprintf(stdout,"INFO: Once all the cycles have been used, a new permutation is made.\n");
  3614. fprintf(stdout,"INFO: You cannot use both Back-and-Forth AND Random focus shift.\n");
  3615. fprintf(stdout,"INFO: \n");
  3616. break;
  3617. case(FRACTURE):
  3618. switch(mode) {
  3619. case(0):
  3620. fprintf(stdout,"INFO: MONO SOUND GRADUALLY FRACTURES INTO ELEMENTS DISTRIBUTED IN SPACE.\n");
  3621. fprintf(stdout,"INFO: \n");
  3622. fprintf(stderr,"INFO: The source is cut into fragments which are enveloped and possibly transpose-stacked\n");
  3623. fprintf(stderr,"INFO: and these fragments are distributed in space.\n");
  3624. fprintf(stderr,"INFO: Stacks are synchronised at the envelope peak of the fragment.\n");
  3625. fprintf(stdout,"INFO: \n");
  3626. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------\n");
  3627. fprintf(stdout,"INFO: \n");
  3628. fprintf(stdout,"INFO: ENVELOPE SERIES ......... A text datafile of lines consisting of a time and 7 pairs of envelope data.\n");
  3629. fprintf(stdout,"INFO: The times are abslute times and must start at 0 and advance.\"\n");
  3630. fprintf(stdout,"INFO: Each pair of the 7 consists of an \"etime\" and a level value.\n");
  3631. fprintf(stdout,"INFO: Etimes are RELATIVE times within the envelope.\n");
  3632. fprintf(stdout,"INFO: In Each line they must start at 0, end at 1, and advance.\n");
  3633. fprintf(stdout,"INFO: Levels values should lie between 0 and 1. The first and last values MUST be zero, and the maximum value MUST be 1.0.\n");
  3634. fprintf(stdout,"INFO: Envelopes to use at a specific time are derived by interpolating between the given envelopes\n");
  3635. fprintf(stdout,"INFO: and subsequently modifying their depth (how close to zero they cut - see below).\n");
  3636. fprintf(stdout,"INFO: OUTPUT CHANNELS ......... The number of channels in the output file (2-16).\n");
  3637. fprintf(stdout,"INFO: NUMBER OF SPATIAL STREAMS .. The number of spatial positions to which the resulting fragments are allotted ( >=4 ).\n");
  3638. fprintf(stdout,"INFO: PULSE DURATION ............ The average time between each SET of fragments (one in each stream).\n");
  3639. fprintf(stdout,"INFO: DEPTH AND STACK ........... Between 0 and 1 this parameter controls how deeply the envelopes cut into the source.\n");
  3640. fprintf(stdout,"INFO: With depth 1 the envelope cuts down to zero (as in the input envelope data).\n");
  3641. fprintf(stdout,"INFO: With depth 0.75 the envelope cuts 3/4 of the way to zero.\n");
  3642. fprintf(stdout,"INFO: With depth 0 the envelope has NO EFFECT on the source.\n");
  3643. fprintf(stdout,"INFO: \n");
  3644. fprintf(stdout,"INFO: Once the depth value exceeds 1, a STACK value is derived, being the depth minus 1.\n");
  3645. fprintf(stdout,"INFO: Stacking adds transposed copies to the fragment, synchronised around the envelope peak.\n");
  3646. fprintf(stdout,"INFO: With a Depth of 2, the Stack value is 1: The 1st transposed element is added at full level,\n");
  3647. fprintf(stdout,"INFO: With a Depth of 1.5, the Stack value is .5: the transposed element is added at 1/2 level,\n");
  3648. fprintf(stdout,"INFO: With a Depth of 2.5, the Stack value is 1.5: The first element is added at full level, the 2nd at 1/2 level\n");
  3649. fprintf(stdout,"INFO: and so on.\n");
  3650. fprintf(stdout,"INFO: STACKING INTERVAL ........ Interval of (upward) transposition in the stack, in semitones (0-12).\n");
  3651. fprintf(stdout,"INFO: The (Default) zero value is read as an octave (12). Zeros MUST NOT BE USED in stack brkpoint files.\n");
  3652. fprintf(stdout,"INFO: READ RANDOMISATION .... Randomisation of the fragment read-time in the source. Range 0-1.\n");
  3653. fprintf(stdout,"INFO: PULSE RANDOMISATION ... Randomisation of the pulse duration. Range 0-1.\n");
  3654. fprintf(stdout,"INFO: In both cases, maximum random scatter scatters within range +- half the duration of the fragment.\n");
  3655. fprintf(stdout,"INFO: STREAM DISPERSAL ........ Scattering of the output timings amongst different streams.\n");
  3656. fprintf(stdout,"INFO: If pulse(+randomisation) generates a timing \"P\",\n");
  3657. fprintf(stdout,"INFO: With Dispersal 0 : all fragments start at \"P\".\n");
  3658. fprintf(stdout,"INFO: With Dispersal 1 : fragments are scattered within a range of +- half the duration of the fragment.\n");
  3659. fprintf(stdout,"INFO: Intermediate values scattered fragment start-times to various extents around the time \"W\".\n");
  3660. fprintf(stdout,"INFO: LEVEL RANDOMISATION .... Randomisation of the levels of the fragments. Range 0 - 1.\n");
  3661. fprintf(stdout,"INFO: With value 0: All fragments are at full level. Value 1 produces random levels between 0 & full level.\n");
  3662. fprintf(stdout,"INFO: ENVELOPE RANDOMISATION .. Randomisation of the choice of source envelope.\n");
  3663. fprintf(stdout,"INFO: This is a time-range between 0 and \"now\".\n");
  3664. fprintf(stdout,"INFO: If set (>0) the time in the envelope data file at which the envelope is selected\n");
  3665. fprintf(stdout,"INFO: is set randomly between \"now\" and \"now minus time-range\".\n");
  3666. fprintf(stdout,"INFO: STACK RANDOMISATION .. Randomisation of the stacking depth.\n");
  3667. fprintf(stdout,"INFO: If set to zero, stacking depth is determined completely by the depth parameter (S = D - 1).\n");
  3668. fprintf(stdout,"INFO: If set to one, stacking depth is selected at random between 0 and the given value.\n");
  3669. fprintf(stdout,"INFO: Intermediate values give intermediate random-selection ranges.\n");
  3670. fprintf(stdout,"INFO: PITCH RANDOMISATION IN CENTS .. Randomisation of the transposition of the fragments.\n");
  3671. fprintf(stdout,"INFO: If set to \"P\", Fragments are randomly transposed in pitch between +P and -P.\n");
  3672. fprintf(stdout,"INFO: RANDOM SEED .............. If the seed value is set as ZERO, and randomising parameters are used,\n");
  3673. fprintf(stdout,"INFO: running the process again with IDENTICAL parameters will produce DIFFERENT output (due to the the variable randomisation).\n");
  3674. fprintf(stdout,"INFO: With a POSITIVE seed value, re-running the process with IDENTICAL randomising parameters produces IDENTICAL (randomised) output.\n");
  3675. fprintf(stdout,"INFO: MINIMUM FRAGMENT DURATION .... Minimum duration of any fragment in any stream.\n");
  3676. fprintf(stdout,"INFO: MAXIMUM FRAGMENT DURATION ... Maximum duration of any fragment in any stream.\n");
  3677. fprintf(stdout,"INFO: \n");
  3678. fprintf(stdout,"INFO: PERMIT SHORT STACKS ... Normally, very sort events are not stacked (to prevent clipping). Setting this flag allows short events to be stacked.\n");
  3679. fprintf(stdout,"INFO: LINEAR OUTPUT ARRAY ... If output > stereo, loudspeaker array assumed to be in surround (circling the audience).\n");
  3680. fprintf(stdout,"INFO: But if this flag is set, the array is assumed to be linear (reaching from a leftmost to a rightmost point).\n");
  3681. fprintf(stdout,"INFO: \n");
  3682. fprintf(stdout,"INFO: NB Stacking, and the read, level & pitch randomisations ARE NOT ACTIVATED if the depth is less than 1.\n");
  3683. break;
  3684. case(1):
  3685. fprintf(stdout,"INFO: MONO SOUND GRADUALLY FRACTURES INTO ELEMENTS DISTRIBUTED IN STEREO, THEN STEREO-IMAGE POSITIONED IN MULTICHANNEL SPACE.\n");
  3686. fprintf(stdout,"INFO: \n");
  3687. fprintf(stderr,"INFO: The source is cut into fragments which are enveloped and possibly transpose-stacked\n");
  3688. fprintf(stderr,"INFO: and these fragments are distributed in space.\n");
  3689. fprintf(stderr,"INFO: Stacks are synchronised at the envelope peak of the fragment.\n");
  3690. fprintf(stdout,"INFO: \n");
  3691. fprintf(stdout,"INFO: The stereo \"front\" is then positioned in multichannel space.\n");
  3692. fprintf(stdout,"INFO: If the front moves it must always move forwards.\n");
  3693. fprintf(stdout,"INFO: \n");
  3694. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------\n");
  3695. fprintf(stdout,"INFO: \n");
  3696. fprintf(stdout,"INFO: ENVELOPE SERIES ......... A text datafile of lines consisting of a time and 7 pairs of envelope data.\n");
  3697. fprintf(stdout,"INFO: The times are abslute times and must start at 0 and advance.\"\n");
  3698. fprintf(stdout,"INFO: Each pair of the 7 consists of an \"etime\" and a level value.\n");
  3699. fprintf(stdout,"INFO: Etimes are RELATIVE times within the envelope.\n");
  3700. fprintf(stdout,"INFO: In Each line they must start at 0, end at 1, and advance.\n");
  3701. fprintf(stdout,"INFO: Levels values should lie between 0 and 1. The first and last values MUST be zero, and the maximum value MUST be 1.0.\n");
  3702. fprintf(stdout,"INFO: Envelopes to use at a specific time are derived by interpolating between the given envelopes\n");
  3703. fprintf(stdout,"INFO: and subsequently modifying their depth (how close to zero they cut - see below).\n");
  3704. fprintf(stdout,"INFO: OUTPUT CHANNELS ......... The number of channels in the output file (2-16).\n");
  3705. fprintf(stdout,"INFO: NUMBER OF SPATIAL STREAMS .. The number of spatial positions to which the resulting fragments are allotted ( >=4 ).\n");
  3706. fprintf(stdout,"INFO: PULSE DURATION ............ The average time between each SET of fragments (one in each stream).\n");
  3707. fprintf(stdout,"INFO: DEPTH AND STACK ........... Between 0 and 1 this parameter controls how deeply the envelopes cut into the source.\n");
  3708. fprintf(stdout,"INFO: With depth 1 the envelope cuts down to zero (as in the input envelope data).\n");
  3709. fprintf(stdout,"INFO: With depth 0.75 the envelope cuts 3/4 of the way to zero.\n");
  3710. fprintf(stdout,"INFO: With depth 0 the envelope has NO EFFECT on the source.\n");
  3711. fprintf(stdout,"INFO: \n");
  3712. fprintf(stdout,"INFO: Once the depth value exceeds 1, a STACK value is derived, being the depth minus 1.\n");
  3713. fprintf(stdout,"INFO: Stacking adds transposed copies to the fragment, synchronised around the envelope peak.\n");
  3714. fprintf(stdout,"INFO: With a Depth of 2, the Stack value is 1: The 1st transposed element is added at full level,\n");
  3715. fprintf(stdout,"INFO: With a Depth of 1.5, the Stack value is .5: the transposed element is added at 1/2 level,\n");
  3716. fprintf(stdout,"INFO: With a Depth of 2.5, the Stack value is 1.5: The first element is added at full level, the 2nd at 1/2 level\n");
  3717. fprintf(stdout,"INFO: and so on.\n");
  3718. fprintf(stdout,"INFO: STACKING INTERVAL ........ Interval of (upward) transposition in the stack, in semitones (0-12).\n");
  3719. fprintf(stdout,"INFO: The (Default) zero value is read as an octave (12). Zeros MUST NOT BE USED in stack brkpoint files.\n");
  3720. fprintf(stdout,"INFO: CENTRE OF IMAGE .......... Channel from which stereo image radiates (must be an integer).\n");
  3721. fprintf(stdout,"INFO: FRONT POSITION ............ Position of stereo image in surround-space.\n");
  3722. fprintf(stdout,"INFO: 1 : front at centre lspkr. -1: front at lspkr opposite to centre 0 : front at midline of surround-space.\n");
  3723. fprintf(stdout,"INFO: 2 : front infinitely far away in direction of centre lspkr. -(2+(depth*2)) : front infinitely far away in direction opposite to centre lspkr.\n");
  3724. fprintf(stdout,"INFO: DEPTH BEHIND FRONT ...... Fraction of total channels activated behind spreading front.\n");
  3725. fprintf(stdout,"INFO: LEVEL ROLLOFF WITH ADDED CHANNELS .... Level compensation for addition of new output channels.\n");
  3726. fprintf(stdout,"INFO: 0, No rolloff, all channels play at full-current-level as they are added.\n");
  3727. fprintf(stdout,"INFO: 1, Full rolloff, levels fall to 1/N of full-current-level when Nth channels is added.\n");
  3728. fprintf(stdout,"INFO: Intermediate values are possible.\n");
  3729. fprintf(stdout,"INFO: READ RANDOMISATION .... Randomisation of the fragment read-time in the source. Range 0-1.\n");
  3730. fprintf(stdout,"INFO: PULSE RANDOMISATION ... Randomisation of the pulse duration. Range 0-1.\n");
  3731. fprintf(stdout,"INFO: In both cases, maximum random scatter scatters within range +- half the duration of the fragment.\n");
  3732. fprintf(stdout,"INFO: STREAM DISPERSAL ........ Scattering of the output timings amongst different streams.\n");
  3733. fprintf(stdout,"INFO: If pulse(+randomisation) generates a timing \"P\",\n");
  3734. fprintf(stdout,"INFO: With Dispersal 0 : all fragments start at \"P\".\n");
  3735. fprintf(stdout,"INFO: With Dispersal 1 : fragments are scattered within a range of +- half the duration of the fragment.\n");
  3736. fprintf(stdout,"INFO: Intermediate values scattered fragment start-times to various extents around the time \"W\".\n");
  3737. fprintf(stdout,"INFO: LEVEL RANDOMISATION .... Randomisation of the levels of the fragments. Range 0 - 1.\n");
  3738. fprintf(stdout,"INFO: With value 0: All fragments are at full level. Value 1 produces random levels between 0 & full level.\n");
  3739. fprintf(stdout,"INFO: ENVELOPE RANDOMISATION .. Randomisation of the choice of source envelope.\n");
  3740. fprintf(stdout,"INFO: This is a time-range between 0 and \"now\".\n");
  3741. fprintf(stdout,"INFO: If set (>0) the time in the envelope data file at which the envelope is selected\n");
  3742. fprintf(stdout,"INFO: is set randomly between \"now\" and \"now minus time-range\".\n");
  3743. fprintf(stdout,"INFO: STACK RANDOMISATION .. Randomisation of the stacking depth.\n");
  3744. fprintf(stdout,"INFO: If set to zero, stacking depth is determined completely by the depth parameter (S = D - 1).\n");
  3745. fprintf(stdout,"INFO: If set to one, stacking depth is selected at random between 0 and the given value.\n");
  3746. fprintf(stdout,"INFO: Intermediate values give intermediate random-selection ranges.\n");
  3747. fprintf(stdout,"INFO: PITCH RANDOMISATION IN CENTS .. Randomisation of the transposition of the fragments.\n");
  3748. fprintf(stdout,"INFO: If set to \"P\", Fragments are randomly transposed in pitch between +P and -P.\n");
  3749. fprintf(stdout,"INFO: RANDOM SEED .............. If the seed value is set as ZERO, and randomising parameters are used,\n");
  3750. fprintf(stdout,"INFO: running the process again with IDENTICAL parameters will produce DIFFERENT output (due to the the variable randomisation).\n");
  3751. fprintf(stdout,"INFO: With a POSITIVE seed value, re-running the process with IDENTICAL randomising parameters produces IDENTICAL (randomised) output.\n");
  3752. fprintf(stdout,"INFO: MINIMUM FRAGMENT DURATION .... Minimum duration of any fragment in any stream.\n");
  3753. fprintf(stdout,"INFO: MAXIMUM FRAGMENT DURATION ... Maximum duration of any fragment in any stream.\n");
  3754. fprintf(stdout,"INFO: ATTENUATION FACTOR .......... Rapidity of attenuation of level of front, with distance from ring,\n");
  3755. fprintf(stdout,"INFO: or during intrinsic fade-out of sound which doesn't recede into far distance.\n");
  3756. fprintf(stdout,"INFO: 1 = linear fade.\n");
  3757. fprintf(stdout,"INFO: SUBTEND ZERO POINT ......... Point at which image becomes mono as it retreats from circle, or ceases being mono as it approaches the circle of loudspeakers.\n");
  3758. fprintf(stdout,"INFO: Ratio of the required-distance(time)-to-the-subtend-zero-point to the total-distance(time)-to-infinity.\n");
  3759. fprintf(stdout,"INFO: CONTRACTION FACTOR ...... Rate of contraction of image : 1 = linear.\n");
  3760. fprintf(stdout,"INFO: MAX FILTER POINT ............ Point at which image becomes entirely lo-pass filtered as it retreats from circle, or begins to de-filter as it approaches the circle of loudspeakers.\n");
  3761. fprintf(stdout,"INFO: Ratio of the required-distance(time)-to-the-max-filter-point to the total-distance(time)-to-infinity.\n");
  3762. fprintf(stdout,"INFO: FILTER MIX FACTOR ............ Rate of replacement by filtered image : 1 = linear.\n");
  3763. fprintf(stdout,"INFO: FILTER LOPASS FREQUENCY.. Low-pass cut-off frequency of distance-filter.\n");
  3764. fprintf(stdout,"INFO: FADE IN ........................... Proportion of total duration over which event fades in from zero (independently of any fade associated with distance).\n");
  3765. fprintf(stdout,"INFO: FADE OUT ......................... Proportion of total duration over which event decays to zero (independently of any fade associated with distance).\n");
  3766. fprintf(stdout,"INFO: OVERALL GAIN ................. Overall gain: rare possibility that very rapid contraction with very low attenuation rate may cause overload in mixing to mono.\n");
  3767. fprintf(stdout,"INFO: In case of overload, turn down inputs with \"Overall Gain\".\n");
  3768. fprintf(stdout,"INFO: \n");
  3769. fprintf(stdout,"INFO: PERMIT SHORT STACKS ... Normally, very sort events are not stacked (to prevent clipping). Setting this flag allows short events to be stacked.\n");
  3770. fprintf(stdout,"INFO: \n");
  3771. fprintf(stdout,"INFO: NB The stacking, level and repitching parameters DO NOT KICK IN until the depth reaches 1.\n");
  3772. break;
  3773. }
  3774. break;
  3775. case(SUBTRACT):
  3776. fprintf(stdout,"INFO: SUBTRACTS A MONO FILE FROM (1 CHANNEL OF) ANOTHER FILE.\n");
  3777. fprintf(stdout,"INFO: \n");
  3778. fprintf(stdout,"INFO: The first file can have any number of channels.\n");
  3779. fprintf(stdout,"INFO: \n");
  3780. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------\n");
  3781. fprintf(stdout,"INFO: \n");
  3782. fprintf(stdout,"INFO: CHANNEL TO SUBTRACT .......... The number ( 1 - N ) of any channel in the 2nd file. (Setting to ZERO subtracts channel 1).\n");
  3783. fprintf(stdout,"INFO: \n");
  3784. break;
  3785. case(SPEKLINE):
  3786. switch(mode) {
  3787. case(0):
  3788. fprintf(stdout,"INFO: CREATING SPECTRUM FROM SPECTRAL LINES TEXT DATA.\n");
  3789. fprintf(stdout,"INFO: \n");
  3790. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------\n");
  3791. fprintf(stdout,"INFO: \n");
  3792. fprintf(stdout,"INFO: ANALYSIS CHANNELS .......................... Number of channels in output spectral file (multiple of 2).\n");
  3793. fprintf(stdout,"INFO: SOUND SAMPLING RATE ...................... Sampling rate of sound which will eventually be generated.\n");
  3794. fprintf(stdout,"INFO: OUTPUT DURATION .............................. Duration of output spectrum.\n");
  3795. fprintf(stdout,"INFO: NO OF ADDED HARMONICS .................. Number of harmonics to add to basic input spctrum.\n");
  3796. fprintf(stdout,"INFO: HARMONICS ROLLOFF(dB).................... Rolloff (in dB) proceeding from one harmonic to the next.\n");
  3797. fprintf(stdout,"INFO: FOOT OF INPUT DATA ........................ Minimum value in input to be represented in output spectrum ( less or equal to min data value).\n");
  3798. fprintf(stdout,"INFO: CEILING OF INPUT DATA .................. Maximum value in input to be represented in output spectrum ( breater than or equal to max data value).\n");
  3799. fprintf(stdout,"INFO: FOOT OF SPECTRUM IN OUTPUT ........ Frequency of minimum value represented in output spectrum.\n");
  3800. fprintf(stdout,"INFO: CEILING OF SPECTRUM IN OUTPUT .. Frequency of maximum value represented in output spectrum.\n");
  3801. fprintf(stdout,"INFO: OVERALL GAIN .................................... Attenuation of output spectrum.\n");
  3802. fprintf(stdout,"INFO: SPECTRAL WARP .................................. If NOT set to 1.0, warpa the shape of the output spectrum .... \n");
  3803. fprintf(stdout,"INFO: Warp greater than 1 causes spectrum to be squeezed into the lower frequencies.\n");
  3804. fprintf(stdout,"INFO: Warp less than 1 causes spectrum to be squeezed into the higher frequencies.\n");
  3805. fprintf(stdout,"INFO: AMPLITUDE RANGE FLATTENING ........ If NOT set to 1.0 changes range of amplitudes of spectral lines.... \n");
  3806. fprintf(stdout,"INFO: As value increases, amplitude range is increasingly flattened.\n");
  3807. fprintf(stdout,"INFO: \n");
  3808. break;
  3809. case(1):
  3810. fprintf(stdout,"INFO: CREATING FILTER DATA FILE FROM SPECTRAL LINES TEXT DATA.\n");
  3811. fprintf(stdout,"INFO: \n");
  3812. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------\n");
  3813. fprintf(stdout,"INFO: \n");
  3814. fprintf(stdout,"INFO: SOUND SAMPLING RATE ...................... Sampling rate of sound which will eventually be generated.\n");
  3815. fprintf(stdout,"INFO: OUTPUT DURATION .............................. Duration of output spectrum.\n");
  3816. fprintf(stdout,"INFO: FOOT OF INPUT DATA ........................ Minimum value in input to be represented in output spectrum ( less or equal to min data value).\n");
  3817. fprintf(stdout,"INFO: CEILING OF INPUT DATA .................. Maximum value in input to be represented in output spectrum ( breater than or equal to max data value).\n");
  3818. fprintf(stdout,"INFO: FOOT OF SPECTRUM IN OUTPUT ........ Frequency of minimum value represented in output spectrum.\n");
  3819. fprintf(stdout,"INFO: CEILING OF SPECTRUM IN OUTPUT .. Frequency of maximum value represented in output spectrum.\n");
  3820. fprintf(stdout,"INFO: SPECTRAL WARP .................................. If NOT set to 1.0, warpa the shape of the output spectrum .... \n");
  3821. fprintf(stdout,"INFO: Warp greater than 1 causes spectrum to be squeezed into the lower frequencies.\n");
  3822. fprintf(stdout,"INFO: Warp less than 1 causes spectrum to be squeezed into the higher frequencies.\n");
  3823. fprintf(stdout,"INFO: AMPLITUDE RANGE FLATTENING ........ If NOT set to 1.0 changes range of amplitudes of spectral lines.... \n");
  3824. fprintf(stdout,"INFO: As value increases, amplitude range is increasingly flattened.\n");
  3825. fprintf(stdout,"INFO: \n");
  3826. break;
  3827. }
  3828. break;
  3829. case(SPECMORPH):
  3830. switch(mode) {
  3831. case(6):
  3832. fprintf(stdout,"INFO: MORPH, IN STEPS, BETWEEN TWO DISSIMILAR SPECTRA.\n");
  3833. fprintf(stdout,"INFO: \n");
  3834. fprintf(stdout,"INFO: Spectral peaks of 2 files are matched and, at each output step, move away from 1st and closer to 2nd.\n");
  3835. fprintf(stdout,"INFO: \n");
  3836. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------\n");
  3837. fprintf(stdout,"INFO: \n");
  3838. fprintf(stdout,"INFO: NUMBER OF PEAKS TO MAP ..................... Number of peaks to look for.\n");
  3839. fprintf(stdout,"INFO: NUMBER OF INTERMEDIATE FILES ... Number of output files with peaks in between the 1st and 2nd input files.\n");
  3840. fprintf(stdout,"INFO: \n");
  3841. fprintf(stdout,"INFO: RETAIN LOUDNESS ENVELOPE OF 1st SND The loudness contour of the 1st sound is retained, even as its spectrum is changed.\n");
  3842. fprintf(stdout,"INFO: \n");
  3843. fprintf(stdout,"INFO: INTERP PEAKS ONLY .................... Retain file1 content of all non-peak channels.\n");
  3844. fprintf(stdout,"INFO: (In default case, non-peak channels interpolate towards file2 values).\n");
  3845. fprintf(stdout,"INFO: \n");
  3846. fprintf(stdout,"INFO: INTERP PEAK FREQUENCIES ONLY .. Amplitudes of peak channels are determined by peak amplitudes of sound 1 only.\n");
  3847. fprintf(stdout,"INFO: \n");
  3848. break;
  3849. default:
  3850. fprintf(stdout,"INFO: MORPH BETWEEN TWO DISSIMILAR SPECTRA.\n");
  3851. fprintf(stdout,"INFO: \n");
  3852. fprintf(stdout,"INFO: Spectral peaks are matched, and pitch-glide towards one another.\n");
  3853. fprintf(stdout,"INFO: \n");
  3854. fprintf(stdout,"INFO: MODES----------------------------------------------------------\n");
  3855. fprintf(stdout,"INFO: \n");
  3856. fprintf(stdout,"INFO: Modes 1 and 2: Calculate the channels of the spectral peaks as an average over the whole sound.\n");
  3857. fprintf(stdout,"INFO: Modes 3 and 4: Calculate the channels of the spectral peaks on a window by window basis.\n");
  3858. fprintf(stdout,"INFO: Modes 5 and 6: Uses harmonic field of the average peaks in the 2nd sound to tune the spectrum of the 1st.\n");
  3859. fprintf(stdout,"INFO: \n");
  3860. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------\n");
  3861. fprintf(stdout,"INFO: \n");
  3862. fprintf(stdout,"INFO: 2nd FILE ENTRY TIME ........... Entry of 2nd sound may be delayed (but morph can only begin oce it has entered).\n");
  3863. fprintf(stdout,"INFO: INTERPOLATION START ........ Start time of the morph.\n");
  3864. fprintf(stdout,"INFO: INTERPOLATION END ........... End time of the morph.\n");
  3865. fprintf(stdout,"INFO: INTERPOLATION EXPONENT ... Determines the shape of the interpolation.\n");
  3866. fprintf(stdout,"INFO: In modes 1 and 3\n");
  3867. fprintf(stdout,"INFO: exponent 1 gives a linear interpolation.\n");
  3868. fprintf(stdout,"INFO: exponent more than 1 interpolates slower at the start and faster at the end.\n");
  3869. fprintf(stdout,"INFO: exponent less than 1 interpolates faster at the start and slower at the end.\n");
  3870. fprintf(stdout,"INFO: In modes 2 and 4\n");
  3871. fprintf(stdout,"INFO: exponent 1 gives a cosinusiodal interpolation.\n");
  3872. fprintf(stdout,"INFO: exponent more than 1 forces the cosinusiodal transition towards the midpoint-time.\n");
  3873. fprintf(stdout,"INFO: exponent less than 1 speeds up the initial and final interpolation-rate.\n");
  3874. fprintf(stdout,"INFO: exponent .85 approaches the linear case.\n");
  3875. fprintf(stdout,"INFO: Below .85 the interpolation lingers longer around its half-way point.\n");
  3876. fprintf(stdout,"INFO: NUMBER OF PEAKS TO MAP ..................... Number of peaks to look for.\n");
  3877. fprintf(stdout,"INFO: RANDOMISATION OF GOAL PEAK FRQ ... Randomisation of goal peak-frequencies (can vary over time).\n");
  3878. fprintf(stdout,"INFO: \n");
  3879. fprintf(stdout,"INFO: RETAIN LOUDNESS ENVELOPE OF 1st SND The loudness contour of the 1st sound is retained, even as its spectrum morphs.\n");
  3880. fprintf(stdout,"INFO: In this case, output will cease once the 1st sound ends.\n");
  3881. fprintf(stdout,"INFO: \n");
  3882. fprintf(stdout,"INFO: INTERP PEAKS ONLY .................... Retain file1 content of all non-peak channels.\n");
  3883. fprintf(stdout,"INFO: (In default case, non-peak channels interpolate towards file2 values).\n");
  3884. fprintf(stdout,"INFO: \n");
  3885. fprintf(stdout,"INFO: INTERP PEAK FREQUENCIES ONLY .. Peak channel amplitudes are determined by 1st sound peak amplitudes only.\n");
  3886. fprintf(stdout,"INFO: \n");
  3887. break;
  3888. }
  3889. break;
  3890. case(SPECMORPH2):
  3891. fprintf(stdout,"INFO: EXTRACT OR MORPH SPECTRAL PEAKS.\n");
  3892. fprintf(stdout,"INFO: \n");
  3893. fprintf(stdout,"INFO: Spectral peaks are made to glide to new values.\n");
  3894. fprintf(stdout,"INFO: \n");
  3895. fprintf(stdout,"INFO: MODES----------------------------------------------------------\n");
  3896. fprintf(stdout,"INFO: \n");
  3897. fprintf(stdout,"INFO: Mode 1: Extract average frequencies of the peaks (in order of decreasing prominence).\n");
  3898. fprintf(stdout,"INFO: Mode 2: Uses peak-frequencies specified in textfile (in order of decreasing prominence) to gradually tune the spectrum.\n");
  3899. fprintf(stdout,"INFO: Mode 3: Ditto, using cosinusoidal morph.\n");
  3900. fprintf(stdout,"INFO: \n");
  3901. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------\n");
  3902. fprintf(stdout,"INFO: \n");
  3903. fprintf(stdout,"INFO: NUMBER OF PEAKS TO LOOK FOR ..... Number of peaks to look for.\n");
  3904. fprintf(stdout,"INFO: INTERPOLATION START ........ Start time of the morph.\n");
  3905. fprintf(stdout,"INFO: INTERPOLATION END ........... End time of the morph.\n");
  3906. fprintf(stdout,"INFO: INTERPOLATION EXPONENT ... Determines the shape of the interpolation.\n");
  3907. fprintf(stdout,"INFO: In modes 1 and 3\n");
  3908. fprintf(stdout,"INFO: exponent 1 gives a linear interpolation.\n");
  3909. fprintf(stdout,"INFO: exponent more than 1 interpolates slower at the start and faster at the end.\n");
  3910. fprintf(stdout,"INFO: exponent less than 1 interpolates faster at the start and slower at the end.\n");
  3911. fprintf(stdout,"INFO: In modes 2 and 4\n");
  3912. fprintf(stdout,"INFO: exponent 1 gives a cosinusiodal interpolation.\n");
  3913. fprintf(stdout,"INFO: exponent more than 1 forces the cosinusiodal transition towards the midpoint-time.\n");
  3914. fprintf(stdout,"INFO: exponent less than 1 speeds up the initial and final interpolation-rate.\n");
  3915. fprintf(stdout,"INFO: exponent .85 approaches the linear case.\n");
  3916. fprintf(stdout,"INFO: Below .85 the interpolation lingers longer around its half-way point.\n");
  3917. fprintf(stdout,"INFO: RANDOMISATION OF GOAL PEAK FRQ ... Randomisation of goal peak-frequencies (can vary over time).\n");
  3918. fprintf(stdout,"INFO: \n");
  3919. break;
  3920. case(NEWDELAY):
  3921. fprintf(stdout,"INFO: DELAY WITH FEEDBACK, GENERATING PITCHED OUTPUT.\n");
  3922. fprintf(stdout,"INFO: \n");
  3923. switch(mode) {
  3924. case(0):
  3925. fprintf(stdout,"INFO: Pitch a sound using delay with feedback.\n");
  3926. fprintf(stdout,"INFO: \n");
  3927. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------\n");
  3928. fprintf(stdout,"INFO: \n");
  3929. fprintf(stdout,"INFO: MIDI PITCH .................. MIDI pitch generated by delayed feedback\n");
  3930. fprintf(stdout,"INFO: DELAYED SIGNAL IN MIX .. Level of delayed signal in the output\n");
  3931. fprintf(stdout,"INFO: FEEDBACK................... Feedback level (Feedback generates pitch effect)\n");
  3932. fprintf(stdout,"INFO: \n");
  3933. break;
  3934. case(1):
  3935. fprintf(stdout,"INFO: Pitch the start portion (HEAD) of a sound using delay with feedback.\n");
  3936. fprintf(stdout,"INFO: \n");
  3937. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------\n");
  3938. fprintf(stdout,"INFO: \n");
  3939. fprintf(stdout,"INFO: MIDI PITCH ....................................................... MIDI pitch to be generated.\n");
  3940. fprintf(stdout,"INFO: HEAD DURATION ................................................ Duration of Head portion of sound.\n");
  3941. fprintf(stdout,"INFO: FACTOR BY WHICH HEAD DURATION EXTENDED .......... Repeats of Head cause the resulting pitched-head to be longer than original by this factor.\n");
  3942. fprintf(stdout,"INFO: DELAY RANDOMISATION ....................................... More randomisation of delay causes pitch to be more gritty or unclear.\n");
  3943. fprintf(stdout,"INFO: MAX OF LEVEL DIP IN EXTENDED HEAD (A FACTOR) ....... Extended Head can dip in level in its middle. Factor 1 = no dip, factor 3 = dip to 1/3 level.\n");
  3944. fprintf(stdout,"INFO: POSITION OF MAX DIP AS FRACTION OF HEAD LENGTH .. Any dip in level reaches its lowest point at this fraction of the extended head's duration.\n");
  3945. fprintf(stdout,"INFO: \n");
  3946. break;
  3947. }
  3948. break;
  3949. case(FILTRAGE):
  3950. fprintf(stdout,"INFO: GENERATE RANDOM FILTER-SETTINGS FOR VARIBANK FILTER.\n");
  3951. fprintf(stdout,"INFO: \n");
  3952. fprintf(stdout,"INFO: MODES----------------------------------------------------------\n");
  3953. fprintf(stdout,"INFO: \n");
  3954. fprintf(stdout,"INFO: Mode 1: Make fixed-values filter.\n");
  3955. fprintf(stdout,"INFO: Mode 2: Make time-varying filter.\n");
  3956. fprintf(stdout,"INFO: \n");
  3957. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------\n");
  3958. fprintf(stdout,"INFO: \n");
  3959. fprintf(stdout,"INFO: DURATION ...................... Duration of filter.\n");
  3960. fprintf(stdout,"INFO: NUMBER OF FILTERS .......... Number of separate pitch-streams defined in output filter data.\n");
  3961. fprintf(stdout,"INFO: MIN MIDIPITCH OF FILTERS .. Minimum MIDI pitch in any specified pitchstream.\n");
  3962. fprintf(stdout,"INFO: MAX MIDIPITCH OF FILTERS .. Maximum MIDI pitch in any specified pitchstream\n");
  3963. fprintf(stdout,"INFO: PITCH DISTRIBUTION ........ 1 gives linear pitch-distribution,\n");
  3964. fprintf(stdout,"INFO: greater than 1 squeezes pitches towards lower values.\n");
  3965. fprintf(stdout,"INFO: less than 1 squeezes pitches towards higher values.\n");
  3966. fprintf(stdout,"INFO: PITCH RANDOMISATION ......... Randomisation of pitches. 1 gives maximum randomisation.\n");
  3967. fprintf(stdout,"INFO: MINIMUM FILTER AMPLITUDE ... Filters will vary in amplitude between thhis MINIMUM, and the max value of 1.0\n");
  3968. fprintf(stdout,"INFO: AMPLITUDE RANDOMISATION .. Randomisation of amplitudes.\n");
  3969. fprintf(stdout,"INFO: AMPLITUDE DISTRIBUTION ...... 0 gives random amplitudes.\n");
  3970. fprintf(stdout,"INFO: 1 gives increasing amplitude with pitch.\n");
  3971. fprintf(stdout,"INFO: -1 gives decreasing amplitude with pitch.\n");
  3972. fprintf(stdout,"INFO: Intermediate values give increasing degrees of randomisation, as zero is approached.\n");
  3973. if(mode == 1) {
  3974. fprintf(stdout,"INFO: TIMESTEP BETWEEN FILTER SETS .. (Average) timestep between each pitch-set specification, for time-changing filters,\n");
  3975. fprintf(stdout,"INFO: RANDOMISATION OF TIMESTEP ........ Randomisation of timesteps.\n");
  3976. }
  3977. fprintf(stdout,"INFO: RANDOM SEED .................... If seed value is NOT zero, random values used in process will be reproduced on next pass with SAME parameters.\n");
  3978. fprintf(stdout,"INFO: \n");
  3979. break;
  3980. case(ITERLINE):
  3981. case(ITERLINEF):
  3982. if(process == ITERLINE)
  3983. fprintf(stdout,"INFO: EXTEND SOURCE BY ITERATION, FOLLOWING A DEFINED TRANSPOSITION LINE.\n");
  3984. else {
  3985. fprintf(stdout,"INFO: EXTEND BY ITERATION A SET OF SOUNDS WHICH ARE TRANSPOSITIONS OF A SOURCE, FOLLOWING A DEFINED TRANSPOSITION LINE.\n");
  3986. fprintf(stdout,"INFO: \n");
  3987. fprintf(stdout,"INFO: The aim here is to effect a line which changes in pitch without altering the formant character of a source.\n");
  3988. fprintf(stdout,"INFO: \n");
  3989. fprintf(stdout,"INFO: There must be 25 input files, being semitone transpositions of an original source.\n");
  3990. fprintf(stdout,"INFO: The first 12 sounds are transpositions downward by 12 semitones, 11 semitones, 10 semitones etc\n");
  3991. fprintf(stdout,"INFO: File 13 is the original, untransposed source.\n");
  3992. fprintf(stdout,"INFO: Files 14-25 are transpositions upwards by 1 semitone, 2 semitones, 3 semitones etc\n");
  3993. fprintf(stdout,"INFO: \n");
  3994. fprintf(stdout,"INFO: The transpositions should be duration and formant preserving.\n");
  3995. fprintf(stdout,"INFO: \n");
  3996. }
  3997. fprintf(stdout,"INFO: MODES----------------------------------------------------------\n");
  3998. fprintf(stdout,"INFO: \n");
  3999. fprintf(stdout,"INFO: Mode 1: Interpolate timewise between transposition values.\n");
  4000. fprintf(stdout,"INFO: Mode 2: Step between transposition values.\n");
  4001. fprintf(stdout,"INFO: \n");
  4002. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------\n");
  4003. fprintf(stdout,"INFO: \n");
  4004. fprintf(stdout,"INFO: TRANSPOSITION DATA.....Textfile of pairs of time/transposition values. Times must start at 0, and increase.\n");
  4005. fprintf(stdout,"INFO: Transposition valueds are in (possibly fractional) semitones, in range +- 24 (2 octaves up or down)\n");
  4006. fprintf(stdout,"INFO: DELAY..................(average) delay between iterations.\n");
  4007. fprintf(stdout,"INFO: PITCH SCATTER..........max of randomisation of pitchshift of each iteration: (possibly fractional) semitones.\n");
  4008. fprintf(stdout,"INFO: AMPLITUDE SCATTER......max of random amp-reduction on each iteration.\n");
  4009. fprintf(stdout,"INFO: OVERALL GAIN...........(special) value 0, gives best guess for no distortion.\n");
  4010. fprintf(stdout,"INFO: SEED RANDOM GENERATOR..same number produces identical output on rerun,\n");
  4011. fprintf(stdout,"INFO: \n");
  4012. break;
  4013. case(SPECRAND):
  4014. fprintf(stdout,"INFO: TIME-RANDOMISE SPECTRAL DATA.\n");
  4015. fprintf(stdout,"INFO: \n");
  4016. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------\n");
  4017. fprintf(stdout,"INFO: \n");
  4018. fprintf(stdout,"INFO: RANDOMISATION TIMESCALE .......... Timescale over which spectral data are randomised.\n");
  4019. fprintf(stdout,"INFO: WINDOW GROUPING .................. Spectral windows are grouped into sets of time-adjacent windows, and these sets are time-randomised,\n");
  4020. fprintf(stdout,"INFO: This parameter determines the number of windows in each set.\n");
  4021. fprintf(stdout,"INFO: The duration of the window-group cannot exceed (half of) the Randomisation Timescale.\n");
  4022. fprintf(stdout,"INFO: \n");
  4023. break;
  4024. case(SPECSQZ):
  4025. fprintf(stdout,"INFO: SQUEEZE THE FREQUENCY-SECTRUM.\n");
  4026. fprintf(stdout,"INFO: \n");
  4027. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------\n");
  4028. fprintf(stdout,"INFO: \n");
  4029. fprintf(stdout,"INFO: CENTRE FREQUENCY ............. Frequency around which other values are squeezed.\n");
  4030. fprintf(stdout,"INFO: SQUEEZE FACTOR ............... Contraction of the frequency data range (less than 1).\n");
  4031. fprintf(stdout,"INFO: \n");
  4032. break;
  4033. case(HOVER2):
  4034. fprintf(stdout,"INFO: ZIGZAG READ A SOURCE AT A GIVEN FREQUENCY.\n");
  4035. fprintf(stdout,"INFO: \n");
  4036. fprintf(stdout,"INFO: At any specified location, process searches for nearby zero-crossing,\n");
  4037. fprintf(stdout,"INFO: then reads forwards from the zero, then back to the zero, producing a wave half-cycle,\n");
  4038. fprintf(stdout,"INFO: then writes the inversion of those samples, producing symmetrical 2nd-half of wave-cycle.\n");
  4039. fprintf(stdout,"INFO: \n");
  4040. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------\n");
  4041. fprintf(stdout,"INFO: \n");
  4042. fprintf(stdout,"INFO: RATE OF HOVER (Hz) .... slow rate: reads lots of samples forwards, backwards, forwards.\n");
  4043. fprintf(stdout,"INFO: fast rate: reads fewer samples forwards, backwards, forwards.\n");
  4044. fprintf(stdout,"INFO: LOCATION OF HOVERING .. Time in input sound where samples are read.\n");
  4045. fprintf(stdout,"INFO: RANDOMISATION OF RATE (0-1)\n");
  4046. fprintf(stdout,"INFO: RANDOMISATION OF LOCATION (0-1)\n");
  4047. fprintf(stdout,"INFO: OUTPUT DURATION ....... Total Duration of output file.\n");
  4048. fprintf(stdout,"INFO: \n");
  4049. fprintf(stdout,"INFO: ADVANCE LOCATIONS STEPWISE ..... If a brkpoint table is used for LOCATION\n");
  4050. fprintf(stdout,"INFO: then the location read at any time-value remains the read-location\n");
  4051. fprintf(stdout,"INFO: until a new time-value in the file is reached.\n");
  4052. fprintf(stdout,"INFO: (The default read mode is to INTERPOLATE between locations specified at the time-values in the file).\n");
  4053. fprintf(stdout,"INFO: NORMALISE OUTPUT ..... Normalise the level of all wavecycles generated.\n");
  4054. break;
  4055. case(SELFSIM):
  4056. fprintf(stdout,"INFO: MAKE SPECTRUM MORE SELF-SIMILAR.\n");
  4057. fprintf(stdout,"INFO: \n");
  4058. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------\n");
  4059. fprintf(stdout,"INFO: \n");
  4060. fprintf(stdout,"INFO: SELF SIMILARITY INDEX ............. Number of similar windows to replace.\n");
  4061. fprintf(stdout,"INFO: Value 1 uses loudest window to replace the most similar window.\n");
  4062. fprintf(stdout,"INFO: then the next loudest window to replace window most similar to it\n");
  4063. fprintf(stdout,"INFO: and so on, with appropriate overall-loudness scaling.\n");
  4064. fprintf(stdout,"INFO: With value 2, loudest windows replaces the TWO windows most similar to it.\n");
  4065. fprintf(stdout,"INFO: and so on.\n");
  4066. fprintf(stdout,"INFO: If two windows are to be replaced by A, and A first replaces B,\n");
  4067. fprintf(stdout,"INFO: and D is more similar to B, than C is to A, then A replaces D rather than C.\n");
  4068. fprintf(stdout,"INFO: \n");
  4069. break;
  4070. case(ITERFOF):
  4071. switch(mode) {
  4072. case(0):
  4073. fprintf(stdout,"INFO: GENERATE PITCHED LINE FROM SMALL SOUND PACKET OR FOF.\n");
  4074. fprintf(stdout,"INFO: \n");
  4075. fprintf(stdout,"INFO: Treat source as a wavelength sized FOF, and use transposition data, to guide pitch of output line.\n");
  4076. fprintf(stdout,"INFO: With any transposition breakpoint file, interpolate between values, so pitch glides from one value to next.\n");
  4077. fprintf(stdout,"INFO: \n");
  4078. fprintf(stdout,"INFO: PARAMETERS OF THE WHOLE EVENT ----------------------------------------------------------\n");
  4079. fprintf(stdout,"INFO: \n");
  4080. fprintf(stdout,"INFO: SEMITONE TRANSPOSITION OF LINE Assumes duration of input = wavelength of the fundamental pitch to be transposed.\n");
  4081. fprintf(stdout,"INFO: DURATION ............................... (Minimum) duration of the entire output sound.\n");
  4082. fprintf(stdout,"INFO: \n");
  4083. fprintf(stdout,"INFO: PARAMETERS OF THE ELELEMTS ----------------------------------------------------------\n");
  4084. fprintf(stdout,"INFO: \n");
  4085. fprintf(stdout,"INFO: SEGMENT PITCH RANDOMISATION ... Randomises pitch of individual segments themselves.\n");
  4086. fprintf(stdout,"INFO: MAX OF RANDOM AMP REDUCTION .. If greater than 0, amplitude of successive segments are randomly reduced\n");
  4087. fprintf(stdout,"INFO: up to a maximum of the value input here.\n");
  4088. fprintf(stdout,"INFO: TRIMMED DURATION OF ELEMENTS . If elements are to be shortened, this is Duration to trim to\n");
  4089. fprintf(stdout,"INFO: and will be equal to or less than (possibly transposed) source duration.\n");
  4090. fprintf(stdout,"INFO: A ZERO value means the elements are NOT trimmed.\n");
  4091. fprintf(stdout,"INFO: FADE DURATION OF ELEMENTS ...... Duration of any fade on end of elements.\n");
  4092. fprintf(stdout,"INFO: FADE SLOPE ............................. Slope of any fade on end of elements.\n");
  4093. fprintf(stdout,"INFO: \n");
  4094. fprintf(stdout,"INFO: PARAMETERS OF THE LINE ----------------------------------------------------------\n");
  4095. fprintf(stdout,"INFO: \n");
  4096. fprintf(stdout,"INFO: PITCH ROUGHNESS ....................... Randomisation of instantaneous pitch.\n");
  4097. fprintf(stdout,"INFO: MIN VIBRATO FREQUENCY .......... Minimum frequency of line vibrato.\n");
  4098. fprintf(stdout,"INFO: MAX VIBRATO FREQUENCY .......... Maximum frequency of line vibrato. Frequnecy varies at random between min and max.\n");
  4099. fprintf(stdout,"INFO: MIN VIBRATO DEPTH ................. Minimum depth of line vibrato in semitones.\n");
  4100. fprintf(stdout,"INFO: MAX VIBRATO DEPTH ................ Maximum depth of line vibrato. Depth varies at random between min and max.\n");
  4101. fprintf(stdout,"INFO: \n");
  4102. fprintf(stdout,"INFO: GENERAL PARAMETERS ----------------------------------------------------------\n");
  4103. fprintf(stdout,"INFO: \n");
  4104. fprintf(stdout,"INFO: RANDOM SEED ......... ............. Setting a particular seed value will produce similar output when same seed applied again.\n");
  4105. break;
  4106. case(1):
  4107. fprintf(stdout,"INFO: GENERATE STEPPED PITCHED LINE FROM SMALL SOUND PACKET OR FOF.\n");
  4108. fprintf(stdout,"INFO: \n");
  4109. fprintf(stdout,"INFO: Treat source as a wavelength sized FOF, and use transposition data, to set pitches of output line.\n");
  4110. fprintf(stdout,"INFO: With any transposition breakpoint file, STEP between values, so that pitch steps from one timed-event to next.\n");
  4111. fprintf(stdout,"INFO: \n");
  4112. fprintf(stdout,"INFO: PARAMETERS OF THE WHOLE EVENT ----------------------------------------------------------\n");
  4113. fprintf(stdout,"INFO: \n");
  4114. fprintf(stdout,"INFO: SEMITONE TRANSPOSITION OF LINE Assumes duration of input = wavelength of the fundamental pitch to be transposed.\n");
  4115. fprintf(stdout,"INFO: DURATION ............................... (Minimum) duration of the entire output sound.\n");
  4116. fprintf(stdout,"INFO: \n");
  4117. fprintf(stdout,"INFO: PARAMETERS OF THE ELELEMTS ----------------------------------------------------------\n");
  4118. fprintf(stdout,"INFO: \n");
  4119. fprintf(stdout,"INFO: SEGMENT PITCH RANDOMISATION ... Randomises pitch of individual segments themselves.\n");
  4120. fprintf(stdout,"INFO: MAX OF RANDOM AMP REDUCTION .. If greater than 0, amplitude of successive segments are randomly reduced\n");
  4121. fprintf(stdout,"INFO: up to a maximum of the value input here.\n");
  4122. fprintf(stdout,"INFO: TRIMMED DURATION OF ELEMENTS . If elements are to be shortened, this is Duration to trim to\n");
  4123. fprintf(stdout,"INFO: and will be equal to or less than (possibly transposed) source duration.\n");
  4124. fprintf(stdout,"INFO: A ZERO value means the elements are NOT trimmed.\n");
  4125. fprintf(stdout,"INFO: FADE DURATION OF ELEMENTS ...... Duration of any fade on end of elements.\n");
  4126. fprintf(stdout,"INFO: FADE SLOPE ............................. Slope of any fade on end of elements.\n");
  4127. fprintf(stdout,"INFO: \n");
  4128. fprintf(stdout,"INFO: PARAMETERS OF THE LINE ----------------------------------------------------------\n");
  4129. fprintf(stdout,"INFO: \n");
  4130. fprintf(stdout,"INFO: PITCH ROUGHNESS ....................... Randomisation of instantaneous pitch.\n");
  4131. fprintf(stdout,"INFO: MIN VIBRATO FREQUENCY .......... Minimum frequency of line vibrato.\n");
  4132. fprintf(stdout,"INFO: MAX VIBRATO FREQUENCY .......... Maximum frequency of line vibrato. Frequnecy varies at random between min and max.\n");
  4133. fprintf(stdout,"INFO: MIN VIBRATO DEPTH ................. Minimum depth of line vibrato in semitones.\n");
  4134. fprintf(stdout,"INFO: MAX VIBRATO DEPTH ................ Maximum depth of line vibrato. Depth varies at random between min and max.\n");
  4135. fprintf(stdout,"INFO: \n");
  4136. fprintf(stdout,"INFO: PARAMETERS FOR ANY DISTINCT PITCHES ----------------------------------------------------------\n");
  4137. fprintf(stdout,"INFO: \n");
  4138. fprintf(stdout,"INFO: MIN LEVEL NOTES ..................... Minimum note loudness.\n");
  4139. fprintf(stdout,"INFO: MAX LEVEL NOTES ..................... Maximum note loudness. Notes vary in loudness between min and max\n");
  4140. fprintf(stdout,"INFO: NOTE INFADE DURATION ............ Duration of any fade-in of notes.\n");
  4141. fprintf(stdout,"INFO: NOTE OUTFADE DURATION ......... Duration of any fade-out of notes.\n");
  4142. fprintf(stdout,"INFO: GAP BETWEEN NOTES ................. Relative length of any gap between notes, as proportion of note duration.\n");
  4143. fprintf(stdout,"INFO: PORTAMENTO TYPE ................... 0 = none : 1 = rising : -1 = falling : 2 = randomly rising or falling.\n");
  4144. fprintf(stdout,"INFO: PORTAMENTO INTERVAL ............. Interval rise(fall) of any portamento, in semitones, attained only by the start-time of next note.\n");
  4145. fprintf(stdout,"INFO: (If there are gaps between notes, maximum interval will not be reached).\n");
  4146. fprintf(stdout,"INFO: \n");
  4147. fprintf(stdout,"INFO: GENERAL PARAMETERS ----------------------------------------------------------\n");
  4148. fprintf(stdout,"INFO: \n");
  4149. fprintf(stdout,"INFO: RANDOM SEED ......... ............. Setting a particular seed value will produce similar output when same seed applied again.\n");
  4150. break;
  4151. case(2):
  4152. fprintf(stdout,"INFO: GENERATE PITCHED LINE FROM INPUT SOUND.\n");
  4153. fprintf(stdout,"INFO: \n");
  4154. fprintf(stdout,"INFO: MIDI-pitch data determines pitch of output line.\n");
  4155. fprintf(stdout,"INFO: With any pitch breakpoint file, interpolate between timed values, so that pitch glides from one timed-event to next.\n");
  4156. fprintf(stdout,"INFO: \n");
  4157. fprintf(stdout,"INFO: PARAMETERS OF THE WHOLE EVENT ----------------------------------------------------------\n");
  4158. fprintf(stdout,"INFO: \n");
  4159. fprintf(stdout,"INFO: MIDI-PITCH OF LINE ...................\n");
  4160. fprintf(stdout,"INFO: DURATION ............................... (Minimum) duration of the entire output sound.\n");
  4161. fprintf(stdout,"INFO: \n");
  4162. fprintf(stdout,"INFO: PARAMETERS OF THE ELELEMTS ----------------------------------------------------------\n");
  4163. fprintf(stdout,"INFO: \n");
  4164. fprintf(stdout,"INFO: SEGMENT PITCH RANDOMISATION ... Randomises pitch of individual segments themselves.\n");
  4165. fprintf(stdout,"INFO: MAX OF RANDOM AMP REDUCTION .. If greater than 0, amplitude of successive segments are randomly reduced\n");
  4166. fprintf(stdout,"INFO: up to a maximum of the value input here.\n");
  4167. fprintf(stdout,"INFO: TRIMMED DURATION OF ELEMENTS . If elements are to be shortened, this is Duration to trim to\n");
  4168. fprintf(stdout,"INFO: and will be equal to or less than (possibly transposed) source duration.\n");
  4169. fprintf(stdout,"INFO: A ZERO value means the elements are NOT trimmed.\n");
  4170. fprintf(stdout,"INFO: FADE DURATION OF ELEMENTS ...... Duration of any fade on end of elements.\n");
  4171. fprintf(stdout,"INFO: FADE SLOPE ............................. Slope of any fade on end of elements.\n");
  4172. fprintf(stdout,"INFO: \n");
  4173. fprintf(stdout,"INFO: (If there are gaps between notes, maximum interval will not be reached).\n");
  4174. fprintf(stdout,"INFO: \n");
  4175. fprintf(stdout,"INFO: PARAMETERS OF THE LINE ----------------------------------------------------------\n");
  4176. fprintf(stdout,"INFO: \n");
  4177. fprintf(stdout,"INFO: PITCH ROUGHNESS ....................... Randomisation of instantaneous pitch.\n");
  4178. fprintf(stdout,"INFO: MIN VIBRATO FREQUENCY .......... Minimum frequency of line vibrato.\n");
  4179. fprintf(stdout,"INFO: MAX VIBRATO FREQUENCY .......... Maximum frequency of line vibrato. Frequnecy varies at random between min and max.\n");
  4180. fprintf(stdout,"INFO: MIN VIBRATO DEPTH ................. Minimum depth of line vibrato in semitones.\n");
  4181. fprintf(stdout,"INFO: MAX VIBRATO DEPTH ................ Maximum depth of line vibrato. Depth varies at random between min and max.\n");
  4182. fprintf(stdout,"INFO: \n");
  4183. fprintf(stdout,"INFO: GENERAL PARAMETERS ----------------------------------------------------------\n");
  4184. fprintf(stdout,"INFO: \n");
  4185. fprintf(stdout,"INFO: RANDOM SEED ......... ............. Setting a particular seed value will produce similar output when same seed applied again.\n");
  4186. break;
  4187. case(3):
  4188. fprintf(stdout,"INFO: GENERATE STEP-PITCHED LINE FROM INPUT SOUND.\n");
  4189. fprintf(stdout,"INFO: \n");
  4190. fprintf(stdout,"INFO: MIDI-pitch data determines pitches of output line.\n");
  4191. fprintf(stdout,"INFO: With any pitch breakpoint file, step between timed values, so pitch steps from one timed-event to next.\n");
  4192. fprintf(stdout,"INFO: \n");
  4193. fprintf(stdout,"INFO: PARAMETERS OF THE WHOLE EVENT ----------------------------------------------------------\n");
  4194. fprintf(stdout,"INFO: \n");
  4195. fprintf(stdout,"INFO: MIDI-PITCHES OF LINE ...............\n");
  4196. fprintf(stdout,"INFO: DURATION ............................... (Minimum) duration of the entire output sound.\n");
  4197. fprintf(stdout,"INFO: \n");
  4198. fprintf(stdout,"INFO: PARAMETERS OF THE ELELEMTS ----------------------------------------------------------\n");
  4199. fprintf(stdout,"INFO: \n");
  4200. fprintf(stdout,"INFO: SEGMENT PITCH RANDOMISATION ... Randomises pitch of individual segments themselves.\n");
  4201. fprintf(stdout,"INFO: MAX OF RANDOM AMP REDUCTION .. If greater than 0, amplitude of successive segments are randomly reduced\n");
  4202. fprintf(stdout,"INFO: up to a maximum of the value input here.\n");
  4203. fprintf(stdout,"INFO: TRIMMED DURATION OF ELEMENTS . If elements are to be shortened, this is Duration to trim to\n");
  4204. fprintf(stdout,"INFO: and will be equal to or less than (possibly transposed) source duration.\n");
  4205. fprintf(stdout,"INFO: A ZERO value means the elements are NOT trimmed.\n");
  4206. fprintf(stdout,"INFO: FADE DURATION OF ELEMENTS ...... Duration of any fade on end of elements.\n");
  4207. fprintf(stdout,"INFO: FADE SLOPE ............................. Slope of any fade on end of elements.\n");
  4208. fprintf(stdout,"INFO: \n");
  4209. fprintf(stdout,"INFO: PARAMETERS OF THE LINE ----------------------------------------------------------\n");
  4210. fprintf(stdout,"INFO: \n");
  4211. fprintf(stdout,"INFO: PITCH ROUGHNESS ....................... Randomisation of instantaneous pitch.\n");
  4212. fprintf(stdout,"INFO: MIN VIBRATO FREQUENCY .......... Minimum frequency of line vibrato.\n");
  4213. fprintf(stdout,"INFO: MAX VIBRATO FREQUENCY .......... Maximum frequency of line vibrato. Frequnecy varies at random between min and max.\n");
  4214. fprintf(stdout,"INFO: MIN VIBRATO DEPTH ................. Minimum depth of line vibrato in semitones.\n");
  4215. fprintf(stdout,"INFO: MAX VIBRATO DEPTH ................ Maximum depth of line vibrato. Depth varies at random between min and max.\n");
  4216. fprintf(stdout,"INFO: \n");
  4217. fprintf(stdout,"INFO: PARAMETERS FOR ANY DISTINCT PITCHES (Modes 2 and 4) ----------------------------------------------------------\n");
  4218. fprintf(stdout,"INFO: \n");
  4219. fprintf(stdout,"INFO: MIN LEVEL NOTES ..................... Minimum note loudness.\n");
  4220. fprintf(stdout,"INFO: MAX LEVEL NOTES ..................... Maximum note loudness. Notes vary in loudness between min and max\n");
  4221. fprintf(stdout,"INFO: NOTE INFADE DURATION ............ Duration of any fade-in of notes.\n");
  4222. fprintf(stdout,"INFO: NOTE OUTFADE DURATION ......... Duration of any fade-out of notes.\n");
  4223. fprintf(stdout,"INFO: GAP BETWEEN NOTES ................. Relative length of any gap between notes, as proportion of note duration.\n");
  4224. fprintf(stdout,"INFO: PORTAMENTO TYPE ................... 0 = none : 1 = rising : -1 = falling : 2 = randomly rising or falling.\n");
  4225. fprintf(stdout,"INFO: PORTAMENTO INTERVAL ............. Interval rise(fall) of any portamento, in semitones, attained only by the start-time of next note.\n");
  4226. fprintf(stdout,"INFO: (If there are gaps between notes, maximum interval will not be reached).\n");
  4227. fprintf(stdout,"INFO: \n");
  4228. fprintf(stdout,"INFO: GENERAL PARAMETERS ----------------------------------------------------------\n");
  4229. fprintf(stdout,"INFO: \n");
  4230. fprintf(stdout,"INFO: RANDOM SEED ......... ............. Setting a particular seed value will produce similar output when same seed applied again.\n");
  4231. break;
  4232. }
  4233. break;
  4234. case(PULSER):
  4235. case(PULSER2):
  4236. case(PULSER3):
  4237. switch(mode) {
  4238. case(0):
  4239. switch(process) {
  4240. case(PULSER):
  4241. fprintf(stdout,"INFO: CREATE A STREAM OF PITCHED PACKETS FROM A MONO SOURCE.\n");
  4242. fprintf(stdout,"INFO: \n");
  4243. fprintf(stdout,"INFO: (NB: Only the spectral brightness of the source is reflected in the output sound.)\n");
  4244. fprintf(stdout,"INFO: \n");
  4245. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------\n");
  4246. fprintf(stdout,"INFO: \n");
  4247. break;
  4248. case(PULSER2):
  4249. fprintf(stdout,"INFO: CREATE A STREAM OF PITCHED PACKETS FROM MONO SOURCES.\n");
  4250. fprintf(stdout,"INFO: \n");
  4251. fprintf(stdout,"INFO: (NB: Only the spectral brightness of the sources is reflected in the output sound.)\n");
  4252. fprintf(stdout,"INFO: \n");
  4253. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------\n");
  4254. fprintf(stdout,"INFO: \n");
  4255. break;
  4256. case(PULSER3):
  4257. fprintf(stdout,"INFO: CREATE A STREAM OF SYNTHESIZED PACKETS FROM PARTIAL-NUMBER DATA.\n");
  4258. fprintf(stdout,"INFO: \n");
  4259. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------\n");
  4260. fprintf(stdout,"INFO: \n");
  4261. fprintf(stdout,"INFO: PARTIAL NUMBERS AND LEVELS ......... Textfile list of paired items: Each pair is a partial number and a level.\n");
  4262. fprintf(stdout,"INFO: Partial number range 1 - 64 (can be fractional) : level range -1 to 1.\n");
  4263. break;
  4264. }
  4265. fprintf(stdout,"INFO: DURATION .................................. Duration of output.\n");
  4266. fprintf(stdout,"INFO: MIDI PITCH ................................. Midi pitch of output packets.\n");
  4267. break;
  4268. case(1):
  4269. switch(process) {
  4270. case(PULSER):
  4271. fprintf(stdout,"INFO: CREATE A STREAM OF PACKETS FROM A MONO SOURCE, USING THE START OF THE SOURCE ONLY.\n");
  4272. fprintf(stdout,"INFO: \n");
  4273. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------\n");
  4274. fprintf(stdout,"INFO: \n");
  4275. fprintf(stdout,"INFO: DURATION .................................. Duration of output.\n");
  4276. break;
  4277. case(PULSER2):
  4278. fprintf(stdout,"INFO: CREATE A STREAM OF PACKETS FROM MONO SOURCES, USING THE START OF THE SOURCES ONLY.\n");
  4279. fprintf(stdout,"INFO: \n");
  4280. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------\n");
  4281. fprintf(stdout,"INFO: \n");
  4282. fprintf(stdout,"INFO: DURATION .................................. Duration of output.\n");
  4283. break;
  4284. case(PULSER3):
  4285. fprintf(stdout,"INFO: CREATE A STREAM OF SYNTHESIZED PACKETS WHOSE SPECTRA CHANGE WITH TIME.\n");
  4286. fprintf(stdout,"INFO: \n");
  4287. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------\n");
  4288. fprintf(stdout,"INFO: \n");
  4289. fprintf(stdout,"INFO: PARTIAL NUMBERS AND LEVELS ......... Textfile is of list of lines of format \"Time partialno level [partialno2 level2 ......]\"\n");
  4290. fprintf(stdout,"INFO: Partial number range 1 - 64 (can be fractional) : level range -1 to 1.\n");
  4291. fprintf(stdout,"INFO: Timers must start at zero, and increase.\n");
  4292. fprintf(stdout,"INFO: DURATION .................................. Duration of output.\n");
  4293. fprintf(stdout,"INFO: MIDI PITCH ................................. Midi pitch of output packets.\n");
  4294. break;
  4295. }
  4296. break;
  4297. case(2):
  4298. switch(process) {
  4299. case(PULSER):
  4300. fprintf(stdout,"INFO: CREATE A STREAM OF PACKETS FROM A MONO SOURCE, SELECTING RANDOM CHUNKS FROM INSIDE THE SOURCE.\n");
  4301. fprintf(stdout,"INFO: \n");
  4302. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------\n");
  4303. fprintf(stdout,"INFO: \n");
  4304. fprintf(stdout,"INFO: DURATION .................................. Duration of output.\n");
  4305. fprintf(stdout,"INFO: LSPKR SELECTION ...................... ZERO ~~OR~~ SPATIALISATION DATA FOR AN 8-CHANNEL OUPUT.\n");
  4306. fprintf(stdout,"INFO: With ZERO, Sound Output is MONO or (if WIDTH > 0) STEREO.\n");
  4307. fprintf(stdout,"INFO: SPATIALISATION DATA is either ......\n");
  4308. fprintf(stdout,"INFO: (1) a string of channel numbers indicating which of 8 ouput channels to use.\n");
  4309. fprintf(stdout,"INFO: (2) A textfile with a time and a spacedata-string on each line, times increasing from one line to next.\n");
  4310. fprintf(stdout,"INFO: The number of channels used (as well as the channel selection) may change with time.\n");
  4311. break;
  4312. case(PULSER2):
  4313. fprintf(stdout,"INFO: CREATE A STREAM OF PACKETS FROM MONO SOURCES, SELECTING RANDOM CHUNKS FROM INSIDE THE SOURCES.\n");
  4314. fprintf(stdout,"INFO: \n");
  4315. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------\n");
  4316. fprintf(stdout,"INFO: \n");
  4317. fprintf(stdout,"INFO: DURATION .................................. Duration of output.\n");
  4318. fprintf(stdout,"INFO: LSPKR SELECTION ...................... ZERO ~~OR~~ SPATIALISATION DATA FOR AN 8-CHANNEL OUPUT.\n");
  4319. fprintf(stdout,"INFO: With ZERO, Sound Output is MONO or (if WIDTH > 0) STEREO.\n");
  4320. fprintf(stdout,"INFO: SPATIALISATION DATA is either ......\n");
  4321. fprintf(stdout,"INFO: (1) a string of channel numbers indicating which of 8 ouput channels to use.\n");
  4322. fprintf(stdout,"INFO: (2) A textfile with a time and a spacedata-string on each line, times increasing from one line to next.\n");
  4323. fprintf(stdout,"INFO: The number of channels used (as well as the channel selection) may change with time.\n");
  4324. break;
  4325. case(PULSER3):
  4326. fprintf(stdout,"INFO: CREATE A STREAM OF SYNTHESIZED PACKETS WHOSE SPECTRA CHANGE AT RANDOM.\n");
  4327. fprintf(stdout,"INFO: \n");
  4328. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------\n");
  4329. fprintf(stdout,"INFO: \n");
  4330. fprintf(stdout,"INFO: PARTIAL NUMBERS AND LEVELS ......... Textfile is of list of lines of format \"Time partialno level [partialno2 level2 ......]\"\n");
  4331. fprintf(stdout,"INFO: Partial number range 1 - 64 (can be fractional) : level range -1 to 1.\n");
  4332. fprintf(stdout,"INFO: Timers must start at zero, and increase.\n");
  4333. fprintf(stdout,"INFO: Lines are read in RANDOM order (TIMES ARE IGNORED).\n");
  4334. fprintf(stdout,"INFO: DURATION .................................. Duration of output.\n");
  4335. fprintf(stdout,"INFO: MIDI PITCH ................................. Midi pitch of output packets.\n");
  4336. break;
  4337. }
  4338. break;
  4339. }
  4340. fprintf(stdout,"INFO: RISE-TIME MINIMUM/MAXIMUM ......... Minimum and maximum duration of risetime of packets.\n");
  4341. fprintf(stdout,"INFO: SUSTAIN-TIME MINIMUM/MAXIMUM .. Minimum and maximum duration of sustain time of packets.\n");
  4342. fprintf(stdout,"INFO: DECAY-TIME MINIMUM/MAXIMUM ...... Minimum and maximum duration of decaytime of packets.\n");
  4343. fprintf(stdout,"INFO: Actual rise, sustain and decay times are set at random, between the limits given.\n");
  4344. fprintf(stdout,"INFO: TIME STEP BETWEEN PACKETS .......... Timestep between packets in output stream.\n");
  4345. fprintf(stdout,"INFO: PACKET TIME RANDOMISATION ........ Randomisation of timestep between packets.\n");
  4346. fprintf(stdout,"INFO: SLOPE OF ATTACK,SLOPE OF DECAY .. 1 is linear : greater than 1 is steep : less than 1 is less steep.\n");
  4347. fprintf(stdout,"INFO: PITCH SCATTER (SEMITONES) .......... Random scattering of packet pitches.\n");
  4348. fprintf(stdout,"INFO: AMPLITUDE SCATTER ..................... Random scattering of packet amplitudes.\n");
  4349. fprintf(stdout,"INFO: OCTAVIATION ............................. Redundant parameter : no longer in use.\n");
  4350. fprintf(stdout,"INFO: PACKET PITCH BEND ...................... Bending of pitches of packets.\n");
  4351. fprintf(stdout,"INFO: RANDOM SEED ............................. Setting a particular seed value will produce similar output when same seed applied again.\n");
  4352. if(process != PULSER3 && mode == 2) {
  4353. fprintf(stdout,"INFO: SPATIAL WIDTH ............................. With LSPKR SELECTION SET TO ZERO, Width is spatial spread of placement of output segments in stereo panorama.\n");
  4354. fprintf(stdout,"INFO: A width of ZERO produces a MONO output.\n");
  4355. fprintf(stdout,"INFO: With LSPKR SELECTION NOT ZERO Width is spatial spread around the selected output loudspeakers.\n");
  4356. fprintf(stdout,"INFO: A width of ZERO produces a loudspeaker-centric output.\n");
  4357. }
  4358. if(process == PULSER2) {
  4359. fprintf(stdout,"INFO: TOTALLY RANDOM SRC SEQUENCE .... Source sound to produce next packet is chosen totally at random.\n");
  4360. fprintf(stdout,"INFO: Default: all srcs are used once, in a random order, before proceeding to the next random ordering.\n");
  4361. } else if(process == PULSER3) {
  4362. fprintf(stdout,"INFO: SAMPLING RATE ............................ Sampling rate of sythesized output.\n");
  4363. fprintf(stdout,"INFO: PARTIAL COUNT ............................ Number of partials actually activated (time-variable).\n");
  4364. fprintf(stdout,"INFO: Fractional values can be used: e.g. 2.4 means use 1st and 2nd partials, and 3rd partial attenuated by 0.4.\n");
  4365. }
  4366. fprintf(stdout,"INFO: \n");
  4367. if(process == PULSER && mode == 2)
  4368. fprintf(stdout,"INFO: All parameters except DURATION, RISE/DECAY limits, and SEED can vary through time.\n");
  4369. else if(process == PULSER3)
  4370. fprintf(stdout,"INFO: All parameters except DURATION, RISE/SUSTAIN/DECAY limits, SEED and SAMPLE RATE can vary through time.\n");
  4371. else
  4372. fprintf(stdout,"INFO: All parameters except DURATION, RISE/SUSTAIN/DECAY limits, and SEED can vary through time.\n");
  4373. break;
  4374. case(CHIRIKOV):
  4375. fprintf(stdout,"INFO: GENERATE SOUND OR PITCHLINE BASED ON CHIRIKOV STANDARD MAP, OR CIRCULAR MAP.\n");
  4376. fprintf(stdout,"INFO: \n");
  4377. switch(mode) {
  4378. case(0): fprintf(stdout,"INFO: GENERATE SOUND BASED ON ITERATION OF CHIRIKOV STANDARD MAP.\n"); break;
  4379. case(1): fprintf(stdout,"INFO: GENERATE PITCH LINE BASED ON ITERATION OF CHIRIKOV STANDARD MAP.\n"); break;
  4380. case(2): fprintf(stdout,"INFO: GENERATE SOUND BASED ON ITERATION OF CIRCULAR MAP.\n"); break;
  4381. case(3): fprintf(stdout,"INFO: GENERATE PITCH LINE BASED ON ITERATION OF CIRCULAR MAP.\n"); break;
  4382. }
  4383. fprintf(stdout,"INFO: \n");
  4384. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------\n");
  4385. fprintf(stdout,"INFO: \n");
  4386. switch(mode) {
  4387. case(0):
  4388. case(1): fprintf(stdout,"INFO: DURATION .................... Duration of the output sound.\n"); break;
  4389. case(2):
  4390. case(3): fprintf(stdout,"INFO: DURATION .................... Duration of the output breakpoint file.\n"); break;
  4391. }
  4392. fprintf(stdout,"INFO: FREQUENCY ................... Frequency of the forcing oscillation (can vary through time).\n");
  4393. fprintf(stdout,"INFO: DAMPING ..................... Damping coeeficient (can vary through time).\n");
  4394. switch(mode) {
  4395. case(0):
  4396. case(1):
  4397. fprintf(stdout,"INFO: SAMPLE RATE .......... Sampling rate of the synthesized sound.\n");
  4398. fprintf(stdout,"INFO: SPLICE LENGTH (mS) ... Splice length (in milliseconds) of the onset and end of the output sound.\n");
  4399. break;
  4400. case(2):
  4401. case(3):
  4402. fprintf(stdout,"INFO: MINIMUM_MIDI PITCH .. Bottom of MIDI pitch range of output data.\n");
  4403. fprintf(stdout,"INFO: MAXIMUM_MIDI PITCH .. Top of MIDI pitch range of output data.\n");
  4404. fprintf(stdout,"INFO: TIME STEP ....................... Time step between entries in output brkpoint file.\n");
  4405. fprintf(stdout,"INFO: TIME RANDOMISATION .. Randomisation of times in output brkpoint file.\n");
  4406. break;
  4407. }
  4408. break;
  4409. case(MULTIOSC):
  4410. fprintf(stdout,"INFO: GENERATE INTERACTING OSCILLATORS.\n");
  4411. fprintf(stdout,"INFO: \n");
  4412. switch(mode) {
  4413. case(0): fprintf(stdout,"INFO: OSCILLATION OF OSCILLATION.\n"); break;
  4414. case(1): fprintf(stdout,"INFO: OSCILLATION OF OSCILLATION OF OSCILLATION.\n"); break;
  4415. case(2): fprintf(stdout,"INFO: OSCILLATION OF OSCILLATION OF OSCILLATION OF OSCILLATION.\n"); break;
  4416. }
  4417. fprintf(stdout,"INFO: \n");
  4418. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------\n");
  4419. fprintf(stdout,"INFO: \n");
  4420. fprintf(stdout,"INFO: DURATION .................... Duration of the output sound.\n");
  4421. fprintf(stdout,"INFO: FREQUENCY ................... Oscillator frequency.\n");
  4422. fprintf(stdout,"INFO: FREQUENCY TWO................ Frequency of oscillation of oscillation.\n");
  4423. fprintf(stdout,"INFO: AMPLITUDE TWO................ Amplitude of oscillation of oscillation.\n");
  4424. if(mode >= 1) {
  4425. fprintf(stdout,"INFO: FREQUENCY THREE................ Frequency of oscillation of oscillation of oscillation.\n");
  4426. fprintf(stdout,"INFO: AMPLITUDE THREE................ Amplitude of oscillation of oscillation of oscillation.\n");
  4427. }
  4428. if(mode == 2) {
  4429. fprintf(stdout,"INFO: FREQUENCY FOUR................ Frequency of oscillation of oscillation of oscillation of oscillation.\n");
  4430. fprintf(stdout,"INFO: AMPLITUDE FOUR................ Amplitude of oscillation of oscillation of oscillation of oscillation.\n");
  4431. }
  4432. fprintf(stdout,"INFO: SAMPLE RATE .......... Sampling rate of the synthesized sound.\n");
  4433. fprintf(stdout,"INFO: SPLICE LENGTH (mS) ... Splice length (in milliseconds) of the onset and end of the output sound.\n");
  4434. break;
  4435. case(SYNFILT):
  4436. switch(mode) {
  4437. case(0):
  4438. fprintf(stdout,"INFO: GENERATE BAND OF FILTERED NOISE.\n");
  4439. fprintf(stdout,"INFO: \n");
  4440. fprintf(stdout,"INFO: REQUIRED DATAFILE-------------------------------------------------------\n");
  4441. fprintf(stdout,"INFO: \n");
  4442. fprintf(stdout,"INFO: TIMELIST OF PITCHES OF FILTS .... a textfile of lines with time-pitch pairs on each line. \n");
  4443. fprintf(stdout,"INFO: \n");
  4444. break;
  4445. case(1):
  4446. fprintf(stdout,"INFO: GENERATE BAND OF MULTIPITCHED FILTERED NOISE.\n");
  4447. fprintf(stdout,"INFO: \n");
  4448. fprintf(stdout,"INFO: REQUIRED DATAFILE-------------------------------------------------------\n");
  4449. fprintf(stdout,"INFO: \n");
  4450. fprintf(stdout,"INFO: TIMELIST OF PICHS&AMPS OF FILTS .... a textfile with lines of data for filter bands at successive times.\n");
  4451. fprintf(stdout,"INFO: \n");
  4452. fprintf(stdout,"INFO: Each line contains the following items\n");
  4453. fprintf(stdout,"INFO: \n");
  4454. fprintf(stdout,"INFO: Time Pitch1 Amp1 [Pitch2 Amp2 etc....].\n");
  4455. fprintf(stdout,"INFO: \n");
  4456. fprintf(stdout,"INFO: Where pitch and Amp values must be paired: and any number of pairs can be used in a line,\n");
  4457. fprintf(stdout,"INFO: BUT each line must have SAME number of pairs on it.\n");
  4458. fprintf(stdout,"INFO: Amp values may be numeric, or dB values (e.g. -4.1dB).\n");
  4459. fprintf(stdout,"INFO: (To eliminate a band in any line(s), set its amplitude to 0.0).\n");
  4460. break;
  4461. }
  4462. fprintf(stdout,"INFO: Time values (in secs) must be in ascending order (and >=0.0), with the maximum time being greater than 0.03 seconds.\n");
  4463. fprintf(stdout,"INFO: Pitch vals are MIDI values (but may be fractional).\n");
  4464. fprintf(stdout,"INFO: (Comment-lines may be used: start these with ';').\n");
  4465. fprintf(stdout,"INFO: \n");
  4466. fprintf(stdout,"INFO: OTHER PARAMETERS----------------------------------------------------------\n");
  4467. fprintf(stdout,"INFO: \n");
  4468. fprintf(stdout,"INFO: SAMPLE RATE ............. Sample rate of output sound.\n");
  4469. fprintf(stdout,"INFO: CHANNEL COUNT ......... Mono or stereo output.\n");
  4470. fprintf(stdout,"INFO: FILTER Q .................. Q (tightness) of filter.\n");
  4471. fprintf(stdout,"INFO: NUMBER OF HARMONICS.. No of harmonics (of each pitch) to use: Default 1.\n");
  4472. fprintf(stdout,"INFO: Very high harmonics of high pitches may be too high to calculate. (check with Max Harmonic button)\n");
  4473. fprintf(stdout,"INFO: No-of-pitches times no-of-harmonics determines program speed.\n");
  4474. fprintf(stdout,"INFO: ROLL OFF................. Level drop (in dB) from one harmonic to next.\n");
  4475. fprintf(stdout,"INFO: RANDOM SEED .......... Any set value gives reproducible output.\n");
  4476. fprintf(stdout,"INFO: DOUBLE FILTERING .... More sharply defined filter frequencies.\n");
  4477. fprintf(stdout,"INFO: DROP OUT ON OVERFLOW The filter is designed to adjust its internal level to prevent numerical overflow from\n");
  4478. fprintf(stdout,"INFO: setting this flag will cause the filter to stop calculating if any overflow is detected.\n");
  4479. fprintf(stdout,"INFO: The filter gain can then be turned down, and the filter launched again.\n");
  4480. fprintf(stdout,"INFO: \n");
  4481. fprintf(stdout,"INFO: NB: USING VERY LARGE NUMBERS OF HARMONICS MAY PRODUCE NUMERICAL INSTABILITY (OUTPUT WILL FAIL)\n");
  4482. fprintf(stdout,"INFO: NB: USING RAPID PITCH SHIFTS AT THE SOUND'S END (ESPECIALLY WITH LOW PITCH & FEW HARMONICS) MAY GIVE TAIL ARTEFACTS.\n");
  4483. fprintf(stdout,"INFO: \n");
  4484. break;
  4485. case(STRANDS):
  4486. switch(mode) {
  4487. case(0):
  4488. case(2):
  4489. fprintf(stdout,"INFO: GENERATE PITCHBAND DATA EXHIBITING LAMINAR, TAYLOR_COUETTE, AND TURBULENT FLOW.\n");
  4490. break;
  4491. case(1):
  4492. fprintf(stdout,"INFO: GENERATE PITCHBANDED SOUND EXHIBITING LAMINAR, TAYLOR_COUETTE, AND TURBULENT FLOW.\n");
  4493. break;
  4494. }
  4495. fprintf(stdout,"INFO: \n");
  4496. fprintf(stdout,"INFO: Generates pitch threads distributed over a specified range, which can \"flow\" in the following ways ....\n");
  4497. fprintf(stdout,"INFO: \n");
  4498. fprintf(stdout,"INFO: (a) LAMINAR FLOW (threads do not cross).\n");
  4499. fprintf(stdout,"INFO: (b) TWISTED FLOW (threads are grouped in pitch-adjacent bands, and the threads in each band cycle around one another).\n");
  4500. fprintf(stdout,"INFO: (c) TWISTED FLOW WITH WAVY BOUNDARIES.\n");
  4501. fprintf(stdout,"INFO: (d) BANDED FLOW WITH TURBULENCE (threads cross indiscriminately within the bands).\n");
  4502. fprintf(stdout,"INFO: (e) TURBULENT FLOW (threads cross indiscriminately across the entire range).\n");
  4503. fprintf(stdout,"INFO: \n");
  4504. fprintf(stdout,"INFO: Transitions to (and from) twisting, and to (and from) turbulence are managed by the process, and timed by the input parameters supplied.\n");
  4505. fprintf(stdout,"INFO: \n");
  4506. if(mode==0) {
  4507. fprintf(stdout,"INFO: Data is output as a set of time-pitch breakkpoint files which define the pitch-evolution of each stream.\n");
  4508. fprintf(stdout,"INFO: (Level data may also be output: see the \"3D\" option below).\n");
  4509. fprintf(stdout,"INFO: \n");
  4510. }
  4511. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------\n");
  4512. fprintf(stdout,"INFO: \n");
  4513. if(mode==2)
  4514. fprintf(stdout,"INFO: THREADCOUNT IN EACH BAND ........... Number of pitch-threads in each band, listed in a textfile.\n");
  4515. switch(mode) {
  4516. case(0):
  4517. fprintf(stdout,"INFO: DURATION .................................. Duration of the output data.\n");
  4518. break;
  4519. case(1):
  4520. fprintf(stdout,"INFO: DURATION .................................. Duration of the output sound.\n");
  4521. break;
  4522. }
  4523. fprintf(stdout,"INFO: NUMBER OF BANDS ........................ Number of pitch-bands in the output.\n");
  4524. if(mode != 2)
  4525. fprintf(stdout,"INFO: NUMBER OF THREADS PER BAND ........ Number of pitch-threads in each band.\n");
  4526. fprintf(stdout,"INFO: TIMESTEP BETWEEN OUTPUT VALUES .. Timestep (in mS) between the pitch-data values in the output.\n");
  4527. fprintf(stdout,"INFO: BOTTOM OF PITCH RANGE ................ Lowest pitch of all output.\n");
  4528. fprintf(stdout,"INFO: TOP OF PITCH RANGE ..................... Highest pitch of all output.\n");
  4529. fprintf(stdout,"INFO: FREQUENCY OF BAND ROTATION ....... Rate (in Hz) at which the pitches twist aroud one another within the bands.\n");
  4530. fprintf(stdout,"INFO: (1) If two successive times in the input data have ZERO frequency,\n");
  4531. fprintf(stdout,"INFO: the flow between those times is LAMINAR.\n");
  4532. fprintf(stdout,"INFO: (2) If two successive times have NON-ZERO freqency,\n");
  4533. fprintf(stdout,"INFO: the flow between those times is TWISTED.\n");
  4534. fprintf(stdout,"INFO: (3) If two successive times have zero and non-zero freqencies,\n");
  4535. fprintf(stdout,"INFO: the flow gradually changes between laminar and twisted.\n");
  4536. fprintf(stdout,"INFO: RANDOM DIVERSITY OF BAND FREQUENCIES\n");
  4537. fprintf(stdout,"INFO: (1) With LAMINAR FLOW : Amount of random divergence of thread pitches from steady pitch.\n");
  4538. fprintf(stdout,"INFO: (2) With TWISTED FLOW : Amount of random divergence of twist of individual bands\n");
  4539. fprintf(stdout,"INFO: from the specified twist frequency.\n");
  4540. fprintf(stdout,"INFO: RANDOM WARPING OF THREAD OSCILLATIONS\n");
  4541. fprintf(stdout,"INFO: (1) With LAMINAR FLOW : If the flow is 3D (see below),\n");
  4542. fprintf(stdout,"INFO: amount of scattering of the loudness random of each stream.\n");
  4543. fprintf(stdout,"INFO: (If the flow is NOT 3D, this parameter is ignored during laminar flow).\n");
  4544. fprintf(stdout,"INFO: (2) With TWISTED FLOW : Random timewarp (acceleration or decelleration)\n");
  4545. fprintf(stdout,"INFO: of the twisting of individual threads in the same band.\n");
  4546. fprintf(stdout,"INFO: \n");
  4547. fprintf(stdout,"INFO: BAND BOUNDARY WAVINESS ............ Amount that the band-boundaries wander away from fixed pitches.\n" );
  4548. fprintf(stdout,"INFO: WAVINESS MIN FREQUENCY ............. Minimum rate of oscillation of the band boundaries.\n");
  4549. fprintf(stdout,"INFO: WAVINESS MAX FREQUENCY ............ Maximum rate of oscillation of the band boundaries.\n");
  4550. fprintf(stdout,"INFO: Actual oscillation rates are selected at random (for each band boundary) between these limits.\n");
  4551. fprintf(stdout,"INFO: \n");
  4552. fprintf(stdout,"INFO: TURBULENCE ............................... Turbulence destroys the laminar or twisting pattern of the threads.\n");
  4553. fprintf(stdout,"INFO: Value ZERO creates no turbulence.\n");
  4554. fprintf(stdout,"INFO: Values UP TO 1.0 create increasingly turbulent paths WITHIN the band boundaries.\n");
  4555. fprintf(stdout,"INFO: Values BETWEEN 1.0 and 2.0 create increasingly turbulent paths over the entire pitch-range.\n");
  4556. fprintf(stdout,"INFO: Note that turbulence can ONLY be non-zero when the flow is (fully) twisted.\n");
  4557. fprintf(stdout,"INFO: \n");
  4558. fprintf(stdout,"INFO: SEED ..................................... Seed for random generators in process. Set same side on 2 runs to get identical randomisation.\n");
  4559. fprintf(stdout,"INFO: \n");
  4560. fprintf(stdout,"INFO: MINIMUM PITCH INTERVAL BETWEEN BANDS Minimum pitch-interval separating the pitch-bands.\n");
  4561. fprintf(stdout,"INFO: MINIMUM PITCH WIDTH OF BANDS ...... Minimum width of bands (especially when subjected to wavyiness).\n");
  4562. fprintf(stdout,"INFO: \n");
  4563. fprintf(stdout,"INFO: ROTATION IN 3D ........................... 2 more tranches of values are created to control 3d asepcts of the flow.\n");
  4564. switch(mode) {
  4565. case(0):
  4566. fprintf(stdout,"INFO: The 1st tranche can be used to generate relative level values for the streams,\n");
  4567. fprintf(stdout,"INFO: or to control the number of partials in the stream with changes in pitch.\n");
  4568. fprintf(stdout,"INFO: The 2nd tranche can be used to control the level of a modified version of the source\n");
  4569. fprintf(stdout,"INFO: (e.g. reverbd or filtered), in a mix with the unmodified source.\n");
  4570. fprintf(stdout,"INFO: BOTH processes might indicate the instantaneous distance of each stream from the listener.\n");
  4571. fprintf(stdout,"INFO: This data output as 2 FURTHER sets of textfiles, AFTER all pitch data files have been output.\n");
  4572. break;
  4573. case(1):
  4574. fprintf(stdout,"INFO: This data is used to modify the relative level of the streams in the output.\n");
  4575. fprintf(stdout,"INFO: \n");
  4576. fprintf(stdout,"INFO: OUTPUT BANDS SEQUENTIALLY ......... Outputs each band separately, in sequence, rather than all superimposed.\n");
  4577. fprintf(stdout,"INFO: \n");
  4578. break;
  4579. }
  4580. fprintf(stdout,"INFO: \n");
  4581. break;
  4582. case(REFOCUS):
  4583. fprintf(stdout,"INFO: GENERATE ENVELOPES TO CHANGE THE FOCUS (LOUDNESS) BETWEEN CO-EXISTING SOUNDS (e.g. IN A SET OF SOUNDS TO BE MIXED).\n");
  4584. fprintf(stdout,"INFO: \n");
  4585. fprintf(stdout,"INFO: MODES-----------------------------------------------------------\n");
  4586. fprintf(stdout,"INFO: \n");
  4587. fprintf(stdout,"INFO: 1) Randomly permute which band is currently in focus.\n");
  4588. fprintf(stdout,"INFO: 2) Bring bands into focus consecutively in 'rising' sequences, starting at the lowest, rising to the highest.\n");
  4589. fprintf(stdout,"INFO: 3) Bring bands into focus consecutively in 'falling' sequences, starting at the highest, falling to the lowest.\n");
  4590. fprintf(stdout,"INFO: 4) Bring bands into focus in a rising/falling/rising... cycle, starting at the lowest.\n");
  4591. fprintf(stdout,"INFO: 5) Bring bands into focus in a falling/rising/falling.. cycle, starting at the highest.\n");
  4592. fprintf(stdout,"INFO: \n");
  4593. fprintf(stdout,"INFO: PARAMETERS-----------------------------------------------------------\n");
  4594. fprintf(stdout,"INFO: \n");
  4595. fprintf(stdout,"INFO: DURATION .................................. Duration of output envelope files.\n");
  4596. fprintf(stdout,"INFO: NUMBER OF BANDS ........................ Number of sounds to envelope.\n");
  4597. fprintf(stdout,"INFO: FOCUSING RATIO .......................... Ratio of loudness of in-focus sound to out of focus sounds.\n");
  4598. fprintf(stdout,"INFO: TIMESTEP TO NEXT REFOCUS............. Time between refocusings.\n");
  4599. fprintf(stdout,"INFO: TIMESTEP RANDOMISATION .............. Randomisation of this these times.\n");
  4600. fprintf(stdout,"INFO: OFFSET BEFORE REFOCUSING BEGINS .. Refocusing does not start until after the \"offset\" time\n");
  4601. fprintf(stdout,"INFO: TIME AT WHICH REFOCUSING ENDS ..... Refocusing ends at this time, unless it is set to zero.\n");
  4602. fprintf(stdout,"INFO: NO FOCUS ON EXTREMAL BAND .......... The upper (1) or lower (-1) band gets no special focus.\n");
  4603. fprintf(stdout,"INFO: RANDOM SEED .............................. Seend for random value generation: identical seed gives identical output.\n");
  4604. fprintf(stdout,"INFO: \n");
  4605. fprintf(stdout,"INFO: OUTPUT IS A SET OF ENVELOPE TEXTFILES which can be used to modify the levels of the sounds in the set of sounds.\n");
  4606. break;
  4607. case(CHANPHASE):
  4608. fprintf(stdout,"INFO: INVERT THE PHASE OF A SPECIFIED CHANNEL OF AN INPUT FILE.\n");
  4609. fprintf(stdout,"INFO: \n");
  4610. fprintf(stdout,"INFO: PARAMETERS-----------------------------------------------------------\n");
  4611. fprintf(stdout,"INFO: \n");
  4612. fprintf(stdout,"INFO: CHANNEL TO INVERT .................................. Channel whose phase is to be inverted.\n");
  4613. fprintf(stdout,"INFO: \n");
  4614. break;
  4615. case(SILEND):
  4616. fprintf(stdout,"INFO: PAD END OF SOUND WITH EXTRA SILENCE.\n");
  4617. fprintf(stdout,"INFO: \n");
  4618. fprintf(stdout,"INFO: PARAMETERS-----------------------------------------------------------\n");
  4619. fprintf(stdout,"INFO: \n");
  4620. fprintf(stdout,"INFO: MODE 1: ................. Duration of silence to add.\n");
  4621. fprintf(stdout,"INFO: MODE 2: ................. Total Duration of new output sound (must be greater than duration of input sound).\n");
  4622. fprintf(stdout,"INFO: \n");
  4623. break;
  4624. case(SPECULATE):
  4625. fprintf(stdout,"INFO: SYSTEMATICALLY PERMUTE CHANNELS OF ANALYSIS FILE, PRODUCING MANY OUTPUT FILES.\n");
  4626. fprintf(stdout,"INFO: \n");
  4627. fprintf(stdout,"INFO: Analysis channels are permuted pairwise, in the manner of a \"Plain Bob\" bell-ringing sequence.\n");
  4628. fprintf(stdout,"INFO: After each permutation, a new file is output.\n");
  4629. fprintf(stdout,"INFO: The process conclude once the permutations have cycled the channels round to their original order\n");
  4630. fprintf(stdout,"INFO: \n");
  4631. fprintf(stdout,"INFO: PARAMETERS-----------------------------------------------------------\n");
  4632. fprintf(stdout,"INFO: \n");
  4633. fprintf(stdout,"INFO: MINIMUM FREQUENCY: ................. Frq of lowest analysis channel to permute.\n");
  4634. fprintf(stdout,"INFO: MAXIMUM FREQUENCY: ................. Frq of highest analysis channel to permute.\n");
  4635. fprintf(stdout,"INFO: \n");
  4636. fprintf(stdout,"INFO: MASK OTHER CHANNELS: .............. Zero any spectral information outside range of frequencies defined by Min and Max above.\n");
  4637. break;
  4638. case(SPECTUNE):
  4639. fprintf(stdout,"INFO: FIND MOST PROMINENT PITCH IN INPUT FILE, THEN RETUNE THE FILE.\n");
  4640. fprintf(stdout,"INFO: \n");
  4641. fprintf(stdout,"INFO: On retuning, the entire file is transposed by the same amount,\n");
  4642. fprintf(stdout,"INFO: and such that the most prominent pitch moves to the tuning pitch.\n");
  4643. fprintf(stdout,"INFO: \n");
  4644. fprintf(stdout,"INFO: MODES-----------------------------------------------------------\n");
  4645. fprintf(stdout,"INFO: \n");
  4646. fprintf(stdout,"INFO: 1) Tune to the nearest tempered pitch.\n");
  4647. fprintf(stdout,"INFO: 2) Tune to the nearest of the pitches listed in the \"tuning\" file.\n");
  4648. fprintf(stdout,"INFO: 3) Tune to the nearest pitch, or it's octave equivalents, listed in the \"tuning\" file.\n");
  4649. fprintf(stdout,"INFO: 4) Report the pitch found : no sound output.\n");
  4650. fprintf(stdout,"INFO: \n");
  4651. fprintf(stdout,"INFO: PARAMETERS-----------------------------------------------------------\n");
  4652. fprintf(stdout,"INFO: \n");
  4653. fprintf(stdout,"INFO: VALID HARMONICS COUNT ................ how many of the loudest peaks in the spectral window\n");
  4654. fprintf(stdout,"INFO: ...................................... must be harmonics to confirm that the window is pitched. (default %d)\n",ST_ACCEPTABLE_MATCH);
  4655. fprintf(stdout,"INFO: MINIMUM MIDI PITCH ...................... MIDI value of the LOWEST acceptable pitch. (default 4)\n");
  4656. fprintf(stdout,"INFO: MAXIMUM MIDI PITCH ...................... MIDI value of the HIGHEST acceptable pitch. (default 127)\n");
  4657. fprintf(stdout,"INFO: START TIME FOR PITCH SEARCH .... Time in source at which pitch-search begins (default: 0.0).\n");
  4658. fprintf(stdout,"INFO: END TIME FOR PITCH SEARCH ......... Time in source at which pitch-search ends (default: end-of-file)..\n");
  4659. fprintf(stdout,"INFO: IN-TUNE RANGE (SEMIT) ................. semitone-range within which harmonics accepted as in tune (default %d)\n",ST_ACCEPTABLE_MATCH);
  4660. fprintf(stdout,"INFO: MIN WINDOWS TO CONFIRM PITCH .. minimum number of adjacent windows that must be pitched\n");
  4661. fprintf(stdout,"INFO: ............................... for pitch-value to be registered. (default %d)\n",BLIPLEN);
  4662. fprintf(stdout,"INFO: SIGNAL TO NOISE RATIO (dB) ...... in decibels (default %.1lf)\n",SILENCE_RATIO);
  4663. fprintf(stdout,"INFO: ................................. Windows whose level falls this far below the maximum window level in the sound\n");
  4664. fprintf(stdout,"INFO: ................................. are assumed to be noise, & any detected pitch is assumed spurious.\n");
  4665. fprintf(stdout,"INFO: \n");
  4666. fprintf(stdout,"INFO: IGNORE PITCHED-WINDOW RELATIVE-LOUDNESS ......\n");
  4667. fprintf(stdout,"INFO: Assign window-pitches to 1/8thsemitone bins, and count occurences in bins.\n");
  4668. fprintf(stdout,"INFO: Default, Weight the count with the window loudnesses.\n");
  4669. fprintf(stdout,"INFO: SMOOTH PITCH-CONTOUR ..........................................\n");
  4670. fprintf(stdout,"INFO: Smooth pitch-contour data before assessing most prominent pitch.\n");
  4671. fprintf(stdout,"INFO: Default, no smoothing.\n");
  4672. fprintf(stdout,"INFO: FORMANT ENVELOPE NOT PRESERVED (Modes 1 to 3 only)............ \n");
  4673. fprintf(stdout,"INFO: If flag set, transposition ignores the original formant envelope.\n");
  4674. fprintf(stdout,"INFO: Default, transposition preserves original formant envelope.\n");
  4675. break;
  4676. case(REPAIR):
  4677. fprintf(stdout,"INFO: REASSEMBLE A SET OF MULTICHANNEL FILES FROM INDIVIDUAL MONO-CHANNEL SOURCES.\n");
  4678. fprintf(stdout,"INFO: \n");
  4679. fprintf(stdout,"INFO: PARAMETERS-----------------------------------------------------------\n");
  4680. fprintf(stdout,"INFO: \n");
  4681. fprintf(stdout,"INFO: OUTPUT CHANNEL COUNT ................ how many channels in the output sound (2, 4, 5, 7, 8, 16 only)\n");
  4682. fprintf(stdout,"INFO: \n");
  4683. fprintf(stdout,"INFO: (1) The number of (mono) input files must be a multiple of the \"OUTPUT CHANNEL COUNT\"\n");
  4684. fprintf(stdout,"INFO: (2) All files destined to be channel-1s in the output should be listed first;\n");
  4685. fprintf(stdout,"INFO: All files destined to be channel-2s in the output should be listed next;\n");
  4686. fprintf(stdout,"INFO: and so on.\n");
  4687. fprintf(stdout,"INFO: (3) For any one output file, its mono file sources must all be the same length,\n");
  4688. fprintf(stdout,"INFO: (but output files need not be the same length).\n");
  4689. break;
  4690. case(DISTSHIFT):
  4691. fprintf(stdout,"INFO: DISTORT BY TIME-SHIFTING (GROUPS OF) HALF-WAVESETS.\n");
  4692. fprintf(stdout,"INFO: \n");
  4693. fprintf(stdout,"INFO: A half-waveset is defined as the samples between one zero-crossing and the next.\n");
  4694. fprintf(stdout,"INFO: \n");
  4695. fprintf(stdout,"INFO: MODES-----------------------------------------------------------\n");
  4696. fprintf(stdout,"INFO: \n");
  4697. fprintf(stdout,"INFO: (1) Alternate (groups of) half-wavesets are time-shifted with respect to their partners.\n");
  4698. fprintf(stdout,"INFO: (2) Alternate (groups of) half-wavesets are swapped.\n");
  4699. fprintf(stdout,"INFO: \n");
  4700. fprintf(stdout,"INFO: PARAMETERS-----------------------------------------------------------\n");
  4701. fprintf(stdout,"INFO: \n");
  4702. fprintf(stdout,"INFO: WAVESET GROUP SIZE ................ Number of wavesets in the waveset-groups which are operated on.\n");
  4703. fprintf(stdout,"INFO: 1 corresponds to a single half-waveset\n");
  4704. fprintf(stdout,"INFO: 2 corresponds to a complete waveset and a single half-waveset\n");
  4705. fprintf(stdout,"INFO: 3 corresponds to 2 complete wavesets and a single half-waveset\n");
  4706. fprintf(stdout,"INFO: ETC.\n");
  4707. fprintf(stdout,"INFO: \n");
  4708. fprintf(stdout,"INFO: WAVESET SHIFT (MODE 1 ONLY).... Number of waveset(group)s by which the signal is shifted.\n");
  4709. break;
  4710. case(QUIRK):
  4711. fprintf(stdout,"INFO: DISTORT BY RAISING SAMPLE-VALUES TO A POWER.\n");
  4712. fprintf(stdout,"INFO: \n");
  4713. fprintf(stdout,"INFO: MODE 1: Rescales values differently within each half-waveset, scaling values within noramlised range of\n");
  4714. fprintf(stdout,"INFO: zero to max (for +ve half-waveset) or zero to min (for -ve half-waveset)\n");
  4715. fprintf(stdout,"INFO: and hence retianing the maximum (minimum) excursion of each half-waveset.\n");
  4716. fprintf(stdout,"INFO: MODE 2: Rescales values within noramlised range of (absolute) maximum sample in file.\n");
  4717. fprintf(stdout,"INFO: \n");
  4718. fprintf(stdout,"INFO: PARAMETERS-----------------------------------------------------------\n");
  4719. fprintf(stdout,"INFO: \n");
  4720. fprintf(stdout,"INFO: POWER FACTOR ................ Factor by which each sample is scaled.\n");
  4721. fprintf(stdout,"INFO: > 1 exaggerates waveform contour.\n");
  4722. fprintf(stdout,"INFO: < 1 smooths waveform contour.\n");
  4723. break;
  4724. case(ROTOR):
  4725. fprintf(stdout,"INFO: GENERATING CYCLING PITCH-SPEED SETS.\n");
  4726. fprintf(stdout,"INFO: \n");
  4727. fprintf(stdout,"INFO: Generates sequence of pitch-sets : sets expand-contract in range, and accel-rit in speed.\n");
  4728. fprintf(stdout,"INFO: \n");
  4729. fprintf(stdout,"INFO: Sound is generated from an input soundfile and an input envelope (text)file of time-value pairs.\n");
  4730. fprintf(stdout,"INFO: \n");
  4731. fprintf(stdout,"INFO: The input soundfile is read as a wavecycle table.\n");
  4732. fprintf(stdout,"INFO: and should start and end at zero level, and the start and end must both rise, or both fall.\n");
  4733. fprintf(stdout,"INFO: Dovetailing (fading the start and end) can be used to trim the edges of the source.\n");
  4734. fprintf(stdout,"INFO: \n");
  4735. fprintf(stdout,"INFO: The envelope file is used to envelope the output events.\n");
  4736. fprintf(stdout,"INFO: The duration of the envelope determines the duration of all the events.\n");
  4737. fprintf(stdout,"INFO: \n");
  4738. fprintf(stdout,"INFO: There are 3 ways to specifiy the time-gap between the pitch-sets.\n");
  4739. fprintf(stdout,"INFO: \n");
  4740. fprintf(stdout,"INFO: MODE 1: Timestep from start of one set to start of next is determined by your input parameter.\n");
  4741. fprintf(stdout,"INFO: MODE 2: Timestep from last event of first set, to first event of next\n");
  4742. fprintf(stdout,"INFO: is determined by the last timestep between the elements in the previous set.\n");
  4743. fprintf(stdout,"INFO: MODE 3: First element of new set overlays the last element of the previous set.\n");
  4744. fprintf(stdout,"INFO: \n");
  4745. fprintf(stdout,"INFO: PARAMETERS-----------------------------------------------------------\n");
  4746. fprintf(stdout,"INFO: \n");
  4747. fprintf(stdout,"INFO: COUNT OF NOTES PER SET................................... Number of events in each set.\n");
  4748. fprintf(stdout,"INFO: MIN MIDI PITCH/MAX MIDI PITCH...................... Minimum and Maximum (MIDI) pitch when set has maximal pitch-range.\n");
  4749. fprintf(stdout,"INFO: MAX DURATION SLOWEST BEAT............................ Timestep between elements of sets when at slowest speed.\n");
  4750. fprintf(stdout,"INFO: NUMBER OF SETS PER PITCH CYCLE .................. How many sets before the pitch-sequence returns to its original form.\n");
  4751. fprintf(stdout,"INFO: NUMBER OF SETS PER SPEED CYCLE .................. How many sets before the sequence returns to its original speed.\n");
  4752. fprintf(stdout,"INFO: INITIAL PHASE DIFFERENCE BETWEEN CYCLES . Range 0 (in phase) to 1, where -5 is antiphase.\n");
  4753. fprintf(stdout,"INFO: (MININIMUM) OUTPUT DURATION ........................ (Minimum) duration of output to be generated.\n");
  4754. fprintf(stdout,"INFO: DOVETAIL DURATION (mS) .................................. (Optional) dovetails for sommthing onset and tail of source sound.\n");
  4755. fprintf(stdout,"INFO: TIME STEP BETWEEN WHOLE SETS (Mode 1 only). Timestep from start of one set to the next.\n");
  4756. break;
  4757. case(DISTCUT):
  4758. fprintf(stdout,"INFO: CHOP SOUND INTO SEGMENTS, BY COUNTING WAVESETS, AND IMPOSE A DECAYING-ENVELOPE ON SEGMENTS.\n");
  4759. fprintf(stdout,"INFO: \n");
  4760. fprintf(stdout,"INFO: A waveset is defined as the samples between one zero-crossing and the next-but-one.\n");
  4761. fprintf(stdout,"INFO: \n");
  4762. fprintf(stdout,"INFO: MODES-----------------------------------------------------------\n");
  4763. fprintf(stdout,"INFO: \n");
  4764. fprintf(stdout,"INFO: (1) Envelope stretches from start of waveset-group to start of next waveset-group.\n");
  4765. fprintf(stdout,"INFO: Groups are therefore abutted and adjacent.\n");
  4766. fprintf(stdout,"INFO: (2) Envelope length (in wavesets) and step to start of next envelope group are independent.\n");
  4767. fprintf(stdout,"INFO: Groups may therefore overlap or be separated by intervening wavesets.\n");
  4768. fprintf(stdout,"INFO: \n");
  4769. fprintf(stdout,"INFO: PARAMETERS-----------------------------------------------------------\n");
  4770. fprintf(stdout,"INFO: \n");
  4771. fprintf(stdout,"INFO: CYCLE COUNT ................. Number of wavesets in the waveset-groups which are enveloped.\n");
  4772. fprintf(stdout,"INFO: CYCLE STEP ................... Number of wavesets from start of one group to start of next.\n");
  4773. fprintf(stdout,"INFO: In Mode 1, this is the same as the cycle_count.\n");
  4774. fprintf(stdout,"INFO: DECAY EXPONENT ........... Defines the decay shape of the envelope.\n");
  4775. fprintf(stdout,"INFO: 1 = Linear : >1 Decays more quickly initially : <1 Decays more sloly initially.\n");
  4776. fprintf(stdout,"INFO: CUTOFF (dB) ................. Segments whose maximum level falls below MINUS this (dB) value, are not retained.\n");
  4777. break;
  4778. case(ENVCUT):
  4779. fprintf(stdout,"INFO: CHOP SOUND INTO SEGMENTS, AND IMPOSE A DECAYING-ENVELOPE ON SEGMENTS.\n");
  4780. fprintf(stdout,"INFO: \n");
  4781. fprintf(stdout,"INFO: MODES-----------------------------------------------------------\n");
  4782. fprintf(stdout,"INFO: \n");
  4783. fprintf(stdout,"INFO: (1) Envelope stretches to time where next envelopes begins.\n");
  4784. fprintf(stdout,"INFO: Cut segments are therefore abutted and adjacent.\n");
  4785. fprintf(stdout,"INFO: (2) Envelope duration step to start of next enveloped segment are independent.\n");
  4786. fprintf(stdout,"INFO: Segments may therefore overlap or be separated from one another within the source.\n");
  4787. fprintf(stdout,"INFO: \n");
  4788. fprintf(stdout,"INFO: PARAMETERS-----------------------------------------------------------\n");
  4789. fprintf(stdout,"INFO: \n");
  4790. fprintf(stdout,"INFO: ENVELOPE DURATION ..... ....... .. Duration of segments which are enveloped.\n");
  4791. fprintf(stdout,"INFO: TIMESTEP TO NEXT SEGMENT .. TImestep from start of one enveloped segment to start of next.\n");
  4792. fprintf(stdout,"INFO: In Mode 1, this is the same as the Envelope Duration.\n");
  4793. fprintf(stdout,"INFO: ATTACK DURATION (mS) ........... Defines the rise-time of the envelope, in Milliseconds.\n");
  4794. fprintf(stdout,"INFO: DECAY EXPONENT ........... Defines the decay shape of the envelope.\n");
  4795. fprintf(stdout,"INFO: 1 = Linear : >1 Decays more quickly initially : <1 Decays more sloly initially.\n");
  4796. fprintf(stdout,"INFO: CUTOFF (dB) ................. Segments whose maximum level falls below MINUS this (dB) value, are not retained.\n");
  4797. break;
  4798. case(SPECFOLD):
  4799. fprintf(stdout,"INFO: PERMUTE SPECTRAL CHANNELS.\n");
  4800. fprintf(stdout,"INFO: \n");
  4801. fprintf(stdout,"INFO: MODES-----------------------------------------------------------\n");
  4802. fprintf(stdout,"INFO: \n");
  4803. fprintf(stdout,"INFO: (1) Fold the spectrum.\n");
  4804. fprintf(stdout,"INFO: A group of consecutive channels to fold is selected.\n");
  4805. fprintf(stdout,"INFO: Channels in the group are split into 2 equal sets (e.g. 1-to-8 and 9-to-16.\n");
  4806. fprintf(stdout,"INFO: Values in the 1st set are moved to alternate channels (e.g. 1-->2 2-->4 3-->6 etc.\n");
  4807. fprintf(stdout,"INFO: Values in the 2nd set are assigned to the remaining channels, in descending order.(e.g. 5-->7 6-->5 7-->3 etc.\n");
  4808. fprintf(stdout,"INFO: \n");
  4809. fprintf(stdout,"INFO: (2) Invert the spectrum.\n");
  4810. fprintf(stdout,"INFO: (3) Randomise the spectrum.\n");
  4811. fprintf(stdout,"INFO: \n");
  4812. fprintf(stdout,"INFO: PARAMETERS-----------------------------------------------------------\n");
  4813. fprintf(stdout,"INFO: \n");
  4814. fprintf(stdout,"INFO: CHANNEL WHERE PROCESSING STARTS .. The number of the first channel in the folded groups.\n");
  4815. fprintf(stdout,"INFO: CHANNELS TO PROCESS .......................... Number of channels to process.\n");
  4816. fprintf(stdout,"INFO: (MODE 1) NUMBER OF FOLDINGS .......... Number of times to repreat the folding process.\n");
  4817. fprintf(stdout,"INFO: (MODE 3) RANDOM SEED ........................ Same seed value produces exactly the same random permutation.\n");
  4818. fprintf(stdout,"INFO: AMPLITUDES ONLY .................................. Process only the channel amplitude information.\n");
  4819. break;
  4820. case(BROWNIAN):
  4821. fprintf(stdout,"INFO: CREATE BROWNIAN MOTION IN PITCH AND SPACE.\n");
  4822. fprintf(stdout,"INFO: \n");
  4823. fprintf(stdout,"INFO: MODES-----------------------------------------------------------\n");
  4824. fprintf(stdout,"INFO: \n");
  4825. fprintf(stdout,"INFO: (1) Use the source sound as a wavetable to generate the output pitches.\n");
  4826. fprintf(stdout,"INFO: (2) Use the whole source sound to generate individual events, by transposition.\n");
  4827. fprintf(stdout,"INFO: \n");
  4828. fprintf(stdout,"INFO: The pitch of successive events wander in both pitch and space.\n");
  4829. fprintf(stdout,"INFO: \n");
  4830. fprintf(stdout,"INFO: PARAMETERS-----------------------------------------------------------\n");
  4831. fprintf(stdout,"INFO: \n");
  4832. fprintf(stdout,"INFO: OUTPUT CHANNEL COUNT ................. Number of channels in the output file (1-16).\n");
  4833. fprintf(stdout,"INFO: (MAX) OUTPUT DURATION ................. (Maximum) duration of the output file.\n");
  4834. fprintf(stdout,"INFO: EVENT ATTACK DURATION ................ Rise time of events (Mode 1 only).\n");
  4835. fprintf(stdout,"INFO: EVENT DECAY DURATION .................. Decay time of events (Mode 1 only).\n");
  4836. fprintf(stdout,"INFO: BOTTOM OF PITCHRANGE (MIDI) ........ Bottom of pitch range (MIDI).\n");
  4837. fprintf(stdout,"INFO: TOP OF PITCHRANGE (MIDI) ............. Top of pitch range (MIDI).\n");
  4838. fprintf(stdout,"INFO: STARTING PITCH (MIDI) ................... Initial pitch (MIDI).\n");
  4839. fprintf(stdout,"INFO: START POSITION ............................ Initial spatial position amongst output channels (numbering channels 1 - N).\n");
  4840. fprintf(stdout,"INFO: MAX PITCH STEP (SEMITONES) .......... Maximum pitch step between events.\n");
  4841. fprintf(stdout,"INFO: MAX SPACE STEP ............................ Max spatial step between events (fraction of distance between channels).\n");
  4842. fprintf(stdout,"INFO: START POSITION and SPACE STEP are ignored if the output is specified MONO.\n");
  4843. fprintf(stdout,"INFO: AVERAGE TIMESTEP BETWEEN EVENTS.. (Average) Time between events.\n");
  4844. fprintf(stdout,"INFO: RANDOM SEED ............................... (Integer) Seed value (Gives a reproducible random sequence).\n");
  4845. fprintf(stdout,"INFO: MAX AMPLITUDE STEP(dB) ................. Max loudness step between events, in dB (default = 0: max = 96dB).\n");
  4846. fprintf(stdout,"INFO: MINIMUM AMPLITUDE(dB) ................... Min loudness (only comes into play if \"AMPLITUDE STEP\" is greater than zero).\n");
  4847. fprintf(stdout,"INFO: If min > zero, and varying amplitude reaches -min dB,\n");
  4848. fprintf(stdout,"INFO: amplitude values are \"reflected\" back from this minimum boundary.\n");
  4849. fprintf(stdout,"INFO: If set to zero, NO amplitude minimum is set and\n");
  4850. fprintf(stdout,"INFO: if varying amplitude reaches -96dB, the sounds stream terminates.\n");
  4851. fprintf(stdout,"INFO: ATTACK SLOPE ................................ Slope of the attack (mode 1 only)\n");
  4852. fprintf(stdout,"INFO: values < 1 rise fast, then more slowly : values > 1 rise slowly, then faster.\n");
  4853. fprintf(stdout,"INFO: DECAY SLOPE .................................. Slope of the decay (mode 1 only).\n");
  4854. fprintf(stdout,"INFO: values < 1 fall slowly, then faster : values > 1 fall fast, then more slowly.\n");
  4855. fprintf(stdout,"INFO: LINEAR LSPKR_ARRAY ...................... Output channels fed to \"linear\" array of loudspeakers.\n");
  4856. fprintf(stdout,"INFO: Default: loudspeaker array encircles the listener.\n");
  4857. break;
  4858. case(SPIN):
  4859. fprintf(stdout,"INFO: ROTATE A WIDE STEREO-IMAGE.\n");
  4860. fprintf(stdout,"INFO: \n");
  4861. fprintf(stdout,"INFO: MODES-----------------------------------------------------------\n");
  4862. fprintf(stdout,"INFO: \n");
  4863. fprintf(stdout,"INFO: (1) Rotate around the same 2 stereo channels, with possible doppler-shift.\n");
  4864. fprintf(stdout,"INFO: (2) Rotate around central channel (with possible doppler-shift) with stereo image spread to channels on left and right of this.\n");
  4865. fprintf(stdout,"INFO: (3) As mode 2, with image squeezing at centre i.e. when the spinning image crosses the centre ....\n");
  4866. fprintf(stdout,"INFO: MODE 3 uses ONLY the central channel to project the stereo-at-centre image.\n");
  4867. fprintf(stdout,"INFO: whereas MODE 2 also uses contributions from the outer channels to project the stereo-at-centre image.\n");
  4868. fprintf(stdout,"INFO: \n");
  4869. fprintf(stdout,"INFO: PARAMETERS-----------------------------------------------------------\n");
  4870. fprintf(stdout,"INFO: \n");
  4871. fprintf(stdout,"INFO: ROTATION_RATE(CYCLES PER SEC) ........... Number of complete rotations per second (can vary through time).\n");
  4872. fprintf(stdout,"INFO: Positive values rotate clockwise (as viewed from above).\n");
  4873. fprintf(stdout,"INFO: Negative values rotate anticlockwise.\n");
  4874. fprintf(stdout,"INFO: DIFFERENTIAL BETWEEN FRONT AND REAR .. As the edges cross the centre, edge \"at front\" is amplified by this factor\n");
  4875. fprintf(stdout,"INFO: while edge at rear is attenuated by this factor.\n");
  4876. fprintf(stdout,"INFO: ATTENUATION AT CENTRE ...................... Attenuates BOTH edges as they cross the centre.\n");
  4877. fprintf(stdout,"INFO: MAX DOPPLER PITCHSHIFT(SEMITONES) ...... Maximum pitchshift (up and down) due to motion-dependent doppler-shift.\n");
  4878. fprintf(stdout,"INFO: EXPAND BUFFERS BY .............................. For large doppler-shift, more memory may be needed for calculations.\n");
  4879. fprintf(stdout,"INFO: Memory may be expanded here by some integer factor.\n");
  4880. fprintf(stdout,"INFO: \n");
  4881. fprintf(stdout,"INFO: In Modes 2 and 3 .....\n");
  4882. fprintf(stdout,"INFO: \n");
  4883. fprintf(stdout,"INFO: OUTFILE CHANNEL COUNT ...................... Channel count of the output file. \n");
  4884. fprintf(stdout,"INFO: CENTRE CHANNEL OF IMAGE ................... Channel number, in output file, which is at the output image centre.\n");
  4885. fprintf(stdout,"INFO: MIN LEVEL ON CENTRE CHAN .................. Minimum level of mono-condensed signal on centre channel.\n");
  4886. fprintf(stdout,"INFO: \n");
  4887. fprintf(stdout,"INFO: In Mode 2 only .....\n");
  4888. fprintf(stdout,"INFO: \n");
  4889. fprintf(stdout,"INFO: MAX BOOST ON CENTRE CHAN ................ Maximum amplification of (mono-condensed) signal on centre channel.\n");
  4890. fprintf(stdout,"INFO: \n");
  4891. break;
  4892. case(SPINQ):
  4893. fprintf(stdout,"INFO: ROTATE A DOUBLE STEREO-IMAGE.\n");
  4894. fprintf(stdout,"INFO: \n");
  4895. fprintf(stdout,"INFO: Takes two stereo inputs and rotates them around central channel with stereo image spread to channels on left and right of this.\n");
  4896. fprintf(stdout,"INFO: The two inputs are initially wrapped around one another.\n");
  4897. fprintf(stdout,"INFO: i.e. if the channels of File 1 are \"1L\" and \"1R\", and of File 2, \"2L\" and \"2R\", with central channel \"C\"\n");
  4898. fprintf(stdout,"INFO: then the initial placement is 2L 1L C 1R 2R\n");
  4899. fprintf(stdout,"INFO: \n");
  4900. fprintf(stdout,"INFO: MODES-----------------------------------------------------------\n");
  4901. fprintf(stdout,"INFO: \n");
  4902. fprintf(stdout,"INFO: (1) Rotate around central channel (with possible doppler-shift) with stereo image spread to channels on left and right of this.\n");
  4903. fprintf(stdout,"INFO: (2) As mode 1, with image squeezing at centre i.e. when the spinning image crosses the centre ....\n");
  4904. fprintf(stdout,"INFO: MODE 2 uses ONLY the central channel to project the stereo-at-centre image.\n");
  4905. fprintf(stdout,"INFO: whereas MODE 1 also uses contributions from the outer channels to project the stereo-at-centre image.\n");
  4906. fprintf(stdout,"INFO: \n");
  4907. fprintf(stdout,"INFO: PARAMETERS-----------------------------------------------------------\n");
  4908. fprintf(stdout,"INFO: \n");
  4909. fprintf(stdout,"INFO: ROTATION_RATE(CYCLES PER SEC) ........... Number of complete rotations per second (can vary through time).\n");
  4910. fprintf(stdout,"INFO: Positive values rotate clockwise (as viewed from above).\n");
  4911. fprintf(stdout,"INFO: Negative values rotate anticlockwise.\n");
  4912. fprintf(stdout,"INFO: DIFFERENTIAL BETWEEN FRONT AND REAR .. As the edges cross the centre, edge \"at front\" is amplified by this factor\n");
  4913. fprintf(stdout,"INFO: while edge at rear is attenuated by this factor.\n");
  4914. fprintf(stdout,"INFO: ATTENUATION AT CENTRE ...................... Attenuates BOTH edges as they cross the centre.\n");
  4915. fprintf(stdout,"INFO: OUTFILE CHANNEL COUNT ...................... Channel count of the output file. \n");
  4916. fprintf(stdout,"INFO: CENTRE CHANNEL OF IMAGE ................... Channel number, in output file, which is at the output image centre.\n");
  4917. fprintf(stdout,"INFO: MAX DOPPLER PITCHSHIFT(SEMITONES) ...... Maximum pitchshift (up and down) due to motion-dependent doppler-shift.\n");
  4918. fprintf(stdout,"INFO: EXPAND BUFFERS BY .............................. For large doppler-shift, more memory may be needed for calculations.\n");
  4919. fprintf(stdout,"INFO: Memory may be expanded here by some integer factor.\n");
  4920. fprintf(stdout,"INFO: MIN LEVEL ON CENTRE CHAN .................. Minimum level of mono-condensed signal on centre channel.\n");
  4921. fprintf(stdout,"INFO: \n");
  4922. fprintf(stdout,"INFO: In Mode 2 only .....\n");
  4923. fprintf(stdout,"INFO: \n");
  4924. fprintf(stdout,"INFO: MAX BOOST ON CENTRE CHAN ................ Maximum amplification of (mono-condensed) signal on centre channel.\n");
  4925. fprintf(stdout,"INFO: \n");
  4926. break;
  4927. case(CRUMBLE):
  4928. fprintf(stdout,"INFO: DISINTEGRATE A MONO SOURCE OVER A MULTICHANNEL SPACE.\n");
  4929. fprintf(stdout,"INFO: \n");
  4930. fprintf(stdout,"INFO: Project a MONO source on all channels of a multichannel output, then segment it,\n");
  4931. fprintf(stdout,"INFO: and distribute the segments over smaller and smaller groups of channels\n");
  4932. fprintf(stdout,"INFO: \n");
  4933. fprintf(stdout,"INFO: MODES-----------------------------------------------------------\n");
  4934. fprintf(stdout,"INFO: \n");
  4935. fprintf(stdout,"INFO: (1) Over an 8-channel space.\n");
  4936. fprintf(stdout,"INFO: (2) Over a 16-channel space.\n");
  4937. fprintf(stdout,"INFO: \n");
  4938. fprintf(stdout,"INFO: PARAMETERS-----------------------------------------------------------\n");
  4939. fprintf(stdout,"INFO: \n");
  4940. fprintf(stdout,"INFO: START TIME ............................ Time in source at which disintegration starts.\n");
  4941. fprintf(stdout,"INFO: DURATION OF HALF SPLITS .......... Duration of section where signal splits into 2 images.\n");
  4942. fprintf(stdout,"INFO: DURATION OF QUARTER SPLITS .... Duration of section where signal split into 4 images.\n");
  4943. fprintf(stdout,"INFO: DURATION OF EIGHTH SPLITS ....... (Mode 2 only) Duration of section where signal split into 8 images.\n");
  4944. fprintf(stdout,"INFO: \n");
  4945. fprintf(stdout,"INFO: The sum of the \"Start Time\" and all these \"Duration\"s cannot exceed the duration of the input sound.\n");
  4946. fprintf(stdout,"INFO: \n");
  4947. fprintf(stdout,"INFO: ORIENTATION ......................... When the input image first splits onto 2 images on 2 blocks of adjacent chans.\n");
  4948. fprintf(stdout,"INFO: The first block starts at channel \"ORIENTATION\" and uses channels clockwise of this.\n");
  4949. fprintf(stdout,"INFO: The 2nd block uses the remaining channels.\n");
  4950. fprintf(stdout,"INFO: SEGMENT SIZE ........................ The (average) duration of the cut segments (can vary ober time).\n");
  4951. fprintf(stdout,"INFO: SIZE RANDOMISATION .............. Range 0 - 1. Maximum value(1) modifies size randomly between (size/2) and (3*size)./2\n");
  4952. fprintf(stdout,"INFO: INPUT SCATTER ...................... Random scatering of the start-time in the source at which the next segment is cut. (Range 0 - 1)\n");
  4953. fprintf(stdout,"INFO: The cut-time in the source always advances.\n");
  4954. fprintf(stdout,"INFO: With no scatter, the timestep step to the next cut-time equals the duration of the current segment.\n");
  4955. fprintf(stdout,"INFO: With max input-scatter(1) timestep is a random value between 0 and the current segment duration.\n");
  4956. fprintf(stdout,"INFO: OUTPUT SCATTER .................... Random scatering of the time-placement of the segment in the output stream. (Range 0 - 1)\n");
  4957. fprintf(stdout,"INFO: Time-placement in the output stream always advances.\n");
  4958. fprintf(stdout,"INFO: With no scatter, the step to the next output-time equals the duration of the current segment.\n");
  4959. fprintf(stdout,"INFO: With max output-scatter(1) timestep is a random value between 0 and the current segment duration.\n");
  4960. fprintf(stdout,"INFO: OUTPUT TIMESTRETCH .............. Stretching of time-placement of segments in the output stream. (Range 1 - 64)\n");
  4961. fprintf(stdout,"INFO: The timestep in the output stream to the next segment-placement, is multiplied by the timestretch.\n");
  4962. fprintf(stdout,"INFO: Where output-timestretch is greater than 1, silent gaps should appear in the output.\n");
  4963. fprintf(stdout,"INFO: PITCH SCATTER ...................... Maximum transposition (up or down) of the output segments,\n");
  4964. fprintf(stdout,"INFO: For example, a value of 3 produces a random transposition anywhere between 3 semitones up and 3 semitones down.\n");
  4965. fprintf(stdout,"INFO: SEED ................................... The same seed value produces identical output on successive process runs.\n");
  4966. fprintf(stdout,"INFO: SPLICELENGTH(mS) ................. Length, in milliseconds, of splices which cut segments from source.\n");
  4967. fprintf(stdout,"INFO: LENGTH OF EXPONENTIAL TAIL(mS) Length, in milliseconds, of any (exponentially decaying) tail on the cut segments.\n");
  4968. fprintf(stdout,"INFO: MAXIMIM DURATION ................ If output duration exceeds this limit, curtail it (set to zero for no curtailment).\n");
  4969. break;
  4970. case(TESSELATE):
  4971. fprintf(stdout,"INFO: CREATE REPEATING PATTERN WITH SHIFTS IN SPACE AND TIME, USING ONE OR MORE MONO SOURCES.\n");
  4972. fprintf(stdout,"INFO: \n");
  4973. fprintf(stdout,"INFO: The mono source is repeated one (set of) channels, but delays between repeats are different on a different (set of) channel(s).\n");
  4974. fprintf(stdout,"INFO: The standard-delay is the \"Repeat Cycle Duration\".\n");
  4975. fprintf(stdout,"INFO: \n");
  4976. fprintf(stdout,"INFO: The change in the delay, as you pass from one (set of) channel(s) to the next, is specified by an integer, the \"Cycle Index\".\n");
  4977. fprintf(stdout,"INFO: With 4 output channels, and a Cycle Index of 60,\n");
  4978. fprintf(stdout,"INFO: If Channel A has standard-delay,\n");
  4979. fprintf(stdout,"INFO: then the associated channels have standard-delay * (1 + 1/60)\n");
  4980. fprintf(stdout,"INFO: so that\n");
  4981. fprintf(stdout,"INFO: after 60 repetitions, channel(s) B resynchronises with channel(s) A\n");
  4982. fprintf(stdout,"INFO: \n");
  4983. fprintf(stdout,"INFO: Several sources can be input, and time-offset (Time Stagger), so the N sources (initially) form a rhythmic phrase.\n");
  4984. fprintf(stdout,"INFO: \n");
  4985. fprintf(stdout,"INFO: Different sources can have different cycle-indeces.\n");
  4986. fprintf(stdout,"INFO: \n");
  4987. fprintf(stdout,"INFO: PARAMETERS-----------------------------------------------------------\n");
  4988. fprintf(stdout,"INFO: \n");
  4989. fprintf(stdout,"INFO: TESSELATION DATA .......................... A textfile consisting of 2 lines of data.\n");
  4990. fprintf(stdout,"INFO: Each line must contain one entry for each input file.\n");
  4991. fprintf(stdout,"INFO: Line 1 - indicates the \"Cycle Index\" for the associated source.\n");
  4992. fprintf(stdout,"INFO: Line 2 - indicates the \"Time Stagger\" of the associated source.\n");
  4993. fprintf(stdout,"INFO: One item should have stagger zero.\n");
  4994. fprintf(stdout,"INFO: The other items should have different staggers\n");
  4995. fprintf(stdout,"INFO: indicating their timing in the initial rhythmic phrase.\n");
  4996. fprintf(stdout,"INFO: No delay should equal or exceed the \"Repeat Cycle Duration\".\n");
  4997. fprintf(stdout,"INFO: \n");
  4998. fprintf(stdout,"INFO: OUTPUT CHANNEL COUNT .................. The number of output channels (2 - 16). This must be an even number of channels.\n");
  4999. fprintf(stdout,"INFO: REPEAT CYCLE DURATION .................. The standard-(shortest)-delay between repetitions (the \"Repeat Cycle Duration\").\n");
  5000. fprintf(stdout,"INFO: OUTPUT DURATION .......................... The required duration of the output sound.\n");
  5001. fprintf(stdout,"INFO: TESSELATION TYPE ........................ Specifies how the channels are paired up.\n");
  5002. fprintf(stdout,"INFO: 0 : Double diamond, all odd-channels play at one delay rate, and all even-channels at the other.\n");
  5003. fprintf(stdout,"INFO: 1 : Channels are paired with the adjacent channel (sound 1 on ch1-paired-with-ch2, sound 2 on ch2-paired-with-ch3, etc.\n");
  5004. fprintf(stdout,"INFO: 2 : Channels are paired with the channel 2 ahead (sound 1 on ch1 paired-with-ch3, sound 2 on ch2-paired-with-ch4, etc.\n");
  5005. fprintf(stdout,"INFO: 3 : Channels are paired with the channel 3 ahead (sound 1 on ch1 paired-with-ch4, sound 2 on ch2-paired-with-ch5, etc.\n");
  5006. fprintf(stdout,"INFO: and so on.\n");
  5007. fprintf(stdout,"INFO: \n");
  5008. break;
  5009. case(PHASOR):
  5010. fprintf(stdout,"INFO: CREATE GRADUALLY PITCH-SHIFTING COPIES OF SOURCE SOUND, WHICH \"PHASE\" WITH ONE ANOTHER.\n");
  5011. fprintf(stdout,"INFO: \n");
  5012. fprintf(stdout,"INFO: Each stream pitch-shifts gradually up and down, to a specified max/min pitch-shift, at a rate determined by the frequency of the phasing wave.\n");
  5013. fprintf(stdout,"INFO: The streams can be distributed over a specified number of output channels, and can be synchronous or time-staggered.\n");
  5014. fprintf(stdout,"INFO: \n");
  5015. fprintf(stdout,"INFO: PARAMETERS-----------------------------------------------------------\n");
  5016. fprintf(stdout,"INFO: \n");
  5017. fprintf(stdout,"INFO: NUMBER OF PHASING STREAMS .......... The number of pitch-shifting streams to be output.\n");
  5018. fprintf(stdout,"INFO: FREQUENCY OF PHASING WAVE .......... The frequency at which the up-down pitch-shifts happen.\n");
  5019. fprintf(stdout,"INFO: MAX PHASING SHIFT (SEMITONES) .. The maximum phase shift used (in semitones): other streams have proportionately less phase-shift.\n");
  5020. fprintf(stdout,"INFO: NUMBER OF OUTPUT CHANNELS .......... Output streams are distributed over this given number of output channels.\n");
  5021. fprintf(stdout,"INFO: TIME OFFSET OF STREAMS(mS) ........ The start-time of the streams can be staggered by a few milliseconds (default, no stagger).\n");
  5022. fprintf(stdout,"INFO: \n");
  5023. fprintf(stdout,"INFO: SOUND-SURROUND ................................ If more than 2 output channels, there output-placement relates to a sound-surround array.\n");
  5024. fprintf(stdout,"INFO: WARN OF ROUNDING ERRORS .............. Warns of any errors in calculating the phase-shifted stream outputs.\n");
  5025. fprintf(stdout,"INFO: \n");
  5026. fprintf(stdout,"INFO: NB With time-variable phasing-wave frequency, extreme frequency shifts or reversals may produce anomalous output.\n");
  5027. break;
  5028. case(CRYSTAL):
  5029. fprintf(stdout,"INFO: CREATE SOUND-SET RELATED, IN PITCH, TIME & PROXIMITY, TO VERTICES OF A 3D CRYSTAL, THEN ROTATE CRYSTAL AND RECREATE SOUNDS, ETC..\n");
  5030. fprintf(stdout,"INFO: \n");
  5031. fprintf(stdout,"INFO: Mono input sound (or N input sounds for N vertices) used as sample-read table to generate outputs. Ideal duration 1 sec, but any dur possible.\n");
  5032. fprintf(stdout,"INFO: Crystal vertices projected onto x, y plane, where x represents pitch, and y represents time. z (depth) determines signal brightness.\n");
  5033. fprintf(stdout,"INFO: After playing one set of vertices, crystal rotates, around 2 different axes, and process of sound generation is then repeated ...\n");
  5034. fprintf(stdout,"INFO: \n");
  5035. fprintf(stdout,"INFO: MODES-----------------------------------------------------------\n");
  5036. fprintf(stdout,"INFO: \n");
  5037. fprintf(stdout,"INFO: (1) Mono output.\n");
  5038. fprintf(stdout,"INFO: (2) Stereo output (the y-coordinate is further interpreted as a position in the stereo space).\n");
  5039. fprintf(stdout,"INFO: (3) Stereo output across 2 channels of an 8-channel multichannel file, but separated by 1 channel.\n");
  5040. fprintf(stdout,"INFO: (4) Ditto, stepping clockwise around the channels for each vertex-group generated.\n");
  5041. fprintf(stdout,"INFO: (5) Ditto, stepping anticlockwise.\n");
  5042. fprintf(stdout,"INFO: (6) Ditto, stepping randomly.\n");
  5043. fprintf(stdout,"INFO: (7) Stereo output across 2 adjacent channels of an 8-channel multichannel file, stepping clockwise.\n");
  5044. fprintf(stdout,"INFO: (8) Ditto, stepping anticlockwise.\n");
  5045. fprintf(stdout,"INFO: (9) Ditto, stepping randomly.\n");
  5046. fprintf(stdout,"INFO: (10) Stereo output, each vertex-set is output as a separate file.\n");
  5047. fprintf(stdout,"INFO: \n");
  5048. fprintf(stdout,"INFO: PARAMETERS-----------------------------------------------------------\n");
  5049. fprintf(stdout,"INFO: \n");
  5050. fprintf(stdout,"INFO: ROTATION SPEED AROUND Z AXIS (CYCS PER SEC) ................ Rotation speed (cycles per second) around z-axis.\n");
  5051. fprintf(stdout,"INFO: ROTATION SPEED AROUND Y AXIS (CYCS PER SEC) ................ Rotation speed (cycles per second) around y-axis.\n");
  5052. fprintf(stdout,"INFO: MAXIMUM TIMEWIDTH OF ONE ALL-VERTICES-PLAY .................. Maximum time between first vertex to play, and last, for any playing of one set of vertices.\n");
  5053. fprintf(stdout,"INFO: Actual time between first and last vertices played will depend on crystal orientation.\n");
  5054. fprintf(stdout,"INFO: Maximum timewidth is the maximum value this timewidth can take for all possible orientations of the crystal.\n");
  5055. fprintf(stdout,"INFO: There will be a central time around which the vertices are laid out, sone before and some after this central time.\n");
  5056. fprintf(stdout,"INFO: TIMESTEP BETWEEN ONE ALL-VERTICES-PLAY AND NEXT .......... Time-step between central-time of one playing-of-a-set-of-vertices, and the next playing.\n");
  5057. fprintf(stdout,"INFO: TOTAL DURATION OF OUTPUT ........................................................ Minimum output duration.\n");
  5058. fprintf(stdout,"INFO: When \"total duration\" is reached, any vertex-set being played will continue to its end before the output terminates.\n");
  5059. fprintf(stdout,"INFO: MIN MIDI PITCH OF ANY VERTEX (WHEREVER ROTATED)\n");
  5060. fprintf(stdout,"INFO: MAX MIDI PITCH OF ANY VERTEX (WHEREVER ROTATED) .......... As vertices are rotated, their pitch will usually change.\n");
  5061. fprintf(stdout,"INFO: These are the minimum and maximum pitch thay any vertex might attain, and will not necessarily be reached by any rotated vertex.\n");
  5062. fprintf(stdout,"INFO: FRQ OF PASSBAND OF FILTER FOR DISTANCE CUES\n");
  5063. fprintf(stdout,"INFO: FRQ OF STOPBAND OF FILTER FOR DISTANCE CUES\n");
  5064. fprintf(stdout,"INFO: MAX ATTENUATION(DB) OF FILTER\n");
  5065. fprintf(stdout,"INFO: GAIN APPLIED TO SRC BEFORE FILTERING ..................................As vertices recede beyond x-y plane, sound is filtered to indicate distance.\n");
  5066. fprintf(stdout,"INFO: Filtering done by CDP lowpass-filter, for which a passband, a (higher) stopband, an attenuation and a pregain need to be specified.\n");
  5067. fprintf(stdout,"INFO: CURVE SLOPE FOR MIXING FILT TO UNFILT SND(DEPTH CUE) .. The filtered sound is mixed into the unfiltered, increasingly for greater distance.\n");
  5068. fprintf(stdout,"INFO: The curve slope determines how this mixing differs from a simple linear crossfade.\n");
  5069. fprintf(stdout,"INFO: Values less than one create a more rapid increase in filtering in the initial stages, values greater than one, the opposite.\n");
  5070. fprintf(stdout,"INFO: CURVE SLOPE FOR MIXING IN OCTAVE-UP-SND(PROXIMITY CUE) As vertices approach in front of the x-y plane, sound is octave-stacked to indicate proximity.\n");
  5071. fprintf(stdout,"INFO: The curve slope determines, similarly, how this mixing differs from a simple linear crossfade.\n");
  5072. break;
  5073. case(WAVEFORM):
  5074. fprintf(stdout,"INFO: CREATE A WAVETABLE SUITABLE FOR USE IN THE \"CRYSTAL\" PROCESS.\n");
  5075. fprintf(stdout,"INFO: \n");
  5076. fprintf(stdout,"INFO: Mono input sound used to generate a symmetric output table, suitable to use as a waveform for sound-generation.\n");
  5077. fprintf(stdout,"INFO: \n");
  5078. fprintf(stdout,"INFO: MODES-----------------------------------------------------------\n");
  5079. fprintf(stdout,"INFO: \n");
  5080. fprintf(stdout,"INFO: (1) Specify a time in the source, and a number of half-wavesets to read.\n");
  5081. fprintf(stdout,"INFO: (2) Specify a time in the source, and a duration in milliseconds to read.\n");
  5082. fprintf(stdout,"INFO: (3) Ditto, then combine the selected sound with a single-cycle sinusoid.\n");
  5083. fprintf(stdout,"INFO: \n");
  5084. fprintf(stdout,"INFO: PARAMETERS-----------------------------------------------------------\n");
  5085. fprintf(stdout,"INFO: \n");
  5086. fprintf(stdout,"INFO: TIME OF SAMPLING ...................... Time in the source where sound is to be sampled.\n");
  5087. fprintf(stdout,"INFO: COUNT OF HALF WAVESETS .......... Number of half-wavesets to read from the source.\n");
  5088. fprintf(stdout,"INFO: DURATION TO SAMPLE (mS) ........ Duration, in mS, to sample from the source.\n");
  5089. fprintf(stdout,"INFO: BALANCE WITH SINUSOID ............ Relative level of source and sinusoid in final output.\n");
  5090. fprintf(stdout,"INFO: \n");
  5091. fprintf(stdout,"INFO: Modes 1 and 2 cut a source segment (at zero-crossings), then abutt the inverted segment to the original, to make a waveform.\n");
  5092. fprintf(stdout,"INFO: In Mode 3, this abutted waveform is superimposed over a single-cycle sinusoid of the same duration.\n");
  5093. break;
  5094. case(DVDWIND):
  5095. fprintf(stdout,"INFO: SHORTEN SOUND BY READ-THEN-SKIP, READ-THEN-SKIP, ETC.\n");
  5096. fprintf(stdout,"INFO: \n");
  5097. fprintf(stdout,"INFO: PARAMETERS-----------------------------------------------------------\n");
  5098. fprintf(stdout,"INFO: \n");
  5099. fprintf(stdout,"INFO: TIME CONTRACTION ............. Time-contraction of the source. Greater than 1. Can vary through time.\n");
  5100. fprintf(stdout,"INFO: SIZE OF CLIPS(mS) ............ Duration of the retained clips, in mS. Can vary through time.\n");
  5101. break;
  5102. case(CASCADE):
  5103. fprintf(stdout,"INFO: SUCCESSIVE SEGMENTS OF SRC ARE REPEAT-ECHOED, AND ECHO-SETS SUPERIMPOSED ON SRC.\n");
  5104. fprintf(stdout,"INFO: \n");
  5105. if(mode < 5) {
  5106. switch(mode) {
  5107. case(0):
  5108. fprintf(stdout,"INFO: N-chan output :: N-chan input. Every echo is in all N channels.\n");
  5109. break;
  5110. case(1):
  5111. fprintf(stdout,"INFO: Stereo output :: Mono input (going to left of output) :: Echo-streams pan to right.\n");
  5112. break;
  5113. case(2):
  5114. fprintf(stdout,"INFO: Stereo output :: Mono input (going to centre of output) :: Echo-streams pan alternately to L and R.\n");
  5115. break;
  5116. case(3):
  5117. fprintf(stdout,"INFO: 8-chan output :: Mono input (going initially to Ch 1) :: Each echo in each stream steps to next channel, clockwise.\n");
  5118. break;
  5119. case(4):
  5120. fprintf(stdout,"INFO: 8-chan output :: Mono input (going initially to Ch 1) :: Each echo in odd-numbered streams steps to R, even-numbered to L.\n");
  5121. break;
  5122. }
  5123. fprintf(stdout,"INFO: \n");
  5124. fprintf(stdout,"INFO: PARAMETERS-----------------------------------------------------------\n");
  5125. fprintf(stdout,"INFO: \n");
  5126. fprintf(stdout,"INFO: SEGMENT LENGTH .......................... Duration (in secs) of (successive) segments in source; each of which is echoed. Possibly time-varying.\n");
  5127. fprintf(stdout,"INFO: MAX SEGMENT LENGTH .................... Maximum duration of the segments. If set, \"SEGMENT LENGTH\" treated as a minimum.\n");
  5128. fprintf(stdout,"INFO: Actual length is a random value between min and max.\n");
  5129. } else {
  5130. switch(mode) {
  5131. case(5):
  5132. fprintf(stdout,"INFO: N-chan output :: N-chan input. Every echo is in all N channels.\n");
  5133. break;
  5134. case(6):
  5135. fprintf(stdout,"INFO: Stereo output :: Mono input (going to left of output) :: Echo-streams pan to right.\n");
  5136. break;
  5137. case(7):
  5138. fprintf(stdout,"INFO: Stereo output :: Mono input (going to centre of output) :: Echo-streams pan alternately to L and R.\n");
  5139. break;
  5140. case(8):
  5141. fprintf(stdout,"INFO: 8-chan output :: Mono input (going initially to Ch 1) :: Each echo in each stream steps to next channel, clockwise.\n");
  5142. break;
  5143. case(9):
  5144. fprintf(stdout,"INFO: 8-chan output :: Mono input (going initially to Ch 1) :: Each echo in odd-numbered streams steps to R, even-numbered to L.\n");
  5145. break;
  5146. }
  5147. fprintf(stdout,"INFO: \n");
  5148. fprintf(stdout,"INFO: PARAMETERS-----------------------------------------------------------\n");
  5149. fprintf(stdout,"INFO: \n");
  5150. fprintf(stdout,"INFO: CUT_TIMES_IN_SOURCE .................... (Succesive) times at which to cut source, to produce the segments to echo.\n");
  5151. fprintf(stdout,"INFO: \n");
  5152. }
  5153. fprintf(stdout,"INFO: ECHO COUNT ................................... Number of echos of each segment. Possibly time-varying.\n");
  5154. fprintf(stdout,"INFO: MAX ECHO COUNT ........................... Maximum number of echos. If set, \"ECHO COUNT\" treated as a minimum.\n");
  5155. fprintf(stdout,"INFO: Actual count is a random value between min and max.\n");
  5156. fprintf(stdout,"INFO: If set to ZERO it is ignored.\n");
  5157. fprintf(stdout,"INFO: TIME RANDOMISATION OF ECHOS .. Randomisation of echo timings (default zero).\n");
  5158. fprintf(stdout,"INFO: RANDOM SEED ............................... With same non-zero Seed value, a repeat process-run with same parameters gives identical output.\n");
  5159. fprintf(stdout,"INFO: \n");
  5160. fprintf(stdout,"INFO: ECHOS MAY BE SHREDDED (echoed-segment cut into smaller chunks which are then randomly rearraged)\n");
  5161. fprintf(stdout,"INFO: \n");
  5162. fprintf(stdout,"INFO: CHUNKS IN ANY SEGMENT SHRED .. Number of chunks into which segment-echo is cut.\n");
  5163. fprintf(stdout,"INFO: REPEAT SHREDDINGS ....................... Number of repeated shreddings on each segment-echo.\n");
  5164. fprintf(stdout,"INFO: ALSO SHRED SOURCE ....................... Source is shredded, as well as echos.\n");
  5165. fprintf(stdout,"INFO: LINEAR DECAY ECHO LEVELS ........ Successice echos, in each echo-set, fall away in level less rapdily.\n");
  5166. fprintf(stdout,"INFO: NORMALISE LOW LEVEL OUTPUT .... Raise Low level output to near maximum level. (High level output is automatically normalised).\n");
  5167. break;
  5168. case(SYNSPLINE):
  5169. fprintf(stdout,"INFO: SYNTHESIS FROM WAVEFORMS MADE BY SMOOTHLY JOINING RANDOMLY GENERATED POINTS.\n");
  5170. fprintf(stdout,"INFO: \n");
  5171. fprintf(stdout,"INFO: PARAMETERS-----------------------------------------------------------\n");
  5172. fprintf(stdout,"INFO: \n");
  5173. fprintf(stdout,"INFO: SAMPLE RATE ........................... Sample rate of synthesized sound.\n");
  5174. fprintf(stdout,"INFO: DURATION .............................. Duration of the output sound.\n");
  5175. fprintf(stdout,"INFO: FREQUENCY ............................ Fundamental frq of the output (Range 0.001 to 10000 Hz).\n");
  5176. fprintf(stdout,"INFO: SPLINE COUNT ......................... Number of random points generated within a half-wavecycle. InterpolatION between these create the (next) waveform. (0 -64)\n");
  5177. fprintf(stdout,"INFO: INTERPOLATION STEPS .............. Number of interpolation steps in which one waveform morph into the next (0 - 4096).\n");
  5178. fprintf(stdout,"INFO: MAXIMUM SPLINE COUNT ............ Maximum Spline Count. If a non-zero value is entered, at each new vavecycle,\n");
  5179. fprintf(stdout,"INFO: a random number of spline points is generated with value between \"Spline Count\" and this maximum value.\n");
  5180. fprintf(stdout,"INFO: MAXIMUM INTERPOLATION STEPS .. Maximum number of interpolation steps. If a non-zero value is entered, at each new vavecycle,\n");
  5181. fprintf(stdout,"INFO: a random number of steps is generated with value between \"Interpolation Steps\" and this maximum value.\n");
  5182. fprintf(stdout,"INFO: MAXIMUM PITCH_DRIFT (SEMITONES)............... Maximum random drift of pitch away away from specified frequency, in semitones. (0 - 12)\n");
  5183. fprintf(stdout,"INFO: AVERAGE TIME(mS) BETWEEN NEW DRIFT VALS .. New pitch drift value set after approximately this timestep (mS).\n");
  5184. fprintf(stdout,"INFO: \n");
  5185. fprintf(stdout,"INFO: NORMALISE ALL WAVECYCLES ...... Normalise every wavecycle (default: cycles retain whatever (maximal)-amplitude is generated\n");
  5186. fprintf(stdout,"INFO: in the waveform generation process).\n");
  5187. fprintf(stdout,"INFO: \n");
  5188. fprintf(stdout,"INFO: FREQUENCY, SPLINE COUNT, INTERPOLATION STEPS (and the related maximal parameters) can all vary through time. \n");
  5189. break;
  5190. case(FRACTAL):
  5191. fprintf(stdout,"INFO: CREATE FRACTAL REARRANGEMENT OF SOURCE.\n");
  5192. fprintf(stdout,"INFO: \n");
  5193. fprintf(stdout,"INFO: PARAMETERS-----------------------------------------------------------\n");
  5194. fprintf(stdout,"INFO: \n");
  5195. fprintf(stdout,"INFO: NUMBER OF FRACTAL LAYERS .. How many times the source is rearranged : Range 2 to 100.\n");
  5196. fprintf(stdout,"INFO: SPLICE LENGTH IN mS ............ Length of splices : Range 2 to 50\n");
  5197. fprintf(stdout,"INFO: \n");
  5198. fprintf(stdout,"INFO: NB The process magnifies the size of the source, substantially.\n");
  5199. break;
  5200. case(FRACSPEC):
  5201. fprintf(stdout,"INFO: IMPOSE FRACTAL TRANSPOSITION PATTERN ON SPECTRUM.\n");
  5202. fprintf(stdout,"INFO: \n");
  5203. fprintf(stdout,"INFO: PARAMETERS-----------------------------------------------------------\n");
  5204. fprintf(stdout,"INFO: \n");
  5205. fprintf(stdout,"INFO: SEMITONE TRANSPOSITION PATTERN ......................... set of time:semitone-transposition pairs for largest time-scale of fractal pattern,\n");
  5206. fprintf(stdout,"INFO: Last time defines duration of pattern, last value ignored.\n");
  5207. fprintf(stdout,"INFO: Pattern reproduced at contracted time-scale, on each element of pattern, recursively.\n");
  5208. fprintf(stdout,"INFO: MAX FRACTALISATION ............................................ Maximum degree of fractalisation (repetition of patterning at smaller and smaller timescales.\n");
  5209. fprintf(stdout,"INFO: TIME STRETCH OF FRACTAL PATTERN ......................... Timestretch applied to fractal pattern. Must be >= 1. If set to zero, ignored.\n");
  5210. fprintf(stdout,"INFO: INTERVAL STRETCH OF FRACTAL PATTERN ................... Interval stretch applied to fractal pattern. If set to zero, ignored.\n");
  5211. fprintf(stdout,"INFO: The previous three parameters can all vary through time. \n");
  5212. fprintf(stdout,"INFO: SHRINK FRACTAL INTERVALS AS_TIMESCALE SHRINKS ..... e.g. if pattern (at next timescale) shrinks by 1/4, transposition intervals also shrink by 1/4.\n");
  5213. fprintf(stdout,"INFO: READ BRKPNT DATA IN OUTFILE TIMEFRAME ................. (default : brkpoint data is read in the inputfile timeframe).\n");
  5214. fprintf(stdout,"INFO: FORMANTS NOT RETAINED ............................................. Simple transposition of spectral components. (Default: attempts to retain formant envelope).\n");
  5215. break;
  5216. case(SPLINTER):
  5217. switch(mode) {
  5218. case(0):
  5219. case(2):
  5220. fprintf(stdout,"INFO: CREATE SPLINTERS MERGING INTO SOURCE SOUND.\n");
  5221. break;
  5222. case(1):
  5223. case(3):
  5224. fprintf(stdout,"INFO: CREATE SPLINTERS EMERGING OUT OF SOURCE SOUND.\n");
  5225. break;
  5226. }
  5227. fprintf(stdout,"INFO: \n");
  5228. fprintf(stdout,"INFO: Creates splinters by repeating, with shrinking, a specific waveset-group in the source.\n");
  5229. fprintf(stdout,"INFO: The time of and size of this group is specified by you.\n");
  5230. switch(mode) {
  5231. case(0): case(2):
  5232. fprintf(stdout,"INFO: The derived, shrunk splinters repeat, then expand, eventually merging into the original sound at their origin point.\n");
  5233. break;
  5234. case(1): case(3):
  5235. fprintf(stdout,"INFO: The original sound plays up to the selected time, then splinters,\n");
  5236. break;
  5237. }
  5238. switch(mode) {
  5239. case(0):
  5240. fprintf(stdout,"INFO: As they expand, the splinters step downwards in pitch.\n");
  5241. break;
  5242. case(1):
  5243. fprintf(stdout,"INFO: As they shrink, the splinters step upward in pitch.\n");
  5244. break;
  5245. case(2): case(3):
  5246. fprintf(stdout,"INFO: As they shrink, the splinters retain the original pitch (roughly).\n");
  5247. break;
  5248. }
  5249. fprintf(stdout,"INFO: \n");
  5250. fprintf(stdout,"INFO: PARAMETERS-----------------------------------------------------------\n");
  5251. fprintf(stdout,"INFO: \n");
  5252. fprintf(stdout,"INFO: TIME (BEFORE) WAVESET GROUP ............. Time immediately before start of selected wavesets.\n");
  5253. fprintf(stdout,"INFO: WAVESET COUNT ............................... Number of wavesets to use to make splinter.\n");
  5254. fprintf(stdout,"INFO: SHRINKING SPLINTERS COUNT ................ Number of splinter repeats before max shrinking attained.\n");
  5255. fprintf(stdout,"INFO: SHRUNK SPLINTERS COUNT ................... Number of additional max-shrunk splinters before any accel or rit ends.\n");
  5256. fprintf(stdout,"INFO: SPLINTER PULSE RATE AT ORIG WAVESET .. Pulse rate (in Hz) of the repeating splinters close to their origin in the source.\n");
  5257. fprintf(stdout,"INFO: GOAL PULSE RATE ............................. Pulse rate (in Hz) of the splinters at max distance from their origin.\n");
  5258. fprintf(stdout,"INFO: EXTRA SPLINTERS COUNT .................... Number of any additional splinters, at regular pulse, beond the \"maximum\" distance.\n");
  5259. switch(mode) {
  5260. case(0): case(2):
  5261. fprintf(stdout,"INFO: SHRINK CONTOUR ............................. Contour of shrink. 1.0 = linear; >1 expands more rapidly at end; <1 less rapidly at end.\n");
  5262. break;
  5263. case(1): case(3):
  5264. fprintf(stdout,"INFO: SHRINK CONTOUR ............................. Contour of shrink. 1.0 = linear; >1 shrink more rapidly at end; <1 less rapidly at end.\n");
  5265. break;
  5266. }
  5267. switch(mode) {
  5268. case(0): case(2):
  5269. fprintf(stdout,"INFO: TIMING CONTOUR ............................. Contour of pulse-rate change. >1 accels or rits more rapidly at end; <1 less rapidly at end.\n");
  5270. break;
  5271. case(1): case(3):
  5272. fprintf(stdout,"INFO: TIMING CONTOUR ............................. Contour of pulse-rate change. >1 accels or rits more rapidly at start; <1 less rapidly at start.\n");
  5273. break;
  5274. }
  5275. switch(mode) {
  5276. case(0): case(1):
  5277. fprintf(stdout,"INFO: FRQ OF SHRUNK WAVESETS ................. Determines final wavelength of wavesets when they are maximally shrunk. Default 6000Hz\n");
  5278. break;
  5279. case(2): case(3):
  5280. fprintf(stdout,"INFO: DURATION(mS) OF SHRUNK WAVESETS ... The final size (in mS) of the waveset-group when it is maximally shrunk.\n");
  5281. break;
  5282. }
  5283. fprintf(stdout,"INFO: SPLINTER TIMING RANDOMISATION ......... Randomisation of the pulse-rate of the splinters.\n");
  5284. fprintf(stdout,"INFO: SPLINTER SHRINKING RANDOMISATION .... Randomisation of the shrinkage of the splinters.\n");
  5285. switch(mode) {
  5286. case(0): case(2):
  5287. fprintf(stdout,"INFO: RETAIN ALL SOURCE SND ..................... Default, source is not heard until the splinters merge into it.\n");
  5288. break;
  5289. case(1): case(3):
  5290. fprintf(stdout,"INFO: RETAIN ALL SOURCE SND ..................... Default, source is not heard after splinters emerge from it.\n");
  5291. break;
  5292. }
  5293. fprintf(stdout,"INFO: RETAIN NO SOURCE SND ..................... The source sound is entirely suppressed.\n");
  5294. break;
  5295. case(REPEATER):
  5296. fprintf(stdout,"INFO: PLAY THROUGH SOURCE, WITH SPECIFIED ELEMENTS REPEATING THEMSELVES.\n");
  5297. fprintf(stdout,"INFO: The Sound-stream pauses for each segment-of-repeats then continues (to the next) ...\n");
  5298. fprintf(stdout,"INFO: \n");
  5299. fprintf(stdout,"INFO: PARAMETERS-----------------------------------------------------------\n");
  5300. fprintf(stdout,"INFO: \n");
  5301. fprintf(stdout,"INFO: MODE 3 : produces decrescendoing, accelerating output, like bouncing object.\n");
  5302. fprintf(stdout,"INFO: \n");
  5303. fprintf(stdout,"INFO: PARAMETERS-----------------------------------------------------------\n");
  5304. fprintf(stdout,"INFO: \n");
  5305. fprintf(stdout,"INFO: REPEATED SEGMENTS DATA ......................... a textfile of values specifying the segments to be repeated, and the details of the repetition .\n");
  5306. fprintf(stdout,"INFO: \n");
  5307. fprintf(stdout,"INFO: Each line contains 4 values .....\n");
  5308. fprintf(stdout,"INFO: \n");
  5309. if(mode == 0 || mode == 2) {
  5310. fprintf(stdout,"INFO: \"Start-time\" \"End-time\" \"Number-of-Repeats\" \"Delay-time\"\n");
  5311. fprintf(stdout,"INFO: \n");
  5312. fprintf(stdout,"INFO: \"Start-time\" and \"End-time\" are the start and end of the segment to be repeated.\n");
  5313. fprintf(stdout,"INFO: \n");
  5314. fprintf(stdout,"INFO: \"Delay-time\", for any repeating segment,\n");
  5315. fprintf(stdout,"INFO: is the time between the START of one repeated element and the START of the next.\n");
  5316. fprintf(stdout,"INFO: \n");
  5317. fprintf(stdout,"INFO: Delay zero will produce a delay equal to the segment length.\n");
  5318. fprintf(stdout,"INFO: Otherwise, delays less than 0.05 seconds may produce output like an oscillator.\n");
  5319. } else {
  5320. fprintf(stdout,"INFO: \"Start-time\" \"End-time\" \"Number-of-Repeats\" \"Offset-time\"\n");
  5321. fprintf(stdout,"INFO: \n");
  5322. fprintf(stdout,"INFO: \"Offset-time\", for any repeating segment,\n");
  5323. fprintf(stdout,"INFO: is the time between the END of one repeated element and the START of the next.\n");
  5324. }
  5325. fprintf(stdout,"INFO: \n");
  5326. fprintf(stdout,"INFO: Selected segments must be at least 0.01 seconds in duration\n");
  5327. fprintf(stdout,"INFO: and can overlap one-another, or backtrack in the source sound.\n");
  5328. fprintf(stdout,"INFO: \n");
  5329. fprintf(stdout,"INFO: RANGE OF ANY RANDOM EXPANSION OF DELAY TIMES ......... For any segment, the delay times may each be randomly stretched.\n");
  5330. fprintf(stdout,"INFO: This parameter specifies the upper limit of such streching, and this limit may vary through time.\n");
  5331. fprintf(stdout,"INFO: An expansion of \"1.0\" results in no stretching.\n");
  5332. fprintf(stdout,"INFO: \n");
  5333. fprintf(stdout,"INFO: RANGE OF ANY RANDOM PITCH VARIATION(SEMITONES) ..... For any segment, the pitch of each repeat may randomly vary.\n");
  5334. fprintf(stdout,"INFO: This parameter specifies the upper limit of such pitch-variation, in semitones.\n");
  5335. fprintf(stdout,"INFO: An expansion limit of e.g. \"1.5\" results in random pitch shifts in the range 1.5 semitones down to 1.5 semitones up.\n");
  5336. fprintf(stdout,"INFO: A value of zero results in no transposition.\n");
  5337. fprintf(stdout,"INFO: \n");
  5338. fprintf(stdout,"INFO: RANDOM SEED .............................................................. An integer. Repeated process-runs with same source and same seed value gives identical output.\n");
  5339. if(mode == 2) {
  5340. fprintf(stdout,"INFO: ACCELERATION OF REPEATS ...................................... e.g. \"3\" means Gradually shorten delays until they reach 1/3 duration .\n");
  5341. fprintf(stdout,"INFO: WARP OF ACCELERATION ................................................ Warp value >1 shortens by less initially and by more later. Warp 1 has no effect.\n");
  5342. fprintf(stdout,"INFO: FADE CONTOUR .............................................................. 1 Gives linear fade: >1 Faster followed by slower decay: <1 Slower followed by faster.\n");
  5343. fprintf(stdout,"INFO: \n");
  5344. }
  5345. break;
  5346. case(VERGES):
  5347. fprintf(stdout,"INFO: PLAY SOURCE, WITH SPECIFIED BRIEF MOMENTS GLISSING UP OR DOWN ABRUPTLY, AND POSSIBLY ACCENTED.\n");
  5348. fprintf(stdout,"INFO: \n");
  5349. fprintf(stdout,"INFO: Best applied to attack points in the source.\n");
  5350. fprintf(stdout,"INFO: \n");
  5351. fprintf(stdout,"INFO: PARAMETERS-----------------------------------------------------------\n");
  5352. fprintf(stdout,"INFO: \n");
  5353. fprintf(stdout,"INFO: VERGE TIMES ............................................... Textifle, being a list of times at which to create the verges.\n");
  5354. fprintf(stdout,"INFO: \n");
  5355. fprintf(stdout,"INFO: VERGE TRANSPOSITION(SEMITONES) ......... Initial semitone transposition at the verge-time.\n");
  5356. fprintf(stdout,"INFO: This parameter specifies the upper limit of such streching, and this limit may vary through time.\n");
  5357. fprintf(stdout,"INFO: An expansion of \"1.0\" results in no stretching.\n");
  5358. fprintf(stdout,"INFO: \n");
  5359. fprintf(stdout,"INFO: VERGE SLOPE ............................................... Slope of glissando. Default 1 (linear). Other values are steeper.\n");
  5360. fprintf(stdout,"INFO: VERGE DURATION ........................................ Duration of the verges.\n");
  5361. fprintf(stdout,"INFO: \n");
  5362. fprintf(stdout,"INFO: \"TRANSPOSITION\", \"SLOPE\" and \"DURATION\" can vary through time.\n");
  5363. fprintf(stdout,"INFO: \n");
  5364. fprintf(stdout,"INFO: DON'T SEARCH FOR LOCAL PEAKS ....... Use the exact verge-times supplied. Do not search for local peaks.\n");
  5365. fprintf(stdout,"INFO: BOOST VERGE LEVEL ..................................... Boost the level of the verges.\n");
  5366. fprintf(stdout,"INFO: SUPPRESS NON-VERGES .............................. Suppress any input signal which is not a verge.\n");
  5367. fprintf(stdout,"INFO: \n");
  5368. fprintf(stdout,"INFO: \"BOOST\" and \"SUPPRESS\" Cannot be used together.\n");
  5369. break;
  5370. case(MOTOR):
  5371. fprintf(stdout,"INFO: CREATING A FAST STREAM OF PULSES, ENVELOPED BY A SLOWER-PULSING STREAM.\n");
  5372. fprintf(stdout,"INFO: \n");
  5373. fprintf(stdout,"INFO: Create fast (inner) pulse-stream, within slower (outer) pulsing-enveloping.\n");
  5374. fprintf(stdout,"INFO: Under every outer envelope-pulse, the inner events are cut, successively, from the input source(s).\n");
  5375. fprintf(stdout,"INFO: Each outer-pulse (possibly shortened by randomisation) must hold at least 2 inner-pulses (possibly lengthened by randomisation).\n");
  5376. fprintf(stdout,"INFO: Shortish sources with a changing spectrum (or shortish segments cut from a larger source) are recommended.\n");
  5377. fprintf(stdout,"INFO: \n");
  5378. switch(mode) {
  5379. case(0):
  5380. fprintf(stdout,"INFO: MODE: Uses a single source. Reads src-segment, then advances during pulse crescendo, regressing during decrescendo.\n");
  5381. break;
  5382. case(1):
  5383. fprintf(stdout,"INFO: MODE: Uses several elements cut from a single source, with cuts specified in \"SLICE TIMES\".\n");
  5384. fprintf(stdout,"INFO: Reads a segment from an element then advances during pulse crescendo, regressing during decrescendo.\n");
  5385. break;
  5386. case(2):
  5387. fprintf(stdout,"INFO: MODE: Uses several srcs. Reads element from a src then advances during pulse crescendo, regressing during decrescendo.\n");
  5388. break;
  5389. case(3):
  5390. fprintf(stdout,"INFO: MODE: Uses a single source. Reads src-segment then advances.\n");
  5391. break;
  5392. case(4):
  5393. fprintf(stdout,"INFO: MODE: Uses several elements cut from a single source, with cuts specified in \"SLICE TIMES\".\n");
  5394. fprintf(stdout,"INFO: Reads an element-segment then advances.\n");
  5395. break;
  5396. case(5):
  5397. fprintf(stdout,"INFO: MODE: Uses several srcs. Reads a src-segment then advances.\n");
  5398. break;
  5399. case(6):
  5400. fprintf(stdout,"INFO: MODE: Uses a single source. Reads src-segment, advancing for rest of read, or regressing for rest of read. Decision to advance or regress is random.\n");
  5401. break;
  5402. case(7):
  5403. fprintf(stdout,"INFO: MODE: Uses several elements cut from a single source, with cuts specified in \"SLICE TIMES\".\n");
  5404. fprintf(stdout,"INFO: Reads element-segment advancing for rest of read, or regressing for of the read. Decision to advance or regress is random.\n");
  5405. break;
  5406. case(8):
  5407. fprintf(stdout,"INFO: MODE: Uses several srcs. Reads src-segment advancing for rest of read, or regressing for rest the read. Decision to advance or regress is random.\n");
  5408. break;
  5409. }
  5410. fprintf(stdout,"INFO: \n");
  5411. fprintf(stdout,"INFO: PARAMETERS-----------------------------------------------------------\n");
  5412. fprintf(stdout,"INFO: \n");
  5413. switch(mode) {
  5414. case(1):
  5415. case(4):
  5416. case(7):
  5417. fprintf(stdout,"INFO: SLICE TIMES (Mode 2 only) ........................... Slice times to cut source input sound into several source segments.\n");
  5418. break;
  5419. }
  5420. fprintf(stdout,"INFO: TOTAL OUTPUT DURATION ........................... Duration of output sound to produce.\n");
  5421. fprintf(stdout,"INFO: INNER PULSE FRQ(Hz) ................................. Frq rate of inner (faster) pulses.\n");
  5422. fprintf(stdout,"INFO: OUTER PULSE RATE(Hz) ............................... Frq rate of outer (enveloping) pulses.\n");
  5423. fprintf(stdout,"INFO: INNER PULSES PROPORTION ON-TO-OFF TIME ... Proportion of the inner pulse which sounds (the rest is silence, or a low-level tail: see below).\n");
  5424. fprintf(stdout,"INFO: OUTER PULSES PROPORTION ON-TO-OFF TIME .. Proportion of the outer pulse which sounds (the rest is silence).\n");
  5425. fprintf(stdout,"INFO: SYMMETRY OF OUTER PULSES ....................... Position of peak within envelope: 0 is start, 1 is end: 1/2 is halfway through envelope.\n");
  5426. fprintf(stdout,"INFO: INNER PULSE FRQ RANDOMISATION ................ Range of randomisation of the inner-pulse frequency (0 to 1) (max range (val 1) from dur/3 to 3*dur/2).\n");
  5427. fprintf(stdout,"INFO: OUTER PULSE FRQ RANDOMISATION ............... Range of randomisation of the outer-envelope frequency. (similarly)\n");
  5428. fprintf(stdout,"INFO: PITCH RANDOMISATION RANGE(SEMITONES) ..... Range of pitch variation of inner pulse, moving from one envelope to next. (0-3 semitones)\n");
  5429. fprintf(stdout,"INFO: ATTENUATION RANDOMISATION RANGE ........... Range of any random attenuation of inner-pulses (0: no attenuation :: 1: rand attenuation from none to zero level output).\n");
  5430. fprintf(stdout,"INFO: SYMMETRY RANDOMISATION ......................... Range of randomisation of envelope symmetry (0 to 1).\n");
  5431. fprintf(stdout,"INFO: INNER PULSES DECAY TAIL ........................... Length of decay tails on inner-pulses, a multiple of their duration.\n");
  5432. fprintf(stdout,"INFO: OUTER PULSE SHARPNESS ............................ Slope of outer-envelope. 1 = linear: >1 slow-to-fast rise: <1 fast_to_slow rise.\n");
  5433. fprintf(stdout,"INFO: READ ADVANCE RANDOMISATION ................... Randomisation of the step advance in reading the input. (Range 0 to 1).\n");
  5434. fprintf(stdout,"INFO: RANDOM SEED .............................................. Same seed value, with same values for randomising params, produces identical output.\n");
  5435. fprintf(stdout,"INFO: ADVANCE BY FIXED STEP IN SRC READS ........... Default is to step regularly through src so we reach its end, whatever the length of the pulse.\n");
  5436. switch(mode) {
  5437. case(1):
  5438. case(4):
  5439. case(7):
  5440. fprintf(stdout,"INFO: USE SEGMENTS CYCLICALLY .......................... Default is to randomly permute the order of the segments.\n");
  5441. break;
  5442. case(2):
  5443. case(5):
  5444. case(8):
  5445. fprintf(stdout,"INFO: USE SRCS CYCLICALLY ............................... Default is to randomly permute the order of the srcs.\n");
  5446. break;
  5447. }
  5448. fprintf(stdout,"INFO: \n");
  5449. fprintf(stdout,"INFO: All parameters EXCEPT \"SEED\" and \"DURATION\" can vary through time.\n");
  5450. break;
  5451. case(STUTTER):
  5452. fprintf(stdout,"INFO: SLICE SOURCE INTO ELEMENTS, AND RANDOMLY PLAY SEGMENTS SLICED FROM START OF SEGMENTS.\n");
  5453. fprintf(stdout,"INFO: \n");
  5454. fprintf(stdout,"INFO: Best applied to attack points in the source (e.g. start of word or syllable of text).\n");
  5455. fprintf(stdout,"INFO: \n");
  5456. fprintf(stdout,"INFO: PARAMETERS-----------------------------------------------------------\n");
  5457. fprintf(stdout,"INFO: \n");
  5458. fprintf(stdout,"INFO: SLICE TIMES ...................................................... Slice times to cut source input sound into several elements.\n");
  5459. fprintf(stdout,"INFO: OUTPUT DURATION ...............................................Duration of output sound to produce.\n");
  5460. fprintf(stdout,"INFO: MAX SEGMENT JOINS ............................................ Segments can be used independently, or joined together consecutively.\n");
  5461. fprintf(stdout,"INFO: This parameter determines the maximum number of segments to be joined.\n");
  5462. fprintf(stdout,"INFO: PROPORTION OF SILENCE ...................................... Cut elements can be separated by silence\n");
  5463. fprintf(stdout,"INFO: This parameter determines the proportion of segments that are followed by silence.\n");
  5464. fprintf(stdout,"INFO: MIN SILENCE DURATION ........................................ Minimum duration of any intervening silences.\n");
  5465. fprintf(stdout,"INFO: MAX SILENCE DURATION ........................................ Maximum duration of any intervening silences.\n");
  5466. fprintf(stdout,"INFO: RANDOM SEED .................................................... Same seed value, with same values for randomising params, produces identical output.\n");
  5467. fprintf(stdout,"INFO: MAX RANGE OF RANDOM TRANSPOSITION(SEMITONES) .. Maximum range over which cut segments can be randomly transposed.\n");
  5468. fprintf(stdout,"INFO: MAX RANGE_OF RANDOM ATTENUATION .................... Maximum range over which cut segments can be attenuated.\n");
  5469. fprintf(stdout,"INFO: SEGMENT LENGTH BIAS .......................................... Bias < 0 favours shorter cuts from segments. Bias > 0, longer cuts.\n");
  5470. fprintf(stdout,"INFO: MIN SEGMENT DURATION(mS) .................................. Minimum duration of any cut segment.\n");
  5471. fprintf(stdout,"INFO: PERMUTE SEGMENT ORDER ..................................... Play a cut from each elements in random order, than permute order and repeat.\n");
  5472. fprintf(stdout,"INFO: (Default: elements selected entirely at random.)\n");
  5473. fprintf(stdout,"INFO: \n");
  5474. fprintf(stdout,"INFO: \"TRANSPOSITION\", \"ATTENUATION\" and \"BIAS\" can vary through time.\n");
  5475. break;
  5476. case(SCRUNCH):
  5477. switch(mode) {
  5478. case(0): fprintf(stdout,"INFO: CUT SOURCE INTO WAVESET(GROUP)S AND PERMUTE THEIR ORDER TO FORM OUTPUT STREAM.\n"); break;
  5479. case(1): fprintf(stdout,"INFO: CUT SOURCE INTO WAVESET(GROUP)S, THE SELECT AT RANDOM INTO OUTPUT STREAM.\n"); break;
  5480. case(2): fprintf(stdout,"INFO: CUT SOURCE INTO WAVESET(GROUP)S AND ARRANGE THEM IN ORDER OF INCREASING LENGTH (PITCH FALLING).\n"); break;
  5481. case(3): fprintf(stdout,"INFO: CUT SOURCE INTO WAVESET(GROUP)S AND ARRANGE THEM IN ORDER OF DECREASING LENGTH (PITCH RISING).\n"); break;
  5482. case(4): fprintf(stdout,"INFO: CUT SEGMENTS OF SOURCE INTO WAVESET(GROUP)S AND ARRANGE THEM IN ORDER OF INCREASING LENGTH (PITCH FALLING).\n"); break;
  5483. case(5): fprintf(stdout,"INFO: CUT SEGMENTS OF SOURCE INTO WAVESET(GROUP)S AND ARRANGE THEM IN ORDER OF DECREASING LENGTH (PITCH RISING).\n"); break;
  5484. case(6): fprintf(stdout,"INFO: CUT SEGMENTS OF SOURCE INTO WAVESET(GROUP)S AND ARRANGE ALTERNATELY IN ORDER OF INCREASING THEN DECREASING LENGTH (PITCH FALL-RISE).\n"); break;
  5485. case(7): fprintf(stdout,"INFO: CUT SEGMENTS OF SOURCE INTO WAVESET(GROUP)S AND ARRANGE ALTERNATELY IN ORDER OF DECREASING THEN INCREASING LENGTH (PITCH RISE-FALL).\n"); break;
  5486. case(8): fprintf(stdout,"INFO: CUT SOURCE INTO WAVESET(GROUP)S AND ARRANGE THEM IN ORDER OF INCREASING LOUDNESS.\n"); break;
  5487. case(9): fprintf(stdout,"INFO: CUT SOURCE INTO WAVESET(GROUP)S AND ARRANGE THEM IN ORDER OF DECREASING LOUDNESS.\n"); break;
  5488. case(10): fprintf(stdout,"INFO: CUT SEGMENTS OF SOURCE INTO WAVESET(GROUP)S AND ARRANGE THEM IN ORDER OF INCREASING LOUDNESS.\n"); break;
  5489. case(11): fprintf(stdout,"INFO: CUT SEGMENTS OF SOURCE INTO WAVESET(GROUP)S AND ARRANGE THEM IN ORDER OF DECREASING LOUDNESS.\n"); break;
  5490. case(12): fprintf(stdout,"INFO: CUT SEGMENTS OF SOURCE INTO WAVESET(GROUP)S AND ARRANGE ALTERNATELY IN ORDER OF INCREASING THEN DECREASING LOUDNESS.\n"); break;
  5491. case(13): fprintf(stdout,"INFO: CUT SEGMENTS OF SOURCE INTO WAVESET(GROUP)S AND ARRANGE ALTERNATELY IN ORDER OF DECREASING THEN INCREASING LOUDNESS.\n"); break;
  5492. }
  5493. fprintf(stdout,"INFO: \n");
  5494. fprintf(stdout,"INFO: PARAMETERS-----------------------------------------------------------\n");
  5495. fprintf(stdout,"INFO: \n");
  5496. if(mode <= 1)
  5497. fprintf(stdout,"INFO: OUTPUT DURATION ...............................................Duration of output sound to produce.\n");
  5498. else if((mode > 3 && mode < 8) || mode > 9)
  5499. fprintf(stdout,"INFO: SLICE TIMES ...................................................... Textfile of (increasing) times at which to divide src into segments for processing.\n");
  5500. fprintf(stdout,"INFO: RANDOM SEED .................................................... Same seed value, with same values for randomising params, produces identical output.\n");
  5501. fprintf(stdout,"INFO: COUNT_OF_WAVESETS_IN_A_GROUP ....................... Count (and then cut) wavesets in groups of this size.\n");
  5502. fprintf(stdout,"INFO: MAX RANGE OF RANDOM TRANSPOSITION(SEMITONES) .. Maximum range over which cut segments can be randomly transposed.\n");
  5503. fprintf(stdout,"INFO: MAX RANGE_OF RANDOM ATTENUATION .................... Maximum range over which cut segments can be attenuated.\n");
  5504. fprintf(stdout,"INFO: \n");
  5505. fprintf(stdout,"INFO: \"TRANSPOSITION\", and \"ATTENUATION\" can vary through time.\n");
  5506. break;
  5507. case(IMPULSE):
  5508. fprintf(stdout,"INFO: GENERATE IMPULSES OR IMPULSE STREAMS, PITCHED OR CHIRPING.\n");
  5509. fprintf(stdout,"INFO: \n");
  5510. fprintf(stdout,"INFO: PARAMETERS-----------------------------------------------------------\n");
  5511. fprintf(stdout,"INFO: \n");
  5512. fprintf(stdout,"INFO: OUTPUT DURATION .............................. Duration of output sound to produce.\n");
  5513. fprintf(stdout,"INFO: PITCH OF IMPULSE STREAM(MIDI) ............ Not the pitch of the impulses, but the rate at which they occur.\n");
  5514. fprintf(stdout,"INFO: GLISSING OF IMPULSE .......................... Zero value gives a fixed-pitch impulse, >zero, impulses gliss (up then down). CARE: high valus may clip.\n");
  5515. fprintf(stdout,"INFO: SLOPE OF IMPULSE .............................. Value 1, impulses rise and fall in level linearly. Higher values give steeper slopes.\n");
  5516. fprintf(stdout,"INFO: NUMBER OF PEAKS PER IMPULSE .............. Dividing this number by the frq of the stream (derived from pitch) gives the (Start) pitch of the impulses themselves.\n");
  5517. fprintf(stdout,"INFO: IMPULSE LEVEL ................................... Loudness of the impulses.\n");
  5518. fprintf(stdout,"INFO: PROPORTIONAL GAP BETWEEN IMPULSES .. Zero gives no gap. +ve vals leave silent space between impulses e.g. 0.5 gives a gap of 1/2 the duration of the impulse.\n");
  5519. fprintf(stdout,"INFO: -ve values cause the impulses to overlap. With -0.5 they overlap by 1/2 their length.\n");
  5520. fprintf(stdout,"INFO: SAMPLE RATE .................................... Sample rate of the output sound.\n");
  5521. fprintf(stdout,"INFO: OUTPUT CHANNEL CNT ......................... Number of channels in the output sound.\n");
  5522. fprintf(stdout,"INFO: \n");
  5523. fprintf(stdout,"INFO: \"PITCH\", \"GLISSING\", \"SLOPE\", \"NUMBER OF PEAKS\", \"LEVEL\" and \"GAP\" can vary through time.\n");
  5524. break;
  5525. case(TWEET):
  5526. switch(mode) {
  5527. case(0):
  5528. case(1):
  5529. fprintf(stdout,"INFO: SUBSITUTE CHIRPS FOR VOCAL FORMANTS.\n");
  5530. break;
  5531. case(2):
  5532. fprintf(stdout,"INFO: SUBSITUTE NOISE FOR VOCAL FORMANTS.\n");
  5533. break;
  5534. }
  5535. fprintf(stdout,"INFO: \n");
  5536. fprintf(stdout,"INFO: PARAMETERS-----------------------------------------------------------\n");
  5537. fprintf(stdout,"INFO: \n");
  5538. fprintf(stdout,"INFO: TIMEBLOKS IN SRC NOT TO SEARCH FOR FOFS ... Textfile of pairs of times in src where there are no FOFs expected,\n");
  5539. fprintf(stdout,"INFO: FREQUENCY OF SRC(HZ) .............................. A textfile of time : frequency pairs, being the extracted pitch contour of the input sound\n");
  5540. fprintf(stdout,"INFO: LOWEST LEVEL AT WHICH FOFS DETECTED(dB) ... If any FOF is more than this number of dBs below the level of the loudest FOF detected, it is ignored.\n");
  5541. fprintf(stdout,"INFO: (A ZERO value will search for FOFs at any level).\n");
  5542. switch(mode) {
  5543. case(0):
  5544. fprintf(stdout,"INFO: NUMBER OF PEAKS IN CHIRP ... ...................... Number of peaks in the chirp which replaces the FOF. (Frq will vary depending on size of FOF)\n");
  5545. fprintf(stdout,"INFO: GLISSING OF CHIRP ..................................... Amount of glissing of the chirps.\n");
  5546. fprintf(stdout,"INFO: \n");
  5547. fprintf(stdout,"INFO: \"NUMBER OF PEAKS\", and \"GLISSING\" can vary through time.\n");
  5548. break;
  5549. case(1):
  5550. fprintf(stdout,"INFO: FREQUENCY OF CHIRP ................................. (Fixed) Frequency of the chirps.\n");
  5551. fprintf(stdout,"INFO: GLISSING OF CHIRP ..................................... Amount of glissing of the chirps.\n");
  5552. fprintf(stdout,"INFO: \n");
  5553. fprintf(stdout,"INFO: \"FREQUENCY\" and \"GLISSING\" can vary through time.\n");
  5554. break;
  5555. }
  5556. fprintf(stdout,"INFO: \n");
  5557. fprintf(stdout,"INFO: COSIN SMOOTH FOFS .................................. Cosinusoidal onset and decay applied to FOFs, before replacement sound inserted.\n");
  5558. break;
  5559. case(RRRR_EXTEND): // verasion 8+
  5560. switch(mode) {
  5561. case(0):
  5562. case(1):
  5563. fprintf(stdout,"INFO: TIME-EXTEND NATURAL ITERATIVE EVENTS IN A SRC (LIKE ROLLED 'rrr' IN SPEECH) IN A PLAUSIBLE WAY\n");
  5564. break;
  5565. case(2):
  5566. fprintf(stdout,"INFO: FIND AND CUT OUT EACH GRAIN OF AN ITERATIVE EVENT IN A SRC SOUND (LIKE ROLLED 'rrr' IN SPEECH)\n");
  5567. fprintf(stdout,"INFO: AND SAVE EACH GRAIN (AND THE PRE-ITERATE AND POST-ITERATE CHUNKS OF THE SRC) TO ITS OWN SOUNDFILE BY FIRST\n");
  5568. break;
  5569. }
  5570. switch(mode) {
  5571. case(0):
  5572. case(2):
  5573. fprintf(stdout,"INFO: SPECIFYING WHERE THE ITERATIVE EVENT IS IN THE SOURCE.\n");
  5574. fprintf(stdout,"INFO: \n");
  5575. fprintf(stdout,"INFO: PARAMETERS ----------------------------------------------------\n");
  5576. fprintf(stdout,"INFO: \n");
  5577. fprintf(stdout,"INFO: START OF SECTION TO BE EXTENDED ......................... Time of start of the iterated material in the source.\n");
  5578. fprintf(stdout,"INFO: END OF SECTION TO BE EXTENDED ............................ Time of end of the iterated material in the source.\n");
  5579. fprintf(stdout,"INFO: ANTICIPATED NO OF SEGMENTS TO FIND IN SRC............ Estimate how many iterations you hear in marked area.\n");
  5580. break;
  5581. case(1):
  5582. fprintf(stdout,"INFO: LETTING THE PROCESS SEARCH FOR THE (FIRST) ITERATIVE EVENT IN THE SOURCE.\n");
  5583. fprintf(stdout,"INFO: \n");
  5584. fprintf(stdout,"INFO: PARAMETERS ----------------------------------------------------\n");
  5585. fprintf(stdout,"INFO: \n");
  5586. fprintf(stdout,"INFO: MINUMUM NO OF SEGMENTS TO FIND IN SRC ................ Estimate how many iterations you hear in marked area.\n");
  5587. fprintf(stdout,"INFO: APPROX SIZE OF GRANULE (MS) ................................ Anticipated size of grain (try 15mS).\n");
  5588. fprintf(stdout,"INFO: GATE LEVEL BELOW WHICH SIGNAL ENVELOPE IGNORED .. Don't search for grains where signal drops below gate-level.\n");
  5589. fprintf(stdout,"INFO: NUMBER OF GRAINS AT ITERATIVE START TO OMIT ........ Allows you to play through first N grains you find\n");
  5590. fprintf(stdout,"INFO: before using the ensuing grains for the time-extension process.\n");
  5591. break;
  5592. }
  5593. fprintf(stdout,"INFO: APPROX RANGE OF ITERATIVE SOUND (OCTAVES) ......... The acceptable variation in grainsize of grains to find (Try 1).\n");
  5594. fprintf(stdout,"INFO: This is the 'pitch'-range of the (low_frq) iteration, and NOT the resonant frequency.\n");
  5595. fprintf(stdout,"INFO: e.g. for a rolled 'rrr' it is the frq of the 'rrr' itself (even if unvoiced)\n");
  5596. fprintf(stdout,"INFO: and not the pitch of any sung note (if the 'rrr' is voiced).\n");
  5597. switch(mode) {
  5598. case(0):
  5599. case(1):
  5600. fprintf(stdout,"INFO: TIME EXTENSION OF THE MATERIAL ITSELF (TEM).......... How much to time-extend the marked material (by randomised repetition).\n");
  5601. fprintf(stdout,"INFO: MAX ADJACENT OCCURENCES OF ANY SEG IN OUTPUT ... Iterated material extended by reusing the individual grains in a randomised pattern.\n");
  5602. fprintf(stdout,"INFO: In this pattern, grain-A may occur next to an identical copy of grain-A, or not.\n");
  5603. fprintf(stdout,"INFO: This parameter specifies how many adjacent copies of any segment you are prepared to allow.\n");
  5604. fprintf(stdout,"INFO: AMPLITUDE SCATTER .............................................. The iterated segments may vary in amplitude.\n");
  5605. fprintf(stdout,"INFO: 0 retains original amplitude: N produces random amplitudes between orig and (1-N) * orig.\n");
  5606. fprintf(stdout,"INFO: PITCH SCATTER ................................................... The iterated segments may vary in pitch.\n");;
  5607. fprintf(stdout,"INFO: 0 retains original pitch: N produces random pitchshift between N and -N semitones.\n");
  5608. fprintf(stdout,"INFO: GRAIN SEPARATION TIMESTRETCH (GST) .................... Material can also be time-stretched by inserting silence between the grains.\n");
  5609. fprintf(stdout,"INFO: This parameter, varying upwards from 1 (= no timestretch), is independent of the TEM parameter\n");;
  5610. fprintf(stdout,"INFO: and will overiride it if GST makes the output longer, or shorter than the length implied by TEM.\n");
  5611. fprintf(stdout,"INFO: In any breakpoint file for this parameter, times are measured FROM THE START OF THE ITERATED SEGMENT\n");
  5612. fprintf(stdout,"INFO: (rather than the start of the source file) and the final value of \"1.0\" in the brkfile defines the time-end of the GST.\n");
  5613. fprintf(stdout,"INFO: Note that if your brkpoint values don't begin and end at \"1.0\" there will be a discontinuity\n");
  5614. fprintf(stdout,"INFO: if you attach the sound before (or after) the iterated segment to the iterated segment itself.\n");
  5615. fprintf(stdout,"INFO: GRAIN SEPARATION REGULARISTION ........................... When set to 1, attempts to make grains appear at a fixed regular rate\n");
  5616. fprintf(stdout,"INFO: independent of the invidual grain durations.\n");;
  5617. fprintf(stdout,"INFO: It will only kick in once the grains have been stretched by GST (and total regularity is not possible\n");
  5618. fprintf(stdout,"INFO: until the average step from one grain start to the next is greater than size of largest grain).\n");
  5619. fprintf(stdout,"INFO: In any breakpoint file for this parameter, times are measured FROM THE START OF THE ITERATED SEGMENT\n");
  5620. fprintf(stdout,"INFO: (rather than the start of the source file).\n");
  5621. fprintf(stdout,"INFO: DON'T KEEP SOUND BEFORE ITERATE ..................... If flag is set, start of sound (before iterated material) is discarded.\n");
  5622. fprintf(stdout,"INFO: DON'T KEEP SOUND AFTER ITERATE ....................... If flag is set, end of sound (after iterated material) is discarded.\n");
  5623. }
  5624. break;
  5625. case(SORTER):
  5626. fprintf(stdout,"INFO: CHOPS MONO SOURCE INTO ELEMENTS, THEN REORGANISES BY LOUDNESS, OR DURATION.\n");
  5627. fprintf(stdout,"INFO: \n");
  5628. fprintf(stdout,"INFO: MODES-----------------------------------------------------------\n");
  5629. fprintf(stdout,"INFO: \n");
  5630. fprintf(stdout,"INFO: Mode 1: Sort to Crescendo.\n");
  5631. fprintf(stdout,"INFO: Mode 2: Sort to Decrescendo.\n");
  5632. fprintf(stdout,"INFO: Mode 3: Sort to Accelerando. (With very small elements, may rise in pitch).\n");
  5633. fprintf(stdout,"INFO: Mode 4: Sort to Ritardando. (With very small elements, may fall in pitch).\n");
  5634. fprintf(stdout,"INFO: Mode 5: Order at Random.\n");
  5635. fprintf(stdout,"INFO: \n");
  5636. fprintf(stdout,"INFO: PARAMETERS-----------------------------------------------------------\n");
  5637. fprintf(stdout,"INFO: \n");
  5638. fprintf(stdout,"INFO: ELEMENT SIZE ... Approximate size of elements to sort, in seconds.\n");
  5639. fprintf(stdout,"INFO: If set to zero, individual wavesets are chosen as elements.\n");
  5640. fprintf(stdout,"INFO: SMOOTHING ......... Fade in (and out) each segment, with a \"SMOOTH\" mS splice.\n");
  5641. fprintf(stdout,"INFO: If elementsize is zero, this is ignored.\n");
  5642. fprintf(stdout,"INFO: SEED ................... Mode 5 (\"Order at Random\"): a rerun with same non-zero seed value\n");
  5643. fprintf(stdout,"INFO: outputs the SAME random ordering of elements.\n");
  5644. fprintf(stdout,"INFO: (Zero seed-value gives different random ordering on each run).\n");
  5645. fprintf(stdout,"INFO: OUTPITCH ........... Output elements time-spacing equivalent to the MIDI pitch,\"OPCH\".\n");
  5646. fprintf(stdout,"INFO: If \"AS FREQUENCY\" flag is used, value can be set to 128 to specify\n");
  5647. fprintf(stdout,"INFO: the median pitch of the source.\n");
  5648. fprintf(stdout,"INFO: If value is set to zero, parameter is ignored.\n");
  5649. fprintf(stdout,"INFO: \n");
  5650. fprintf(stdout,"INFO: AS FRQEQUENCY .. Element size is read as a frq value (= 1.0/duration)\n");
  5651. fprintf(stdout,"INFO: and could be e.g. a frequency-trace of the pitch of the source.\n");
  5652. fprintf(stdout,"INFO: \n");
  5653. fprintf(stdout,"INFO: The following parameters can only be used if \"AS FRQEQUENCY\" flag is set.\n");
  5654. fprintf(stdout,"INFO: \n");
  5655. fprintf(stdout,"INFO: ELEMENT PITCH .. Transpose input elements to the MIDI pitch specified.\n");
  5656. fprintf(stdout,"INFO: If value set to 128, the median pitch of the source is used.\n");
  5657. fprintf(stdout,"INFO: If value is set to zero, parameter is ignored.\n");
  5658. fprintf(stdout,"INFO: \n");
  5659. fprintf(stdout,"INFO: The following parameter is only useful if \"ELEMENT PITCH\" is set.\n");
  5660. fprintf(stdout,"INFO: \n");
  5661. fprintf(stdout,"INFO: META GROUPING ... Size of meta-grouping, in seconds.\n");
  5662. fprintf(stdout,"INFO: Allows larger units to be (approximately) pitch-correlated.\n");
  5663. fprintf(stdout,"INFO: Source is first cut to pitch-wavelen-scale elements & transpositions calculated.\n");
  5664. fprintf(stdout,"INFO: These elements are then further grouped to (approx) \"META GROUPING\" size.\n");
  5665. fprintf(stdout,"INFO: This must be larger than the largest element (1/frq) from frq trace.\n");
  5666. fprintf(stdout,"INFO: If \"META GROUPING\" is set to zero, it is ignored.\n");
  5667. fprintf(stdout,"INFO: \n");
  5668. fprintf(stdout,"INFO: If \"ELEMENT PITCH\" is NOT set, larger groupings are obtained by using larger value of \"ELEMENT SIZE\".\n");
  5669. break;
  5670. case(SPECFNU):
  5671. switch(mode) {
  5672. case(0):
  5673. fprintf(stdout,"INFO: NARROW FORMANTS: Steepens skirts of formant peaks by power factor.\n");
  5674. fprintf(stdout,"INFO: \n");
  5675. fprintf(stdout,"INFO: NARROWING ........................................ Narrowing of individual formant peaks. Range 1 to 1000. Timevariable.\n");
  5676. fprintf(stdout,"INFO: GAIN .................................................. Output gain or attenuation. (Range 0.01 to 10)\n");
  5677. fprintf(stdout,"INFO: SUPPRESS SET ...................................... Suppress the listed formants. \"OFF\" can be any combination of\n");
  5678. fprintf(stdout,"INFO: \"1\",\"2\",\"3\" & \"4\" but not all of them, and with no repetitions.\n");
  5679. fprintf(stdout,"INFO: ZERO TOP OF SPECTRUM .......................... Zero top of spectrum (above fourth formant).\n");
  5680. fprintf(stdout,"INFO: FORCE FUNDAMENTAL ............................. Force lowest formant to use fundamental frq as peak.\n");
  5681. fprintf(stdout,"INFO: USE SHORT WINDOW .............................. Use short-window for extracting spectral envelope.\n");
  5682. fprintf(stdout,"INFO: EXCLUDE NON-HARMONIC PARTIALS ........... Exclude non-harmonic partials.\n");
  5683. fprintf(stdout,"INFO: EXCLUDE HARMONIC PARTIALS .................. Exclude harmonic partials.\n");
  5684. fprintf(stdout,"INFO: NONPITCH_&_LOLEVEL_WINDOWS_ZEROED... Re.place unpitched (or extremely quiet) windows by silence.\n");
  5685. break;
  5686. case(1):
  5687. fprintf(stdout,"INFO: SQUEEZE SPECTRUM AROUND FORMANT: Squeeze around specified formant.\n");
  5688. fprintf(stdout,"INFO: \n");
  5689. fprintf(stdout,"INFO: SQUEEZE ............................................ Squeeze factor. Range 1 to 10. Timevariable.\n");
  5690. fprintf(stdout,"INFO: CENTRE FORMANT ................................. Formant peak at centre of squeeze. (range 1 to 4)\n");
  5691. fprintf(stdout,"INFO: GAIN .................................................. Output gain or attenuation. (Range 0.01 to 10)\n");
  5692. fprintf(stdout,"INFO: SQUEEZE AROUND TROUGH ABOVE ............. Squeeze around trough above specified peak.\n");
  5693. fprintf(stdout,"INFO: FORCE FUNDAMENTAL ............................. Force lowest formant to use fundamental frq as peak.\n");
  5694. fprintf(stdout,"INFO: USE SHORT WINDOW .............................. Use short-window for extracting spectral envelope.\n");
  5695. fprintf(stdout,"INFO: EXCLUDE NON-HARMONIC PARTIALS ............ Exclude non-harmonic partials.\n");
  5696. fprintf(stdout,"INFO: EXCLUDE HARMONIC PARTIALS .................. Exclude harmonic partials.\n");
  5697. fprintf(stdout,"INFO: NONPITCH_&_LOLEVEL_WINDOWS_ZEROED .. Replace unpitched (or extremely quiet) windows by silence.\n");
  5698. break;
  5699. case(2):
  5700. fprintf(stdout,"INFO: INVERT FORMANTS: Formant peaks become troughs, and troughs peaks.\n");
  5701. fprintf(stdout,"INFO: \n");
  5702. fprintf(stdout,"INFO: VIBRATE RATE ........................................ If not zero, cycle between original & inversion at this frq. Timevariable.\n");
  5703. fprintf(stdout,"INFO: GAIN .................................................... Output gain or attenuation. (Range 0.01 to 10)\n");
  5704. fprintf(stdout,"INFO: USE SHORT WINDOW ................................ Use short-window for extracting spectral envelope.\n");
  5705. fprintf(stdout,"INFO: EXCLUDE NON-HARMONIC PARTIALS .............. Exclude non-harmonic partials.\n");
  5706. fprintf(stdout,"INFO: EXCLUDE HARMONIC PARTIALS .................... Exclude harmonic partials.\n");
  5707. fprintf(stdout,"INFO: NONPITCH_&_LOLEVEL_WINDOWS_ZEROED .... Replace unpitched (or extremely quiet) windows by silence.\n");
  5708. break;
  5709. case(3):
  5710. fprintf(stdout,"INFO: ROTATE FORMANTS: Formant peaks & frqs move up (or down) spectrum.\n");
  5711. fprintf(stdout,"INFO: reappearing at foot (top) of formant-area, when they reach its edge.\n");
  5712. fprintf(stdout,"INFO: \n");
  5713. fprintf(stdout,"INFO: ROTATION SPEED ................................... Spectrum rotation speed, e.g. 2 = twice every second.\n");
  5714. fprintf(stdout,"INFO: Range -300 to 300 rotations per second. Timevariable.\n");
  5715. fprintf(stdout,"INFO: GAIN ................................................... Output gain or attenuation. (Range 0.01 to 10)\n");
  5716. fprintf(stdout,"INFO: USE SHORT WINDOW ............................... Use short-window for extracting spectral envelope.\n");
  5717. fprintf(stdout,"INFO: EXCLUDE NON-HARMONIC PARTIALS ............ Exclude non-harmonic partials.\n");
  5718. fprintf(stdout,"INFO: EXCLUDE HARMONIC PARTIALS ................... Exclude harmonic partials.\n");
  5719. fprintf(stdout,"INFO: NONPITCH_&_LOLEVEL_WINDOWS_ZEROED ... Replace unpitched (or extremely quiet) windows by silence.\n");
  5720. break;
  5721. case(4):
  5722. fprintf(stdout,"INFO: SPECTRAL NEGATIVE: Spectral values inverted for each channel.\n");
  5723. fprintf(stdout,"INFO: \n");
  5724. fprintf(stdout,"INFO: GAIN ...... Output gain or attenuation. (Range 0.01 to 10)\n");
  5725. fprintf(stdout,"INFO: FLAT ...... Do not re-envelope the output spectrum.\n");
  5726. break;
  5727. case(5):
  5728. fprintf(stdout,"INFO: SUPPRESS FORMANTS: Suppresses the selected formants.\n");
  5729. fprintf(stdout,"INFO: \n");
  5730. fprintf(stdout,"INFO: SUPPRESS SET ............................... which of (4) formants to suppress. e.g. \"1\" means suppress 1st,\n");
  5731. fprintf(stdout,"INFO: while \"134\" means suppress 1st, 3rd and 4th.\n");
  5732. fprintf(stdout,"INFO: GAIN ........................................... Output gain or attenuation. (Range 0.1 to 10).\n");
  5733. fprintf(stdout,"INFO: USE SHORT WINDOW ...................... Use short-window for extracting spectral envelope.\n");
  5734. fprintf(stdout,"INFO: EXCLUDE NON-HARMONIC PARTIALS .... Exclude non-harmonic partials.\n");
  5735. break;
  5736. case(6):
  5737. fprintf(stdout,"INFO: GENERATE FILTER(S) FROM FORMANT(S): Outputs varibank filter data textfile.\n");
  5738. fprintf(stdout,"INFO: \n");
  5739. fprintf(stdout,"INFO: DATAFILE .......................... Textfile containing.\n");
  5740. fprintf(stdout,"INFO: (1) LIST OF TIMES at which src to be divided into blocks for analysis.\n");
  5741. fprintf(stdout,"INFO: Resulting filter step-changes between vals created from each block.\n");
  5742. fprintf(stdout,"INFO: Value ZERO means use the entire source to make 1 fixed filter.\n");
  5743. fprintf(stdout,"INFO: (2) PITCH GRID on which pitches you are searching for must lie.\n");
  5744. fprintf(stdout,"INFO: There must first be a marker indicating the grid type. These are..\n");
  5745. fprintf(stdout,"INFO: #HS: Followed by listed MIDI pitches to search for.\n");
  5746. fprintf(stdout,"INFO: #HF: Followed by listed MIDI pitches to search for IN ALL OCTAVES.\n");
  5747. fprintf(stdout,"INFO: #SCALE: Followed by just TWO values.\n");
  5748. fprintf(stdout,"INFO: (a) the number of equal pitch divisions in an octave.\n");
  5749. fprintf(stdout,"INFO: (b) MIDI pitch of any pitch to tune the scales to.\n");
  5750. fprintf(stdout,"INFO: #ELACS: Followed by just THREE values.\n");
  5751. fprintf(stdout,"INFO: (a) Size of \"octave\" in (possibly fractional) semitones.\n");
  5752. fprintf(stdout,"INFO: (b) the number of equal pitch divisions in \"octave\".\n");
  5753. fprintf(stdout,"INFO: (c) MIDI pitch of any pitch to tune the scales to.\n");
  5754. fprintf(stdout,"INFO: PEAKS PER FORMANT ........ (Max) number of peaks from each formant to use. (Default value 1). \n");
  5755. fprintf(stdout,"INFO: FORCE A PITCH BELOW ..... Try to ensure there is 1 (or more) pitch(es) below this MIDI value.\n");
  5756. fprintf(stdout,"INFO: KEEP PEAK LOUDNESS ....... Keep relative (summed) loudnesses of peaks as part of filter design.\n");
  5757. fprintf(stdout,"INFO: INVERT PEAK LOUDNESS .... Keep inverse of loudnesses as part of filter design.\n");
  5758. fprintf(stdout,"INFO: Default. All filter amplitudes set to 1.0\n");
  5759. fprintf(stdout,"INFO: FORCE FUNDAMENTAL ...... Force lowest formant to use fundamental frq as peak.\n");
  5760. fprintf(stdout,"INFO: USE SHORT WINDOW ........ Use short-window for extracting spectral envelope.\n");
  5761. break;
  5762. case(7):
  5763. fprintf(stdout,"INFO: MOVE FORMANTS BY: Displace individual formants.\n");
  5764. fprintf(stdout,"INFO: \n");
  5765. fprintf(stdout,"INFO: MOVE1 .................................................. Frq displacement, up or down, of formant 1. Timevariable.\n");
  5766. fprintf(stdout,"INFO: MOVE2,MOVE3,MOVE4 ............................... Similarly for other formants.\n");
  5767. fprintf(stdout,"INFO: (Formants moving below zero or above nyquist/2 will disappear).\n");
  5768. fprintf(stdout,"INFO: GAIN .................................................... Output gain or attenuation. (Range 0.01 to 10)\n");
  5769. fprintf(stdout,"INFO: ZERO TOP OF SPECTRUM ............................ Zero top of spectrum (above fourth formant).\n");
  5770. fprintf(stdout,"INFO: USE SHORT WINDOW ................................. Use short-window for extracting spectral envelope.\n");
  5771. fprintf(stdout,"INFO: EXCLUDE NON-HARMONIC PARTIALS .............. Exclude non-harmonic partials.\n");
  5772. fprintf(stdout,"INFO: EXCLUDE HARMONIC PARTIALS .................... Exclude harmonic partials.\n");
  5773. fprintf(stdout,"INFO: NONPITCH_&_LOLEVEL_WINDOWS_ZEROED .... Replace unpitched (or extremely quiet) windows by silence.\n");
  5774. break;
  5775. case(8):
  5776. fprintf(stdout,"INFO: MOVE FORMANTS TO: Displace individual formants.\n");
  5777. fprintf(stdout,"INFO: \n");
  5778. fprintf(stdout,"INFO: FRQ1 ................................................... New frq of formant 1. Timevariable.\n");
  5779. fprintf(stdout,"INFO: FRQ2,FRQ3,FRQ4 ................................... Similarly for other formants.\n");
  5780. fprintf(stdout,"INFO: GAIN ................................................... Output gain or attenuation. (Range 0.01 to 10)\n");
  5781. fprintf(stdout,"INFO: ZERO TOP OF SPECTRUM ........................... Zero top of spectrum (above fourth formant).\n");
  5782. fprintf(stdout,"INFO: USE SHORT WINDOW ............................... Use short-window for extracting spectral envelope.\n");
  5783. fprintf(stdout,"INFO: NARROW FORMANT BANDS ........................ Use narrow formant bands.\n");
  5784. fprintf(stdout,"INFO: Using narrow bands can give counterintuitive results.\n");
  5785. fprintf(stdout,"INFO: Doesn't capture so many harmonic peaks, so sounds duller.\n");
  5786. fprintf(stdout,"INFO: EXCLUDE NON-HARMONIC PARTIALS ............. Exclude non-harmonic partials.\n");
  5787. fprintf(stdout,"INFO: EXCLUDE HARMONIC PARTIALS ................... Exclude harmonic partials.\n");
  5788. fprintf(stdout,"INFO: NONPITCH_&_LOLEVEL_WINDOWS_ZEROED ... Replace unpitched (or extremely quiet) windows by silence.\n");
  5789. break;
  5790. case(9):
  5791. fprintf(stdout,"INFO: ARPEGGIATE SPECTRUM: Arpeggiate spectrum of source, under formants.\n");
  5792. fprintf(stdout,"INFO: \n");
  5793. fprintf(stdout,"INFO: ARPEGGIATION RATE ..................... Rate of arpeggiation of spectrum (Range -50 to +50 Hz).\n");
  5794. fprintf(stdout,"INFO: GAIN ......................................... Output gain or attenuation. (Range 0.01 to 10)\n");
  5795. fprintf(stdout,"INFO: USE SHORT WINDOW ..................... Use short-window for extracting spectral envelope.\n");
  5796. fprintf(stdout,"INFO: EXCLUDE NON-HARMONIC PARTIALS .. Exclude non-harmonic partials.\n");
  5797. fprintf(stdout,"INFO: NONPITCH_&_LOLEVEL_WINDOWS_ZEROED. Replace unpitched (or extremely quiet) windows by silence.\n");
  5798. fprintf(stdout,"INFO: DOWNWARDS ............................. Arpeggiate downwards (default upwards).\n");
  5799. fprintf(stdout,"INFO: UP AND DOWN ............................ Arpeggiate up and down.\n");
  5800. break;
  5801. case(10):
  5802. fprintf(stdout,"INFO: OCTAVE-SHIFT UNDER FORMANTS: Octave-shift src spectrum, under formants.\n");
  5803. fprintf(stdout,"INFO: \n");
  5804. fprintf(stdout,"INFO: OCTAVE SHIFT ...................................... Octave shift (Range -4 to + 4). (Timevariable).\n");
  5805. fprintf(stdout,"INFO: GAIN .................................................. Output gain or attenuation. (Range 0.01 to 10)\n");
  5806. fprintf(stdout,"INFO: ARPEGGIATION RATE .............................. Rate of arpeggiation of spectrum (Range -50 to +50 Hz).\n");
  5807. fprintf(stdout,"INFO: LOW CUT ............................................ Cut off frequencies below this. (range 20 to 10000)\n");
  5808. fprintf(stdout,"INFO: HIGH CUT ............................................ Cut off frequencies above this. (range 50 to 10000)\n");
  5809. fprintf(stdout,"INFO: USE SHORT WINDOW .............................. Use short-window for extracting spectral envelope.\n");
  5810. fprintf(stdout,"INFO: EXCLUDE NON-HARMONIC PARTIALS ........... Exclude non-harmonic partials.\n");
  5811. fprintf(stdout,"INFO: NONPITCH_&_LOLEVEL_WINDOWS_ZEROED .. Replace unpitched (or extremely quiet) windows by silence.\n");
  5812. fprintf(stdout,"INFO: DOWNWARDS ....................................... Arpeggiate downwards (default upwards) (Only when ARPEGGIATION RATE > 0).\n");
  5813. fprintf(stdout,"INFO: UP AND DOWN ...................................... Arpeggiate up and down. (Only when ARPEGGIATION RATE > 0)\n");
  5814. fprintf(stdout,"INFO: FILL TOP OF SPECTRUM ........................... If transposing downwards, fill spectrum top with extra harmonics.\n");
  5815. break;
  5816. case(11):
  5817. fprintf(stdout,"INFO: TRANSPOSE UNDER FORMANTS: tranpose spectrum of src, under formants.\n");
  5818. fprintf(stdout,"INFO: \n");
  5819. fprintf(stdout,"INFO: TRANSPOSITION (SEMITONES).................... Semitone transposition (Range -48 to + 48). (Timevariable).\n");
  5820. fprintf(stdout,"INFO: GAIN ................................................... Output gain or attenuation. (Range 0.01 to 10)\n");
  5821. fprintf(stdout,"INFO: ARPEGGIATION RATE ............................... Rate of arpeggiation of spectrum (Range -50 to +50 Hz).\n");
  5822. fprintf(stdout,"INFO: LOW CUT ............................................. Cut off frequencies below this. (range 20 to 10000)\n");
  5823. fprintf(stdout,"INFO: HIGH CUT ............................................. Cut off frequencies above this. (range 50 to 10000)\n");
  5824. fprintf(stdout,"INFO: USE SHORT WINDOW .............................. Use short-window for extracting spectral envelope.\n");
  5825. fprintf(stdout,"INFO: EXCLUDE NON-HARMONIC PARTIALS ............ Exclude non-harmonic partials.\n");
  5826. fprintf(stdout,"INFO: NONPITCH_&_LOLEVEL_WINDOWS_ZEROED .. Replace unpitched (or extremely quiet) windows by silence.\n");
  5827. fprintf(stdout,"INFO: DOWNWARDS ....................................... Arpeggiate downwards (default upwards) (Only when ARPEGGIATION RATE > 0).\n");
  5828. fprintf(stdout,"INFO: UP AND DOWN ...................................... Arpeggiate up and down. (Only when ARPEGGIATION RATE > 0)\n");
  5829. fprintf(stdout,"INFO: FILL TOP OF SPECTRUM ........................... If transposing downwards, fill spectrum top with extra harmonics.\n");
  5830. break;
  5831. case(12):
  5832. fprintf(stdout,"INFO: FRQSHIFT UNDER FORMANTS: Frqshift src spectrum of under formants.\n");
  5833. fprintf(stdout,"INFO: \n");
  5834. fprintf(stdout,"INFO: FREQUENCY SHIFT ................................. Frequency shift(Hz) (Range -1000 to +1000). (Timevariable).\n");
  5835. fprintf(stdout,"INFO: GAIN ........................................ ......... Output gain or attenuation. (Range 0.01 to 10)\n");
  5836. fprintf(stdout,"INFO: ARPEGGIATION RATE .............................. Rate of arpeggiation of spectrum (Range -50 to +50 Hz).\n");
  5837. fprintf(stdout,"INFO: LOW CUT ............................................ Cut off frequencies below this. (range 20 to 10000)\n");
  5838. fprintf(stdout,"INFO: HIGH CUT ............................................ Cut off frequencies above this. (range 50 to 10000)\n");
  5839. fprintf(stdout,"INFO: USE SHORT WINDOW .............................. Use short-window for extracting spectral envelope.\n");
  5840. fprintf(stdout,"INFO: EXCLUDE NON-HARMONIC PARTIALS ............ Exclude non-harmonic partials.\n");
  5841. fprintf(stdout,"INFO: NONPITCH_&_LOLEVEL_WINDOWS_ZEROED .. Replace unpitched (or extremely quiet) windows by silence.\n");
  5842. fprintf(stdout,"INFO: DOWNWARDS ....................................... Arpeggiate downwards (default upwards) (Only when ARPEGGIATION RATE > 0).\n");
  5843. fprintf(stdout,"INFO: UP AND DOWN ...................................... Arpeggiate up and down. (Only when ARPEGGIATION RATE > 0)\n");
  5844. fprintf(stdout,"INFO: FILL TOP OF SPECTRUM ........................... If transposing downwards, fill spectrum top with extra harmonics.\n");
  5845. break;
  5846. case(13):
  5847. fprintf(stdout,"INFO: RESPACE PARTIALS UNDER FORMANTS: Respace partials in src spectrum,retaining formants.\n");
  5848. fprintf(stdout,"INFO: \n");
  5849. fprintf(stdout,"INFO: FREQUENCY SPACING ............................ New frq spacing of partials (Hz) (Range 1 to 1000).(Timevariable).\n");
  5850. fprintf(stdout,"INFO: GAIN ................................................. Output gain or attenuation. (Range 0.01 to 10)\n");
  5851. fprintf(stdout,"INFO: ARPEGGIATION RATE ............................. Rate of arpeggiation of spectrum (Range -50 to +50 Hz).\n");
  5852. fprintf(stdout,"INFO: LOW CUT ............................................ Cut off frequencies below this. (range 20 to 10000)\n");
  5853. fprintf(stdout,"INFO: HIGH CUT ........................................... Cut off frequencies above this. (range 50 to 10000)\n");
  5854. fprintf(stdout,"INFO: USE SHORT WINDOW ............................. Use short-window for extracting spectral envelope.\n");
  5855. fprintf(stdout,"INFO: EXCLUDE NON-HARMONIC PARTIALS ........... Exclude non-harmonic partials.\n");
  5856. fprintf(stdout,"INFO: NONPITCH_&_LOLEVEL_WINDOWS_ZEROED .. Replace unpitched (or extremely quiet) windows by silence.\n");
  5857. fprintf(stdout,"INFO: DOWNWARDS ....................................... Arpeggiate downwards (default upwards) (Only when ARPEGGIATION RATE > 0).\n");
  5858. fprintf(stdout,"INFO: UP AND DOWN ...................................... Arpeggiate up and down. (Only when ARPEGGIATION RATE > 0)\n");
  5859. fprintf(stdout,"INFO: FILL TOP OF SPECTRUM ........................... If transposing downwards, fill spectrum top with extra harmonics.\n");
  5860. break;
  5861. case(14):
  5862. fprintf(stdout,"INFO: PITCH-INVERT UNDER FORMANTS: Invert pitch of src, under formants.\n");
  5863. fprintf(stdout,"INFO: \n");
  5864. fprintf(stdout,"INFO: INTERVAL MAP ................................... Set map to ZERO if no mapping is required..OTHERWISE\n");
  5865. fprintf(stdout,"INFO: map is a textfile of paired values showing how intervals\n");
  5866. fprintf(stdout,"INFO: (in, possibly fractional, SEMITONES)\n");
  5867. fprintf(stdout,"INFO: are to be mapped onto their inversions.\n");
  5868. fprintf(stdout,"INFO: Range +-%0lf semitones (+- %.0lf octaves).\n",MAXINTRANGE,MAXINTRANGE/SEMITONES_PER_OCTAVE);
  5869. fprintf(stdout,"INFO: PIVOT PITCH ....................................... Pitch about which to invert pitch of src (Range %d to %d).\n",SPEC_MIDIMIN,MIDIMAX);
  5870. fprintf(stdout,"INFO: Pitch as MIDI, with possibly fractional val. (Timevariable).\n");
  5871. fprintf(stdout,"INFO: If value zero entered, uses the mean pitch of the input.\n");
  5872. fprintf(stdout,"INFO: GAIN ................................................. Output gain or attenuation. (Range 0.01 to 10)\n");
  5873. fprintf(stdout,"INFO: ARPEGGIATION RATE ............................. Rate of arpeggiation of spectrum (Range -50 to +50 Hz).\n");
  5874. fprintf(stdout,"INFO: LOW CUT ............................................ Cut off frequencies below this. (range 20 to 10000)\n");
  5875. fprintf(stdout,"INFO: HIGH CUT ........................................... Cut off frequencies above this. (range 50 to 10000)\n");
  5876. fprintf(stdout,"INFO: LOW PITCH LIMIT .................................. Minimum acceptable pitch (MIDI, possibly fractional).\n");
  5877. fprintf(stdout,"INFO: HIGH PITCH LIMIT ................................. Maximum acceptable pitch (MIDI, possibly fractional).\n");
  5878. fprintf(stdout,"INFO: USE SHORT WINDOW ............................. Use short-window for extracting spectral envelope.\n");
  5879. fprintf(stdout,"INFO: EXCLUDE NON-HARMONIC PARTIALS ........... Exclude non-harmonic partials.\n");
  5880. fprintf(stdout,"INFO: NONPITCH_&_LOLEVEL_WINDOWS_ZEROED .. Replace unpitched (or extremely quiet) windows by silence.\n");
  5881. fprintf(stdout,"INFO: DOWNWARDS ...................................... Arpeggiate downwards (default upwards) (Only when ARPEGGIATION RATE > 0).\n");
  5882. fprintf(stdout,"INFO: UP AND DOWN ..................................... Arpeggiate up and down. (Only when ARPEGGIATION RATE > 0)\n");
  5883. break;
  5884. case(15):
  5885. fprintf(stdout,"INFO: PITCH-EXAGGERATE/SMOOTH UNDER FORMANTS: Exaggerate/Smooth pitch-line, retaining the formants.\n");
  5886. fprintf(stdout,"INFO: \n");
  5887. fprintf(stdout,"INFO: PIVOT PITCH ....................................... Pitch about which to exaggerate/smooth the pitchline of src (Range %d to %d).\n",SPEC_MIDIMIN,MIDIMAX);
  5888. fprintf(stdout,"INFO: Pitch as MIDI, with possibly fractional val. (Timevariable).\n");
  5889. fprintf(stdout,"INFO: If value zero entered, uses the MEAN pitch of the input.\n");
  5890. fprintf(stdout,"INFO: RANGE MULTIPLIER ................................ Expand or Contract Range of pitchline. (Range 0 - 1).\n");
  5891. fprintf(stdout,"INFO: GAIN .................................................. Output gain or attenuation. (Range 0.01 to 10)\n");
  5892. fprintf(stdout,"INFO: ARPEGGIATION RATE .............................. Rate of arpeggiation of spectrum (Range -50 to +50 Hz).\n");
  5893. fprintf(stdout,"INFO: LOW CUT ............................................ Cut off frequencies below this. (range 20 to 10000)\n");
  5894. fprintf(stdout,"INFO: HIGH CUT ........................................... Cut off frequencies above this. (range 50 to 10000)\n");
  5895. fprintf(stdout,"INFO: LOW PITCH LIMIT ................................... Minimum acceptable pitch (MIDI, possibly fractional).\n");
  5896. fprintf(stdout,"INFO: HIGH PITCH LIMIT .................................. Maximum acceptable pitch (MIDI, possibly fractional).\n");
  5897. fprintf(stdout,"INFO: USE SHORT WINDOW ............................. Use short-window for extracting spectral envelope.\n");
  5898. fprintf(stdout,"INFO: EXCLUDE NON-HARMONIC PARTIALS ........... Exclude non-harmonic partials.\n");
  5899. fprintf(stdout,"INFO: NONPITCH_&_LOLEVEL_WINDOWS_ZEROED .. Replace unpitched (or extremely quiet) windows by silence.\n");
  5900. fprintf(stdout,"INFO: DOWNWARDS ...................................... Arpeggiate downwards (default upwards) (Only when ARPEGGIATION RATE > 0).\n");
  5901. fprintf(stdout,"INFO: UP AND DOWN ..................................... Arpeggiate up and down. (Only when ARPEGGIATION RATE > 0)\n");
  5902. fprintf(stdout,"INFO: TIE TO TOP ......................................... Tie to TOP of pitch range.\n");
  5903. fprintf(stdout,"INFO: TIE TO FOOT ....................................... Tie to FOOT of pitch range.\n");
  5904. fprintf(stdout,"INFO: TIE TO MIDDLE ..................................... Also Tie to range middle (only with other \"TIE\" flags) .\n");
  5905. fprintf(stdout,"INFO: ABOVE MEAN ONLY ................................ Do range change ABOVE mean only.\n");
  5906. fprintf(stdout,"INFO: BELOW MEAN ONLY ................................ Do range change BELOW mean only.\n");
  5907. break;
  5908. case(16):
  5909. fprintf(stdout,"INFO: QUANTISE PITCH: Force source onto a specified pitch field.\n");
  5910. fprintf(stdout,"INFO: \n");
  5911. fprintf(stdout,"INFO: PITCH GRID .......................................... Textfile defining PITCH GRID on which quantised pitches must lie.\n");
  5912. fprintf(stdout,"INFO: There must first be a marker indicating the grid type. These are..\n");
  5913. fprintf(stdout,"INFO: #HS: Followed by listed MIDI pitches to search for.\n");
  5914. fprintf(stdout,"INFO: #HF: Followed by listed MIDI pitches to search for IN ALL OCTAVES.\n");
  5915. fprintf(stdout,"INFO: #THF: Followed by lines each with time + list of MIDI pitches.\n");
  5916. fprintf(stdout,"INFO: 1st time must be zero & times must increase.\n");
  5917. fprintf(stdout,"INFO: Each MIDI list must be the same length.\n");
  5918. fprintf(stdout,"INFO: To change number of pitches from line to line, duplicate values.\n");
  5919. fprintf(stdout,"INFO: #SCALE: Followed by just TWO values.\n");
  5920. fprintf(stdout,"INFO: (a) the number of equal pitch divisions in an octave.\n");
  5921. fprintf(stdout,"INFO: (b) MIDI pitch of any pitch to tune the scales to.\n");
  5922. fprintf(stdout,"INFO: #ELACS: Followed by just THREE values.\n");
  5923. fprintf(stdout,"INFO: (a) Size of \"octave\" in (possibly fractional) semitones.\n");
  5924. fprintf(stdout,"INFO: (b) the number of equal pitch divisions in \"octave\".\n");
  5925. fprintf(stdout,"INFO: (c) MIDI pitch of any pitch to tune the scales to.\n");
  5926. fprintf(stdout,"INFO: GAIN .................................................. Output gain or attenuation. (Range 0.01 to 10)\n");
  5927. fprintf(stdout,"INFO: ARPEGGIATION RATE .............................. Rate of arpeggiation of spectrum (Range -50 to +50 Hz).\n");
  5928. fprintf(stdout,"INFO: LOW CUT ............................................. Cut off frequencies below this. (range 20 to 10000)\n");
  5929. fprintf(stdout,"INFO: HIGH CUT ............................................ Cut off frequencies above this. (range 50 to 10000)\n");
  5930. fprintf(stdout,"INFO: LOW PITCH LIMIT ................................... Minimum acceptable pitch (MIDI, possibly fractional).\n");
  5931. fprintf(stdout,"INFO: HIGH PITCH LIMIT .................................. Maximum acceptable pitch (MIDI, possibly fractional).\n");
  5932. fprintf(stdout,"INFO: USE SHORT WINDOW .............................. Use short-window for extracting spectral envelope.\n");
  5933. fprintf(stdout,"INFO: EXCLUDE NON-HARMONIC PARTIALS ........... Exclude non-harmonic partials.\n");
  5934. fprintf(stdout,"INFO: NONPITCH_&_LOLEVEL_WINDOWS_ZEROED .. Replace unpitched (or extremely quiet) windows by silence.\n");
  5935. fprintf(stdout,"INFO: DOWNWARDS ....................................... Arpeggiate downwards (default upwards) (Only when ARPEGGIATION RATE > 0).\n");
  5936. fprintf(stdout,"INFO: UP AND DOWN ...................................... Arpeggiate up and down. (Only when ARPEGGIATION RATE > 0)\n");
  5937. fprintf(stdout,"INFO: ALLOW ORNAMENTS ............................... Allow ORNAMENTS in the quantised pitch-line.\n");
  5938. fprintf(stdout,"INFO: NO SMOOTHING .................................... No smoothing of transitions between pitches.\n");
  5939. break;
  5940. case(17):
  5941. fprintf(stdout,"INFO: PITCH RANDOMISE: Randomise pitch of src.\n");
  5942. fprintf(stdout,"INFO: \n");
  5943. fprintf(stdout,"INFO: PITCH GRID (OR ZERO) .......................... Zero OR a textfile defining PITCH GRID on which pitches are pre-quantised.\n");
  5944. fprintf(stdout,"INFO: IF SET TO ZERO, no pre-quantisation of pitch takes place \n");
  5945. fprintf(stdout,"INFO: If a textfile, in that file there must first be a marker indicating the grid type. These are..\n");
  5946. fprintf(stdout,"INFO: #HS: Followed by listed MIDI pitches to search for.\n");
  5947. fprintf(stdout,"INFO: #HF: Followed by listed MIDI pitches to search for IN ALL OCTAVES.\n");
  5948. fprintf(stdout,"INFO: #THF: Followed by lines each with time + list of MIDI pitches.\n");
  5949. fprintf(stdout,"INFO: 1st time must be zero & times must increase.\n");
  5950. fprintf(stdout,"INFO: Each MIDI list must be the same length.\n");
  5951. fprintf(stdout,"INFO: To change number of pitches from line to line, duplicate values.\n");
  5952. fprintf(stdout,"INFO: #SCALE: Followed by just TWO values.\n");
  5953. fprintf(stdout,"INFO: (a) the number of equal pitch divisions in an octave.\n");
  5954. fprintf(stdout,"INFO: (b) MIDI pitch of any pitch to tune the scales to.\n");
  5955. fprintf(stdout,"INFO: #ELACS: Followed by just THREE values.\n");
  5956. fprintf(stdout,"INFO: (a) Size of \"octave\" in (possibly fractional) semitones.\n");
  5957. fprintf(stdout,"INFO: (b) the number of equal pitch divisions in \"octave\".\n");
  5958. fprintf(stdout,"INFO: (c) MIDI pitch of any pitch to tune the scales to.\n");
  5959. fprintf(stdout,"INFO: RANDOMISATION RANGE ........................ Semitone range within which random offsets generated. (Range 0 to %d)\n",RANDPITCHMAX);
  5960. fprintf(stdout,"INFO: RANDOMISATION SLEW .......................... Relationship between (possible) upward & downward random variation.\n");
  5961. fprintf(stdout,"INFO: e.g. 2: uprange = 2 * downrange 0.5: uprange = 0.5 * downrange.\n");
  5962. fprintf(stdout,"INFO: Ranges 0.1 to 10. (Value 1 has no effect).\n");
  5963. fprintf(stdout,"INFO: GAIN ................................................. Output gain or attenuation. (Range 0.01 to 10)\n");
  5964. fprintf(stdout,"INFO: ARPEGGIATION RATE ............................. Rate of arpeggiation of spectrum (Range -50 to +50 Hz).\n");
  5965. fprintf(stdout,"INFO: LOW CUT ............................................ Cut off frequencies below this. (range 20 to 10000)\n");
  5966. fprintf(stdout,"INFO: HIGH CUT ........................................... Cut off frequencies above this. (range 50 to 10000)\n");
  5967. fprintf(stdout,"INFO: LOW PITCH LIMIT .................................. Minimum acceptable pitch (MIDI, possibly fractional).\n");
  5968. fprintf(stdout,"INFO: HIGH PITCH LIMIT .................................. Maximum acceptable pitch (MIDI, possibly fractional).\n");
  5969. fprintf(stdout,"INFO: USE SHORT WINDOW .............................. Use short-window for extracting spectral envelope.\n");
  5970. fprintf(stdout,"INFO: EXCLUDE NON-HARMONIC PARTIALS ........... Exclude non-harmonic partials.\n");
  5971. fprintf(stdout,"INFO: NONPITCH_&_LOLEVEL_WINDOWS_ZEROED .. Replace unpitched (or extremely quiet) windows by silence.\n");
  5972. fprintf(stdout,"INFO: DOWNWARDS ...................................... Arpeggiate downwards (default upwards) (Only when ARPEGGIATION RATE > 0).\n");
  5973. fprintf(stdout,"INFO: UP AND DOWN ...................................... Arpeggiate up and down. (Only when ARPEGGIATION RATE > 0)\n");
  5974. fprintf(stdout,"INFO: FAST PITCH-CHANGE .............................. Allow fast pitch-motion in the quantised pitch-line.\n");
  5975. fprintf(stdout,"INFO: NO SMOOTHING .................................... No smoothing of transitions between pitches.\n");
  5976. fprintf(stdout,"INFO: NO FORMANT RESHAPING ........................ Do not reshape formants after pitch randomisation.\n");
  5977. break;
  5978. case(18):
  5979. fprintf(stdout,"INFO: RANDOMISE SPECTRUM UNDER FORMANTS: Randomise spectrum, under formants.\n");
  5980. fprintf(stdout,"INFO: \n");
  5981. fprintf(stdout,"INFO: RANDOMISATION .................................. Randomisation of partial frequencies (Range 0 to 1).(Timevariable).\n");
  5982. fprintf(stdout,"INFO: GAIN .................................................. Output gain or attenuation. (Range 0.01 to 10)\n");
  5983. fprintf(stdout,"INFO: ARPEGGIATION RATE .............................. Rate of arpeggiation of spectrum (Range -50 to +50 Hz).\n");
  5984. fprintf(stdout,"INFO: LOW CUT ............................................. Cut off frequencies below this. (range 20 to 10000)\n");
  5985. fprintf(stdout,"INFO: HIGH CUT ............................................ Cut off frequencies above this. (range 50 to 10000)\n");
  5986. fprintf(stdout,"INFO: USE SHORT WINDOW .............................. Use short-window for extracting spectral envelope.\n");
  5987. fprintf(stdout,"INFO: EXCLUDE NON-HARMONIC PARTIALS ........... Exclude non-harmonic partials.\n");
  5988. fprintf(stdout,"INFO: NONPITCH_&_LOLEVEL_WINDOWS_ZEROED .. Replace unpitched (or extremely quiet) windows by silence.\n");
  5989. fprintf(stdout,"INFO: DOWNWARDS ....................................... Arpeggiate downwards (default upwards) (Only when ARPEGGIATION RATE > 0).\n");
  5990. fprintf(stdout,"INFO: UP AND DOWN ...................................... Arpeggiate up and down. (Only when ARPEGGIATION RATE > 0)\n");
  5991. break;
  5992. case(19):
  5993. fprintf(stdout,"INFO: SEE SPECTRAL ENVELOPES: \n");
  5994. fprintf(stdout,"INFO: Outputs viewable (not playable) sndfile showing spectral envelope at each window as a block of +ve samples.\n");
  5995. fprintf(stdout,"INFO: \n");
  5996. fprintf(stdout,"INFO: USE SHORT WINDOW ... Use short-window for extracting spectral envelope.\n");
  5997. break;
  5998. case(20):
  5999. fprintf(stdout,"INFO: SEE SPECTRAL PEAKS & TROUGHS: Frequencies of troughs/peaks in each window printed to textfile.\n");
  6000. fprintf(stdout,"INFO: \n");
  6001. fprintf(stdout,"INFO: Format of the printout is:\n");
  6002. fprintf(stdout,"INFO: \"Trough PEAK-1 Trough PEAK-2 Trough PEAK-3 Trough PEAK-4 Trough\"\n");
  6003. fprintf(stdout,"INFO: \n");
  6004. fprintf(stdout,"INFO: USE SHORT WINDOW ... Use short-window for extracting spectral envelope.\n");
  6005. break;
  6006. case(21):
  6007. fprintf(stdout,"INFO: LIST TIMES OF TROUGHS BETWEEN SYLLABLES: Times printed to textfile.\n");
  6008. fprintf(stdout,"INFO: \n");
  6009. fprintf(stdout,"INFO: Will usually need post-correction \"by hand\".\n");
  6010. fprintf(stdout,"INFO: \n");
  6011. fprintf(stdout,"INFO: MINIMUM SYLLABE DURATION .... Minimum acceptable duration for a syllable (default %.04lf)\n",MIN_SYLLAB_DUR);
  6012. fprintf(stdout,"INFO: MINIMUM PEAK HEIGTH ............ Minimum height of peak above bracketing trofs (default %.04lf).\n",MIN_PEAKTROF_GAP);
  6013. fprintf(stdout,"INFO: (Maximum possible height is 1.0).\n");
  6014. fprintf(stdout,"INFO: GET PEAKS ........................... Get syllable amplitude-peaks, rather than interening troughs.\n");
  6015. fprintf(stdout,"INFO: GET TROUGHS AND PEAKS ........ Get both troughs and peaks,\n");
  6016. break;
  6017. case(22):
  6018. fprintf(stdout,"INFO: SINE SPEECH: Convert formant frequencies to sinus tones.\n");
  6019. fprintf(stdout,"INFO: \n");
  6020. fprintf(stdout,"INFO: PITCH GRID (OR ZERO) ........................ ZERO or a textfile.\n");
  6021. fprintf(stdout,"INFO: If this is set to ZERO, no pitch quantisation takes place.\n");
  6022. fprintf(stdout,"INFO: Otherwise, this is textfile of data about pitches to quantise to.\n");
  6023. fprintf(stdout,"INFO: There must first be a marker indicating the grid type. These are..\n");
  6024. fprintf(stdout,"INFO: #HS: Followed by listed MIDI pitches to quantise to.\n");
  6025. fprintf(stdout,"INFO: #HF: Followed by listed MIDI pitches to quantise to IN ALL OCTAVES.\n");
  6026. fprintf(stdout,"INFO: #THF: Followed by lines each with time + list of MIDI pitches.\n");
  6027. fprintf(stdout,"INFO: 1st time must be zero & times must increase.\n");
  6028. fprintf(stdout,"INFO: Each MIDI list must be the same length.\n");
  6029. fprintf(stdout,"INFO: To change no of pitches from line to line, duplicate values.\n");
  6030. fprintf(stdout,"INFO: #SCALE: Followed by just TWO values.\n");
  6031. fprintf(stdout,"INFO: (a) the number of equal pitch divisions in an octave.\n");
  6032. fprintf(stdout,"INFO: (b) MIDI pitch of any pitch to tune the scales to.\n");
  6033. fprintf(stdout,"INFO: #ELACS: Followed by just THREE values.\n");
  6034. fprintf(stdout,"INFO: (a) Size of \"pseudo-octave\" in (possibly fractional) semitones.\n");
  6035. fprintf(stdout,"INFO: (b) the number of equal pitch divisions in peudo-octave.\n");
  6036. fprintf(stdout,"INFO: (c) MIDI pitch of any pitch to tune the scales to.\n");
  6037. fprintf(stdout,"INFO: \n");
  6038. fprintf(stdout,"INFO: GAIN .................................................. Output gain or attenuation. (Range 0.01 to 10)\n");
  6039. fprintf(stdout,"INFO: DEPTH ................................................ Degree of sinusoidisation. Range 0 to 1.\n");
  6040. fprintf(stdout,"INFO: LEVEL1 ............................................... Relative gain or attenuation of formant1. (Range 0.01 to 10)\n");
  6041. fprintf(stdout,"INFO: LEVEL2,LEVEL3,LEVEL4 ............................ similar for the other formants.\n");
  6042. fprintf(stdout,"INFO: HFIELD DEPTH1 .................................... If Harmonic Field applied, how strongly to force formant1 pitches to Field (Range 0-1).\n");
  6043. fprintf(stdout,"INFO: HFIELD DEPTH2, DEPTH3, DEPTH4 .............. Similarly for other formant bands.\n");
  6044. fprintf(stdout,"INFO: USE SHORT WINDOW ............................. Use short-window for extracting spectral envelope.\n");
  6045. fprintf(stdout,"INFO: FORCE FUNDAMENTAL ............................ Force lowest formant to use fundamental frq as peak.\n");
  6046. fprintf(stdout,"INFO: NONPITCH_&_LOLEVEL_WINDOWS_ZEROED .. Replace unpitched (or extremely quiet) windows by silence.\n");
  6047. fprintf(stdout,"INFO: SMOOTHING ........................................ Smoothing between pitches in formant traces.\n");
  6048. break;
  6049. }
  6050. break;
  6051. case(FLATTEN):
  6052. fprintf(stdout,"INFO: EQUALISE LEVELS OF SEGMENTS (e.g. SYLLABLES) WITHIN A SOUND.\n");
  6053. fprintf(stdout,"INFO: \n");
  6054. fprintf(stdout,"INFO: PARAMETERS-----------------------------------------------------------\n");
  6055. fprintf(stdout,"INFO: \n");
  6056. fprintf(stdout,"INFO: ELEMENTSIZE ...... Approx size of elements (e.g. syllables) in the source sound.\n");
  6057. fprintf(stdout,"INFO: SHOULDER ......... Risetime to attain new (segment) level, in mS. (Range 20 to ELEMENTSIZE/2).\n"
  6058. " Will never be longer than the time from segment edge to segment peak.\n");
  6059. fprintf(stdout,"INFO: TAIL ................. Portion of end of sound to be treated as a whole segment. (Range 0 to < duration (secs)).\n");
  6060. fprintf(stdout,"INFO: \n");
  6061. fprintf(stdout,"INFO: TIP : Use the \"TAIL\" parameter to handle any anomalies (sudden loudness) at file end.\n");
  6062. break;
  6063. case(BOUNCE):
  6064. fprintf(stdout,"INFO: REPEAT SOURCE, \"BOUNCING\" (ACCELERATING REPETITION WITH FADING LEVEL).\n");
  6065. fprintf(stdout,"INFO: \n");
  6066. fprintf(stdout,"INFO: MODES-----------------------------------------------------------\n");
  6067. fprintf(stdout,"INFO: \n");
  6068. fprintf(stdout,"INFO: MODE 1: Waveset-interpolate between markers.\n");
  6069. fprintf(stdout,"INFO: MODE 2: Waveset-interpolate within alternate marked blocks.\n");
  6070. fprintf(stdout,"INFO: \n");
  6071. fprintf(stdout,"INFO: PARAMETERS-----------------------------------------------------------\n");
  6072. fprintf(stdout,"INFO: \n");
  6073. fprintf(stdout,"INFO: NUMBER OF BOUNCES ............................ Number of bouncing repeats (after initial sound) (Range 1 to 100).\n");
  6074. fprintf(stdout,"INFO: FIRST BOUNCE EXTENT ........................ Timestep to first bounce entry (Range 0.04 to 10).\n");
  6075. fprintf(stdout,"INFO: BOUNCE ACCEL ...................................... Step to next bounce is \"Bounce-accel\" times step to previous bounce (Range 0.1 to 1).\n");
  6076. fprintf(stdout,"INFO: FINAL LEVEL ........................................ Level of final bounce, relative to source level (Range 0 to 1).\n");
  6077. fprintf(stdout,"INFO: LEVEL DECAY SLOPE ............................ Slope of level reduction: > 1 Greater reduction at start : < 1 Greater reduction at end (Range .1 to 10).\n");
  6078. fprintf(stdout,"INFO: SHRINK GRADUALLY(MIN_DURATION) .. Successive events are shrunk (by cutting them short) in same proportion as change in bounce-steps.\n");
  6079. fprintf(stdout,"INFO: Zero value indicates NO CUTTING. Minimum non-zero value = 0.02.\n");
  6080. fprintf(stdout,"INFO: TRIM TO SIZE ...................................... If bounced elements overlap in time, cut them short to avoid this overlap.\n");
  6081. fprintf(stdout,"INFO: CUTS FROM START ................................ (Automatic in Mode 2) If elements are cut short, trim from the start, retaining the end of the source.\n");
  6082. fprintf(stdout,"INFO: (Default, trim from the end, retaining the start of the source).\n");
  6083. break;
  6084. case(DISTMARK):
  6085. fprintf(stdout,"INFO: INTERPOLATE BETWEEN WAVESETS AT MARKED TIMES IN (MONO) SOURCE.\n");
  6086. fprintf(stdout,"INFO: \n");
  6087. fprintf(stdout,"INFO: PARAMETERS-----------------------------------------------------------\n");
  6088. fprintf(stdout,"INFO: \n");
  6089. fprintf(stdout,"INFO: TIME MARKS IN SOURCE ..................... Times in source at which wavesets are to be selected.\n");
  6090. fprintf(stdout,"INFO: WAVESETGROUP LENGTH(mS) ............... Approximate length, in mS, of waveset group to find (time-variable).\n");
  6091. fprintf(stdout,"INFO: TIMESTRETCH ....................................... Timestretch (in output file) of steps between marks in source (time-variable).\n");
  6092. fprintf(stdout,"INFO: GROUPLENGTH RANDOMISATION ........... Randomisation of lengths of interpolated wavesets (time-variable).\n");
  6093. fprintf(stdout,"INFO: \n");
  6094. fprintf(stdout,"INFO: RETROGRADE AND PHASE INVERT ALTERNATE WAVESETS (Tends to lower the pitch).\n");
  6095. fprintf(stdout,"INFO: RETAIN ORIGINAL TAIL ..................... Once the final marker is reached, the remainder of the source is copied to the output.\n");
  6096. fprintf(stdout,"INFO: ATTENUATION OF DISTORTED REGIONS ... reduction of level of the distorted segments relative to the undistorted.\n");
  6097. fprintf(stdout,"INFO: RETAIN ORIGINAL TAIL ..................... Once the final marker is reached, the remainder of the source is copied to the output.\n");
  6098. fprintf(stdout,"INFO: (Any source-sound before the first marker is also copied into the output).\n");
  6099. fprintf(stdout,"INFO: SWITCH RETAINED AND DISTORTED ELEMENTS ...Switch which set of elements is distorted, and which is undistorted.\n");
  6100. break;
  6101. case(DISTREP):
  6102. fprintf(stdout,"INFO: REPEAT (GROUPS OF) WAVESETS, USING SPLICES TO SMOOTH TRANSITIONS..\n");
  6103. fprintf(stdout,"INFO: \n");
  6104. fprintf(stdout,"INFO: MODES-----------------------------------------------------------\n");
  6105. fprintf(stdout,"INFO: \n");
  6106. fprintf(stdout,"INFO: (1) Each (group of) waveset(s), in turn, is repeated.\n");
  6107. fprintf(stdout,"INFO: \n");
  6108. fprintf(stdout,"INFO: (2) After the first repetition-set, the process jumps to a time in the input corresponding to the time at end of current output\n");
  6109. fprintf(stdout,"INFO: and selects its next waveset from there, so the output is not time-dilated relative to the input.\n");
  6110. fprintf(stdout,"INFO: \n");
  6111. fprintf(stdout,"INFO: PARAMETERS-----------------------------------------------------------\n");
  6112. fprintf(stdout,"INFO: \n");
  6113. fprintf(stdout,"INFO: REPETITION COUNT ................................ Number of times to repeat each waveset(group). Can vary over time.\n");
  6114. fprintf(stdout,"INFO: COUNT OF WAVESETS IN GROUP TO REPEAT .. How many wavesets, as a group, to repeat. Can vary over time.\n");
  6115. fprintf(stdout,"INFO: WAVESETS TO SKIP AT START .................... Number of wavesets to ignore at file start.\n");
  6116. fprintf(stdout,"INFO: SPLICELENGTH (mS) ................................. Length of splices, in milliseconds (0 to 50, default 15).\n");
  6117. break;
  6118. case(TOSTEREO):
  6119. fprintf(stdout,"INFO: MOVE STEREO SOURCE FROM A MONO-MERGE TO TRUE STEREO, OR VICE VERSA, AND POSSIBLY INTO A MULTICHANNEL SPACE.\n");
  6120. fprintf(stdout,"INFO: \n");
  6121. fprintf(stdout,"INFO: There are 4 possible processes.\n");
  6122. fprintf(stdout,"INFO: \n");
  6123. fprintf(stdout,"INFO: (1) The stereo signal starts out merged into mono, the same signal being presented on BOTH channels of the original stereo image,\n");
  6124. fprintf(stdout,"INFO: and the true stereo image gradually emerges on the same 2 channels.\n");
  6125. fprintf(stdout,"INFO: (2) The stereo signal starts out as true stereo on a pair of channels and is gradually merged into mono,\n");
  6126. fprintf(stdout,"INFO: the same merged signal being presented on both of these channels.\n");
  6127. fprintf(stdout,"INFO: (3) The stereo signal starts out merged into mono, the merged signal being presented on a SINGLE mono channel,\n");
  6128. fprintf(stdout,"INFO: and the true stereo image gradually emerges onto the TWO ADJACENT CHANNELS (only) : the signal \"FORKS\".\n");
  6129. fprintf(stdout,"INFO: (4) The stereo signal starts out as true stereo on 2 channels SEPARATED BY an empty INTERVENING CHANNEL,\n");
  6130. fprintf(stdout,"INFO: and is gradually merged into a mono signal, presenting only on the intermediate channel.\n");
  6131. fprintf(stdout,"INFO: \n");
  6132. fprintf(stdout,"INFO: Options (3) and (4) are only available if the count of \"OUTPUT CHANNELS\" is set greater than 2.\n");
  6133. fprintf(stdout,"INFO: \n");
  6134. fprintf(stdout,"INFO: PARAMETERS-----------------------------------------------------------\n");
  6135. fprintf(stdout,"INFO: \n");
  6136. fprintf(stdout,"INFO: DIVERGE START TIME .......................... Time of start of divergence from mono-merged signal (moving towards true stereo).\n");
  6137. fprintf(stdout,"INFO: DIVERGE END TIME ............................. Time of complete emergence of true stereo.\n");
  6138. fprintf(stdout,"INFO: \n");
  6139. fprintf(stdout,"INFO: If the \"DIVERGE\" times are IN REVERSED ORDER, the signal will gradually MERGE FROM stereo INTO mono.\n");
  6140. fprintf(stdout,"INFO: \n");
  6141. fprintf(stdout,"INFO: OUTPUT CHANNELS ............................. Number of channels of output file.\n");
  6142. fprintf(stdout,"INFO: LEFT CHANNEL TO : or FORK FROM .......... Channel to which original Left stereo channel is routed in output stereo image\n");
  6143. fprintf(stdout,"INFO: OR Channel from which signal Forks.\n");
  6144. fprintf(stdout,"INFO: RIGHT CHANNEL TO ............................. Channel to which original Right stereo channel is routed in output stereo image.\n");
  6145. fprintf(stdout,"INFO: If set to ZERO and \"OUTPUT CHANNELS\" is greater than Stereo,\n");
  6146. fprintf(stdout,"INFO: output will FORK from \"FORK FROM\" channel to channels on either side.\n");
  6147. fprintf(stdout,"INFO: CHANNEL LEVELS IN MIX TO MONO ........... Level of each of the separated channel signals when mix-merged to mono.\n");
  6148. fprintf(stdout,"INFO: A ZERO value sets a DEFAULT LEVEL. Otherwise, levels below 0.5 are invalid.\n");
  6149. fprintf(stdout,"INFO: \n");
  6150. break;
  6151. case(SUPPRESS):
  6152. fprintf(stdout,"INFO: SUPPRESS THE MOST PROMINENT PARTIALS IN THE FRQ BAND, AND AT THE TIMES, INDICATED\n");
  6153. fprintf(stdout,"INFO: \n");
  6154. fprintf(stdout,"INFO: PARAMETERS-----------------------------------------------------------\n");
  6155. fprintf(stdout,"INFO: \n");
  6156. fprintf(stdout,"INFO: TIMESLOTS .......................... Textfile of time-pairs indicating start & end of timeslots where action is to be taken.\n");
  6157. fprintf(stdout,"INFO: BAND LOW FREQUENCY ....... Frequency of BOTTOM of band in which partials are to be suppressed.\n");
  6158. fprintf(stdout,"INFO: BAND HIGH FREQUENCY ..... Frequency of TOP of band in which partials are to be suppressed.\n");
  6159. fprintf(stdout,"INFO: PARTIALS TO SUPPRESS ... The number of partials to suppress.\n");
  6160. fprintf(stdout,"INFO: \n");
  6161. break;
  6162. case(CALTRAIN):
  6163. fprintf(stdout,"INFO: BLUR THE HIGH FREQUNCY COMPONENTS OF THE SPECTRUM.\n");
  6164. fprintf(stdout,"INFO: \n");
  6165. fprintf(stdout,"INFO: PARAMETERS-----------------------------------------------------------\n");
  6166. fprintf(stdout,"INFO: \n");
  6167. fprintf(stdout,"INFO: AVERAGE OVER TIME (SECS) .. Time in seconds over which upper frequncy data is averaged.\n");
  6168. fprintf(stdout,"INFO: BLUR ABOVE FRQ (HZ) ............ Frequency (Hz) above which spectrum is blurred.\n");
  6169. fprintf(stdout,"INFO: CUT BASS BELOW FRQ (HZ) .... Frequencies below this in the spectrum are suppressed.\n");
  6170. fprintf(stdout,"INFO: \n");
  6171. break;
  6172. case(SPECENV):
  6173. fprintf(stdout,"INFO: APPLY SPECTRAL ENVELOPE OF FILE2 TO FILE1.\n");
  6174. fprintf(stdout,"INFO: \n");
  6175. fprintf(stdout,"INFO: PARAMETERS-----------------------------------------------------------\n");
  6176. fprintf(stdout,"INFO: \n");
  6177. fprintf(stdout,"INFO: WINDOWSIZE (ANALCHANCNT OR OCTAVES) ...... frequency-width of the windows used to extract the spectral envelope.\n");
  6178. fprintf(stdout,"INFO: Either the number of analysis channels per window, or the window-width in octaves.\n");
  6179. fprintf(stdout,"INFO: \n");
  6180. fprintf(stdout,"INFO: BALANCE WITH SOURCES .............................. Ammount of original sources to mix into the transformed output.\n");
  6181. fprintf(stdout,"INFO: Values > 0 are the ratio of sourcefile 1 in the final mix.\n");
  6182. fprintf(stdout,"INFO: Values < 0 are converted to positive values and are then the ratio of sourcefile 2 in the mix.\n");
  6183. fprintf(stdout,"INFO: Default value is zero (none of either source is mixed into the output).\n");
  6184. fprintf(stdout,"INFO: \n");
  6185. fprintf(stdout,"INFO: READ WINDOWSIZE AS OCTAVES .................... Default: windowsize is the number of analysis channels per window.\n");
  6186. fprintf(stdout,"INFO: \n");
  6187. fprintf(stdout,"INFO: IMPOSE SPECTRAL ENVELOPE ......................... Impose spectral envelope of file 2 OVER that of file 1. Default is to REPLACE that of file 1.\n");
  6188. fprintf(stdout,"INFO: \n");
  6189. fprintf(stdout,"INFO: LOUDNESS CONTOUR FOLLOWS FILE 2 .............. Default is to follow the loudness contour of File 1.\n");
  6190. fprintf(stdout,"INFO: \n");
  6191. fprintf(stdout,"INFO: If the window-amplitude of file 2 (but not file 1) falls below a (near-to-zero) threshold, the file 1 window is passed through with no processing.\n");
  6192. fprintf(stdout,"INFO: \n");
  6193. break;
  6194. case(CLIP):
  6195. fprintf(stdout,"INFO: CLIP PEAKS OF SOUND (DISTORTION).\n");
  6196. fprintf(stdout,"INFO: \n");
  6197. fprintf(stdout,"INFO: MODES-----------------------------------------------------------\n");
  6198. fprintf(stdout,"INFO: \n");
  6199. fprintf(stdout,"INFO: (1) Clip at given signal level.\n");
  6200. fprintf(stdout,"INFO: \n");
  6201. fprintf(stdout,"INFO: (2) Clip every waveset at given fraction of its maximum height.\n");
  6202. fprintf(stdout,"INFO: \n");
  6203. fprintf(stdout,"INFO: PARAMETERS-----------------------------------------------------------\n");
  6204. fprintf(stdout,"INFO: \n");
  6205. fprintf(stdout,"INFO: CLIP LEVEL (Mode 1)....... Signal level at which input sound is clipped.\n");
  6206. fprintf(stdout,"INFO: \n");
  6207. fprintf(stdout,"INFO: CLIP LEVEL (Mode 2) .......Fraction of maximum height of each waveset at which (all) wavesets are clipped.\n");
  6208. fprintf(stdout,"INFO: \n");
  6209. break;
  6210. case(SPECEX):
  6211. fprintf(stdout,"INFO: TIMESTRETCH SEGMENT OF ANALYSIS FILE WITH RANDOMISATION OF WINDOWS.\n");
  6212. fprintf(stdout,"INFO: \n");
  6213. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------\n");
  6214. fprintf(stdout,"INFO: \n");
  6215. fprintf(stdout,"INFO: STARTTIME OF REGION TO STRETCH ...................... Time in source where region to be stretched begins.\n");
  6216. fprintf(stdout,"INFO: DURATION OF REGION TO STRETCH ......................... Duration of region to be stretched.\n");
  6217. fprintf(stdout,"INFO: TIME STRETCHING RATIO ......................................... Time stretch to apply (at least 2).\n");
  6218. fprintf(stdout,"INFO: NO OF WINDOWS IN GROUPS-FOR-PERMUTATION ... Time-stretching repeats selected region, but with windows randomly permuted.\n");
  6219. fprintf(stdout,"INFO: Windows can be collected into groups, and these groups permuted.\n");
  6220. fprintf(stdout,"INFO: \n");
  6221. fprintf(stdout,"INFO: INCLUDE SOUND BEFORE STRETCHED PORTION ........... Sound before stretched portion is retained.\n");
  6222. fprintf(stdout,"INFO: INCLUDE SOUND AFTER STRETCHED PORTION ............. Sound after stretched portion is retained.\n");
  6223. fprintf(stdout,"INFO: \n");
  6224. break;
  6225. case(MATRIX):
  6226. fprintf(stdout,"INFO: SPECTRALLY WARP SOUNDFILE, USING UNITARY MATRIX, OR OTHERWISE.\n");
  6227. fprintf(stdout,"INFO: \n");
  6228. fprintf(stdout,"INFO: MODES---------------------------------------------------------------\n");
  6229. fprintf(stdout,"INFO: \n");
  6230. fprintf(stdout,"INFO: (1) GENERATE (SAVE TO FILE) AND USE A RANDOM UNITARY MATRIX.\n");
  6231. fprintf(stdout,"INFO: (2) USE AN EXISTING UNITARY MATRIX FILE.\n");
  6232. fprintf(stdout,"INFO: (3) SWAP AMPLITUDE AND PHASE VALUES OF FFT.\n");
  6233. fprintf(stdout,"INFO: (4) INVERT (x MINUS 1) PHASE VALUES IN FFT .\n");
  6234. fprintf(stdout,"INFO: \n");
  6235. fprintf(stdout,"INFO: PARAMETERS IF NOT IN MODE 2----------------------------------------------------------\n");
  6236. fprintf(stdout,"INFO: \n");
  6237. fprintf(stdout,"INFO: ANALYSIS POINTS..(2-32768 (power of 2)): default 1024\n");
  6238. fprintf(stdout,"INFO: .................More points give better freq resolution\n");
  6239. fprintf(stdout,"INFO: .................but worse time-resolution (e.g. rapidly changing spectrum).\n");
  6240. fprintf(stdout,"INFO: \n");
  6241. fprintf(stdout,"INFO: OVERLAP..........Filter overlap factor (1-4): default 3\n");
  6242. fprintf(stdout,"INFO: \n");
  6243. break;
  6244. case(TRANSPART):
  6245. fprintf(stdout,"INFO: TRANSPOSE OR SHIFT ONLY PART OF SPECTRUM, ABOVE OR BELOW A GIVEN FREQUNCY.\n");
  6246. fprintf(stdout,"INFO: \n");
  6247. fprintf(stdout,"INFO: MODES---------------------------------------------------------------\n");
  6248. fprintf(stdout,"INFO: \n");
  6249. fprintf(stdout,"INFO: (1) TRANSPOSE ABOVE FRQ, RETAINING ORIGINAL FORMANTS.\n");
  6250. fprintf(stdout,"INFO: (2) TRANSPOSE BELOW FRQ, RETAINING ORIGINAL FORMANTS.\n");
  6251. fprintf(stdout,"INFO: (3) TRANSPOSE ABOVE FRQ, ALSO MOVING FORMANTS.\n");
  6252. fprintf(stdout,"INFO: (4) TRANSPOSE BELOW FRQ, ALSO MOVING FORMANTS.\n");
  6253. fprintf(stdout,"INFO: (5) FREQUENCY SHIFT ABOVE FRQ, RETAINING ORIGINAL FORMANTS.\n");
  6254. fprintf(stdout,"INFO: (6) FREQUENCY SHIFT BELOW FRQ, RETAINING ORIGINAL FORMANTS.\n");
  6255. fprintf(stdout,"INFO: (7) FREQUENCY SHIFT ABOVE FRQ, ALSO MOVING FORMANTS.\n");
  6256. fprintf(stdout,"INFO: (8) FREQUENCY SHIFT BELOW FRQ, ALSO MOVING FORMANTS.\n");
  6257. fprintf(stdout,"INFO: \n");
  6258. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------\n");
  6259. fprintf(stdout,"INFO: \n");
  6260. fprintf(stdout,"INFO: FOR TRANSPOSITION\n");
  6261. fprintf(stdout,"INFO: TRANSPOSITION IN SEMITONES ............ Semitone transposition. Range : 4 octaves, up or down.\n");
  6262. fprintf(stdout,"INFO: FOR FREQUENCY SHIFTING\n");
  6263. fprintf(stdout,"INFO: FREQUNCY SHIFT IN HZ ..................... Frequency shift in Hz. Range : (nyquist/4) up or down.\n");
  6264. fprintf(stdout,"INFO: \n");
  6265. fprintf(stdout,"INFO: ABOVE/BELOW THIS FREQUENCY ONLY .. Frq above/below which spectrum shifted (Range: 5 to nyquist/2)\n");
  6266. fprintf(stdout,"INFO: OVERALL GAIN ............................... Range : 0.1 to 1.0\n");
  6267. fprintf(stdout,"INFO: \n");
  6268. break;
  6269. case(SPECINVNU):
  6270. fprintf(stdout,"INFO: INVERT THE SPECTRAL AMPLITUDES OVER A SPECIFIED RANGE OF THE SPECTRUM\n");
  6271. fprintf(stdout,"INFO: \n");
  6272. fprintf(stdout,"INFO: The spectral inversion is over a range of frequencies (a \"region\") which you specify (params 1 & 2).\n");
  6273. fprintf(stdout,"INFO: You must also search for the spectral peak lying between 0Hz and a cutoff frequency (param 3)\n");
  6274. fprintf(stdout,"INFO: This peak is used to create a spectral-amplitude-envelope, used to rebalance the inverted spectrum.\n");
  6275. fprintf(stdout,"INFO: Parameter (3) must lie between the Start Frq of the region (param 1)\n");
  6276. fprintf(stdout,"INFO: and the halfway-point frequency of that region.\n");
  6277. fprintf(stdout,"INFO: \n");
  6278. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------\n");
  6279. fprintf(stdout,"INFO: \n");
  6280. fprintf(stdout,"INFO: (1) START FRQ OF REGION TO INVERT ................. Range : 0 to nyquist/2\n");
  6281. fprintf(stdout,"INFO: (2) END FRQ OF REGION TO INVERT .................... Range : 100 to nyquist.\n");
  6282. fprintf(stdout,"INFO: (3) TOP FRQ TO END SEARCH FOR SPECTRAL PEAK .. Range : 0 to nyquist\n");
  6283. fprintf(stdout,"INFO: (4) GAIN ...................................................... Range : 0.1 to 1.0\n");
  6284. fprintf(stdout,"INFO: \n");
  6285. break;
  6286. case(SPECCONV):
  6287. fprintf(stdout,"INFO: EXPERIMENTAL CONVOLUTION PROCESS (NOT RECOMMENDED)\n");
  6288. fprintf(stdout,"INFO: \n");
  6289. fprintf(stdout,"INFO: MODES----------------------------------------------------------\n");
  6290. fprintf(stdout,"INFO: \n");
  6291. fprintf(stdout,"INFO: MODE 1 : CONVOLVE SOUND WITH ITSELF\n");
  6292. fprintf(stdout,"INFO: MODE 2 : CONVOLVE SOUND WITH ANOTHER, EQUAL LENGTH OR SHORTER, SOUND.\n");
  6293. fprintf(stdout,"INFO: \n");
  6294. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------\n");
  6295. fprintf(stdout,"INFO: \n");
  6296. fprintf(stdout,"INFO: (1) OVERALL GAIN ........................... Range : 0.1 to 10.0\n");
  6297. fprintf(stdout,"INFO: (2) APPLY PROCESS THIS MANY TIMES .. Range : (Mode 1) 1 to 10 (Mode 2) 1 to 2.\n");
  6298. fprintf(stdout,"INFO: (3) DON'T TIME-STRETCH FILE 2 ......... (Mode 2 ONLY)\n");
  6299. fprintf(stdout,"INFO: \n");
  6300. break;
  6301. case(SPECSND):
  6302. fprintf(stdout,"INFO: TREAT SPECTRUM AS IF IT WERE A SOUND\n");
  6303. fprintf(stdout,"INFO: \n");
  6304. fprintf(stdout,"INFO: Spectral envelope is treated as a waveform.\n");
  6305. fprintf(stdout,"INFO: Ouput pitch derives from maximum amplitude in the spectrum.\n");
  6306. fprintf(stdout,"INFO: \n");
  6307. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------\n");
  6308. fprintf(stdout,"INFO: \n");
  6309. fprintf(stdout,"INFO: (1) MINIMUM UPWARD TRANSPOSITION IN OCTAVES .... Range : 0 to 8\n");
  6310. fprintf(stdout,"INFO: (2) MAXIMUM UPWARD TRANSPOSITION IN OCTAVES .... Range : 1 to 8.\n");
  6311. fprintf(stdout,"INFO: \n");
  6312. break;
  6313. case(SPECFRAC):
  6314. fprintf(stdout,"INFO: CREATE FRACTAL VERSION OF SPECTRUM.\n");
  6315. fprintf(stdout,"INFO: \n");
  6316. fprintf(stdout,"INFO: NB Ouput sounds depend on number of analysis channels used in source.\n");
  6317. fprintf(stdout,"INFO: \n");
  6318. fprintf(stdout,"INFO: MODES----------------------------------------------------------\n");
  6319. fprintf(stdout,"INFO: \n");
  6320. fprintf(stdout,"INFO: MODE 1 : Abutt 2 copies, then shrink to orig size by time-contraction.\n");
  6321. fprintf(stdout,"INFO: MODE 2 : Abutt copy with reverse-copy, then shrink by time-contraction.\n");
  6322. fprintf(stdout,"INFO: MODE 3 : As mode 2, but cut into segments and process each segment in turn.\n");
  6323. fprintf(stdout,"INFO: MODE 4 : As mode 3, but shrink by averaging.\n");
  6324. fprintf(stdout,"INFO: MODE 5 : Swap two halves of segments.\n");
  6325. fprintf(stdout,"INFO: MODE 6 : Reverse 2nd half of segments.\n");
  6326. fprintf(stdout,"INFO: MODE 7 : Interleave two halves of segments.\n");
  6327. fprintf(stdout,"INFO: MODE 8 : Reverse 2nd half of segments, then interleave.\n");
  6328. fprintf(stdout,"INFO: MODE 9 : Interleave, retaining original speed.\n");
  6329. fprintf(stdout,"INFO: \n");
  6330. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------\n");
  6331. fprintf(stdout,"INFO: \n");
  6332. fprintf(stdout,"INFO: NUMBER OF FRACTAL LAYERS .................. Number of times fractalisation process applied.\n");
  6333. fprintf(stdout,"INFO: OUTPUT ALL INTERMEDIATE FRACTALS .. Outputs sound made at each intermediate stage of fractalisation.\n");
  6334. fprintf(stdout,"INFO: \n");
  6335. break;
  6336. case(ENVSPEAK):
  6337. fprintf(stdout,"INFO: PROCESS SPEECH \"SYLLABLE\"-WISE.\n");
  6338. fprintf(stdout,"INFO: \n");
  6339. fprintf(stdout,"INFO: MODES----------------------------------------------------------\n");
  6340. fprintf(stdout,"INFO: \n");
  6341. fprintf(stdout,"INFO: MODES 1-12 Extract the \"syllables\" by an automatic envelope-tracking process.\n");
  6342. fprintf(stdout,"INFO: MODES 13-24 Expects a File specifying the necessary cut-times to separate the sound into syllables.\n");
  6343. fprintf(stdout,"INFO: \n");
  6344. fprintf(stdout,"INFO: 1 & 13 : Repeat each syllable, N times.\n");
  6345. fprintf(stdout,"INFO: 2 & 14 : Reverse-repeat each syllable.\n");
  6346. fprintf(stdout,"INFO: 3 & 15 : Attenuate N in N+1 syllables.\n");
  6347. fprintf(stdout,"INFO: 4 & 16 : Attenuate all except N in N+1 syllables.\n");
  6348. fprintf(stdout,"INFO: 5 & 17 : Repeat each syllable N times, shrinking from its end, on each repeat, by 1/Nth.\n");
  6349. fprintf(stdout,"INFO: 6 & 18 : Repeat each syllable N times, shrinking from its start, on each repeat, by 1/N.\n");
  6350. fprintf(stdout,"INFO: 7 & 19 : Divide each syllable into N parts, and repeat just one of those parts, N times.\n");
  6351. fprintf(stdout,"INFO: 8 & 20 : For each syllable, repeat it, shrinking from its end by a specified Ratio.\n");
  6352. fprintf(stdout,"INFO: 9 & 21 : For each syllable, repeat it, shrinking from its start by a specified Ratio.\n");
  6353. fprintf(stdout,"INFO: 10 & 22 : Extract all the syllables.\n");
  6354. fprintf(stdout,"INFO: 11 & 23 : Randomly reorder the syllables.\n");
  6355. fprintf(stdout,"INFO: 12 & 24 : Reverse order of first N syllable , then order of 2nd N syllable, etc.\n");
  6356. fprintf(stdout,"INFO: \n");
  6357. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------\n");
  6358. fprintf(stdout,"INFO: \n");
  6359. fprintf(stdout,"INFO: ENVELOPE WINDOW SIZE (mS) (Modes 1-12 ONLY) ........... Size of envelope-search window in mS (default 50).\n");
  6360. fprintf(stdout,"INFO: SYLLABLE CUT TIMES (secs) (Modes 13-24 ONLY).............. Position of cuts (except at zero and end of file) to separate the syllables.\n");
  6361. fprintf(stdout,"INFO: SPLICE LENGTH (mS) ............................................... Splice length in mS (default 15) \n");
  6362. fprintf(stdout,"INFO: INITIAL SYLLABLES TO SKIP ....................................... Number of syllables at sound start to send to output UNCHANGED.\n");
  6363. fprintf(stdout,"INFO: NUMBER OF REPETITIONS ........................................ Number of repetitions of each syllable (Range 2 upwards).\n");
  6364. fprintf(stdout,"INFO: N (ATTEN N in every N+1 SYLLABLES) ........................... Size of Each Group of syllables to attenuate : N = 3 means attenuate 3 in every 4.\n");
  6365. fprintf(stdout,"INFO: N (DON'T ATTEN N in every N+1 SYLLABS) ..................... Size of Each Group of syllables NOT to attenuate : N = 3 means DON'T attenuate 3 in every 4.\n");
  6366. fprintf(stdout,"INFO: GAIN ON ATTENUATED SYLLABLES ............................... Reduce the level of Attenuated syllables by this number of dBs: (Range -96 to < 0)\n");
  6367. fprintf(stdout,"INFO: NO OF PARTS TO DIVIDE SYLLABLES INTO ..................... For each syllable, Keep 1/Nth part, and repeat that part N times.\n");
  6368. fprintf(stdout,"INFO: WHICH DIVIDED ELEMENT TO USE ............................... Which division of the divided-sylllable to repeat (Range 1 to N)\n");
  6369. fprintf(stdout,"INFO: CONTRACTION RATIO ............................................. Reduce length of repeated elements by this Ratio : Range (> 0.0 to 1)\n");
  6370. fprintf(stdout,"INFO: DEGREE OF RANDOMISATION, LENGTHS OF REPET UNITS .. Degree of Randomisation of the lengths of repeated units.\n");
  6371. fprintf(stdout,"INFO: REVERSE ORDER IN GROUPS OF ................................. Reverse the order order of the first N syllables, then the order of the 2nd N, and so on ....\n");
  6372. fprintf(stdout,"INFO: SEED FOR RANDOM PERMUTATION ............................. (Modes 11 only) Initialises the random number generator for Random reorderings of the syllables.\n");
  6373. fprintf(stdout,"INFO: If the Seed is NOT 0, using the same seed again on a future pass gives IDENTICAL random output.\n");
  6374. fprintf(stdout,"INFO: REPEATED ELEMENTS DO NOT GROW IN SIZE ................. (Mode 7 only) with many divisions, may give a mechanical or buzzing quality to the ouptut.\n");
  6375. fprintf(stdout,"INFO: \n");
  6376. break;
  6377. case(EXTSPEAK):
  6378. fprintf(stdout,"INFO: OVERWRITE OR REPLACE SPEECH SYLLABLES WITH ALTERNATIVE \"SYLLABLES\"\n");
  6379. fprintf(stdout,"INFO: \n");
  6380. fprintf(stdout,"INFO: ----------------------------------------------------------MODES----------------------------------------------------------\n");
  6381. fprintf(stdout,"INFO: \n");
  6382. fprintf(stdout,"INFO: FINDING THE ORIGINAL SYLLABLES IN INPUT FILE 1.\n");
  6383. fprintf(stdout,"INFO: In Modes 1-6 the \"syllables\" in file-1 are extracted by an automatic process using the ENVELOPE WINDOW SIZE parameter.\n");
  6384. fprintf(stdout,"INFO: Results may be good enough for some applications, but not as good as ...\n");
  6385. fprintf(stdout,"INFO: In Modes 7-18 the syllable-boundaries in file-1 are marked \"by hand\" on a graphic of the original soundfile.\n");
  6386. fprintf(stdout,"INFO: Markers at time zero, and at the end of the sound are not required.\n");
  6387. fprintf(stdout,"INFO: \n");
  6388. fprintf(stdout,"INFO: USE OF THE NEW SYLLABLES, FROM INPUT FILES 2,3 ....\n");
  6389. fprintf(stdout,"INFO: In Modes 1-3,7-9 new syllables REPLACE, or are INJECTED BETWEEN, the original syllables.\n");
  6390. fprintf(stdout,"INFO: In Modes 4-6,10-12 new syllables MIX INTO the original syllables.\n");
  6391. fprintf(stdout,"INFO: In Modes 13-15 new syllables REPLACE the SPECIFIED original syllables.\n");
  6392. fprintf(stdout,"INFO: In Modes 16-18 new syllables MIX INTO the SPECIFIED original syllables.\n");
  6393. fprintf(stdout,"INFO: \n");
  6394. fprintf(stdout,"INFO: ORDER OF THE NEW SYLLABLES.\n");
  6395. fprintf(stdout,"INFO: Modes 1,4,7,10,13,16: Insert syllables in the Order of the input files. Or (\"SELECT INSERTS AT RANDOM\") Entirely at Random.\n");
  6396. fprintf(stdout,"INFO: Modes 2,5,8,11,14,17: Insert ALL syllables in the input files in some random order, then permute that order before adding more syllables, and so on.\n");
  6397. fprintf(stdout,"INFO: Modes 3,6,9,12,15,18: Insert syllables in a specific pattern, specified in the Pattern File.\n");
  6398. fprintf(stdout,"INFO: For example : Pattern \"1 5 2\" means insert syllables 1,5 and 2 from the input list, in that order, then repeat (so 1 5 2 1 5 2 1 ....etc.)\n");
  6399. fprintf(stdout,"INFO: \n");
  6400. fprintf(stdout,"INFO: ----------------------------------------------------------INPUT DATA (Scroll down for MORE)---------------------------------------------\n");
  6401. fprintf(stdout,"INFO: \n");
  6402. fprintf(stdout,"INFO: Many of the modes require you to enter data in a TEXT FILE.\n");
  6403. fprintf(stdout,"INFO: \n");
  6404. fprintf(stdout,"INFO: SYLLABLE BOUNDARY TIMES Modes 7-18 This LIST OF TIMES indicate where file1 is to be divided, to produce separate syllables.\n");
  6405. fprintf(stdout,"INFO: You do not need to indicate a cut at zero time or at the file end (if you do, these are ignored).\n");
  6406. fprintf(stdout,"INFO: there is one cut for the END of each syllable, and the area after the last cut is a final syllable.\n");
  6407. fprintf(stdout,"INFO: So with C cuts, there will be C+1 syllables.\n");
  6408. fprintf(stdout,"INFO: IN OTHER MODES \"syllables\" are cut automatically,\n");
  6409. fprintf(stdout,"INFO: using the ENVELOPE WINDOW SIZE parameter to scan the loudness envelope of the input file.\n");
  6410. fprintf(stdout,"INFO: \n");
  6411. fprintf(stdout,"INFO: PATTERN OF INSERTS Modes 3,6,8,12,15 This LIST OF NUMBERS indicates the order of the syllables to be added.\n");
  6412. fprintf(stdout,"INFO: The pattern \"2 5 1\" means add syllable 2, then syllable 5, then syllable 1: And then repeat this pattern as long as necessary.\n");
  6413. fprintf(stdout,"INFO: OTHERWISE: Modes 1,4,7,10,13,16 Uses the new syllables in the order you enter them on the \"Chosen Files\" listing EXCEPT \n");
  6414. fprintf(stdout,"INFO: with the \"SELECT INSERTS AT RANDOM\" flag, which causes new syllables to be selected entirely randomly.\n");
  6415. fprintf(stdout,"INFO: Modes 2,5,8,11,14,17 Uses ALL new syllables in some random order, before creating a different random order and using ALL the files again, and so on ...\n");
  6416. fprintf(stdout,"INFO: \n");
  6417. fprintf(stdout,"INFO: SYLLABLES TO TARGET Modes 12 - 18 This LIST OF NUMBERS indicates which of the syllables in the first infile are to reaplaced, or mixed-over by the syllables in the other files.\n");
  6418. fprintf(stdout,"INFO: OTHERWISE: This is determined by the parameter \"N\" and the Flag \"N = RETAIN ...\".\n");
  6419. fprintf(stdout,"INFO: \n");
  6420. fprintf(stdout,"INFO: Note that, in some modes 2 or 3 of these data sets are required, in the SAME textfile. In this case THE DATA SETS ARE SEPARATED BY A LINE WITH A SINGLE \"#\" CHARACTER.\n");
  6421. fprintf(stdout,"INFO: \n");
  6422. fprintf(stdout,"INFO: \n");
  6423. fprintf(stdout,"INFO: ----------------------------------------------------------PARAMETERS (Scroll down for MORE)---------------------------------------------\n");
  6424. fprintf(stdout,"INFO: \n");
  6425. fprintf(stdout,"INFO: ENVELOPE WINDOW SIZE (mS) ...................................... Size of envelope-search window in mS (default 50).\n");
  6426. fprintf(stdout,"INFO: SPLICE LENGTH (mS) .................................................. Splice length for cutting and joining syllables, in mS (default 15) \n");
  6427. fprintf(stdout,"INFO: INITIAL SYLLABLES TO SKIP .......................................... Number of syllables at sound start to send to the output UNCHANGED.\n");
  6428. fprintf(stdout,"INFO: N = RETAIN 1 ORIG SYLLAB FOR EVERY N OVERWRITTEN ...... Size of Group replaced/overwritten/inserted : N = 3 means r-o-i 3 in every 4 (BUT see \"-k\" Flag)\n");
  6429. fprintf(stdout,"INFO: OVERALL ATTENUATION OF INSERTED SYLLABLES ............... Reduce the level of the new syllables by this number of dBs: (Range -96 to < 0)\n");
  6430. fprintf(stdout,"INFO: (NOT Modes 3,6,9,12,15,18) SEED FOR RANDOM GENERATOR Initialises the random number generator for Random reorderings of the syllables.\n");
  6431. fprintf(stdout,"INFO: If the Seed is NOT 0, using the same seed again on a future pass gives IDENTICAL random output.\n");
  6432. fprintf(stdout,"INFO: N = RETAIN N ORIG SYLLABS FOR EVERY 1 OVERWRITTEN .... Changes the meaning of the Parameter N.\n");
  6433. fprintf(stdout,"INFO: (see the examples below).\n");
  6434. fprintf(stdout,"INFO: TRANSPOSE (RATHER THAN CUT TO SIZE) INSERTS ............. Default option cuts (or pads with zeros) the resized syllables.\n");
  6435. fprintf(stdout,"INFO: FOLLOW ENVELOPE OF OVERWRITTEN SYLLABLES ............... Inserted syllables follow level-contour of original syllables.\n");
  6436. fprintf(stdout,"INFO: INSERT BETWEEN (RATHER THAN OVERWRITE) .................. Don't overwrite/mix-into the original syllables. INSERT the new syllables After the existing syllables.\n");
  6437. fprintf(stdout,"INFO: (see the examples below).\n");
  6438. fprintf(stdout,"INFO: RETAIN ORIGINAL DURATION OF INSERTS ........................ This option (typically) changes the duration and rhythm of the output relative to that of the (1st) input file.\n");
  6439. fprintf(stdout,"INFO: Default option RESIZES the inserted syllables to match the durations of the replaced syllables.\n");
  6440. fprintf(stdout,"INFO: (Modes 1,4,7,10,13,16) SELECT INSERTS AT RANDOM .......... Select next syllable to insert, from the input syllable-files, ENTIRELY at random.\n");
  6441. fprintf(stdout,"INFO: \n");
  6442. fprintf(stdout,"INFO: ----------------------------------------------------------HOW THE N-patterning WORKS---------------------------------------------------\n");
  6443. fprintf(stdout,"INFO: \n");
  6444. fprintf(stdout,"INFO: STARTING WITH A SET OF 9 SYLLABLES USING A VALUE N=2: ..... S S S S S S S S S\n");
  6445. fprintf(stdout,"INFO: NO FLAGS gives .............................. S x x S x x S x x\n");
  6446. fprintf(stdout,"INFO: \"N = RETAIN ...\" FLAG gives ............... S S x S S x S S x\n");
  6447. fprintf(stdout,"INFO: \"INSERT ...\" FLAG gives .................... S x x S x x S x x S x x S x x S x x S x x S x x S x x\n");
  6448. fprintf(stdout,"INFO: Using BOTH OF THESE FLAGS gives ....... S S x S S x S S x S S x S\n");
  6449. fprintf(stdout,"INFO: \n");
  6450. break;
  6451. case(ENVSCULPT):
  6452. fprintf(stdout,"INFO: SCULPT SHARP ATTACK FROM SYLLABLE\n");
  6453. fprintf(stdout,"INFO: \n");
  6454. fprintf(stdout,"INFO: MODES----------------------------------------------------------\n");
  6455. fprintf(stdout,"INFO: \n");
  6456. fprintf(stdout,"INFO: MODE 1 : SCULPT AN EVENT\n");
  6457. fprintf(stdout,"INFO: MODE 2 : SCULPT A USER-SPECIFIED DOUBLE-EVENT (e.g. Consonant-Vowel) .\n");
  6458. fprintf(stdout,"INFO: MODE 3 : SCULPT A DOUBLE-EVENT AUTOMATICALLY.\n");
  6459. fprintf(stdout,"INFO: \n");
  6460. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------\n");
  6461. fprintf(stdout,"INFO: \n");
  6462. fprintf(stdout,"INFO: ENVELOPE WINDOW SIZE (mS) ................. Window Size for extracting envelope (1-64 dflt 20)\n");
  6463. fprintf(stdout,"INFO: RISE TIME (mS) ................................... (Max) Duration of attack onset (mS).\n");
  6464. fprintf(stdout,"INFO: DECAY DURATION ................................ Maximum time to reach zero after the attack peak.\n");
  6465. fprintf(stdout,"INFO: STEEPNESS ........................................ Steepness of decay : 1 = linear, > 1 steeper.\n");
  6466. fprintf(stdout,"INFO: CONSONANT DECAY START ..................... Time at which sound after 1st attack can start to fall to zero.\n");
  6467. fprintf(stdout,"INFO: CONSONANT DECAY END ........................ End time of decay-to-zero after 1st attack.\n");
  6468. fprintf(stdout,"INFO: LOUDNESS RATIO OF 1st TO 2nd ATTACKS .. Ratio of loudness of First attack to loudness of Second (Dflt 1).\n");
  6469. fprintf(stdout,"INFO: ATTACK 2nd PEAK ONLY (Mode 3) ............. Peak One is isolated, but with no Attack.\n");
  6470. fprintf(stdout,"INFO: \n");
  6471. break;
  6472. case(TREMENV):
  6473. fprintf(stdout,"INFO: TREMOLO A SOUND AFTER ITS PEAK, WITH TREMOLO-WIDTH NARROWING.\n");
  6474. fprintf(stdout,"INFO: \n");
  6475. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------\n");
  6476. fprintf(stdout,"INFO: \n");
  6477. fprintf(stdout,"INFO: TREMOLO FREQUENCY ....................... is frequency of the tremolo vibration itself.\n");
  6478. fprintf(stdout,"INFO: TREMOLO DEPTH ............................... amplitude depth of tremolo.\n");
  6479. fprintf(stdout,"INFO: ENVELOPE WINDOW SIZE (mS) ....... Window Size for extracting envelope (1-64 dflt 20)\n");
  6480. fprintf(stdout,"INFO: PEAK NARROWING .................. Tremolo peaks can be made narrower.\n");
  6481. fprintf(stdout,"INFO: \n");
  6482. break;
  6483. case(DCFIX):
  6484. fprintf(stdout,"INFO: REMOVE DC SIGNAL FROM A DISTORTED SOUND.\n");
  6485. fprintf(stdout,"INFO: \n");
  6486. fprintf(stdout,"INFO: Use with \"Distort Multiply\".\n");
  6487. fprintf(stdout,"INFO: \n");
  6488. fprintf(stdout,"INFO: PARAMETERS----------------------------------------------------------\n");
  6489. fprintf(stdout,"INFO: \n");
  6490. fprintf(stdout,"INFO: MINIMUM DURATION OF DC (mS) ...... Minimu duration of any block of DC signal to be removed.\n");
  6491. fprintf(stdout,"INFO: \n");
  6492. break;
  6493. default:
  6494. fprintf(stdout,"ERROR: Unknown PROCESS\n");
  6495. fprintf(stdout,"INFO: \n");
  6496. break;
  6497. }
  6498. return 0;
  6499. }
  6500. void RoomReverbFormat(void)
  6501. {
  6502. fprintf(stdout,"INFO: DELAY TIMES AMPS (& POSITIONS). A Text Datafile.\n");
  6503. fprintf(stdout,"INFO: Each line has either 2 vals (TIME , AMP of one of delays) or 3 (3rd is spatial POSITION in stereo space).\n");
  6504. fprintf(stdout,"INFO: TIMES (seconds) must be increasing. Duplicate times are ignored.\n");
  6505. fprintf(stdout,"INFO: A zero time (no delay) overrides the mix parameter, and determines the level and pan of the (effectively mono) input.\n");
  6506. fprintf(stdout,"INFO: AMP values must be in the range 0.0 to 1.0\n");
  6507. fprintf(stdout,"INFO: Empty lines and lines starting with a semi-colon (e.g. comments) are permitted.\n");
  6508. fprintf(stdout,"INFO: If a Position value is used in any line, outfile will be stereo.\n");
  6509. fprintf(stdout,"INFO: POSITION values are nominally in the range -1 to +1: 0 = centre. If all position values are 0, the output will be mono.\n");
  6510. fprintf(stdout,"INFO: Values beyond these limits result in attenuation according to the inverse-square law, to suggest distance beyond the speakers.\n");
  6511. }