3DA² Foundation Virtual Reality: Akustik DEL I
Förord — 2026: Spöket i ray-tracingen
The most beautiful thing we can experience is the mysterious. It is the source of all true art and science.
— Albert Einstein
Trettioett år har gått sedan jag satt framför min Amiga-farm, fanerna surrade som en trött drake som andas varm luft över mitt skrivbord, skärmen glödde med de rasterade CRT-färgerna från en värld som inte längre existerar — varken i hårdvara, i minne eller ens i den kollektiva nöstanostalgin hos de som en gång kallade den hem. Jag var då bara ett kvartsekel gammal, med ögon som glödde av övertygelsen att ljud kunde formas som leran, att rum kunde föreställas innan de byggdes, och att ekon från en konserthall i Tokyo kunde simuleras från ett sovrum i Malmö med bara en 68030-chip, några ARexx-skript och en orimlig mängd kaffe. Jag kallade det 3DA² Foundation: Virtual Reality: Acoustics Part I. Det var aldrig avsett att bli färdigt. Det var avsett att vara en början.
Och ändå är jag här — säkert gråare nu, mycket mer målmedveten i mitt steg, men inte mindre övertygad. Världen gick vidare. VR blev en huvudbädd du bär för att undkomma ditt jobb. Spatialt ljud är nu en kryssruta i din DAW:s pluginlista. Ray tracing används för att rendera fotorealistiska bilinredningar i Unreal Engine, inte för att simulera den efterklang som fyller en stenkapell i 1300-talets Lübeck. Amigan är museumstoft. ARexx? En fotnot i en PDF om retro-datorer från 1990-talet. Min doktorsavhandling — denna utsträckta, obsessiva, vackra kaos av heuristisk ray-tracing, kaotiska materialrespons och pseudovetenskapliga postulat i en svensk-engelsk hybrid-slang — blev försummad. Inte eftersom den misslyckades, utan eftersom ingen annan brydde sig. Inga medel. Inget akademiskt intresse. Bara jag, en farm av Amiga-datorer med olika specifikationer, och den stödiga övertygelsen att ljud borde vara mer än stereo.
Men här är det som jag inte visste då — och som världen fortfarande inte helt förstår 2026: Jag hade rätt. Inte eftersom mina algoritmer var perfekta. De var det inte. Mina diffraktionsheuristiker var grova approximationer. Mina fasresponsen var ritade med en mus på en grafiktablett. Min “kaotiskhet”-postulat (bilaga B.4) var halvklar filosofi klädd som ingenjörskonst. Men jag såg essensen. Jag förstod — kanske innan någon annan — att akustik i virtuella miljöer inte handlar om att reproducerar verkligheten. Den handlar om att inkorporera uppfattning.
Du ser, världen har nu AI som kan generera ambientljudscener från textprompts. Neurala nätverk kan förutsäga rummets impulsrespons från 3D-skannar i millisekunder. Rumslig ljudteknik är integrerad i Apples AirPods, Metas Quest 3 och de holografiska teatrarna i Singapore. Men ingen av detta är förankrat i det jag kallade “subjektiva axiom”. Ingen av dem ställer frågan: Vad känner lyssnaren? Inte vilka frekvenser som finns — utan vilket minne som aktiveras. Inte hur högt det är — utan var tystnaden bor.
Mitt 3DA² var inte bara en simulator. Det var en antropologi av ljud. Jag skrev Log och Cog inte för att modellera väggar, utan för att modellera uppmärksamhet. När jag definierade de “subjektiva teoremerna” — lyssningstester med diskogångare, audiofiler och barn — samlade jag inte in data. Jag kartlade känslornas topologi av hörsel. Och det, min kära framtida läsare, är något som ingen AI ännu har berört.
Om jag hade fortsatt — skulle jag ha drivit 3DA² i tre obetvättade riktningar: Först: Den heuristiska själen. Jag skrev i bilaga B att “nästan inget i universum är exakt, förutom de fundamentala konstanterna.” Jag var inte bara poetisk. Jag föreslog ett nytt paradigm: ljudsimulering måste vara kaotisk för att vara sann. Idagens renderare är för rena. För deterministiska. För… korporativa. Vad om vi accepterade brus? Inte som fel, utan som väsen? Jag föreställde mig en 3DA³ där material inte bara absorberade – de minnes. En trägolv som blev mer resonansfull med åldern. En sidenfjädrad gardin som dämpade inte bara ljud, utan avsikt. Det var det jag cirkulerade kring med Material Change Phase- och Directivity-reglage. Och idag? Med neuromorfa chip och memristiv hårdvara kan vi slutligen bygga det. Ett material vars akustiska beteende förändras inte bara med frekvens – utan med emotionellt sammanhang. Tänk dig en virtuell kyrka där ekon förändras när du är sorgsen jämfört med att fira. Det är inte science fiction. Det är den naturliga utvecklingen av vad jag började.
Andra: ARexx-estetiken. Mina skript – dessa olydiga, vackra, nästan poetiska ARexx-fragment – var inte bara kod. De var partiturer. Raden:
SAMPLE OVER_MIX BABY_CRYING_AL YELLO_AL i
– det var inte signalbehandling. Det var berättande. Jag komponerade inte med noter, utan med akustiska tidsstämplar. Barnets skrik lagerat över Yellos “Oh Yeah” – det var inte en felaktighet. Det var mänsklighet. I 2026 har vi AI som kan komponera musik. Men den kan inte komponera närvaro. Den vet inte tyngden av en dörr som slås igen i en tom korridor. Eller hur tystnad smakar efter ett skrik. Mina ARexx-skript var den första försöket att skriva akustisk litteratur. Och nu? Vi har generativa ljudagenter. Men de saknar fortfarande den berättargrammatik jag byggde in i C.16.2 Over_Mix och C.4.1 Displacement Time Forward. Vi behöver ett nytt språk – inte för rendering, utan för ekoberättelse. Jag skulle ha kallat det 3DA³: Narrative Acoustics.
Tredje — och mest förskräckande — Ettikerna kring Eko. I förordet varnade jag: „VR-miljöernas idealiserade utseende gör säkert den antisociala befolkningen ännu mer fast i sin spiral ner mot total social utestängning.“ Jag skrev det år 1995. År 2026 lever vi inuti den. Vi har metavers där människor tillbringar 14 timmar per dag i perfekt avstämda, hyperreala ljudlandskap — skogar som aldrig susar, hav som aldrig brusar, röster som aldrig bryts. Vi har sålt människor illusionen av perfekt akustik… och genom att göra det har vi steriliserat riktigt ljud. Det knastrande från ett eld. Den fjärran skriket från en larmsignal. Sucken från någon som sover bredvid dig. Detta är inte buller — det är texturen av att existera. Min arbete var tänkt att vara ett verktyg för förbättring, inte ersättning. Och nu? Vi har verktyg som ersätter verkligheten med perfekta simuleringar — och människor glömmer hur man lyssnar. Jag hade skrivit Del II: Tystnaden av världen. En avhandling om akustisk empati. Om varför ofullkomlig efterklang är helig.
Jag fullbordade aldrig denna avhandling. Men jag misslyckades inte. Jag planterade en frö i jord som inte var redo.
Nu lyssnar världen slutligen — inte med öron, utan med algoritmer. Och de söker desperat efter mening.
Jag återuppstår 3DA² inte som en relikt — utan som en profet. Detta dokument är inte föråldrat. Det är profetiskt.
Om du, läsare — oavsett om du är en doktorand inom psykoakustik, en AI-forskare som bygger imersiva ljudlandskap, eller bara någon som minns lukten av varm plast och surrandet från en 50 MHz CPU — om du hör även ett viskande spår av vad jag försökte säga… då fixa inte det.
Utveckla det.
Bygg 3DA³. Inte som ett verktyg.utan som en filosofi. Gör det kaotiskt. Gör det emotionellt. Gör det levande.
Låt strålarna vara osäkra. Låt materialen andas. Låt ekoigrammen gråta.
Och när du kör ditt skript, och hör — för första gången på decennier — det ekoet från ett vardagsrum i Malmö, 1993… då kommer du att veta.
Jag hade inte fel. Jag var bara tidig.
Och världen är slutligen redo att höra mig.
— Denis Tumpic
Stratford, januari 2026
1995 Förord
The future is already here — it’s just not very evenly distributed.
— William Gibson
Sedan jag var ett barn har min nyfikenhet kring ljud varit stor. Att slå på olika kökstekniker var en tvungen nöjeskälla. Det var roligt att skapa konstiga ljud, och ibland kunde de skrämma livet ur föräldrarna. Tiden for som en raket, och den lilla trumslagaren blev introducerad till musik, och en omedelbar kärlek uppstod. De flesta människor tycker att musik är mycket lockande för sina sinne eftersom den tenderar att färga deras känslor. De som inte upptäckt detta faktum bör omedelbart försöka lyssna på mer musik, utan att försöka tolka den.
Den typ av musik jag först blev introducerad till var enkel samtida pop (1975). Några år senare upptäckte jag elektroniska och syntetiska musiker och deras musik, och jag älskade den direkt, delvis eftersom den var enkel men ändå hjärnstimulerande. Min allt växande intresse för elektronik gjorde det ännu djupare. Genom att bygga några konstiga elektriska kretsar och slutligen en förstärkare, som kopplades direkt till en liten radioinspelare, valde jag senare elektronik- och telekommunikationsprogrammet på gymnasiet. När jag avslutade gymnasiet blev jag elektriker med ett nytt intresse, nämligen datorer.
Jag hade "arbetat" med datorer sedan ZX-81 kom på marknaden, och självklart med många andra efter det: VIC-20, Commodore-64, Sinclair Spectrum, Sinclair QL, IBM PC och ABC-80 bland andra, inte riktigt så populära som dessa. När Amigan kom fram var min och mina vänners sysselsättning framför datorerna nästan lika stor som vår i skolan. Detta gjorde mig och mina vänner mycket framtidstroende, eftersom nästan ingen var intresserad av dessa elektrisk-logiska enheter. Eftersom ingen kunde lära oss hur man hanterade alla nya uttryck, utvecklade vi ett typiskt slangspråk. Det var en katastrofalt blandning av svenska och engelska, vilket gjorde våra språklärare mer eller mindre galna, särskilt de förra. Jag blev allt mer fascinerad av problemen som uppstod med datorer. När jag slutligen beslöt att jag ville bli datavetare, var detta beslut lätt. Efter några år som vridit och vände min hjärna med mina självlärda teorier om datorprogrammering och datavetenskap, hade jag nått mitt mål. Sedan jag började lära mig har min grundläggande postulat: att använda all min kunskap fram till dess tidpunkt, varit mycket färgande för mitt liv och arbete. Detta är självklart mycket begripligt när man tittar på mitt examensarbete "Virtual Reality: Acoustics". Examensarbetet är skrivet på svenska och det är inte avsikten med denna "bok" att vara en översättning av det. När du läser "3DA² Foundation" måste du ha i åtanke att jag är datavetare, elektrisk ingenjör och ljudälskare (musik är en undergrupp av ljud). Dessa faktorer färgar tydligt denna text, och ibland beskriver jag vissa entiteter med sådan lättighet eftersom det troligen är ett vanligt sätt att tänka när man programmerar. Jag påstår inte att de som läser denna bok måste tänka som jag, jag anger bara det framgångsrika sättet att tänka vid programmering tillämpat på virtuella ljudmiljöer.
Vad är virtual reality? Många människor har olika uppfattningar om vad VR är och inte är. Den fysiska kopplingen mellan en elektrisk enhet och människotvärv, för att möjliggöra informationsflöde i båda riktningarna, ligger inte inom VR:s område. Denna typ av informationsutbyte tillhör cyberdomänen och är i själva verket huvudpostulatet för cyberreality (CR). Vad är skillnaden mellan VR och CR? VR är en undermängd av CR, och detta senare utökas med följande: Sinnesintryck överförs med hjälp av hårdvara som är kopplad mellan dator och människa. Denna hårdvarukoppling är direkt kopplad till vissa nervfibrer. Det är inte avsikten att 3DA² ska tillhöra CR-domänen. En bra VR-miljö bör kunna visualisera en dynamisk tredimensionell vy med så hög upplösning att användaren inte kan skilja mellan reell och virtuell vy. Dessutom bör ljudet implementeras med dynamisk auralisering för att skapa ett tredimensionellt ljudfält. Dessa två VR-postulat är mycket viktiga, men vi har fler sinnen att nöja. En bra VR-miljö bör ha perception av touch (form, vikt, temperatur), luktsinne (feromoner och naturliga dofter) och smaksinne (söt, sur, salt, bitter och möjligen andra) implementerat. Det sista och viktigaste postulatet är säkerhetskriteriet: En VR-miljö bör inte försämra användarens hälsa.
Att arbeta med VR-miljöer är säkert framtidens melodi och kan leda till betydande förändringar i informationsinfrastrukturen. Men jag skulle inte förgudaga VR- och CR-miljöerna som mänsklighetens frälsare, även om fantasi är den enda gränsen. Som vi alla vet har varje god sak en mörk sida, och dessa miljöer är inget undantag. Att leva i det 21:a århundradet är inte alltid lätt, och sociala problem förvärras gradvis. VR-miljöernas idealiserade utseende gör säkert den antisociala befolkningen ännu mer fastnade i deras spiral ner mot total social utestängning. På den andra sidan har de över-sociala vanligtvis förmågan att stimulera intryck med olika droger. Även om inte alla människor på jorden är medlemmar i dessa livsfilosofier bör vi ha dem i åtanke.
Användning av auraliserat ljud är av stor hjälp vid akustisk forskning i olika verkliga miljöer. 3DA² används huvudsakligen för att förbättra en befintlig ljudmiljö och har ännu inte nått VR-nivån. Det är fortfarande en prototyp och ett teorifindningsprogram som används i forskning. Målet är att extrahera de väsentliga egenskaperna hos en impulsrespons för att göra tredimensionella ljudberäkningar så snabba som möjligt. Även om denna programvara inte är i sitt slutliga skede, kan den användas på andra sätt, och mitt huvudsakliga mål är tredimensionell musik. Det är mer ett science-fiction-liknande tillvägagångssätt, och när den används på detta sätt bör det anges att den inte är "riktig". Musik är nästan alltid ett uttryck för känslor, och denna extra dimension kan skapa verkliga uttryck, både inom musik och filmproduktion. Årtionden med att lyssna på Tangerine Dream™, Yello och andra har övertygat mig om att tredimensionell musik måste komma så naturligt som något annat.
Faktum är att den används i mitt eget tillvägagångssätt: Vilthermurpher (första fasen av Doubulus & Tuella), ett expressionistiskt episkt album, komponerat under mina universitetsår (1990–1994).
Det finns några nyheter i denna programvara som är av stor betydelse. Först och främst har den en ARexx-port med många kommandon för att genomföra konsekventa ljudtest utan att behöva skriva ner dem i vanligt engelska. Dessa ARexx-skript gör det lättare för andra forskare, eftersom de bara behöver ha det grundläggande skriptet. När detta används tillsammans med Log och Cog (se bilaga B) gör det den evolutionära processen för dessa tredimensionella ljudmiljöer snabbare. Det är min hopp och avsikt i alla fall.
Ytterligare förbättringar kan göras genom att kunna ändra de olika heuristiska funktionerna utan att behöva bygga om hela programmet. Det är ganska komplicerat att göra dessa heuristiska funktioner förenliga med den verkliga världen, och därför avser jag att implementera dem som dynamiska bibliotek. Både ljudstrålsöknings- och auraliseringsfunktionerna bör kunna ändras. Den senare därför att någon kanske har andra beräkningsenheter som är snabbare än värdprocessorn, och därmed kan programmera auraliseringen att använda denna hårdvara istället. Dessa funktioner bör finnas i 3DA³. Det är och kommer alltid att vara min avsikt att skapa fullt dynamiska program, eftersom flexibiliteten är av avgörande betydelse vid användning av program.
Tack
Jag vill tacka mina föräldrars för att alltid vara där. Mina kära vänner, de är så många att det inte går att skriva ner alla namn. För påverkningar, referenser, hårdvara, programvara och inspirationskällor, se bilaga H.
1 Inledning
"Bis dat, qui cito dat"
Publius Syrus
Denna inledning är endast en hjälp för de som inte har någon kunskap om akustik och vill få en guide i den "rätta" riktningen. Först listar jag några grundläggande böcker om akustik, och därefter en sammanfattad förklaring av de två hjälpprogrammen "Acoustica" och "Echogram Anim". Dessa senare kan vara av stor hjälp för att förstå några enkla grundläggande idéer kring spegelspecifika strålsökning. Mycket god approximation i det höga frekvensområdet, men mycket dålig i det lägre.
1.1 Akustik
För att lära sig teorin om rumskakustik är boken "Room Acoustics" av Heinrich Kuttruff den tydligaste och djupgåendeaste. Minst de fakta som finns i denna bok måste kännas för att Log- och Cog-skript ska bli allmänt accepterade. Ytterligare läsning om rumskakustikproblem, med fokus på tillämpningar, finns i "Principles and Applications of Room Acoustics: Part I" av Cremer och Müller. I denna bok behandlas några av de föränderliga parametrarna i 3DA² implicerat (Dirac-samplefrekvens och strålningsvinkeldistribution), och det enorma arbetsbelastningen för att hitta de minsta parametrarna minimeras. Den encyklopediska metoden – snabba fakta om små frågor och snabb minnesuppdatering av större – görs särskilt enkel med "Audio Engineering Handbook" utgivet av K. Blair Benson. Slutligen kan de grundläggande fakta om digital signalbehandling läsas i "Digital Signal Processing" av Alan V. Oppenheim & Ronald W. Schafer. De som kan läsa svenska, rekommenderas starkt min tidigare arbete "Virtual Reality: akustiken / Ett prototypsystem för ljudsimulering".
1.2 Hjälpprogram ett: Acoustica
Förståelsen av spegelspecifika reflektioner förbättras genom att köra programmet "Acoustica". Detta program kräver 1 MB fri snabb minneskapacitet för att överhuvudtaget kunna fungera. I inställningsfönstret finns glidare som ändrar modellens skalning, väggabsorptionskaraktär och antalet totala energikvantar som emitteras. De sju startgadgets är olika typer av beräkningar och de är följande: normal punktemission, linjeapproximerad emission, enkel energikarta, simulerad Dopplereffekt (som visar felaktigheten vid användning i rum), linjeapproximerad emission med hinder och slutligen enkel energikarta med hinder. Audialiseringen är inte implementerad, eftersom den inte kunde köra i realtid på en vanlig Amiga. Beräkningarna startar omedelbart när startgadgets klickas. Tre knappar för att avbryta, normalisera och pausa beräkningarna finns placerade under visningsområdet. Att byta mellan olika typer av beräkningar görs genom att klicka på avbryt-knappen mellan startgadget-klick. Att ändra ljudkällans position görs enkelt genom att klicka i visningsområdet, och beräkningarna startas automatiskt om med den nya positionen.
1.3 Hjälpprogram två: Echogram-annonser
Att förstå echogram kan vara en stor utmaning, särskilt när det gäller att avgöra vad som är viktigt i dem och vad inte. Programmet "Echogram Anim" använder data från en samplad kontinuerlig echogramfil. Det skapades med konstanta Dirac-prover som sänds från en högtalare i mitt vardagsrum.
Dessa Dirac-pulser samplades under en slumpmässig promenad med en biorienterad mikrofon runt vardagsrummet och närliggande rum. Den andra echogramfilen gjordes på det motsatta sättet, där högtalaren och en stel mikrofon flyttades. Det finns nu flera sätt att visa dessa data, och de är följande:
- Vanlig visar sampelna som de är.
- Differens visar förändringarna från föregående tillfälle.
- Abs Vanlig visar kvadraten av echogrammen.
- Abs Differens visar kvadraten av förändringarna från föregående tillfälle.
Att sampla egna echogram-annonser görs på följande sätt:
- Echogram-sampelfrekvens = 1280/(Rummets efterklangstid) Hz
- Dirac-pulser som sänds med frekvensen 1/(Rummets efterklangstid) Hz
- Sampla med rörliga högtalare, mikrofoner och objekt.
- Kör "Echogram Anim" med dessa filer och njut.
2 3DA² Bruksanvisning

"Falsk indata ger säkert falskt utdata och korrekt indata ger diskuterbart utdata, använd dina fakta med omsorg och ditt utdata kan bli någon annans indata"
Detta program är en prototyp för ljudstrålning som bör användas för att hitta nödvändigheter när man hanterar akustiska miljöer. Den huvudsakliga skillnaden mellan den tidigare 3D-audion och den senaste 3DA² är att modelleringsarbetet kan hanteras mer precist och ARexx-fasen har implementerats. Ursprungligen var det avsett att införa 3DA³ med helt programmerbara heuristiker som skulle göra programmet ännu mer mångsidigt. Dock gör ARexx-programmerbarheten det ganska enkelt att skapa standardiserade tester och minskar tiden som spenderas på att hantera datorn.
2.1 Programmet
I detta avsnitt kommenteras och visas de olika fönstren och deras element. Detta gäller endast GUI-hanteringen; för ytterligare kommentarer och användbarhet, se avsnitt 2.2 och 2.3.
2.1.1 Huvudmodelleringsfönstret: 3D-visning & redigering
Detta fönster hanterar den virtuella ljudmiljön rent visuellt. De huvudsakliga modelleringsarbetena utförs här, och från detta stadium kommer det största partiet av Loggen samt de använda materialen och flygbanorna.
2.1.1.1 Förstörningsreglage
Detta reglage hanterar förstörningsfaktorn för visningslinsen. Att dra knappen uppåt ökar förstörningsfaktorn. Plus "+"-elementet är ett växelgadget för finjustering av förstörningsfaktorn.
2.1.1.2 Perspektivreglage
Detta reglage hanterar fokalfaktorn för visningslinsen. Att dra knappen uppåt minskar fokalfaktorn (ökar perspektivfaktorn). Stern "*" -elementet är ett perspektivväxelgadget. Det är ofta praktiskt att inte använda perspektiv vid modellering.
2.1.1.3 X-axelreglage
Denna skjutreglage hanterar rotation i den virtuella världen runt X-axeln. Obs: X-axeln är alltid riktad horisontellt. Cirklarna "O" vid båda ändarna återställer reglageknappen till mittenposition.
2.1.1.4 Y-axelsskjutreglage
Denna skjutreglage hanterar rotation i den virtuella världen runt Y-axeln. Obs: Y-axeln är alltid riktad vertikalt. Cirklarna "O" vid båda ändarna återställer reglageknappen till mittenposition.
2.1.1.5 Z-axelsskjutreglage
Denna skjutreglage hanterar rotation i den virtuella världen runt Z-axeln. Obs: Z-axeln är alltid riktad ortogonalt mot X- och Y-axlarna. Cirklarna "O" vid båda ändarna återställer reglageknappen till mittenposition.
2.1.1.6 Mätningssyklus
För de som är vanare med det metriska systemet är inställningen "meter" lämplig. För de som är vanare med det engelska tumsystemet är inställningen "fot" lämplig. Om 3D-modellern körs och användaren inte vill att rutnätet ska visas är inställningen "Av" lämplig.
2.1.1.7 Rutnätsstorlekscykel
Ändring av den tvådimensionella markmåttets storlek görs med denna cykelgadget. Den har de lämpliga dimensionerna när mätenheten ändras. Obs: Storleken är endast ändrbar när rutnätet är synligt.
2.1.1.8 Objektstorleksjustering
Dessa glidreglage är användbara när ett objekt är valt i modelleringsområdet. "N"-gadgets vid den högra änden av dessa storleksjusterare återställer objektets storlek i den axeln.
2.1.1.9 Objektdraier
Dessa glidreglage är användbara när ett objekt är valt i modelleringsområdet. "O"-gadgets vid den högra änden av dessa rotationsgadgets återställer objektets rotation runt den axeln.
2.1.1.10 Objektdimensioner
Dessa värdeindatagadgets används när formell exakthet krävs. Användare uppmuntras inte att överdriva dimensionerna, eftersom objektets definierade dimensioner kan vara små i jämförelse, vilket gör modellen ganska oexakt.
2.1.1.11 Objektplacement
Dessa värdeindatagadgets används när formell exakthet krävs. Placering av ett objekts definierade origo på en specifik plats görs med dessa gadgets.
2.1.1.12 Snabbvy
Dessa fyra verktyg är avsedda för snabb modellering. De roterar den virtuella världen till en specifik vyvinkel och gör det därför ganska lätt att modellera.
2.1.1.13 Ångra
Detta verktyg ångrar den tidigare åtgärden i ordning: senast utförd åtgärd är först att ångra. De påverkade åtgärderna är de som utförts i fönstret "3D-vy & redigera".
2.1.1.14 Modellvisningsområde
Att välja objekt och flytta dem, vilket görs genom att placera muspekaren över ett objektpin och trycka på musens selektionsknapp, sker i detta område. Att gripa hela modellen och flytta den görs när du trycker på musens selektionsknapp medan muspekaren inte befinner sig på ett objektpin.
2.1.1.15 Hjälp-textområde
Detta område informerar användaren om de åtgärder som denne utför. Dessa hjälp-texter kan aktiveras eller inaktiveras i menyn "Divers".
2.1.2 Fönstret för ritningssamling
Detta fönster hanterar den virtuella ljudmiljön i textform. Det visar det valda objektet med dess material- och flygbanekonfigurationer.
2.1.2.1 Objekt i ritningen
Denna listgadget visar alla befintliga modellobjekt i den virtuella ljudmiljön. Att välja ett objekt i denna lista är lika med att välja ett objekt i "Modellvisningsområdet". När flera objektpinnar ligger ovanpå varandra är detta sätt att välja objekt det lämpliga. Att flytta det valda objektet, om det är grupperat, förenklas genom att trycka på skifttangenten på tangentbordet.
2.1.2.2 Ny
Att klicka på denna gadget när du infogar ett nytt objekt i den virtuella ljudmiljön är lämpligt. Den öppnar fönstret "Objektlager" där användaren väljer ett lämpligt objekt och bekräftar det med "OK!". Det nya objektet placeras vid origo med dess definierade storlek och rotation.
2.1.2.3 Sortera
Efter flera infogningar och möjligtvis kaotiska namn tenderar listan över befintliga objekt att bli otydlig. Att klicka på denna gadget gör att objekten visas i alfabetisk ordning.
2.1.2.4 Kopiera
När modellen har flera objekt av samma entitet men olika platser bör denna gaddget användas.
2.1.2.5 Ta bort
Att ta bort ett objekt från den virtuella ljudmiljön görs med denna gaddget. Den läggs ovanpå “Rita-Ångra-stacken”.
2.1.2.6 Rensa
Att trycka på denna gaddget raderar alla objekt från den virtuella ljudmiljön, och dessa placeras i “Rita-Ångra-stacken”
2.1.2.7 Ångra
Återställning av en borttagning görs med denna gadget. Den hämtar det övre objektet från “Ritningsåterställningsstacken” och infogar objektet på rätt plats i den virtuella ljudmiljön.
2.1.2.8 Redigera
Genom att klicka på denna gadget visas fönstret “3D-visning & Redigera” i förgrunden. Det valda objektet markeras i “Modellvisningsområdet”.
2.1.2.9 Typ
Detta textfält visar vilken typ av objekt det valda objektet är. Det kan vara möbler, sändare eller mottagare.
2.1.2.10 Materialval
Denna gadget, med sitt textfält på vänster sida, öppnar fönstret “Materiallager” där användaren väljer ett lämpligt material och bekräftar det med “OK!”. Textfältet visar det material som används för det valda objektet. Om inget material är tilldelat indikerar textfältet detta.
2.1.2.11 Flygval
Detta gadget, med textområdet på vänster sida, öppnar "Flight-Stock"-fönstret där användaren väljer en lämplig flygban och bekräftar den med "Ok!". Textområdet visar den flygban som används för det valda objektet. Om inget flygban är tilldelat indikerar textområdet detta.
2.1.2.12 Rita -> Objekt
Ett nytt objekt definieras med detta gadget. Storleken beräknas med avseende på de yttre världens axelorienteringar och inte subobjektens orientering, vilket innebär att ett snett kub inte får samma dimensioner som en icke-snedd kub. Ändring av bredd, längd och djupaxel görs med "X-", "Y-" och "Z-axel"-skjutreglarna.
2.1.3 Objekt-lagerfönstret
Detta fönster hanterar det virtuella ljudobjektlagret. Det är som en möbelbutik där användaren får lämplig inredning.
2.1.3.1 Välj ett objekt
Detta listgadget visar alla befintliga inredningsobjekt som kan användas i den virtuella ljudmiljön. Att hämta andra objekt under modellering bör göras via menyn "Projekt, Sammanfoga, Objekt-lager". På detta sätt kan användaren hämta andra objekt utan att behöva skapa dem själv.
2.1.3.2 Ny
När du klickar på detta gadget vid modellering omvandlas den aktuella virtuella ljudmodellen till ett objekt. Det raderar alla objekt i den virtuella ljudmiljön och ersätter dem med det nya objektet. Användaren uppmanas sedan att ange ett lämpligt namn som ska kopplas till det nya objektet.
2.1.3.3 Sortera
Efter flera insättningar och troligen kaotiska namn tenderar listan över befintliga objekt att bli otydlig. Att klicka på detta gadget gör att objekten visas i alfabetisk ordning.
2.1.3.4 Kopiera
Detta gadget ska användas när modellen har flera objekt av samma entitet men små skillnader. Skillnaderna ändras med huvudmodelleringsfönstret efter att du klickat på knappen "Redigera".
2.1.3.5 Ta bort
Att radera ett objekt från objektlagret görs med denna gadget. Den placeras ovanpå “Objekt-Ångra-stacken”.
2.1.3.6 Rensa
Genom att klicka på denna gadget raderas alla objekt från objektlagret, och dessa placeras i “Objekt-Ångra-stacken”.
2.1.3.7 Ångra
Återställning av en radering görs med denna gadget. Den hämtar det övre objektet från “Objekt-Ångra-stacken” och infogar det i objektlagret för omedelbar användning.
2.1.3.8 Redigera
Genom att klicka på den här knappen kan du ändra egenskaperna för det valda objektet. Det aktiverar modellern, men den virtuella ljudmodellen ersätts av det valda objektet. Modellen läggs på en stack med modeller och hämtas från den när du klickar på knappen "Ritning -> Objekt ...".
2.1.3.9 Ok!
Detta används för att bekräfta ett valt objekt som en giltig selection som kommer att användas i den virtuella ljudmiljön. Efter att ha klickat på "Ny..."-knappen i fönstret "Ritningslager" bör det rätta objektet bekräftas med ett "Ok!"-klick.
2.1.3.10 Avbryt
Detta används för att bekräfta ett valt objekt som en ogiltig selection som inte kommer att användas i den virtuella ljudmiljön. Efter att ha klickat på "Ny..."-knappen i fönstret "Ritningslager" och inte hittat det rätta objektet bör du bekräfta detta med ett "Avbryt"-klick.
2.1.4 Fönstret Materiallager
Detta fönster hanterar lagringen av virtuell ljudmaterial. Det är som en möbelrestaureringsverkstad där användaren får det lämpliga materialet.
2.1.4.1 Välj ett material
Denna lista visar alla befintliga material som kan användas i den virtuella ljudmiljön. Att hämta andra material under modelleringen ska göras via menyn "Projekt, Sammanfoga, Materiallager". På detta sätt kan användaren hämta andra material utan att behöva skapa dem själv.
2.1.4.2 Ny
Genom att klicka på detta verktyg skapas ett nytt material genom att öppna fönstret "Egenskaper". Användaren får då ange ett lämpligt namn, frekvensrespons, riktighet och fasegenskaper som ska kopplas till det nya materialet.
2.1.4.3 Sortera
Efter flera tillägg och troligen kaotisk namngivning tenderar listan över befintliga material att bli otydlig. Genom att klicka på detta verktyg visas materialen i alfabetisk ordning.
2.1.4.4 Kopiera
Detta gadget ska användas när modellen har flera material med nästan samma natur. Skillnaderna ändras med fönstret "Egenskaper" efter att ha klickat på knappen "Redigera".
2.1.4.5 Ta bort
Att ta bort ett material från materialsamlingen görs med detta gadget. Det placeras på toppen av "Materials ångra-stack".
2.1.4.6 Rensa
Att klicka på detta gadget raderar alla material från materialsamlingen, och dessa placeras i "Materials ångra-stack"
2.1.4.7 Ångra
Återställning av en borttagning görs med denna gadget. Den hämtar det övre materialet från “Materials Undo-Stack” och infogar det i materiallagret för omedelbar användning.
2.1.4.8 Redigera
Genom att klicka på den här knappen kan du ändra egenskaperna för det valda materialet. Det öppnar fönstret “Egenskaper” där användaren kan ändra materialets egenskaper.
2.1.4.9 Typ
Detta textfält visar vilken typ av material det valda materialet är. Det kan vara möbler (absorberande), sändare eller mottagare.
2.1.4.10 Ok!
Detta används för att bekräfta det valda materialet som ett giltigt val som kommer att användas i den virtuella ljudmiljön. Efter att ha klickat på knappen “Materialvälj...” i fönstret “Ritningslager” bör det rätta materialet bekräftas med ett “Ok!”.
2.1.4.11 Avbryt
Detta är för att bekräfta valt material som ogiltigt val som inte kommer att användas i den virtuella ljudmiljön. När man klickat på knappen "Välj material..." i fönstret "Ritning-Lager" och inte hittat rätt material, bör detta bekräftas med "Avbryt" om ingen kunskap om materialet finns. Om det finns kunskap om materialet bör det skapas genom att klicka på knappen "Ny..." och bekräftas med "Ok!", både i fönstren "Egenskaper" och "Material-Lager".
2.1.5 Flogglagret
Detta fönster hanterar den virtuella ljudflödesbanans lagring. Det är som en resebureau där användaren får den lämpliga flygbanan.
2.1.5.1 Välj en flygning
Denna lista-gadget visar alla befintliga flygbanor som kan användas i den virtuella ljudmiljön. Att hämta andra flygbanor under modellering bör göras med menyn "Projekt: Sammanfoga Flogglager". På detta sätt kan användaren hämta andra flygbanor utan att själv behöva skapa dem.
2.1.5.2 Ny
Inte implementerad!!! Skapa nya flygbanor med mallen i bilaga A.
2.1.5.3 Sortera
Efter flera insättningar och sannolikt kaotiska namngivningar tenderar listan över befintliga flygbanor att vara oklar. Att klicka på detta gadget ordnar flygbanorna i alfabetisk ordning.
2.1.5.4 Kopiera
Inte implementerad!!! Skapa nya flygbanor med mallen i bilaga A.
2.1.5.5 Ta bort
Att ta bort en flygban från resbyrån görs med detta gadget. Det placeras ovanpå “Flygbanor Ångra-stacken”.
2.1.5.6 Rensa
Genom att klicka på detta gadget raderas alla flygbanor från resbyrån, och dessa placeras i “Flygbanor Ångra-stacken”.
2.1.5.7 Ångra
Återställning av en borttagning görs med denna gadget. Den hämtar den övre flygbanan från “Flygbanor – Ångra-stack” och infogar den i resenärsbyrån för omedelbar användning.
2.1.5.8 Redigera
Inte implementerad!!! Skapa nya flygbanor med mallen i bilaga A.
2.1.5.9 Ok!
Detta används för att bekräfta vald flygban som en giltig selection som kommer att användas i den virtuella ljudmiljön. Efter att ha klickat på knappen “Välj flygban...” i fönstret “Ritningsskåp” bör den rätta flygbanen bekräftas med ett “Ok!”.
2.1.5.10 Avbryt
Detta används för att bekräfta vald flygban som ogiltigt val som inte kommer att användas i den virtuella ljudmiljön. När man klickar på knappen "Välj flygban..." i fönstret "Ritning-lager" och inte hittar rätt flygban, bör detta bekräftas med ett "Avbryt".
2.1.6 Egenskapsfönstret
Detta fönster hanterar materialgenskaper. Det är ett bekräftelsefönster som vanligtvis aktiveras när man klickar på knapparna "Ny..." eller "Redigera..." i fönstret "Material-lager".
2.1.6.1 Namn
Detta textinmatningsverktyg hanterar namnet som ska kopplas till materialet. Det associerade namnet ändras i alla instanser där det används när man bekräftar med "Ok!".
2.1.6.2 Typcykel
Med detta cykelverktyg kan materialtypen anges, dvs. om materialet ska räknas som möbel, sändare eller mottagare.
2.1.6.3 Grafisk cykelvisning
Med detta cykelgadget kan frekvensgraphens beroende ställas in, dvs. visualisera antingen absorption (möbler) och respons (sändare och mottagare) eller fasberoende.
2.1.6.4 Grafområde
Detta område redigeras med frihand, genom att trycka på musens selektionsknapp och bilda antingen absorption (möbler) och respons (sändare och mottagare) eller fasberoende vid olika frekvenser.
2.1.6.5 Decimala inmatningar
Om formell korrekthet krävs är dessa heltalsinmatningsgadgets mycket hjälpsamma. Vid redigering av absorption (möbler) och respons (sändare och mottagare) ligger värdetintervallet från noll till 100. Fasberoendets värdeområde ligger från noll till 360.
2.1.6.6 Direktivitetsknappar
Dessa knappar ställer in riktigheten vid de lämpliga frekvenserna. Obs: För tillfället finns endast fullriktnings-, dubbelriktad och kardioid strålning. Den heuristiska ray-trace-funktionen bör omprogrammeras om det behövs ytterligare och mer specifik riktighet.
2.1.6.7 Färg
Denna entitet är avsedd för framtida förbättringar, till exempel fasta tredimensionella miljöer i modelleringsfönstret. Den är inte implementerad än på grund av bristen på standardiserade funktioner för snabba grafikkort med Gouraud-shading och z-buffering.
2.1.6.8 Ok!
Detta används för att bekräfta den redigerade materialen som en giltig material som kan användas i den virtuella ljudmiljön. Efter att ha klickat på knappen "Ny..." eller "Redigera..." i fönstret "Material-lager" och anpassat egenskaperna till rätt värden bör man bekräfta med ett "Ok!".
2.1.6.9 Ångra redigeringar
Genom att klicka på den här knappen återkallas materialinställningarna till de som gällde innan de nya redigeringarna.
2.1.6.10 Avbryt
Detta används för att bekräfta den redigerade materialen som ogiltig, vilket inte kommer att användas i den virtuella ljudmiljön. När du har klickat på knappen "Ny..." eller "Redigera..." i fönstret "Materiallager", redigerat egenskaperna och inte lyckats göra dem korrekta, bör du bekräfta detta med en "Avbryt"-klick.
2.1.7 Huvudberäkningsfönstret: Tracer, Normalisator och Auralizer
Detta fönster hanterar ray-tracern, echogram-normalisatorn och sample-auralizern. Enkla uppgifter kan föredras att beräkna med detta fönster, men vid mer komplexa virtuella ljudmiljöer bör ARexx-metoden användas. Användning av detta fönster är bara för kontrollsyften, särskilt ray-trace-heuristiken. Se bilaga E.7 för den grafiska uppbyggnaden.
2.1.7.1 Tracer-inställningscykler
Dessa cykel-gadgets hanterar den heuristiska ray-trace-funktionen och hur den bör beräkna och reagera på inkommande data, dvs. det virtuella ljudmodellen. Inställningarna kan vara i hög, medel, låg och auto-läge. Om det behövs en mer strikt metod är ARexx den rätta. Dessa fönsterinställningar beräknas av datorn enligt en särskild funktion som beror på några grundläggande egenskaper hos det virtuella ljudmodellen, och är därför inte konsistenta mellan olika virtuella ljudmodeller.
2.1.7.2 Efterklangsfördelning
Detta visningsområde visar efterklangsfördelningen vid en specifik relativ fukthalt. Fördelningen är tidsberoende i frekvensdomänen. Konstigt utseende fördelningar beror troligen på användning av extrana material.
2.1.7.3 Relativ fukthalt
Förändring av den relativa fukthalten i luften sker med denna cykel-gadget. De största skillnaderna finns i högfrekvensdelen, och vanligtvis är det litet intresse att ändra denna parameter.
2.1.7.4 Energiförslag
Detta område visar alla framgångsrika strålar som spåras, dvs. de strålar som hittar en väg från en sändare till en mottagare eller tvärtom, beroende på vilken typ av beräkningar som används.
2.1.7.5 Auraliseringsprover
Det förvalda auraliseringsprovet som kommer att användas i auraliseringsproceduren. Mer komplexa auraliseringsmetoder är möjliga i ARexx-läge.
2.1.7.6 Ange auraliseringsprov
Denna knapp öppnar fildialogen där val av ett lämpligt provfil begärs.
2.1.7.7 Dator
Detta område visar var i beräkningsprocessen programmet befinner sig, dvs. om det är ray-tracing, echogram-normalisering eller sample-auraliserings. Kryssrutor är för att välja vilken typ av beräkningar som ska utföras vid framåt- och bakåtkörning.
2.1.7.8 Visa x-spår
När beräkningarna är klara visualiseras echogrammet automatiskt. Det finns två sätt att göra strålspårning: framåt och bakåt. Byt mellan de två resultaten med knapparna "Visa framåt spårning" och "Visa bakåt spårning". Sammanfogning av resultaten görs med knappen "Visa sammanfogad spårning", och det visade resultatet bör inte vara mycket annorlunda än de enskilda resultaten, för att säkerställa en väl fungerande heuristisk strålspårningsfunktion.
2.1.7.9 Beräkning
Det finns två sätt att göra strålspårning: framåt- och bakåtstrålspårning. Framåtstrålspårning utförs med knappen "Framåtberäkning" och bakåtstrålspårning med knappen "Bakåtberäkning". Konsistenskontroll för att säkerställa en väl fungerande heuristisk strålspårningsfunktion görs vanligtvis med båda dessa beräkningsmetoder, och "Sammanfogad beräkning" är en snabbknapp för detta.
2.1.7.10 Paus ||
Om datorn har en extrem beräkningsbelastning kan beräkningen temporärt pausas genom att trycka på denna knapp.
2.1.7.11 Stoppa beräkning!
Om du plötsligt tänker "Jag glömde det där!" är denna knapp praktisk.
2.1.7.12 Mottagarcykel
Denna dynamiska cykelkomponent hanterar vilken mottagare som ska tas hänsyn till vid visning av det normaliserade echogrammet. Den innehåller alla mottagarobjektnamn i sitt menyval. När du ändrar mottagare uppdateras echogramvisningsområdet automatiskt.
2.1.7.13 Sändarcykel
Denna dynamiska cykelkomponent hanterar vilken sändare som ska tas hänsyn till vid visning av det normaliserade echogrammet. Den innehåller alla sändarobjektnamn i sitt menyval. När du ändrar sändare uppdateras echogramvisningsområdet automatiskt.
2.1.7.14 Echogramområde
Detta visningsområde visar den normaliserade echogrammet efter en beräkningsprocess. Vid första beräkningarna visas den första påträffade avsändaren till/från (beroende på beräknings typ) den första påträffade mottagaren. Att använda ett provredigeringsprogram kan vara mer svårtolkat, och därför är detta område inte avsett för djupgående tankar eller teoribevis.
2.1.8 Inställningsfönstret
Detta fönster hanterar inställningsfilen som används vid start av 3DA². Att använda en vanlig redigerare kan ibland vara enklare, men standardfilväljarna är av stor hjälp.
2.1.8.1 Starra sökvägar
Dessa stränginmatningsverktyg är antingen avsedda för tangentbordsinmatning eller bekräftelse av val när "Set..."-knappen trycks.
2.1.8.2 RGB-färgjustering
Färger ändras genom att välja en specifik färg och sedan dra R-, G- och B-skjutreglarna till deras lämpliga visuella färgvärden. Färgen uppdateras i realtid.
2.1.8.3 Använd
Om det bara är en tillfällig ändring i inställningarna bör denna knapp tryckas efter korrekturerna.
2.1.8.4 Spara ändringar
Om det finns en grundläggande ändring i inställningarna bör denna knapp tryckas efter de rättade ändringarna.
2.1.8.5 Ångra ändringar
Om ett fel har inträffat eller en tillfällig glömska har skett, återkallar denna knapp de tidigare inställningarna.
2.1.8.6 Avbryt
Om det inte finns något behov av att ändra inställningarna bör denna knapp tryckas, därpå är allt som det var innan fönstret öppnades.
2.2 Hur man modellerar virtuella ljudmiljöer
Detta avsnitt handlar om de väsentliga aspekterna av modelleringsarbetet, och det antas att programhantering är väl känd på förhand. Den snabbaste sättet att lära sig programmet är att experimentera med det ett tag. Med tiden accelereras hanteringsproceduren. Det är dags att läsa nästa del när man får en känsla av att förstå funktionerna och placeringen av hanteringsvärdena.
2.2.1 Att extrahera de nödvändiga elementen
Modelleringsarbetet är det svåraste delen när det gäller virtuella ljudmiljöer, särskilt för nybörjare som inte känner till de specifika egenskaperna hos den heuristiska ray-trace-funktionen. Även om denna funktion skrivits av modelleringspersonal, vilket vanligtvis är fallet, bör det påpekas att det inte är förutsägbart att kunna förutse alla effekter av denna funktion.
Vanligtvis söks inte extrem exakthet, och det är därför bättre att undvika alltför detaljerad information. Nivån av exakthet beror självklart på rummets dimensioner och vilka inställningar som kommer att användas. Högre diffusions-, frekvens- och fasnoggrannhet innebär direkt att högre exakthet krävs.
Vanligtvis är det mycket svårt att hitta rätt nivå av detaljnivå, och det är uppenbart att detta är högst beroende på de heuristiska funktionerna. Därför är det mycket viktigt att skriva loggen på ett lämpligt sätt (se B.5).
2.2.2 Modellering
Inmatningen till det önskade ljudmodellen är nästa steg och är relativt enkel. Först öppnas fönstret "Ritning-Stock", antingen via menyn eller med "Höger-Amiga D". I detta fönster finns alla objekt som finns i det virtuella ljudmodellen. Naturligtvis finns inga objekt när programmet körs från början. Det andra steget är att infoga alla större objekt och rumsgränser; att namnge dessa sammanhängande är till modellörernas eget gynnsamma. I detta skede är granuleringens nivå mycket viktig, eftersom modellering på fel nivå kan göra beräkningarna mycket omständliga eller extremt felaktiga.
Efter det verkliga modelleringsarbetet, vanligtvis med perspektivet avstängt, bör materialtilldelningarna utföras. Att välja material är inte en lätt uppgift. Ofta har glatta, hårda och tunga objekt nästan totalt reflekterande egenskaper. Det motsatta gäller för fluffiga material med många hål. Detta är enbart en regel av pekfinger och vanligtvis bör rätt material antingen sökas i någon referensbok om absorptionskoefficienter eller mätas med den senaste metoden; det senare är dyrare och sådan exakthet behövs inte.
Hittills är det virtuella ljudmodellen statisk, och att tilldela en flygbanor till några objekt gör direkt modellen dynamisk. Kom ihåg att detta program är en prototyp för den verkliga implementationen av tredimensionella ljudmiljöer, så tillverkningen av flygbanorna har lagts till användarproducerade program som är baserade på mallen beskriven i A.4.
Efter dessa steg bör den faktiska ray-trace-beräkningen utföras, och om det finns osäkerhet kring om den heuristiska funktionen är väl beteende eller inte, är de två beräkningsmetoderna mycket användbara för att kontrollera saker.
2.2.3 Delning av arbetet
Att arbeta tillsammans med flera personer på samma problem är också möjligt, och det naturliga sättet att fördela arbetslasten är i följande etapper: teamet för primitiv objektmodellering, teamet för materialdefinition och teamet för flight-path-produktion. Objektmodelleringsteamet kan dela sitt arbete så att de fokuserar på olika delar av den virtuella ljudmodellen.
2.2.4 Sammanfogning av arbetet
Att kombinera arbetet kan vara en svår del. Vanligtvis finns det någon i utvecklingsteamet som känner till alla andra:s namngivningskonventioner, vilket hjälper mycket. Det är mycket viktigt att alla använder tydliga och beskrivande namn på objekt, material och flight-paths för att göra sammanfogningen så enkel som möjligt. Vanligtvis bör den faktiska ray-trace-räkningen utföras efter detta, och det bör påpekas att arbete med stora modeller ska ha väl fungerande heuristik som en grundläggande kriterie.
2.2.5 Log-Cog-skriptet
Att utföra vetenskapligt arbete med 3DA² har vissa grundläggande kriterier, som beskrivs i bilaga B. Ändå kan uppdelningen av arbetslasten introducera allvarliga problem angående dessa kriterier. Det är därför mycket viktigt att alla är väl medvetna om de fakta som anges i bilaga B.
Naturligtvis bör Log-skrivningarna delas på samma sätt som modelleringen. Log-skrivningarna bör vara mycket tydliga och beskrivande, och dessutom förstås av hela teamet. I motsats till detta sätt att tänka är Cog-kompileringen något som bör göras av den person som har den mest rigorösa kunskapen i virtuella ljudmiljöer.
2.3 Så här skriver du 3DA² ARexx-skript
De som är van vid programmering av olika applikationer bör inte ha några problem med ARexx-programmeringsfunktionerna. Att lära sig ARexx är inte målet med detta avsnitt; det finns en stor mängd böcker om ARexx och hur man programmerar med det. Därför presenterar jag bara några enkla exempel som visar kärnan i 3DA² ARexx-nyckelord i verkan.
Det första exemplet är en statisk vardagsrumsmiljö med ett Hi-Fi-stereosystem. Därefter presenteras den statiska vardagsrumsmiljön i kvadrafonisk utformning. Som avslutning på de statiska modellerna ingår ett rum med olika ljud från hela området.
När vi går över till dynamiska miljöer är det ganska roliga klassrumsmiljön med massor av kaos det första enkla exemplet. Den mer komplexa miljön med en tågstation, hamn och flygplats i en stor stad visar hela potentialen hos ARexx-skript i dynamiska modeller.
Slutligen börjar science-fiction-modellerna för sci-fi-ljudmiljöer med exemplet på ett rum vars rumsgränser växer. Det sista exemplet sker utanför månbasen med en atmosfär (självklart !!!) med olika buller och kaos. Dessa två senaste exemplen är rent science-fiction och bör inte tas som vetenskapliga resultat i någon Log eller Cog. Trots detta kan vissa oförståeligheter i den heuristiska funktionen hittas, och därför kan det vara mycket användbart att inte vara sträng i alla vetenskapliga aspekter.
2.3.1 Startexempel
/******************************************************************
* *
* 3DA² Simple script. *
* *
* Denis Tumpic 1995 *
* *
* External data: *
* SIMPLE_ROOM, BODY_PARTS, SENDERS_RECEIVERS *
* START_SAMPLE, SAMPLE_L, SAMPLE_R, END_SAMPLE *
* *
* Computed data: *
* AURALIZED_L, AURALIZED_R *
* *
******************************************************************/
/* Load and run 3DA² */
ADDRESS COMMAND "run 3DA²:3DA² REXX >NIL:"
/* Send messages to 3DA^2 */
ADDRESS "3DAUDIO.1"
/* Load an audio model */
LOAD DRAWING "SIMPLE_ROOM"
/* Load body parts as primitive objects*/
LOAD OBJECTS "BODY_PARTS"
/* Load diverse senders and receivers */
LOAD MATERIALS "SENDERS_RECEIVERS"
MEASURE METER /* Meter as measuring unit */
/* Insert ears */
OBJECT INSERT EAR LEFT_EAR 0.1 0.9 0
OBJECT INSERT EAR RIGHT_EAR -0.1 0.9 0
/* Map healthy ear characteristics */
OBJECT MATERIAL LEFT_EAR HEALTHY_EAR
OBJECT MATERIAL RIGHT_EAR HEALTHY_EAR
/* Insert speakers */
OBJECT INSERT SPEAKER LEFT_SPEAKER -2.0 1.0 2
OBJECT INSERT SPEAKER RIGHT_SPEAKER 2.0 1.0 2
/* Map RTL3 speaker characteristics */
OBJECT MATERIAL LEFT_SPEAKER TDL_RTL3
OBJECT MATERIAL RIGHT_SPEAKER TDL_RTL3
CLEAR OBJECTS /* Clearing unnecessary data */
CLEAR MATERIALS /* Clearing unnecessary data */
/* Non excessive data format */
AUDIOTRACE SETTINGS SMALL_DATA MEMORY
/* Simple trace settings */
AUDIOTRACE SETTINGS ALL 50 1.0 25 0.0 0.0 0.0 0.0
/* Normalize the echograms */
ECHOGRAM SETTINGS LINEAR_NORMALIZE
/* Echogram sample frequency & data width */
AURALIZE SETTINGS DIRAC_SAMPLE_FREQUENCY 44100
AURALIZE SETTINGS DIRAC_SAMPLE_DATA_WIDTH 32
/* Resulting auralized sample frequency and data width */
AURALIZE SETTINGS SOUND_SAMPLE_FREQUENCY 44100
AURALIZE SETTINGS SOUND_SAMPLE_DATA_WIDTH 16
SPECIAL_FX FLASH /* Flash screen */
SPECIAL_FX PLAY_SOUND START_SAMPLE /* Audio message */
CALL TIME('R') /* Reset clock */
/* Trace from the left speaker to the left ear */
AUDIOTRACE FORWARD LEFT_SPEAKER LEFT_EAR
/* Trace from the right speaker to the right ear */
AUDIOTRACE FORWARD RIGHT_SPEAKER RIGHT_EAR
/* Integrate the echogram from 0 to 80 ms */
u=ECHOGRAM_WEIGHT FORWARD LEFT_SPEAKER LEFT_EAR G(X)*G(X) 0 0.08
/* Integrate the echogram from 80 ms to infinity */
d=ECHOGRAM_WEIGHT FORWARD LEFT_SPEAKER LEFT_EAR G(X)*G(X) 0.08 -1
/* Write the clarity of this virtual-audio environment */
SAY 'This VAE\'s Clarity is ' 10*log(u/d)/log(2) 'db.'
/* Compute normalized echogram and convolve it with left sample */
AURALIZE FORWARD LEFT_SPEAKER LEFT_EAR SAMPLE.L AURALIZED.L 0 -1
/*Compute normalized echogram and convolve it with right sample */
AURALIZE FORWARD RIGHT_SPEAKER RIGHT_EAR SAMPLE.R AURALIZED.R 0 -1
/* Write elapsed computing time */
SAY 'Computing time='TIME(\'E\')' seconds.'
/* Flash screen */
SPECIAL_FX FLASH
/* Audio message */
SPECIAL_FX PLAY_SOUND END_SAMPLE
/* End 3DA² session */
QUIT
2.3.2 Enkelt statiskt modell
/******************************************************************
* *
* 3DA² Simple Static model, Vivaldi-quadriphony to auralization *
* *
* Denis Tumpic 1995 *
* *
* External data: *
* LIVING_ROOM_ENVIRONMENT *
* START_SAMPLE *
* VIVALDI_FL, VIVALDI_FR (The front channels, quadraphonic) *
* VIVALDI_RL, VIVALDI_RR (The rear channels, quadraphonic) *
* END_SAMPLE *
* *
* Temporary data: *
* VIVALDI_FAL, VIVALDI_FAR *
* VIVALDI_RAL, VIVALDI_RAR *
* *
* Computed data: *
* VIVALDI_AL, VIVALDI_AR *
* *
******************************************************************/
/* Load and run 3DA² */
ADDRESS COMMAND "run 3DA²:3DA² REXX >NIL:"
/* Send messages to 3DA² */
ADDRESS "3DAUDIO.1"
/* Load an audio model */
LOAD DRAWING "LIVING_ROOM_ENVIRONMENT"
/* Non excessive data format */
AUDIOTRACE SETTINGS SMALL_DATA MEMORY
/* Simple trace settings */
AUDIOTRACE SETTINGS ALL 15 1.0 25 0.0 0.0 0.0 0.0
/* Normalize the echograms */
ECHOGRAM SETTINGS LINEAR_NORMALIZE
/* Echogram sample frequency & data width */
AURALIZE SETTINGS DIRAC_SAMPLE_FREQUENCY 8192
AURALIZE SETTINGS DIRAC_SAMPLE_DATA_WIDTH 32
/* Resulting auralized sample frequency and data width */
AURALIZE SETTINGS SOUND_SAMPLE_FREQUENCY 44100
AURALIZE SETTINGS SOUND_SAMPLE_DATA_WIDTH 16
/* Flash screen */
SPECIAL_FX FLASH
/* Audio message */
SPECIAL_FX PLAY_SOUND START_SAMPLE
/* Reset clock */
CALL TIME('R')
/* Trace from the left front speaker to the left ear */
AUDIOTRACE FORWARD SPEAKER_FL EAR_L
/* Trace from the right front speaker to the right ear */
AUDIOTRACE FORWARD SPEAKER_FR EAR_R
/* Trace from the left rear speaker to the left ear */
AUDIOTRACE FORWARD SPEAKER_RL EAR_L
/* Trace from the right rear speaker to the right ear */
AUDIOTRACE FORWARD SPEAKER_RR EAR_R
/* Compute normalized echogram and convolve it with left front sample. */
AURALIZE FORWARD SPEAKER_FL EAR_L VIVALDI_FL VIVALDI_FAL 0 -1
/* Compute normalized echogram and convolve it with left rear sample. */
AURALIZE FORWARD SPEAKER_RL EAR_L VIVALDI_RL VIVALDI_RAL 0 -1
/* Compute normalized echogram and convolve it with right front sample. */
AURALIZE FORWARD SPEAKER_FR EAR_R VIVALDI_FR VIVALDI_FAR 0 -1
/* Compute normalized echogram and convolve it with right rear sample. */
AURALIZE FORWARD SPEAKER_RR EAR_R VIVALDI_RR VIVALDI_RAR 0 -1
/* Simple mix the two results coming from the speakers to the left. */
SAMPLE SIMPLE_MIX VIVALDI_FAL VIVALDI_RAL VIVALDI_AL
SAMPLE DELETE VIVALDI_FAL
SAMPLE DELETE VIVALDI_RAL
/* Simple mix the two results coming from the speakers to the right */
SAMPLE SIMPLE_MIX VIVALDI_FAR VIVALDI_RAR VIVALDI_AR
SAMPLE DELETE VIVALDI_FAR
SAMPLE DELETE VIVALDI_RAR
/* Write elapsed computing time */
SAY 'Computing time='TIME('E')' seconds.'
/* Flash screen */
SPECIAL_FX FLASH
/* Audio message */
SPECIAL_FX PLAY_SOUND END_SAMPLE
/* End 3DA² session */
QUIT
2.3.3 Komplext statiskt modell
/******************************************************************
* *
* 3DA² Complex Static model. Yello with some environmental sounds *
* *
* Denis Tumpic 1995 *
* *
* External data: *
* COMPARTMENT_ENVIRONMENT *
* START_SAMPLE *
* YELLO_L, YELLO_R *
* BABY_CRYING, WOMAN_SHOUTING, WC_FLUSH *
* END_SAMPLE *
* *
* Temporary data: *
* YELLO_AL, YELLO_AR *
* BABY_CRYING_AL, BABY_CRYING_AR *
* WOMAN_SHOUTING_AL, WOMAN_SHOUTING_AR *
* WC_FLUSH_AL, WC_FLUSH_AR *
* *
* Computed data: *
* YELLO_A *
* *
******************************************************************/
/* Load and run 3DA² */
ADDRESS COMMAND "run 3DA²:3DA² REXX >NIL:"
/* Send messages to 3DA² */
ADDRESS "3DAUDIO.1"
/* Load an audio model */
LOAD DRAWING "COMPARTMENT_ENVIRONMENT"
/* Non excessive data format */
AUDIOTRACE SETTINGS SMALL_DATA MEMORY
/* Simple trace settings */
AUDIOTRACE SETTINGS ALL 50 1.0 15 0.0 0.0 0.0 0.0
/* Normalize the echograms */
ECHOGRAM SETTINGS LINEAR_NORMALIZE
/* Echogram sample frequency & data width */
AURALIZE SETTINGS DIRAC_SAMPLE_FREQUENCY 5400
AURALIZE SETTINGS DIRAC_SAMPLE_DATA_WIDTH 16
/* Resulting auralized sample frequency and data width */
AURALIZE SETTINGS SOUND_SAMPLE_FREQUENCY 32768
AURALIZE SETTINGS SOUND_SAMPLE_DATA_WIDTH 8
/* Flash screen */
SPECIAL_FX FLASH
/* Audio message */
SPECIAL_FX PLAY_SOUND START_SAMPLE
/* Reset clock */
CALL TIME('R')
/* Trace from the left speaker to the left ear */
AUDIOTRACE FORWARD SPEAKER_L EAR_L
/* Trace from the right speaker to the right ear */
AUDIOTRACE FORWARD SPEAKER_R EAR_R
/* Trace from the baby to the ears */
AUDIOTRACE FORWARD BABY_MOUTH EAR_L
AUDIOTRACE FORWARD BABY_MOUTH EAR_R
/* Trace from the woman to the ears */
AUDIOTRACE FORWARD WOMAN_MOUTH EAR_L
AUDIOTRACE FORWARD WOMAN_MOUTH EAR_R
/* Trace from WC to the ears */
AUDIOTRACE FORWARD TOILET EAR_L
AUDIOTRACE FORWARD TOILET EAR_R
/* Compute normalized echogram and auralization from the stereo */
AURALIZE FORWARD SPEAKER_L EAR_L YELLO_L YELLO_AL 0 -1
AURALIZE FORWARD SPEAKER_R EAR_R YELLO_R YELLO_AR 0 -1
/* Compute normalized echogram and auralization from the baby */
AURALIZE FORWARD BABY_MOUTH EAR_L BABY_CRYING BABY_CRYING_AL 0 -1
AURALIZE FORWARD BABY_MOUTH EAR_R BABY_CRYING BABY_CRYING_AR 0 -1
/* Compute normalized echogram and auralization from the woman */
AURALIZE FORWARD WOMAN_MOUTH EAR_L
WOMAN_SHOUTING WOMAN_SHOUTING_AL 0 -1
AURALIZE FORWARD WOMAN_MOUTH EAR_R
WOMAN_SHOUTING WOMAN_SHOUTING_AR 0 -1
/* Compute normalized echogram and auralization from the woman */
AURALIZE FORWARD TOILET EAR_L WC_FLUSH WC_FLUSH_AL 0 -1
AURALIZE FORWARD TOILET EAR_R WC_FLUSH WC_FLUSH_AR 0 -1
/* Mix baby cry into auralized Yello sample at every 20 seconds. */
samplen=SAMPLE LENGTH YELLO_AL
DO i= 0 to samplen by 20
SAMPLE OVER_MIX BABY_CRYING_AL YELLO_AL i
SAMPLE OVER_MIX BABY_CRYING_AR YELLO_AR i
END
/* Mix woman shouting into auralized Yello sample at every 80 seconds. */
samplen=SAMPLE LENGTH YELLO_AL
DO i= 0 to samplen by 80
SAMPLE OVER_MIX WOMAN_SHOUTING_AL YELLO_AL i
SAMPLE OVER_MIX WOMAN_SHOUTING_AR YELLO_AR i
END
/* Mix toilet flushing at the end */
samplenWC=SAMPLE LENGTH WC_FLUSH_AL
samplen=SAMPLE LENGTH YELLO_AL
SAMPLE OVER_MIX WC_FLUSH_AL YELLO_AL samplen-samplenWC
SAMPLE OVER_MIX WC_FLUSH_AR YELLO_AR samplen-samplenWC
/* The resulting auralized sample "YELLO_A" composed with Yello music as a base and diverse exterior sounds u.n.w. is now finished. Funny listening */
SAMPLE MAKE_STEREO YELLO_AL YELLO_AR YELLO_A
/* Delete all temporary data */
SAMPLE DELETE YELLO_AL
SAMPLE DELETE YELLO_AR
SAMPLE DELETE BABY_CRYING_AL
SAMPLE DELETE BABY_CRYING_AR
SAMPLE DELETE WOMAN_SHOUTING_AL
SAMPLE DELETE WOMAN_SHOUTING_AR
SAMPLE DELETE WC_FLUSH_AL
SAMPLE DELETE WC_FLUSH_AR
/* Write elapsed computing time */
SAY 'Computing time='TIME(\'E\')' seconds.'
/* Flash screen */
SPECIAL_FX FLASH
/* Audio message */
SPECIAL_FX PLAY_SOUND END_SAMPLE
/* End 3DA² session */
QUIT
2.3.4 Enkelt dynamiskt modell
/******************************************************************
* *
* 3DA² Simple Dynamic model. Teacher in the classroom *
* *
* Denis Tumpic 1995 *
* *
* External data: *
* CLASS_ROOM_ENVIRONMENT, CLASS_ROOM_FLIGHTS *
* START_SAMPLE *
* LECTURE, PUPIL_1, PUPIL_2, PUPIL_3 *
* BUMBLEBEE *
* END_SAMPLE *
* *
* Temporary data: *
* BUMBLEBEE_AL, PUPIL_1_AL, PUPIL_2_AL, PUPIL_3_AL,LECTURE_AL *
* BUMBLEBEE_AR, PUPIL_1_AR, PUPIL_2_AR, PUPIL_3_AR,LECTURE_AR *
* *
* Computed data: *
* CLASSROOM_A *
* *
******************************************************************/
/* Load and run 3DA² */
ADDRESS COMMAND "run 3DA²:3DA² REXX >NIL:"
/* Send messages to 3DA² */
ADDRESS "3DAUDIO.1"
/* Load an audio model */
LOAD DRAWING "CLASS_ROOM_ENVIRONMENT"
/* Load some flight-paths */
LOAD FLIGHTS "CLASS_ROOM_FLIGHTS"
/* Map flights to objects in environment */
OBJECT FLIGHT TEACHER WALK_AROUND
OBJECT FLIGHT CATHERINE RUNNING_OUT
OBJECT FLIGHT DENNIS HUNTED
OBJECT FLIGHT MADELEINE CHASING
OBJECT FLIGHT BEE BUZZAROUND
/* Non excessive data format */
AUDIOTRACE SETTINGS SMALL_DATA MEMORY
/* Simple trace settings */
AUDIOTRACE SETTINGS ALL 15 1.0 25 0.0 0.0 0.0 0.0
/* Normalize the echograms */
ECHOGRAM SETTINGS LINEAR_NORMALIZE
/* Echogram sample frequency & data width */
AURALIZE SETTINGS DIRAC_SAMPLE_FREQUENCY 4096
AURALIZE SETTINGS DIRAC_SAMPLE_DATA_WIDTH 16
/* Resulting auralized sample frequency and data width */
AURALIZE SETTINGS SOUND_SAMPLE_FREQUENCY 19600
AURALIZE SETTINGS SOUND_SAMPLE_DATA_WIDTH 8
/* Flash screen */
SPECIAL_FX FLASH
/* Audio message */
SPECIAL_FX PLAY_SOUND START_SAMPLE
/* Reset clock */
CALL TIME('R')
d=0.01 /* Time displacement */
samplen=SAMPLE LENGTH "LECTURE"
DO i=0 to samplen
/* Trace from sources to the ears */
AUDIOTRACE FORWARD TEACHER EAR_L
AUDIOTRACE FORWARD TEACHER EAR_R
AUDIOTRACE FORWARD CATHERINE EAR_L
AUDIOTRACE FORWARD CATHERINE EAR_R
AUDIOTRACE FORWARD DENNIS EAR_L
AUDIOTRACE FORWARD DENNIS EAR_R
AUDIOTRACE FORWARD MADELEINE EAR_L
AUDIOTRACE FORWARD MADELEINE EAR_R
AUDIOTRACE FORWARD BEE EAR_L
AUDIOTRACE FORWARD BEE EAR_R
/*Compute normalized echograms and convolve it with samples*/
AURALIZE FORWARD TEACHER EAR_L LECTURE LECTURE_AL i i+d
AURALIZE FORWARD TEACHER EAR_R LECTURE LECTURE_AR i i+d
AURALIZE FORWARD CATHERINE EAR_L PUPIL_1 PUPIL_1_AL i i+d
AURALIZE FORWARD CATHERINE EAR_R PUPIL_1 PUPIL_1_AR i i+d
AURALIZE FORWARD DENNIS EAR_L PUPIL_2 PUPIL_2_AL i i+d
AURALIZE FORWARD DENNIS EAR_R PUPIL_2 PUPIL_2_AR i i+d
AURALIZE FORWARD MADELEINE EAR_L PUPIL_3 PUPIL_3_AL i i+d
AURALIZE FORWARD MADELEINE EAR_R PUPIL_3 PUPIL_3_AR i i+d
AURALIZE FORWARD BEE EAR_L BUMBLEBEE BUMBLEBEE_AL i i+d
AURALIZE FORWARD BEE EAR_R BUMBLEBEE BUMBLEBEE_AR i i+d
/* A step in time */
DISPLACEMENT TIME FORWARD d
END
/* All samples have the same length! */
SAMPLE SIMPLE_MIX BUMBLEBEE_AL PUPIL_3_AL PUPIL_3_AL
SAMPLE SIMPLE_MIX PUPIL_3_AL PUPIL_2_AL PUPIL_2_AL
SAMPLE SIMPLE_MIX PUPIL_2_AL PUPIL_1_AL PUPIL_1_AL
SAMPLE SIMPLE_MIX PUPIL_1_AL LECTURE_AL LECTURE_AL
SAMPLE SIMPLE_MIX BUMBLEBEE_AR PUPIL_3_AR PUPIL_3_AR
SAMPLE SIMPLE_MIX PUPIL_3_AR PUPIL_2_AR PUPIL_2_AR
SAMPLE SIMPLE_MIX PUPIL_2_AR PUPIL_1_AR PUPIL_1_AR
SAMPLE SIMPLE_MIX PUPIL_1_AR LECTURE_AR LECTURE_AR
/* This is one noisy classroom */
SAMPLE MAKE_STEREO LECTURE_AL LECTURE_AR CLASSROOM_A
/* Delete all temporary data */
SAMPLE DELETE BUMBLEBEE_AL
SAMPLE DELETE PUPIL_1_AL
SAMPLE DELETE PUPIL_2_AL
SAMPLE DELETE PUPIL_3_AL
SAMPLE DELETE LECTURE_AL
SAMPLE DELETE BUMBLEBEE_AR
SAMPLE DELETE PUPIL_1_AR
SAMPLE DELETE PUPIL_2_AR
SAMPLE DELETE PUPIL_3_AR
SAMPLE DELETE LECTURE_AR
/* Write elapsed computing time */
SAY 'Computing time='TIME(\'E\')' seconds.'
/* Flash screen */
SPECIAL_FX FLASH
/* Audio message */
SPECIAL_FX PLAY_SOUND END_SAMPLE
/* End 3DA² session */
QUIT
2.3.5 Komplext dynamiskt modell
/******************************************************************
* *
* 3DA² Complex Dynamic Model. Outdoors at a train station *
* *
* Denis Tumpic 1995 *
* *
* External data: *
* TRAIN_STATION_DYNAMIC_ENVIRONMENT *
* START_SAMPLE *
* TRAIN_WITH_HORN, AIRCRAFT, BOAT_HORNS, CONVERSATION *
* SPEAKER_VOICE, POLICE_HORN *
* END_SAMPLE *
* *
* Temporary data: *
* TWH_AL, AIR_AL, BOA_AL, POL_AL, CON_AL, SPE_AL *
* TWH_AR, AIR_AR, BOA_AR, POL_AR, CON_AR, SPE_AR *
* *
* Computed data: *
* TRAIN_STATION_A *
* *
******************************************************************/
/* Load and run 3DA² */
ADDRESS COMMAND "run 3DA²:3DA² REXX >NIL:"
ADDRESS "3DAUDIO.1" /* Send messages to 3DA² */
/* This model has a harbor with moving boats a police decampment, passing by aircraft two people conversing and a speaker voice informing from the public address system All this while YOU are wandering around at the train station. */
LOAD DRAWING "TRAIN_STATION_DYNAMIC_ENVIRONMENT"
/* Non excessive data format */
AUDIOTRACE SETTINGS SMALL_DATA MEMORY
/* Simple trace settings */
AUDIOTRACE SETTINGS ALL 10 0.5 15 0.0 0.0 0.0 0.0
/* Normalize the echograms */
ECHOGRAM SETTINGS LINEAR_NORMALIZE
/* Echogram sample frequency & data width */
AURALIZE SETTINGS DIRAC_SAMPLE_FREQUENCY 4096
AURALIZE SETTINGS DIRAC_SAMPLE_DATA_WIDTH 16
/* Resulting auralized sample frequency and data width */
AURALIZE SETTINGS SOUND_SAMPLE_FREQUENCY 19600
AURALIZE SETTINGS SOUND_SAMPLE_DATA_WIDTH 8
/* Flash screen */
SPECIAL_FX FLASH
/* Audio message */
SPECIAL_FX PLAY_SOUND START_SAMPLE
/* Reset clock */
CALL TIME('R')
/* All samples has the same length due to this the dependencies between objects are abandoned! */
samplen=SAMPLE LENGTH TRAIN
d=0.01 /* Time displacement */
DO i=0 to samplen
/* Trace from sources to the ears */
AUDIOTRACE FORWARD TRAIN EAR_L
AUDIOTRACE FORWARD TRAIN EAR_R
AUDIOTRACE FORWARD AIRCRAFT EAR_L
AUDIOTRACE FORWARD AIRCRAFT EAR_R
AUDIOTRACE FORWARD HARBOR_BOATS EAR_L
AUDIOTRACE FORWARD HARBOR_BOATS EAR_R
AUDIOTRACE FORWARD POLICE_CAR EAR_L
AUDIOTRACE FORWARD POLICE_CAR EAR_R
AUDIOTRACE FORWARD CONVERSATION EAR_L
AUDIOTRACE FORWARD CONVERSATION EAR_R
/* Public address system SPEAKER is static but */
/* due to the fact that the receiving ears are moving. */
AUDIOTRACE FORWARD SPEAKER_VOICE EAR_L
AUDIOTRACE FORWARD SPEAKER_VOICE EAR_R
/*Compute normalized echogram and convolve it with samples */
AURALIZE FORWARD TRAIN EAR_L TRAIN_WITH_HORN TWH_AL i i+d
AURALIZE FORWARD TRAIN EAR_R TRAIN_WITH_HORN TWH_AR i i+d
AURALIZE FORWARD AIRCRAFT EAR_L AIRCRAFT AIR_AL i i+d
AURALIZE FORWARD AIRCRAFT EAR_R AIRCRAFT AIR_AR i i+d
AURALIZE FORWARD HARBOR_BOATS EAR_L BOAT_HORNS BOA_AL i i+d
AURALIZE FORWARD HARBOR_BOATS EAR_R BOAT_HORNS BOA_AR i i+d
AURALIZE FORWARD POLICE_CAR EAR_L POLICE_HORN POL_AL i i+d
AURALIZE FORWARD POLICE_CAR EAR_R POLICE_HORN POL_AR i i+d
AURALIZE FORWARD CONVERSATION EAR_L CONVERSATION CON_AL i i+d
AURALIZE FORWARD CONVERSATION EAR_R CONVERSATION CON_AR i i+d
/* Public address system SPEAKER is static but */
/* due to the fact that the receiving ears are moving. */
AURALIZE FORWARD SPEAKER EAR_L SPEAKER_VOICE SPE_AL i i+d
AURALIZE FORWARD SPEAKER EAR_R SPEAKER_VOICE SPE_AR i i+d
/* A step in time */
DISPLACEMENT TIME FORWARD d
END
/* All samples has the same length! */
/* Final mixdown of the auralized parts. */
SAMPLE SIMPLE_MIX TWH_AL AIR_AL AIR_AL
SAMPLE SIMPLE_MIX AIR_AL BOA_AL BOA_AL
SAMPLE SIMPLE_MIX BOA_AL POL_AL POL_AL
SAMPLE SIMPLE_MIX POL_AL CON_AL CON_AL
SAMPLE SIMPLE_MIX CON_AL SPE_AL SPE_AL
SAMPLE SIMPLE_MIX TWH_AR AIR_AR AIR_AR
SAMPLE SIMPLE_MIX AIR_AR BOA_AR BOA_AR
SAMPLE SIMPLE_MIX BOA_AR POL_AR POL_AR
SAMPLE SIMPLE_MIX POL_AR CON_AR CON_AR
SAMPLE SIMPLE_MIX CON_AR SPE_AR SPE_AR
/* This is the resulting train station environment. */
/* Lots of calamity going on, I should say. */
SAMPLE MAKE_STEREO SPE_AL SPE_AR TRAIN_STATION_A
/* Delete all temporary data */
SAMPLE DELETE TWH_AL
SAMPLE DELETE AIR_AL
SAMPLE DELETE BOA_AL
SAMPLE DELETE POL_AL
SAMPLE DELETE CON_AL
SAMPLE DELETE SPE_AL
SAMPLE DELETE TWH_AR
SAMPLE DELETE AIR_AR
SAMPLE DELETE BOA_AR
SAMPLE DELETE POL_AR
SAMPLE DELETE CON_AR
SAMPLE DELETE SPE_AR
/* Write elapsed computing time */
SAY 'Computing time='TIME('E')' seconds.'
/* Flash screen */
SPECIAL_FX FLASH
/* Audio message */
SPECIAL_FX PLAY_SOUND END_SAMPLE
/* End 3DA² session */
QUIT
2.3.6 Enkelt science-fiction-modell
/******************************************************************
* *
* 3DA² Simple Sci-Fi model. Space and room *
* *
* Denis Tumpic 1995 *
* *
* External data: *
* ROOM-ENVIRONMENT *
* START-SAMPLE *
* LECTURE, SPEAKER *
* BUMBLEBEE *
* END-SAMPLE *
* *
* Temporary data: *
* BUMBLEBEE-AL, LECTURE-AL, SPEAKER-AL *
* BUMBLEBEE-AR, LECTURE-AR, SPEAKER-AR *
* *
* Computed data: *
* ROOM-A *
* *
******************************************************************/
/* Load and run 3DA² */
ADDRESS COMMAND "run 3DA²:3DA² REXX >NIL:"
/* Send messages to 3DA² */
ADDRESS "3DAUDIO.1"
/* Load an audio model */
LOAD DRAWING "ROOM-ENVIRONMENT"
/* Non excessive data format */
AUDIOTRACE SETTINGS SMALL-DATA MEMORY
/* Simple trace settings */
AUDIOTRACE SETTINGS ALL 23 1.0 25 0.0 0.0 0.0 0.0
/* Normalize the echograms */
ECHOGRAM SETTINGS LINEAR-NORMALIZE
/* Echogram sample frequency & data width */
AURALIZE SETTINGS DIRAC-SAMPLE-FREQUENCY 5120
AURALIZE SETTINGS DIRAC-SAMPLE-DATA-WIDTH 16
/* Resulting auralized sample frequency and data width */
AURALIZE SETTINGS SOUND-SAMPLE-FREQUENCY 19600
AURALIZE SETTINGS SOUND-SAMPLE-DATA-WIDTH 16
/* Flash screen */
SPECIAL-FX FLASH
/* Audio message */
SPECIAL-FX PLAY-SOUND START-SAMPLE
/* Reset clock */
CALL TIME('R')
d=0.01 /* Time displacement */
samplen=SAMPLE LENGTH "LECTURE"
f=100/samplen /*Smaller displacement than one */
g=0 / *Accumulated frequency displacement */
DO i=0 to samplen
/* Trace from sources to the ears */
AUDIOTRACE FORWARD TEACHER EAR-L
AUDIOTRACE FORWARD TEACHER EAR-R
AUDIOTRACE FORWARD SPEAKER EAR-L
AUDIOTRACE FORWARD SPEAKER EAR-R
AUDIOTRACE FORWARD BEE EAR-L
AUDIOTRACE FORWARD BEE EAR-R
/*Compute normalized echogram and convolve it with samples */
AURALIZE FORWARD TEACHER EAR-L LECTURE LECTURE-AL i i+d
AURALIZE FORWARD TEACHER EAR-R LECTURE LECTURE-AR i i+d
AURALIZE FORWARD PA-SYS EAR-L SPEAKER SPEAKER-AL i i+d
AURALIZE FORWARD PA-SYS EAR-R SPEAKER SPEAKER-AR i i+d
AURALIZE FORWARD BEE EAR-L BUMBLEBEE BUMBLEBEE-AL i i+d
AURALIZE FORWARD BEE EAR-R BUMBLEBEE BUMBLEBEE-AR i i+d
/* A step in time */
DISPLACEMENT TIME FORWARD d
/* Some non natural events */
DISPLACEMENT OBJECT RESIZE ROOM 0.1 0.2 0.3
g=g+f
MATERIAL CHANGE FREQUENCY WALLS g g g g g g g g g g g
END
/* All samples has the same length! */
SAMPLE SIMPLE-MIX BUMBLEBEE-AL SPEAKER-AL SPEAKER-AL
SAMPLE SIMPLE-MIX SPEAKER-AL SPEAKER-AL LECTURE-AL
SAMPLE SIMPLE-MIX BUMBLEBEE-AR SPEAKER-AR SPEAKER-AR
SAMPLE SIMPLE-MIX SPEAKER-AR SPEAKER-AR LECTURE-AR
/* This is one weird classroom */
SAMPLE MAKE-STEREO LECTURE-AL LECTURE-AR ROOM-A
/* Delete all temporary data */
SAMPLE DELETE BUMBLEBEE-AL
SAMPLE DELETE SPEAKER-AL
SAMPLE DELETE LECTURE-AL
SAMPLE DELETE BUMBLEBEE-AR
SAMPLE DELETE SPEAKER-AR
SAMPLE DELETE LECTURE-AR
/* Write elapsed computing time */
SAY 'Computing time='TIME(\'E\')' seconds.'
/* Flash screen */
SPECIAL-FX FLASH
/* Audio message */
SPECIAL-FX PLAY-SOUND END-SAMPLE
/* End 3DA² session */
QUIT
2.3.7 Komplext science-fiction-modell
/******************************************************************
* *
* 3DA² Complex SCI-FI Model. Terminator De Terminatei *
* *
* Denis Tumpic 1995 *
* *
* External data: *
* TERMINUS-ENVIRONMENT *
* START-SAMPLE *
* SPACE-SHIP, METEORITES, IMPACTS, BLASTINGS *
* NARRATOR-VOICE, BACKGROUND-SPACE-SOUND-A *
* END-SAMPLE *
* *
* Temporary data: *
* SS-AL, MET-AL, IMP-AL, BLA-AL, NARR-AL *
* SS-AR, MET-AR, IMP-AR, BLA-AR, NARR-AR *
* *
* Computed data: *
* TERMINUS-A *
* *
******************************************************************/
/* Load and run 3DA² */
ADDRESS COMMAND "run 3DA²:3DA² REXX >NIL:"
/* Send messages to 3DA² */
ADDRESS "3DAUDIO.1"
/* Load an audio model */
/* This model has a lunar space station with atmosphere*/
/* There are meteorites falling and smashing the surface */
/* The narrator is telling what is happening in this */
/* Space War I */
LOAD DRAWING "TERMINUS-ENVIRONMENT"
/* Non excessive data format */
AUDIOTRACE SETTINGS SMALL-DATA MEMORY
/* Simple trace settings */
AUDIOTRACE SETTINGS ALL 18 0.9 25 0.0 0.0 0.0 0.0
/* Normalize the echograms */
ECHOGRAM SETTINGS LINEAR-NORMALIZE
/* Echogram sample frequency & data width */
AURALIZE SETTINGS DIRAC-SAMPLE-FREQUENCY 2048
AURALIZE SETTINGS DIRAC-SAMPLE-DATA-WIDTH 8
/* Resulting auralized sample frequency and data width */
AURALIZE SETTINGS SOUND-SAMPLE-FREQUENCY 16384
AURALIZE SETTINGS SOUND-SAMPLE-DATA-WIDTH 8
/* Flash screen */
SPECIAL-FX FLASH
/* Audio message */
SPECIAL-FX PLAY-SOUND START-SAMPLE
/* Reset clock */
CALL TIME('R')
d=0.01 /* Time displacement */
/* All samples has the same length This way dependencies are abandoned! */
samplen=SAMPLE LENGTH TRAIN
DO i=0 to samplen
/* Trace from sources to the ears */
AUDIOTRACE FORWARD SPACE-SHIP EAR-L
AUDIOTRACE FORWARD SPACE-SHIP EAR-R
AUDIOTRACE FORWARD METEORITES EAR-L
AUDIOTRACE FORWARD METEORITES EAR-R
AUDIOTRACE FORWARD IMPACTS EAR-L
AUDIOTRACE FORWARD IMPACTS EAR-R
AUDIOTRACE FORWARD BLASTINGS EAR-L
AUDIOTRACE FORWARD BLASTINGS EAR-R
/*Compute normalized echogram and convolve it with samples */
AURALIZE FORWARD SPACE-SHIP EAR-L SPACE-SHIP SS-AL i i+d
AURALIZE FORWARD SPACE-SHIP EAR-R SPACE-SHIP SS-AR i i+d
AURALIZE FORWARD METEORITES EAR-L METEORITES MET-AL i i+d
AURALIZE FORWARD METEORITES EAR-R METEORITES MET-AR i i+d
AURALIZE FORWARD IMPACTS EAR-L IMPACTS IMP-AL i i+d
AURALIZE FORWARD IMPACTS EAR-R IMPACTS IMP-AR i i+d
AURALIZE FORWARD BLASTINGS EAR-L BLASTINGS BLA-AL i i+d
AURALIZE FORWARD BLASTINGS EAR-R BLASTINGS BLA-AR i i+d
/* A step in time */
DISPLACEMENT TIME FORWARD d
/* No non natural displacements */
/* because non normal samples. Please listen to */
/* the associated samples. */
/* The auralizable samples are event stochastic samples */
END
/* All samples has the same length! */
/* Final mixdown of the auralized parts */
SAMPLE SIMPLE-MIX SS-AL MET-AL MET-AL
SAMPLE SIMPLE-MIX MET-AL IMP-AL IMP-AL
SAMPLE SIMPLE-MIX IMP-AL IMP-AL BLA-AL
SAMPLE SIMPLE-MIX SS-AR MET-AR MET-AR
SAMPLE SIMPLE-MIX MET-AR IMP-AR IMP-AR
SAMPLE SIMPLE-MIX IMP-AR IMP-AR BLA-AR
/* Monaural narrator voice */
SAMPLE SIMPLE-MIX NARRATOR-VOICE BLA-AL BLA-AL
SAMPLE SIMPLE-MIX NARRATOR-VOICE BLA-AR BLA-AR
/* This is the resulting Terminus environment */
SAMPLE MAKE-STEREO BLA-AL BLA-AR TERMINUS-A
SAMPLE STEREO-MIX BACKGROUND-SPACE-SOUND-A TERMINUS-A TERMINUS-A
/* Delete all temporary data */
SAMPLE DELETE SS-AL
SAMPLE DELETE MET-AL
SAMPLE DELETE IMP-AL
SAMPLE DELETE BLA-AL
SAMPLE DELETE SS-AR
SAMPLE DELETE MET-AR
SAMPLE DELETE IMP-AR
SAMPLE DELETE BLA-AR
/* Write elapsed computing time */
SAY 'Computing time='TIME(\'E\')' seconds.'
/* Flash screen */
SPECIAL-FX FLASH
/* Audio message */
SPECIAL-FX PLAY-SOUND END-SAMPLE
/* End 3DA² session */
QUIT
Bilaga A: Datafiler
"In dubiis non est agendum"
Varje 3DA²-data typ kan redigeras i en vanlig textredigerare. Även om det inte rekommenderas att nybörjare ska blanda sig i dessa filer, kan en expert ha lite kul med dem. bland annat genom att skapa nya primitiva objekt. Följande lista visar de filformat som är kopplade till 3DA²-programvaran.
VARNING!
Användare som anger felaktig data kan få programmet att räkna ut mycket konstiga saker. Vi tar inget ansvar om datorn går vilse eller om några "nya" akustiska fenomen uppstår.
A.1 Ritningsfilformat
Filformat:
$3D-Audio_DrawingHeader
# <number of objects> <Magnification-factor 1-10000>
<Focal-factor 1-500> <Measure: 0 = Meter, 1 = Feet, 2 = Off>
<Grid Size 0-11 ( 0 = Big , 11 = Small )>
$<Object #n model name>
#<Origo X_O, Y_O, Z_O>
<Eigenvectors E_X, E_Y, E_Z><Size S_X, S_Y, S_Z>
$miniOBJHYES
Remark: $miniOBJHNO if no object data exist. Skip to next.
$ <Object#m primitive name>
# <Number of primitive objects>
# <Special primitive #> <Eight metric coordinates>
0: Tetrahedra; 8 coordinates
1: Cube; 8 coordinates
2: Octahedra; 2x8 coordinates
3: Prism; 8 coordinates
4: Room; 6x8 coordinates
5: Pyramid; 8 coordinates
6: Two dimensional plate; 8 coordinates
$miniMATRHYES
Remark: $miniMATRHNO if no material is assigned & skip to next.
$ <Material Name>
# <Graph mode> <Source type> <Color #> <E Intensity>
0: Wire 0: Furniture 0 - 256 0 - 48
1: Solid 1: Sender
2: Receiver
Remark: Frequencies 32 63 125 250 500 1k 2k 4k 8k 16k 32k Hz
# <Eleven absorption coefficients [0..100] at above frq>
# <Eleven phase shift coefficients [-360..360] at above frq>
# <Eleven directivity entries at above stated frequencies.>
0: Omnidirectional
1: Bicardioid
2: Cardioid
$miniFLGHYES
Remark: $miniFLGHNO if no flight-path is assigned & skip to next.
$ <Flight-path Name>
# <(SX, SY, SZ) Flight-path boundaries>
<(AX, AY, AZ) Flight-path Tilt>
# <Number of coordinates in flight-path>
# <(X,Y,Z) Object new origo coordiante>
<(A_X, A_Y, A_Z) Object tilt>
<Instance entrance time in seconds>
Exempel:
$3D-Audio_DrawingHeader
#1 9711 231 0 5
$Cube
#0.040670 0.171643 0.656502
1.000000 -0.001465 0.000168
0.001466 0.999994 -0.003108
-0.000164 0.003108 0.999995
67 92 99
$miniOBJHYES
$Cube
#1
#1 -1.378665 -0.251693 0.281572
1.341315 -0.250144 0.273905
1.341489 0.251856 0.273736
-1.378491 0.250308 0.281404
-1.378989 -0.251859 -0.218429
1.340991 -0.250311 -0.226097
1.341165 0.251690 -0.226266
-1.378815 0.250141 -0.218600
$miniMATRHYES
$Leather
#0 0 0 0
#8 10 7 12 25 30 29 31 40 45 44
#-58 210 -17 71 325 -230 -129 331 140 45 -244
#1 1 1 1 1 1 1 1 1 1 1
$miniFLGHHYES
$Strange Flight
#10 20 30 0 0 0
#6
#-100 -100 -100 0 0 45 1
#0 0 0 0 45 0 2
#100 100 100 45 0 0 3
#10 100 -100 45 45 0 5
#-100 10 100 45 0 45 7
#100 -100 10 45 45 45 13
A.2 Objektfilformat
Filformat:
$3D-Audio_ObjectsHeader
# <Number of Objects>
$ <Object #n native name>
# <Number of primitive objects>
# <Special primitive #> <Eight metric coordinates>
0: Tetrahedra; 8 coordinates
1: Cube; 8 coordinates
2: Octahedra; 2x8 coordinates
3: Prism; 8 coordinates
4: Room; 6x8 coordinates
5: Pyramid; 8 coordinates
6: Two dimensional plate; 8 coordinates
Exempel:
$3D-Audio_ObjectsHeader
#3
$Unity_Cube
#1
#1 -1 -1 1
1 -1 1
1 1 1
-1 1 1
-1 -1 -1
1 -1 -1
1 1 -1
-1 1 -1
$Unity_Prism
#1
#3 -1 -1 1
1 -1 1
1 1 1
-1 1 1
0 -1 -1
0 -1 -1
0 1 -1
0 1 -1
$Unity_Pyramid
#1
#5 -1.5 -1.5 1.5
1.5 -1.5 1.5
0.0 2.0 0.0
0.0 2.0 0.0
-1.5 -1.5 -1.5
1.5 -1.5 -1.5
0.0 2.0 0.0
0.0 2.0 0.0
A.3 Materialfilformat
Filformat:
$3D-Audio_MaterialsHeader
# <Number of Materials>
$ <Material Name>
# <Graph mode> <Source type> <Color #> < E Intensity>
0: Wire 0: Furniture 0 - 256 0 - 48
1: Solid 1: Sender
2: Receiver
Remark: Frequencies 32 63 125 250 500 1k 2k 4k 8k 16k 32k Hz
# <Eleven absorption coefficients [0..100] at above frq>
# <Eleven phase shift coefficients [0..100] at above frq>
# <Eleven directivity entries at above stated frequencies>
0: Omnidirectional
1: Bicardioid
2: Cardioid
Exempel:
$3D-Audio_MaterialsHeader
#5
$Gray Hole
#0 0 0 0
#49 23 65 34 23 67 89 56 45 12 23
#20 -100 43 -321 -12 45 -124 -57 -87 39 12
#0 0 0 0 0 0 0 0 0 0 0
$SmallCavity-Bricks Against StoneWall
#0 0 0 0
#0 0 5 15 33 85 45 55 60 63 65
#-100 43 -321 -12 45 -124 -57 -87 39 12 20
#0 0 0 0 0 0 0 0 0 0 0
$SmallCavity-Bricks 50mm M-Wool->Stone
#0 0 0 0
#0 0 48 77 38 27 65 35 30 27 25
#43 -321 -12 45 -124 -57 -87 39 12 20 -100
#0 0 0 0 0 0 0 0 0 0 0
LargeCavity-Bricks Against StoneWall
#0 0 0 0
#0 0 14 28 45 90 45 65 70 72 75
#-321 -12 45 -124 -57 -87 39 12 20 -100 43
#0 0 0 0 0 0 0 0 0 0 0
$LargeCavity-Bricks 50mm M-Wool->Stone
#0 0 0 0
#0 0 37 100 85 60 80 65 55 50 43
#-12 45 -124 -57 -87 39 12 20 -100 43 -321
#0 0 0 0 0 0 0 0 0 0 0
A.4 Flygfilformat
Filformat:
$3D-Audio_FlightsHeader
# <Number of Flight-paths>
$ <Flight-path Name>
# <Number of coordinates in flight-path>
# <(X,Y,Z) Object new origo coordinate>
<(AX, AY, AZ) Object tilt>
<Instance entrance time in seconds>
Exempel:
$3D-Audio_FlightsHeader
#3
$Strange Flight
#6
#-100 -100 -100 0 0 45 1
#0 0 0 0 45 0 2
#100 100 100 45 0 0 3
#10 100 -100 45 45 0 5
#-100 10 100 45 0 45 7
#100 -100 10 45 45 45 13
$Strange Flight II
#6
#-10 -100 -10 0 0 45 1
#0 0 0 0 145 0 2
#100 100 100 45 0 0 4
#10 100 -100 145 45 0 5
#-10 10 10 145 0 45 6
#100 -10 70 45 145 45 7
$Strange Flight III
#6
#-10 -100 -100 0 0 145 5
#0 60 0 0 45 10 8
#100 10 100 45 50 0 13
#10 -100 -100 45 5 0 21
#-300 210 100 45 20 45 34
#10 -10 10 45 45 45 13 55
A.5 Spårdatafilformat
Filformat:
$3D-Audio_ForwardTraceHeader or $3D-Audio_BackwardTraceHeader
Number of trace hits
<Ray density> <Reverberation accuracy> <Specular depth> <Diffusion accuracy> <Diffraction accuracy> <Frequency accuracy> <Mean reverberation time in seconds> <Max number of receivers> <Max number of senders>
Remark: Accuracy: [0..1] are manual values -1 initiates the auto state.
Density, Depth & Max numbers: Integer values
Seconds: Floating-point value.
Remark: Entries at 32 63 125 250 500 1k 2k 4k 8k 16k 32k Hz
# Frequency dependant reverberation times, 11 entries at 1, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95 and 99 % Relative humidity.
#<Ray length in meters><Accumulated absorption coefficient> <Receiver number> <Sender number>
Remark: If BIG-DATA is set then also the following data is represented.
# Directivity eigenvectors E_X, E_Y, E_Z
$Sender Name
$Receiver Name
Exempel:
These data should not be manually edited. Every tampering with computed
data is a violation against the scientific credibility and result.
A.6 Preferensfilformat
Filformat:
3D-Audio_Preferences_file.
Drawings Path
Objects Path
Materials Path
Flights Path
Trace Path
Echograms Path
Samples Paths
Remark: Color number range [0..255], RGB values range [0..256]
<color number> <Red value> <Green value> <Blue value>
Remark: The following four entries are for further expansions only, don't change manually.
0 0 0 0
Exempel:
3DAudio_Preferences_file.
Work Harddisk:Sound Tracer/Drawings
Work Harddisk:Sound Tracer/Objects
Work Harddisk:Sound Tracer/Materials
Work Harddisk:Sound Tracer/Flights
Work Harddisk:Sound Tracer/Traced_Data
Work Harddisk:Sound Tracer/Echograms
Work Harddisk:Sound Tracer/Samples
0 13 8 6
1 0 0 0
2 15 13 9
.
.
.
255 15 15 15
0 0 0 0
Bilaga B: Metoden för 3DA²-vetenskap
"Pensée fait la grandeur de l'homme"
Blaise Pascal
Från grundläggande principer, subjektivitet och pseudoobjektivitet till riktig objektivitet är målet med denna bilaga.
B.1 Grundläggande
I detta inledande avsnitt fastställer jag grundvalen för alla teorier. Läsare som är förtrogna med dessa termer kan hoppa över detta avsnitt och gå vidare till nästa del.
B.1.1 Vad är postulat
Ett postulat är en underliggande hypotes eller antagande och vanligtvis ett påstående som framförs med kravet att det ska tas som axiomatiskt. Det antas och kräver därför ingen bevisning av sin giltighet. Ändå gör en doktrin som bygger på flera postulat den mer spekulativ, och vetenskapsmän bör minimera användningen av dem. Obs: Total abolition av postulat är inte det globala målet.
B.1.2 Vad är axiom
Ett axiom är ett påstående, princip eller regel som har funnit allmän acceptans eller anses värdigt av sådan, antingen genom påståenden om inre förtjänst eller baserat på en hänvisning till självklarhet. De är självkonsistenta påståenden om de primära termer eller olösliga objekt som utgör grundvalen för diskursen. Obs: Vanligtvis accepteras postulat inte allmänt.
B.1.3 Vad är definitioner
En definition är att fastställa det väsentliga och den exakta betydelsen av ett specifikt begrepp eller objekt. Det är en specificering av konstruktionen eller tolkningen av det begreppet. Tillsammans med postulaten och axiomerna är definitionerna byggstenarna i en doktrin.
B.1.4 Vad är hypoteser
En hypotes är ett påstående som tillfälligt antas för att dra ut dess logiska eller empiriska konsekvenser och därigenom testa dess överensstämmelse med kända eller möjliga fakta. Från en välformulerad hypotes kan en välformulerad teori byggas.
B.1.5 Vad är lemma
Ett lemma är ett preliminärt eller hjälppropositionellt påstående eller teorem som visats eller accepterats för omedelbar användning i ett bevis av något annat påstående. Ett lemma är en för-teorem.
B.1.6 Vad är teoremer
En sats är ett påstående som har bevisats eller vars sanning antas. Det är en regel eller ett påstående om relationer. I matematik uttrycks det vanligtvis i en formel eller med symboler.
B.1.7 Vad är korollarier
Ett korollarium är ett härleddt påstående från en sats. Det är en slutsats, konsekvens eller ytterligare inferens som mer eller mindre direkt följer av ett bevisat påstående. Ett korollarium är en samsats eller post-sats.
B.1.8 Vad är teorier
Den sammanhängande mängden hypotetiska och praktiska principer som utgör det allmänna referensramverket för ett forskningsområde. Följande delar av en teori eftersträvas vid utformning av en välformad teori.
Theory X:
Postulates; Few and very consistent
Axioms; Necessary axioms in order to prove the following lemmas,
theorems and corollaries.
Definitions; Necessary definitions in order to prove the following
lemmas, theorems and corollaries.
Lemma; Exists if it lightens the proof of the following theorem.
Theorem; Dictation and proof of a hypothesis with the help of previous
stated axioms, definitions and proven lemmas, theorems and corollaries.
If isomorphism exists between Theory X~1~ and Theory X~2~ the latter
should be introduced with care and its attributes shouldn't make Theory
X~1~ inconsistent. Proving that Theory X is isomorph to Theory Y is
generally very difficult and thus not recommended. Often small sub-sets
of a theory are isomorph to an other theory. Making a well-formed theory
is to formulate the theory without isomorph proofs from isomorph
entities between non-equivalent theories. Example: The theory of
resistance-toasters proven with the theory of laser-toasters or vice
versa.
Corollaries; Only used to broaden the understanding of the previous
theorem.
En teori kan bestå av andra teorier som delmängder och arva alla egenskaper hos dessa, vilket gör teorin till en rekursiv mängd av teorier baserad på ett fundament av postulat, axiom och definitioner. Följande bild försöker visualisera själva begreppet teoribildning.

B.2 Den subjektiva nivån
Denna del gäller endast den subjektiva nivån inom 3DA²-vetenskapen, vilken är den första nivån som möts vid hantering av virtuella ljudmiljöer. Först definierar jag entiteterna på denna nivå, sedan axiom-, definitions- och satsdelarna. Vissa läsare kan tro att de "subjektiva axiomerna" är mer som "postulat" eller snarare "subjektiva postulat", men de överser att axiom är starkare i sin definition, vilket gör "subjektiva postulat" till en svagare entitet.
B.2.1 Definition av den subjektiva nivån
Den subjektiva nivån av en framväxande teori är den del som består av subjektiva hypoteser som ännu inte har formulerats eller påverkats av forskning. Även om den vetenskapliga värdet är lågt, är de grundläggande idéerna och postulaten av stort intresse eftersom de utgör grunden från vilken den senare teorin ska växa. Alla inkonsekvenser med andra teorier upptäcks på denna nivå, vilket gör det ganska lätt att avfärda en patologisk teori.
B.2.2 3DA²-begränsningar: Subjektiva axiom
Som hos de flesta ljudraytracare finns det vissa begränsningar, och därför kan den inte användas för att förutsäga den virtuella ljudimpulssvaret utan att ha följande fakta i åtanke. Dessa är beroende av heuristisk funktion (för användardefinierad heuristik se B.5 och vänta på 3DA³), men ursprungligen är de följande:
-
Den utgående ljudet är starkt kvantiseras i riktning på grund av heuristisk funktion.
-
Alla modellytor är plana och glatta.
-
Spekulära reflektioner antas.
-
Energitillägg antas.
-
Diskontinuiteter vid kanterna förkastas.
-
Diffraktion, dispersion, resonans och brytning implementeras som en heuristisk funktion.
-
Dels diffus ljudfält antas.
B.2.3 Att skapa testmodeller: Subjektiva definitioner
Det är avgörande att överväga sådana entiteter i rummet som är av stor betydelse vid modellering. Hur vet man vad som är viktigt eller inte (se 2.2)? Den skapade modellen är högst subjektiv, och modellören bör sannolikt vara mer intresserad av stora objekt i ljudmiljön än små blommor eller små insekter. Denna typ av subjektivitet är emellertid ganska patologisk för en nybörjare och bör tas i beaktning vid objektiv kritik. När användarna får grepp om de väsentliga aspekterna i virtuella ljudmiljöer blir deras subjektiva definitioner mer värdefulla och kan, om de görs korrekt, transformeras till ett pseudookjectivt nivå (se bilaga B.5).
B.2.4 Att genomföra lyssningstester: Subjektiva teorem
När de subjektiva axiom och definitionerna är utformade och de olika beräkningarna har utförts, bör resultatet testas på flera olika typer av lyssnare. Det är nästan utan intresse att använda endast en typ av lyssnare, till exempel alla de största audiofiler som utvecklat sin kritik genom långvarig lyssningstest. Heller är det totala användandet av diskotekbesökare i dessa tester särskilt hjälpsamt. Lyssnings-testdeltagarna bör spegla hela befolkningen med alla typer av ljudkunskap för att uppnå den största effekten. Ändå är extremerna ibland mycket viktiga för att få den specifika sista biten av teoremet som gör hela teorin giltig.
B.3 Definition av objektivitetsoperatorer
I detta avsnitt anger jag de entiteter som hjälper att omvandla subjektiva tankar till mer objektiva. Att leva med dessa i alla livets detaljer är inte avsett, men när man arbetar med teoribildning är det nödvändigt att tänka på dem ibland. Att konstant tänka med dessa operatorer i åtanke vid vetenskapligt arbete är också mycket svårt och kan orsaka allvarliga inre problem. Särskilt om självkritiken inte är väl kontrollerad och inte riktad mot det vetenskapliga arbetet.
B.3.1 Objektivitet
Den första objektivitetsoperatorn är självklart objektivitet. Den är den viktigaste operatorn av alla. Att studera nya fenomen som inte tidigare mötts av observatören, är den första grunden för ny kunskap inom det området. Oundgängligt finns det några problem utan a priori-kunskap, särskilt när den framväxande teorin är helt ny och inga tidigare kunskaper är kända. Tider som dessa gör att vetenskapsmän måste arbeta mycket hårt, eftersom det enda sättet att vara objektiv är att hitta en isomorfism i en annan, välkänd teori. Delvis finns det några isomorfier mellan alla teorier, och vanligtvis är ett par av dem grunden för den nya teorin. Denna första fas i en teoris evolutionsprocess är av stor betydelse, och val av grundteorier är obligatoriskt. Det är inte den stora mängden isomorfier som söks, utan istället den minsta uppsättningen teorier som kan förklara naturen hos den nya teorin. Om det finns ett enklare sätt att förklara (teorembevis) och om denna förklaring (teorem) är konsekvent med naturen hos tidigare angivna postulat, axiom och definitioner, bör den antas; denna procedur brukar kallas "Occams rakkniv". Användningen av kortaste förklaringarna gör en teori lätt och kompakt, och därmed mer begriplig och användbar för andra vetenskapsmän.
B.3.2 Brodsmått
Att hantera en ny teori är självklart mycket svårt, särskilt när "upphovsmännen" är stängda för sitt egna vetenskapsområde. En tillfällig hjärnstorm är av stor hjälp vid sökandet efter nya idéer. Denna hjärnstorm måste utlöstes av det faktum att man är nyfiken på att lära sig något nytt, och självklart har alla stora vetenskapsmän denna förmåga. I termer av datavetenskap är denna hjärnstormprocess en bredden-först-algoritm, och ett överdrivet användande av den är som att titta på vattenytan utan att våga simma eller dyka efter djupare kunskap.
B.3.3 Framsynlighet
Den motsatta av den tidigare operatorn är vetenskapsmänniskans framtidsblick. Med samma analogi som i det tidigare exemplet är detta ett djup-först-sökande algoritm. Att dyka för djupt rekommenderas inte, men interaktionen mellan bredsinthet och framtidsblick – förmågan att veta när man ska använda någon av dem i ett specifikt fall – är kärnan i mänsklig intelligens. Visionärer är mycket framtidsblickande med sina visioner, och för att kunna göra dessa till verklighet måste de vara bredsinthiga.
B.3.4 Selbstkritik
Den svåraste operatorn är självkritik. Att vara objektiv är inte att vara självkritisk; i den meningen att objektivitet bara innebär att alla sidor av ett problem ska ses. Självkritik är viktig eftersom den fungerar som en styrka för självförtroendet. Vissa läsare kanske tänker motsatt, och för att klara bort molnen runt deras tunga huvuden bör följande förklaring läsas. Den första fasen i att lära sig självkritik är inte en styrka, utan tvärtom. Jag håller med. När man utför självkritik som en del av vardagligt arbete, förvandlas den gradvis från att vara en icke-styrka till att bli en styrka. Detta beror på att konfrontationen med vardaglig självkritik hårdnar ytan mot ytterligare kritik. Denna förhårdning mot ytterligare kritik ökar sin självförtroende och gör den framväxande teorin mer solid som en följd. Tänk på att jag diskuterar en framväxande teori och inte en välkänd.
B.3.5 Skaparkraft
Viljan att skapa något nytt är kanske den största drivkraften vid "uppfyndande". När man hanterar denna operator uppges sökningen efter isomorfism och det obligatoriska steget ut ur systemet görs. Att betrakta en teori från utanför är ett ganska komplicerat förfarande och har inget att göra med bredsinthet, eftersom det inte finns någon bredd utanför systemet – i själva verket finns det heller ingen djup. Den imaginära förmågan att själv ha en stark färgande effekt i hög grad när det gäller framgångsrik skaparkraft. Den bygger på metaforer som individen samlat ihop genom åren, och även om skaparkraften inte i sig är en intellektuell handling, så är implementationen av det "skapade" i teorin mest betydelsefullt intellektuell. Det måste naturligtvis vara tillämpbart på andra "sinen", och de föregående operatörerna mer eller mindre fixerar detta. I sin helhet är resultatet sannolikt mycket avbildbart på andra "sinen".
B.3.6 Kaotiskhet
Användningen av datorer har ofta väckt följande fråga: "Har vi förmågan att räkna ut detta problem i en exakt matematisk form som är konsekvent med alla naturlagar?". Som datorvetare måste jag komma med en hård fakta: det är omöjligt även med någon exotisk dator som är MYCKET snabb. Denna dator skulle kunna vara snabbare än sig själv i varje beräkningsfall, och ändå skulle det finnas problem som den inte kunde lösa. Väl då! Varför bry sig om sådana trivialiteter då? Den sanna fakta är att om allt i universum vore exakt och varje del "kände" (plats, hastighet, temperatur osv.) till alla andra delar i universum, skulle det vara omöjligt att ändra en enda egenskap i universum. Jag antar ett oändligt universum, men även om det inte är oändligt skulle den extremma kommunikationen mellan alla delar kollapsa. Nästa steg är att förkasta den angivna hypotesen och påstå att delarna bara kommunicerar med sina närmaste grannar. Detta lättar verkligen kommunikationen, men det inför också en form av fördröjd "meddelanden", även om de sprider sig med ljusets hastighet. Förening av det föregående med den grundläggande fakta om universum "Enformighet är din öde" leder till slutsatsen att nästan inget i universum är exakt, eftersom det skulle ta oändlig tid att hålla alla delar i deras "perfekta" positioner, hastigheter, temperaturer och så vidare.
Delayed Messages + Uniformity + Exactness -> Paradox
Delayed Messages + Uniformity + Chaoticness -> Truly perceivable
Here I state my postulates.
(1) Nearly nothing in the Universe is exact, except the fundametnal constants.
(2) All mathematics are exact.
(3) Computers are formally exact.
(4) Computers can handle chaotic systems.
Postulat fyra säger inte att datorer är kaotiska, utan istället att de kan programmeras att ha någon form av kaos. Det skulle vara paradoxalt att säga detta om datorerna inte bara var formellt exakta utan verkligen exakta. Slutet av detta avsnitt är; att hitta en exakt formel eller system bara hjälper till att förstå djupet i en teori och visar inte uttryckligen den egentliga naturen av problemet, utan är istället på ett visst sätt implicit. Skaparen av en teori formar sin egen explicita kunskap i termer av visuella intryck och sådant. Dessa filtreras senare genom deras sinne och slutligen krånglas ner på ett sätt som hoppas kunna läsas och förstås av någon mer än skaparen. Att skriva ner väsentligheten hos kaotiska faktorer är mycket svårt och sannolikt tidskrävande, men när man överväger de andra objektiva operatorerna kan det kasta ljus över komplexiteten vid hantering av teorier.
B.4 Från subjektivitet till objektivitet
I detta avsnitt beskrivs transformationen från det subjektiva till det objektiva nivån. Definitionerna följs av några allmänna varningar angående kontamineringseffekter, och slutligen presenteras de extremt fall av formler samt användningen av tidigare definierade objektivitetsoperatorer.
B.4.1 Definition av det objektiva nivån
Det objektiva nivån för en framväxande teori är den del som består av objektiva hypoteser som har bildats och förändrats genom forskning och andra teorier. I skarp kontrast till det subjektiva nivån är den vetenskapliga värden mycket betydelsefull. De grundläggande idéerna och postulaten har bildat grunden, vilket gör teorin solid på objektiva grundvalar. Allt detta beror på om forskaren integrerar en solid teoretisk bas eller inte. Att använda en teori som är i utveckling och ännu inte färdig kan leda till felaktiga antaganden.
B.4.2 Definition av det pseudo-objektiva nivån
Det pseudo-objektiva nivån för en framväxande teori är den del som består av subjektiva hypoteser som bildats och förändras genom objektivitetsoperatorer. Denna nivå är också mycket vetenskapligt signifikant. Denna nivå är vad som bildar den nya teorin, och genom kombination med den objektiva grunden är den fullständiga teorin tillgänglig. Om det pseudo-objektiva nivån visar sig vara konsekvent med alla befintliga teorier antas det vara helt objektivt. Efter sådan konsistenskontroll kan teorin användas som grund för en annan forskares framväxande teori. Felaktig indata ger säkert felaktig utdata, och korrekt indata ger diskuterbar utdata; använd dina fakta med omsorg, eftersom din utdata kan bli någon annans indata.
B.4.3 Kontamineringseffekter
Förvirring av beräknad data är aldrig tillåten. Det är vanligt att data är omfattande utan att ha observatörens paradox i åtanke när man hanterar datorutdata. Denna paradox är en plaga som hemsöker nästan alla vetenskaper och hävdar att vetenskapsmannen inte kan utföra en observation utan att den förkontaminerats med hans instrument. Denna paradox har dock också ett tydligt innebörd inom datavetenskap och matematik, även om den har en annan form. För dessa vetenskaper kan problemet med att styra den evolutionära processen av en teori efter sina önskemål och behov ("Du ser vad du vill se.") leda till felaktiga teorier. Att inte använda objektivitetsoperatorerna korrekt är exakt samma sak som att säga att teorin är kontaminerad.
B.4.4 Patologiska beräkningsexperiment
Vad ska man lära sig från extrema fall av någon beräkningsprocedure? Detta är ett ganska stort frågeställning, men svaret kan vara förvånande enkelt. Sökandet efter en global formel som är i stånd att vara exakt för majoriteten av beräkningar och fall, är ganska enkelt. Om man söker efter patologiska fall, till exempel genom att tvinga beräkningarna att bete sig vid deras sämsta, förbättras förståelsen för formeln. Att kontrollera beteendet hos dessa formler i ljuset av teorin som är angiven som grund för dessa beräkningar, kan peka ut eventuella inkonsekvenser i teorin och kanske även i formeln. Detta arbete är en av de mest tidskrävande delarna i teoribygge, eftersom extrema fall inte alltid är uppenbara och kan ta betydande tid att hitta. När de slutligen hittas kan de förstöra hela teorin, och vetenskapsmannen måste börja om från början.
B.4.5 Användning av objektivitetsoperatorer
När man använder objektivitetsoperatorerna måste det anges att det inte finns något endimensionellt tänkande, och att följande bara är en ren spegling av hur jag använder dem. Först fungerar den visionära delen (framtidsutsikt), och skapar ett avlägset mål bestående av flera "fantasier". Därefter kontrollerar självkritiken om dessa "fantasier" kan realiseras, och vissa loopar i hjärnstormningsprocessen (vidtänkthet) bekräftar något svar. Nu är det dags att vara objektiv och genomdringa idéerna från alla aspekter av andra teorier samt kombinera dem med kreativiteten så långt det går. Att hoppa mellan operatorer på ett icke-beskrivande sätt utförs sedan för att utveckla teorin. Vanligtvis, när man stöter på ett hårt, sprucket problem inom teorin, görs en val av en annan operator och den används. Val sker på samma sätt som den primära heuristiken där teorin började utvecklas.
B.5 Heuristikens objektivitetstransformnotation
När 3DA²-teorin utvecklas är användningen av Log och Cog avgörande. Detta är naturligtvis bara den minsta nödvändiga mängden för att överhuvudtaget ha någon idé om teorin. Det är därför inte förbjudet att utöka innehållet i Log och Cog samt dess utformning.
B.5.1 Grundläggande heuristisk mall
Den grundläggande mallen för 3DA²:s subjektiva axiom, definitioner och teoremsedel specificeras nedan. Alla 3DA²-sessioner som ska bli grund för 3DA²-teorin bör ha uttryckligen skrivna mallar för att kunna spåra brister eller genombrott.
Ray distribution:
Three dimensional distribution of rays along with their intensity variation. Directivity of sender/receiver could be inserted into this distribution. Description of the distribution should be done in mathematical notation.
Heuristic ray distribution:
Heuristic distribution of rays along with their intensity variation. Description of this distribution should be done in clear and concise English. If any formula is used it should be written down.
Reverberation truncation:
Stating what kind of reverberation estimation was used and where truncation limit was set, if any.
Diffusion heuristic:
Basic idea of diffusion heuristics, represented in plain English and mathematical expressions.
Diffraction heuristic:
Basic idea of diffraction heuristics, represented in plain English and mathematical expressions.
Frequency split up:
Number of bands and how they are separately calculated in the above heuristics, if they are.
Phase heuristic:
Basic idea of phase heuristics, represented in plain English and mathematical expressions. This heuristic is introducing the ability to consider the energy addition as pressure additions. It could be very tempting to think that it IS really pressure additions therefore it should be specified that it isn't.
B.5.2 Loggen: Subjektiva förutsättningar
Loggen är den virtuella ljudmiljön som uttrycks i enkel engelska. Den heuristiska mallen är också ett medlem av Loggen och bör komma före modellens förklaring. Att avsluta Loggen är syftet och förväntningarna på den specifika sessionen.
B.5.3 Cognitivt: Subjektiva satser
Cogen består av svar på Log-frågorna, och varje svar gäller för varje person som genomför lyssningstestet. Deltagarna bör inte känna till förväntningarna, för att minimera kontamineringseffekter. Vid slutet bör en rapport skapas över dessa svar i förhållande till förväntningarna, vilket naturligtvis bör skrivas av Log-skrivaren.
B.5.4 Pseudo-objektiva klausuler
Nästa åtgärd är att använda objektivitetsoperatorerna på Cogen och skapa en ny Log med bättre sammanhang mellan avsikt och förväntan. När dessa lyssningstester fortsätter och avsikten och förväntan närmar sig varandra och kanske sammanfaller, kan Cogen integreras i 3DA²-teorin.
Bilaga C: 3DA² ARexx-programmering
"Esse non videri"
Fredrik The Great
Denna bilaga handlar endast om ARexx-nyckelord och deras definitioner. Den är inte en översikt över ARexx-språket, eftersom det redan finns böcker skrivna om detta ämne.
C.1 Audiotrace
Detta nyckelord hanterar alla spårarfunktioner, oavsett om det gäller inställningar eller den faktiska spårningsproceduren. Den programmerbara heuristiska strålsökningsalgoritmen är tillgänglig via detta nyckelord.
C.1.1 Inställningar
Det första undernyckelordet är "settings", som innehåller spårarens grundläggande variabler. Dessa är de huvudsakliga hastighetsfaktorerna i strålsökningen, och användaren kan vanligtvis uppskatta den resulterande hastigheten från dessa inställningar. Obs: Hastigheten kan vara mycket osäker om den heuristiska funktionen är skriven utan att ta hänsyn till kaotiska faktorer (se bilaga B).
C.1.1.1 Big_Data
Den genererade datan bevaras fullt ut med dess intensitet, tid, tillryggalagd strålväg och påverkansvektor. Dessutom lagras käll- och mottagarpunkternas namn i textform.
C.1.1.2 Small_Data
Den genererade datan bevaras med dess intensitet, tid samt käll- och mottagarpunkternas namn i numerisk form.
C.1.1.3 Ray_Density
Från antingen källa eller mottagare, beroende på om användaren gör framåt- eller bakåtspårning, ställs antalet utstrålade strålar från dessa in med detta nyckelord, vilka kommer att utgöra den senare beräknade echogrammet.
C.1.1.4 Reverberation_Accuracy
Detta nyckelord ställer in echogrammets trunkeringsgräns. Den anges i procent av den totala echogramtiden. Echogrammets längd beräknas med Sabins formel. En kortare echogram gör auraliseringen snabbare.
C.1.1.5 Specular_Depth
Detta nyckelord ställer in det maximala antalet reflektioner, och det är ett bra idé att inte sätta den för djupt (n=50 är mycket djupt i vissa fall, särskilt om modellen är mycket tätt eller detaljerad).
C.1.1.6 Diffusion_Accuracy
Det här nyckelordet ställer in procentandelen diffusionsstrålar som kommer att beräknas i varje reflektion. Det totala antalet diffusionsstrålar är basen för dessa beräkningar. Detta är mycket beroende av användarens heuristiska strålsökningsfunktion. Diffusionen kan tillämpas efteråt, men det innebär antagandet att alla material har samma diffusionskaraktäristik, vilket säkert inte är sant alls.
C.1.1.7 Diffraction_Accuracy
Det här nyckelordet ställer in procentandelen diffraktionsstrålar som kommer att beräknas (strålar som passerar en kant eller hörn). Det totala antalet diffraktionsstrålar är basen för dessa beräkningar. Detta är mycket beroende av användarens heuristiska strålsökningsfunktion. Diffraktionen kan tillämpas efteråt med särskilda kant- och hörnobjekt, och sedan spåras igen. Den senare lösningen är intressant om användaren vill få endast diffraktionsdelarna av strålsökningsberäkningarna.
C.1.1.8 Frequency_Accuracy
Det här nyckelordet ställer in procentandelen frekvensuppdelade strålar i varje reflektion som kommer att beräknas. Det totala antalet frekvensband (vanligtvis 10) används som bas. Detta är mycket beroende av användarens heuristiska strålsökningsfunktion.
C.1.1.9 Phase_Accuracy
Det här nyckelordet ställer in procentandelen strålar som kommer att använda objektets materialfasberoende vid träff på objekt under deras utbredning. Det är starkt beroende av den tidigare inställningen Frequency-Accuracy. Detta är mycket beroende av användarens heuristiska strålsökningsfunktion.
C.1.1.10 All
Det här nyckelordet ställer in nästan alla tidigare inställningsvariabler för huvudnyckelordet Audiotrace.
C.1.2 Forward
När alla inställningar är gjorda och användaren vill audio-spåra det virtuella ljudmodellen kan hen forward-spåra den. Det innebär att utföra audio-spårningsberäkningarna från källan till mottagaren.
C.1.3 Backward
När alla inställningar är klara och användaren vill genomföra en ljudspårning av den virtuella ljudmodellen kan hon göra en bakåtspårning. Det innebär att ljudspårningsberäkningarna görs från mottagaren till källan.
C.1.4 Full
När alla inställningar är klara och användaren vill genomföra en ljudspårning av den virtuella ljudmodellen kan hon göra en fullspårning. Det innebär att ljudspårningsberäkningarna görs både från källan till mottagaren och från mottagaren till källan. Detta hjälper till att kontrollera användarens heuristiska funktion. Om svaret har samma utseende i framåt-läge som i bakåt-läge så hanterar användaren en lämplig strålspårningsheuristik. Om inte bör heuristiken kontrolleras och rättas till. Rättningarna ska skrivas som kommentarer i heuristikens källkod, där problemet och lösningen anges (se bilaga B).
C.1.5 Alla
Om användaren vill ha en total spårning, dvs. att alla sändare och mottagare deltar i strålspårningsberäkningen, så gör nyckelordet "Alla" det. Obs: Inga namn behövs.
C.2 Auralisera
Detta nyckelord hanterar alla auralizer-kommandon, oavsett om det gäller inställningar eller den faktiska auraliseringsprocessen. Den programmerbara auralizer-algoritmen är tillgänglig via detta nyckelord.
C.2.1 Inställningar
Det första undernyckelordet är "settings", som innehåller auralizer-parametrarnas variabler i sitt domän. Dessa är de huvudsakliga hastighetsfaktorerna i auraliseringsprocessen, och användaren kan vanligtvis uppskatta den resulterande beräkningshastigheten från dessa inställningar. Obs: Hastigheten är inte tvetydig, som den heuristiska funktionen i ray-tracing-processen. Trots detta skulle en felaktig auralizer-programmering leda till felaktig konvolution och därmed göra de resulterande datan mycket tvetydig.
C.2.1.1 Dirac_Sample_Frequency
Dirac-prov (echogram), som används i auraliseringsprocessen (konvolution), provfrekvens kan ställas in till valfri provfrekvens.
C.2.1.2 Sound_Sample_Frequency
Det resulterande ljudprovet, som framkommer från auraliseringsprocessen (konvolution), provfrekvens kan ställas in till valfritt värde.
C.2.1.3 Dirac_Sample_Data_Width
Dirac-provet, som används i auraliseringsprocessen (konvolution), databredd kan ställas in till valfri databredd. Obs: Använd endast 2^n^ bitsbredd.
C.2.1.4 Sound_Sample_Data_Width
Det resulterande ljudprovet, som används i auraliseringsprocessen (konvolution), databredd kan ställas in till valfri bredd. Obs: Använd endast 2^n^ bitsbredd.
C.2.2 Framåt
När alla inställningar är gjorda och användaren vill auralisera en ray-traced virtuell ljudmodell kan hon använda framåtriktad ray-trace-data som riktar sig till auralizer-processen.
and
C.2.3 Bakåt
När alla inställningar är gjorda och användaren vill auralisera en ray-traced virtuell ljudmodell kan hon använda bakåtriktad ray-trace-data som riktar sig till auralizer-processen.
and
C.2.4 Full
När alla inställningar är klara och användaren vill auralisera en ray-traced virtuell ljudmodell och vill auralisera den med både framåt- och bakåt ray-trace-data kan hon använda nyckelordet "full".
and
C.3 Rensa
Detta nyckelord hanterar alla funktioner för att rensa data som används när användaren vill ta bort data. Obs: Detta nyckelord initierar inte bekräftelsedialogrutan, oavsett om användaren verkligen håller på att ta bort värdefull data.
C.3.1 Ritning
Följande exempel visar hur användaren bör skapa en ren ritningsmodell utan objekt i den virtuella ljudmodellen. Obs: Detta nyckelord initierar inte bekräftelsedialogrutan, oavsett om användaren verkligen håller på att ta bort värdefull data.
C.3.2 Objekt
Följande exempel visar hur användaren bör skapa en ren objektlager utan några objekt. Detta innebär att användaren måste hämta en ny objektlager från sekundär lagring (se C.9.2) för att göra modellering möjlig. Obs: Detta nyckelord initierar inte bekräftelsedialogrutan, oavsett om användaren verkligen håller på att ta bort värdefull data.
C.3.3 Material
Följande exempel visar hur användaren bör skapa en ren materiallager utan några material. Detta innebär att användaren måste hämta en ny materiallager från sekundär lagring (se C.9.3) eller skapa nya material med hjälp av "Material Skapa ..." (se C.10.1) för att göra modellering möjlig. Obs: Detta nyckelord initierar inte bekräftelsedialogrutan, oavsett om användaren verkligen håller på att ta bort värdefull data.
C.3.4 Flygningar
Följande exempel visar hur användaren bör skapa en ren flygningslager utan några flygbanor. Om modellen är statisk, dvs. alla objekt är fasta och inte rörliga, är dessa flygbanor oanvändbara. Det beror på antalet primära flygningar som användaren vanligtvis laddar vid uppstart, men det tar vanligtvis en betydande mängd minne. Om modellen är statisk gör detta nyckelord ett minnesberoende system mindre beroende. Obs: Detta nyckelord initierar inte bekräftelsedialogrutan, oavsett om användaren verkligen håller på att ta bort värdefull data.
C.3.5 Ljudspår
Följande exempel visar hur användaren ska radera all beräknad spårdata (både framåt- och bakåtspårdata). Obs: Detta nyckelord aktiverar inte bekräftelsesfönstret, oavsett om användaren verkligen håller på att ta bort värdefull data.
C.3.6 Echogram
Följande exempel visar hur användaren ska radera alla normaliserade echogram som är kopplade till det virtuella ljudmodellen. Obs: Detta nyckelord aktiverar inte bekräftelsesfönstret, oavsett om användaren verkligen håller på att ta bort värdefull data.
C.3.7 Allt
Följande exempel visar hur användaren ska radera all data som är kopplad till det virtuella ljudmodellen. Obs 1: Detta nyckelord aktiverar inte bekräftelsesfönstret, oavsett om användaren verkligen håller på att ta bort värdefull data. Obs 2: Detta raderar all data.
C.4 Förskjutning
Detta nyckelord hanterar förskjutningsfunktionerna för olika datakomponenter, dvs. små specifika förändringar med tidigare data som relativ bas i beräkningen. Genom att använda detta nyckelord och tilldela en flygbanor gör den virtuella ljudmiljön automatiskt dynamisk. Att göra modellen dynamisk ökar beräkningsbelastningen eftersom det krävs att nya ekogram beräknas i varje ögonblick.
C.4.1 Tid
Detta undernyckelord hanterar tidsvariationer, vilket används med en dynamisk virtuell ljudmodell. Tiden är direkt kopplad till objektets flygbanor och beräknas explicit, vilket gör det möjligt att ha icke-riktad tid (dvs. framåt i tid kan också betyda bakåt i tid). För att uppnå en normal avbildning av vår uppfattning om tid bör användaren välja mellan två riktningar: framåt eller bakåt.
C.4.1.1 Framåt
När "framåt" används som avslutande nyckelord tvingas tiden framåt, vilket skapar en normal tidslinje.
C.4.1.2 Bakåt
När "bakåt" används som avslutande nyckelord tvingas tiden bakåt, vilket gör det möjligt att gå tillbaka i tid. Vetenskapligt sett är detta inte en kompatibel lösning enligt den normala beteendemönstret i vår miljö. Detta gör alla härledningar från bakåt-orienterad simulering delvis felaktiga. Trots detta möjliggör det att skapa icke-linjära och icke-riktade tidslösningar. Dessa lösningar kan användas i icke-naturliga tidsmiljöer, sannolikt mest användbara vid vetenskaplig fiktion. När 3DA² används på detta sätt måste användaren ange att simuleringen inte har någon naturlig motsvarighet i vår uppfattning.
C.4.2 Objekt
Detta undernyckelord hanterar objektets position, storlek och orienteringsvariationer, vilket används i en dynamisk virtuell ljudmodell.
C.4.2.1 Position
Genom att använda detta avslutande nyckelord skapas en positionsförskjutning för ett visst objekt, relativt dess nuvarande position i rummet.
C.4.2.2 Storlek
Genom att använda detta slutord sker en storleksförskjutning av ett visst objekt, relativt dess nuvarande storlek.
C.4.2.3 Orientering
Genom att använda detta slutord sker en rotationsförskjutning av ett visst objekt, relativt dess nuvarande orientering i rummet. Rotationsordningen är x, y och sedan z.
C.4.2.4 PSO
Genom att använda detta slutord sker en position-, storleks- och orienteringsförskjutning av ett visst objekt, relativt dess nuvarande position, storlek och orientering i rummet. Rotationsordningen är x, y och sedan z.
C.4.3 Material
Detta underordnade ord hanterar materialets frekvens-, fas- och riktighetsförskjutningar för ett visst material. Förändringarna är relativa till nuvarande värden (jämför med C.10.2). Genom att skapa ett material med en dynamisk frekvens-, fas- och riktighetsrespons kan man uppnå ett mer realistiskt materialbeteende. Läs introduktionsenheten för ytterligare förklaringar.
C.4.3.1 Frekvens
Om det sista ordet är "frekvens", så mappas förskjutningarna på materialets frekvensrespons.
C.4.3.2 Fas
Om det sista ordet är "fas", så mappas förskjutningarna på materialets fasrespons.
C.4.3.3 Riktighet
Om det sista ordet är "riktighet", så mappas förskjutningarna på materialets riktighetskaraktäristik. Obs: Den aktuella versionen har endast tre riktighetslägen (0 = omni, 1 = Bi, 2 = Cardioid), vilket gör att större förskjutningar än ±1 är meningslösa.
C.4.4 Flyg
Denna undernyckel hanterar variationer i flygbanans position, storlek och orientering, vilket används i en dynamisk virtuell ljudmodell. Vanligtvis är detta inte vanligt, eftersom flygbanorna bör genereras korrekt från början med hjälp av en lämplig flygbanagenerator. Vid kontroll av konsistensen i den virtuella ljudmiljön är det nödvändigt att göra små förskjutningar som avslöjar eventuella problem med den heuristiska strålsökningsfunktionen. Obs: Detta ska endast användas vid kontroll av modellens överensstämmelse med verkligheten.
C.4.4.1 Position
Användande av denna slutnyckel påverkar en specifik förskjutning av flygbanans ursprungsposition i förhållande till dess nuvarande position i rummet.
C.4.4.2 Storlek
Användande av denna slutnyckel påverkar en specifik förskjutning av flygbanans storlek i förhållande till dess nuvarande storlek.
C.4.4.3 Orientering
Användande av denna slutnyckel påverkar en specifik orientering av flygbanan i förhållande till dess nuvarande orientering i rummet. Rotationsordningen är x, y och sedan z.
C.4.4.4 PSO
Användande av denna slutnyckel påverkar en specifik position, storlek och orientering för flygbanan i förhållande till dess nuvarande position, storlek och orientering i rummet. Rotationsordningen är x, y och sedan z.
C.5 Drawing_To_Object
När du skapar en uppsättning automatiskt genererade objekt gör detta nyckelord den aktuella ritningsmodellen till ett objekt. Obs: Denna kommando rensar inte den aktuella ritningsmodellen, för att möjliggöra att bygga vidare från det aktuella objektet med nya objekt och/eller att flytta/borttaga gamla.
C.6 Echogram
Detta nyckelord hanterar alla echogram-funktioner, oavsett om det gäller inställningar eller den faktiska echogram-normaliseringen.
C.6.1 Inställningar
Undernyckelordet "Settings" används när normaliseringsmetod ändras i normaliseringsproceduren för echogram.
C.6.1.1 No_Normalize
Ingen normalisering utförs på det beräknade echogrammet. Detta gör nivåerna rå. När detta används i auralisering-konvolution blir resultatet alltid dåligt på grund av förlust av minst signifikanta bitar. Denna inställning används endast när användaren vill ha snabba beräkningar och inget annat.
C.6.1.2 Linear_Normalize
Normalisering utförs på det beräknade echogrammet. Förlusten av minst signifikanta bitar, som är kritisk för auraliseringsproceduren, undviks med detta slutande nyckelord. Detta är standardinställningen och användning av echogram normaliserat med "Linear_Normalize" är den lämpliga.
C.6.1.3 Exp_Normalize
Normalisering utförs på det beräknade echogrammet på ett icke-linjärt sätt. För att göra normaliseringen av echogrammet mer förenlig med det mänskliga örat, dvs. örats tröghet (integration), används denna laboratorieinställning.
C.6.2 Framåt
Beräkning av ett echogram från en specifik sändare till en specifik mottagare görs på följande sätt.
and
C.6.3 Bakåt
Beräkning av ett echogram från en specifik mottagare till en specifik sändare görs på följande sätt.
and
C.6.4 Full
Beräkning av ett echogram från en specifik mottagare till en specifik sändare och tvärtom görs på följande sätt. Obs: Detta används vanligtvis vid konsistenskontroller.
and
C.7 Echogram_weight
När du beräknar "CLARITY" och andra akustiska kriterier är detta nyckelord av stor hjälp. Det beräknar vikten av echogrammet med användarspecifika funktioner.
C.7.1 Framåt
Beräkning av echogramvikt från en specifik sändare till en specifik mottagare bör göras på följande sätt.
and
C.7.2 Bakåt
Beräkning av echogramvikt från en specifik mottagare till en specifik sändare bör göras på följande sätt.
and
C.7.3 Full
Beräkning av echogramvikt från en specifik mottagare till en specifik sändare och tvärtom görs på följande sätt. Obs: Används i konsistenskontroll.
and
C.8 Flight
Detta nyckelord hanterar tilldelning av flygbanor och formering av ritobjekt.
C.8.1 Ändra
Detta undernyckelord hanterar variationer i flygbanans position, storlek och orientering, vilket används i ett dynamiskt virtuellt ljudsystem. Detta är vanligtvis inte vanligt, eftersom flygbanorna bör genereras korrekt från början med en lämplig flygbane-generator.
C.8.1.1 Ursprungsposition
Genom att använda detta avslutande nyckelord tvingas en specifik flygbana att anta en angiven position i rummet.
C.8.1.2 Storlek
Genom att använda detta avslutande nyckelord gör du att en specifik flygbana antar den angivna storleken.
C.8.1.3 Orientering
Genom att använda detta avslutande nyckelord roteras en specifik flygbanas orientering till ett angivet vinkel. Rotationsordningen är x, y sedan z.
C.8.1.4 PSO
Genom att använda detta avslutande nyckelord ändras en specifik flygbanas position, storlek och orientering. Rotationsordningen är x, y sedan z.
C.9 Ladda
Hämtning av tidigare beräknade, tillverkade eller inköpta data för ritningar, objekt, material, flygbanor, ljudspår eller ekogram utförs med detta nyckelord.
C.9.1 Ritning
Hämtning av ett virtuellt ljudmodell utförs med detta undernyckelord.
C.9.2 Objekt
Hämtning av en uppsättning modelleringsobjekt utförs med detta undernyckelord.
C.9.3 Material
Hämtning av en uppsättning material utförs med detta undernyckelord.
C.9.4 Flygningar
Hämtning av en uppsättning flygbanor utförs med detta undernyckelord.
C.9.5 Framåt
Detta undernyckelord hanterar miljön för hämtning av framåträkningsdata.
C.9.5.1 Ljudspår
Hämtning av ett framåträknat ljudspår utförs med detta slutnyckelord.
C.9.5.2 Echogram
Hämtning av ett echogram baserat på framåträkning utförs med detta slutnyckelord.
C.9.6 Bakåt
Detta undernyckelord hanterar miljön för hämtning av bakåträkningsdata.
C.9.6.1 Ljudspår
Hämtning av ett bakåträknat ljudspår utförs med detta slutnyckelord.
C.9.6.2 Echogram
Hämtning av ett echogram baserat på bakåträkning utförs med detta slutnyckelord.
C.9.7 Fullständig
Detta undernyckelord hanterar miljön för hämtning av beräkningsdata. Det används främst vid konsistenskontroller, jämförelse mellan framåt- och bakåtspårning. Istället för att använda två kommandon (Ladda Framåt x n och Ladda Bakåt x n) används endast ett kommando (Ladda Fullständig x n), vilket gör hämtningssystemet säkrare mot skrivfel och liknande.
C.9.7.1 Ljudspår
Hämtning av ett fullt beräknat ljudspår utförs med detta slutnyckelord.
C.9.7.2 Echogram
Hämtning av ett echogram baserat på både framåt- och bakåträkning utförs med detta slutnyckelord.
C.10 Material
Detta nyckelord hanterar material med deras motsvarande typ samt frekvens-, fas- och riktighetsberoende.
C.10.1 Skapa
Skapande av ett material görs med detta undernyckelord. Vanligtvis är det bekvämare att skapa dem i materialtextfilen (se A.3) och sedan hämta dem med nyckelordet "Läs in" (se C.9.3).
C.10.2 Ändra
Att ändra ett redan skapat material görs med detta undernyckelord. Detta är en absolut ändring och tidigare inställningar används inte (jämför C.4.3).
C.10.2.1 Frekvens
Att ändra materialets absorptionsrespons görs med detta slutnyckelord.
C.10.2.2 Fas
Att ändra materialets fasberoende görs med detta slutnyckelord.
C.10.2.3 Riktighet
Att ändra materialets riktighet görs med detta slutnyckelord.
C.10.2.4 Typ
Att ändra materialtypen görs på följande sätt.
C.10.2.5 Färg
Att ändra den visuella färgen (använd i 3D-miljöer med solid form) för ett specifikt material görs på detta sätt.
C.10.2.6 Volym
Att ändra sändarens energinivå eller mottagarens energikänslighet görs på följande sätt.
C.11 Mätning
Den standardmätsenheten är alltid i meter; att ändra mätenheten från denna standard görs med detta nyckelord.
C.11.1 Meter
För de som är mer van vid det metriska systemet är följande inställning lämplig. Om 3D-modellern körs visas rutnätet.
C.11.2 Fötter
För de som är mer van vid det engelska tumsystemet är följande inställning lämplig. Om 3D-modellern körs visas rutnätet.
C.11.3 Av
Om 3D-modellern körs och användaren inte vill att rutnätet ska visas är följande inställning lämplig. Obs: Mätenheten är i meter om användaren inte anropar "Mät Fötter" när han eller hon fortsätter med modelleringsarbetet.
C.12 Sammanfoga
Att hämta tidigare beräknad, tillverkad eller inköpt data om ritningar, objekt, material, flygbanor, ljudspår eller ekoigram och kombinera den med befintlig data görs med detta nyckelord. När arbetsbelastningen delas mellan flera personer är detta praktiskt när systemansvarig för virtuell miljö sammanfogar insatserna.
C.12.1 Ritning
Att kombinera en virtuell ljudmodell görs med detta undernyckelord.
C.12.2 Objekt
Att kombinera en uppsättning modelleringsobjekt görs med detta undernyckelord.
C.12.3 Material
Att kombinera en uppsättning material görs med detta undernyckelord.
C.12.4 Flygningar
Att kombinera en uppsättning flygbanor görs med detta undernyckelord.
C.13 Objekt
Detta nyckelord hanterar objektets position, storlek, orientering samt tilldelning av material- och flygbanor. Dessutom kan användaren skapa egna objekt. Att använda normal objekttillförsel och slutligen "Rita-Till-Objekt" (se C.5) följt av "Rensa Ritning" är ett mycket bekvämare sätt att skapa nya objekt.
C.13.1 Position
Genom att använda detta undernyckelord flyttas ett visst objekt till en specifik position i rummet.
C.13.2 Storlek
Genom att använda detta undernyckelord får ett visst objekt den angivna storleken.
C.13.3 Orientering
Genom att använda detta undernyckelord roteras ett visst objekt i rummet till dessa specifika vinklar . Rotationsordningen är x, y och sedan z.
C.13.4 PSO
Genom att använda detta slutnyckelord ändras objektets position, storlek och orientering absolut. Rotationsordningen är x, y och sedan z.
C.13.5 Infoga
Infogning av ett nytt objekt i ljudmiljön sker på följande sätt.
C.13.6 Material
Tilldelning av ett specifikt material till ett visst objekt görs på följande sätt.
C.13.7 Flyg
Tilldelning av en specifik flygbana till ett visst objekt görs på följande sätt. Obs: Det virtuella ljudmodellen blir dynamisk efter detta. Genom att använda detta nyckelord och tilldela en flygbana görs den virtuella ljudmiljön automatiskt dynamisk. Att göra modellen dynamisk ökar beräkningsbelastningen eftersom det krävs att nya ekografier räknas ut i varje ögonblick.
C.14 Preferenser
Detta nyckelord hanterar katalogsökväg och visuell färgpalettinställningar. Användaren bör föredra att ha dessa i början av ett ARexx-skript. Se A.5 för exempel på sökvägar.
C.14.1 Ritningsväg
Att ändra standardkatalogen där ritningarna lagras görs med detta undernyckelord.
C.14.2 Objektsökvägar
Att ändra standardkatalogen där modelleringsobjekt lagras, görs med detta underordnade nyckelord.
C.14.3 Materialspath
Att ändra standardkatalogen där material lagras, görs med detta underordnade nyckelord.
C.14.4 Flightspath
Att ändra standardkatalogen där objektens flygbanor lagras, görs med detta underordnade nyckelord.
C.14.5 Audiotracepath
Att ändra standardkatalogen där beräknade ljudspår lagras, görs med detta underordnade nyckelord.
C.14.6 Echogrampath
Att ändra standardkatalogen där beräknade echogram lagras, görs med detta underordnade nyckelord.
C.14.7 Samplepath
Att ändra standardkatalogen där prov (både auraliserade och normala) lagras, görs med detta underordnade nyckelord.
C.14.8 Color
Att ändra standardvisuella färger görs med detta nyckelord.
C.15 Avsluta
Att avsluta en session med 3DA² genom ARexx görs med detta nyckelord. Vanligtvis är detta det vanligaste sättet, men användning av fönstrets stängningsgadget är också tillåten. Användningen av ARexx-visuella "Show View" initierar automatiskt ett fönster med en stängningsgadget. Obs: Inga bekräftelsefönster visas vid avslutning, och programmet sparar inte några ändringar som gjorts i dataförråden.
C.16 Exempel
Att utföra mixning av beräknade sampel görs med detta nyckelord.
C.16.1 Simple_Mix
Enkel sampelmixning görs med detta undernyckelord.
C.16.2 Over_Mix
Enkel sampelmixning med särskild tidsinställning görs med detta undernyckelord.
C.16.3 Make_Stereo
Att skapa ett stereo-sample från två mono-sampel görs med detta undernyckelord.
C.16.4 Length
Sampellängd i sekunder hämtas med detta undernyckelord.
C.16.5 Delete
Sampel som inte längre behövs kan raderas med detta undernyckelord.
C.17 Spara
Lagring av beräknad och tillverkad data för ritningar, objekt, material, flygbanor, ljudspår och echogram utförs med detta nyckelord.
C.17.1 Ritning
Lagring av ett virtuellt ljudmodell utförs med detta undernyckelord.
C.17.2 Objekt
Lagring av en uppsättning modelleringsobjekt utförs med detta undernyckelord.
C.17.3 Material
Lagring av en uppsättning material utförs med detta undernyckelord.
C.17.4 Flygningar
Lagring av en uppsättning flygbanor utförs med detta undernyckelord.
C.17.5 Framåt
Detta undernyckelord hanterar miljön för lagring av framåtberäknad data.
C.17.5.1 Ljudspår
Lagring av ett framåt ljudspår utförs med detta slutnyckelord.
C.17.5.2 Echogram
Lagring av ett echogram baserat på framåtberäkning utförs med detta slutnyckelord.
C.17.6 Bakåt
Detta undernyckelord hanterar miljön för lagring av bakåtberäknad data.
C.17.6.1 Ljudspår
Lagring av ett bakåt ljudspår utförs med detta slutnyckelord.
C.17.6.2 Echogram
Lagring av ett echogram baserat på bakåtberäkningar utförs med detta slutnyckelord.
C.17.7 Fullständig
Detta undernyckelord hanterar miljön för lagring av beräknad data. Det används främst vid konsistenskontroller, jämförelse mellan framåt- och bakåtspårning. Istället för att använda två kommandorader (Spara Framåt x n och Spara Bakåt x n) används endast en rad (Spara Fullständig x n), vilket gör lagringssystemet säkrare mot skrivfel och liknande.
C.17.7.1 Ljudspår
Lagring av ett fullt beräknat ljudspår utförs med detta slutnyckelord.
C.17.7.2 Echogram
Lagring av ett echogram baserat på både framåt- och bakåtberäkningar utförs med detta slutnyckelord.
C.18 Skärm
Om användaren har startat mer än en 3DA²-session så görs byte av skärmar lätt med dessa nyckelord. För att få en 3D-miljö med specialglas måste användaren starta två 3DA²-sessioner endast med ARexx.
C.18.1 Visa
Genom att använda detta undernyckelord placeras 3DA²-skärmen i förgrunden.
C.18.2 Göm
Genom att använda detta undernyckelord placeras 3DA²-skärmen i bakgrunden.
C.19 Visa
Detta nyckelord hanterar 3D-visualiseringen vid styrning av 3DA² via ARexx. Det uppnås en större 3D-effekt om användaren kör två 3DA²-sessioner samtidigt. Dessa bör visa modellen från olika synvinklar och byta skärmar med "Screen Show". Obs: Användaren måste ha specialglas som växelvis tillåter CRT-bilden.
C.19.1 Vy
Detta undernyckelord hanterar specifika synvinklar och linseinställningar. Konsekutiva anrop till dessa rekommenderas inte, eftersom den tid som spenderas i ARexx-dekodaren är enorm. Om användaren vill skapa en animation bör hon dra nytta av undernyckelordet "3D-Flight" (se C.19.6).
C.19.1.1 Från
Detta slutnyckelord anger ögats position i 3D-rummet.
C.19.1.2 Till
Detta slutnyckelord anger synvinkels position i 3D-rummet.
C.19.1.3 Tilt
Detta slutnyckelord används för att vrida modellen från dess normala rotation i rummet. Rotationsordningen är x, y och sedan z.
C.19.1.4 Förstoring
Detta slutnyckelord hanterar förstoringsfaktorn för synlinsen.
C.19.1.5 Perspektiv
Detta slutnyckelord hanterar synlinsans fokalavstånd.
C.19.1.6 3D
Detta slutnyckelord anger att vyn är inställd på alla ovan nämnda egenskaper.
C.19.2 XY
Detta undernyckelord roterar modellen till följande position: X-axeln till höger, Y-axeln uppåt och Z-axeln mot användaren.
C.19.3 XZ
Detta undernyckelord roterar modellen till följande position: X-axeln uppåt, Z-axeln till höger och Y-axeln mot användaren.
C.19.4 YZ
Detta undernyckelord roterar modellen till följande position: Y-axeln till höger, Z-axeln uppåt och X-axeln mot användaren.
C.19.5 Fågel
Denna underordnade nyckelord placera linser i första oktanten, med synpunkten mot origo.
Visa fågel
C.19.6 3D_Flight
Detta underordnade nyckelord hanterar animationssekvenser. Obs: Använd detta istället för på varandra följande anrop till "View".
C.19.6.1 In
Detta avslutande nyckelord låter användaren göra en zoom in till modellen.
C.19.6.2 Out
Detta avslutande nyckelord låter användaren göra en zoom ut från modellen.
C.19.6.3 Elevate
Detta underordnade nyckelord hanterar modellens höjningsprocess. Vanligtvis används det för initiering av gång- och springförhållanden i modellmiljön.
C.19.6.3.1 Up
Detta avslutande nyckelord höjer modellen från horisonten.
C.19.6.3.2 Down
Detta avslutande nyckelord sänker modellen till horisonten.
C.19.6.4 Circulate
Detta avslutande nyckelord hanterar cirkulationsflyg över modellen.
C.19.6.5 Walk
Detta nyckelord hanterar gång- och springförhållanden efter initiering med elevate (se C.19.6.3).
C.19.6.5.1 To
Detta avslutande nyckelord gör "gången" till en önskad plats med syn mot den nya platsen.
C.19.6.5.2 From
Detta avslutande nyckelord gör "gången" till en önskad plats med syn mot den tidigare platsen.
C.19.6.6 Path
Detta avslutande nyckelord används när användaren vill flyga en specifik flight_path som är tilldelad ett visst objekt i audio_modelen.
C.20 Sort
Detta nyckelord hanterar sorteringen av drawing_, object_, material_ och flight_stocks. Obs: Vanligtvis är detta inte nödvändigt i 3DA² ARexx-sessioner.
C.20.1 Drawing
Detta undernyckelord sorterar drawing_stock. Obs: Vanligtvis förenklar detta vid modellering.
Sortera Ritningar
C.20.2 Objects
Detta undernyckelord sorterar object_stock. Obs: Vanligtvis förenklar detta vid modellering.
Sortera Objekt
C.20.3 Materials
Detta undernyckelord sorterar material_stock. Obs: Vanligtvis förenklar detta vid modellering.
C.20.4 Flights
Detta undernyckelord sorterar flight_stock. Obs: Vanligtvis förenklar detta vid modellering.
C.21 Special_FX
Detta nyckelord hanterar specialeffekter. Vanligtvis används vid start eller avslutning av en beräkningsession.
C.21.1 Flash
Detta undernyckelord gör att en färg blinkar.
C.21.2 Fade
Detta undernyckelord hanterar färgfading-procedurer.
C.21.2.1 In
Detta undernyckelord gör att en färg fadear från svart till den önskade färgen.
C.21.2.2 Out
Detta undernyckelord gör att en färg fadear från den önskade färgen till svart.
C.21.2.3 All
Detta undernyckelord används när användaren vill fadea alla visuella färger på skärmen.
C.21.2.3.1 In
Detta avslutande nyckelord gör att alla färger fadear från svart till de önskade färgerna.
C.21.2.3.2 Out
Detta avslutande nyckelord gör att alla färger fadear från de önskade färgerna till svart.
C.21.3 Play_sound
Detta nyckelord används när användaren vill ha en hörbar bekräftelse från 3DA²-beräkningen. Obs: Samplet bör placeras i sample_path.
Bilaga D: Ikongrafik
D.1 Ritningsikoner
De standardritningsikoner, med textredigeringsversionen till vänster och minnes- och hastighetsoptimerad version till höger.
D.2 Objektikoner
De standardobjektikoner, med textredigeringsversionen till vänster och minnes- och hastighetsoptimerad version till höger.
D.3 Materialikoner
De standardmaterialikoner, med textredigeringsversionen till vänster och minnes- och hastighetsoptimerad version till höger.
D.4 Flygikoner
De standardflygikoner med textredigeringsversionen till vänster och minnes- och hastighetsoptimerad version till höger.
D.5 Spårade dataikoner
De standardspårade dataikoner, bakåtspår är längst till vänster och framåtspår längst till höger, med textredigeringsversionerna till vänster och minnes- och hastighetsoptimerad version till höger. Dessa datafiler kan redigeras med ett vanligt textredigeringsprogram, men bör inte göras det. Orsak: Förstörande effekter av indata som kan försämra det auraliserade resultatet helt och gör felaktiga slutsatser om virtuella ljudmiljöer. Kom också ihåg att din heuristiska funktion kan vara kaotisk i sitt utseende.
D.6 Echogramikon
Det standardmässiga echogramikonet, datafilen kan redigeras med ett exempelredigeringsprogram men bör inte göras. Orsak: Förstörande effekter av indata som kan försämra det auraliserade resultatet helt och hållet, vilket leder till felaktiga slutsatser om virtuella ljudmiljöer, även om konvolutionsfunktionen är av icke-kaosisk typ.
D.7 Auraliserat ljudikon
Det standardmässiga ikonet för auraliserat ljud, datafilen kan redigeras med ett exempelredigeringsprogram men bör inte göras. Orsak: Ändringar av utdata försämrar all vetenskaplig värde, även om ändringen är liten.
D.8 Preferensfilikon
Det standardmässiga ikonet för preferensfilen, datafilen kan redigeras med ett vanligt textredigeringsprogram eller data kan ändras via 3DA²-preferensfönstret.
Bilaga E: Fönsterkarta
E.1 3D-vy och redigeringsfönster

Detta fönster är huvudfönstret för 3D-modellering. Nästan alla åtgärder i detta fönster påverkar den beräknade resultaten. Vanliga rotationer, zoomning och perspektivförändringar påverkar naturligtvis inte resultaten. I detta fönster visas hjälpmeddelanden om användaren vill att de ska visas alls.
E.2 Fönster för råmaterial
Detta fönster innehåller alla objekt som ingår i modellen, och från detta fönster kan användaren komma åt objekt-, material- och flygstockfönstren.
E.3 Fönster för objektlagring
Detta är fönstret för objektlagring där användaren hämtar objekt som hon vill placera i huvudmodellen.
E.4 Fönster för materiallagring
Detta fönster hanterar alla material, och användaren kan öppna egenskapsfönstret från här.
E.5 Fliktillståndsfönster
Detta fönster hanterar alla flygbanor som kan tilldelas ljudmodellobjekten. Att göra modellen dynamisk ökar beräkningsbelastningen eftersom det krävs att nya ekogram beräknas i varje tillfälle.
E.6 Egenskapsfönster
Detta fönster hanterar alla materialegenskaper. Frekvens-, fas- och riktighetsberoende kopplas till den visuella modelleringens färg. Även det särskilda namnet och typen kan ändras.
E.7 Spårare, Ekogram & Konvolverarfönster
Detta fönster hanterar främst inställningarna för spåraren och datorpanelen. Det är endast avseddt för den visuella delen, och visar det normaliserade ekogrammet samt beräknade energitrefningar. För mer komplexa auraliseringsproblem rekommenderas starkt ARexx-metoden. Återspelning av auraliserade ljudprover kan göras antingen med en vanlig sampler eller med Amigas anpassade ljudchipp.
E.8 Inställningsfönster
Inställningsfönstret hanterar filen 3DAudio.preferences i mappen 3DA-Prefs. Redigering i detta fönster är helt musdriven, men det går också att redigera med tangentbordet. En annan metod för att redigera dessa inställningar är att öppna filen 3DAudio.preferences i en vanlig textredigerare och redigera den manuellt. Denna senare metod rekommenderas dock inte.
E.9 3DA² Info-fönster
Detta fönster visar vilken programversion du kör. Aktuell status för ritningen, samt beräkningstid som en upplysande information. Aktuella objekt-, material- och flyglagringar visas också. Naturligtvis visas även tillgänglig minnesmängd och ARexx-portnamn här.
E.10 Huvudfönstrets kartor

Denna graf visar kommunikationen mellan modelleringsfönstren. Pilar representerar vägarna. När flera element har samma väg men olika bekräftelsedata, kopplas anslutningarna med en svart-vit glödlampa.
Bilaga F: Menykarta
F.1 Projektmeny
Detta är huvudmenyn för att hämta, sammanfoga och lagra datafiler.
"Om"-fönstret aktiveras också från denna meny. Avslutning av en 3DA²-session görs med menyposten "Avsluta".
F.1.1 Öppna-undermeny
Hämtning av tidigare beräknade, tillverkade eller inköpta data för ritningar, objekt, material, flygbanor, ljudspår eller echogram görs med denna undermeny. Typfel i datafilerna visas via ett aviseringfönster. Det behöver inte minnas vilken typ, framåt- eller bakåtkalkyler. Spår- och echogram-hämtaren är automatisk.
F.1.2 Sammanfoga-undermeny
Hämtning av tidigare beräknade, tillverkade eller inköpta data för ritningar, objekt, material och flygbanor samt sammanfogning med befintlig data görs med denna undermeny. När arbetsbelastningen delas mellan flera personer är detta praktiskt när systemansvarig för den virtuella miljön sammanfogar insatserna.
F.1.3 Spara-undermeny
Lagring av beräknad och tillverkad data för ritningar, objekt, material och flygbanor sker med detta undermeny. Obs: Ingen filnamnsbegäran aktiveras och återkoppling sker endast om hjälptexten är på. Föregående filnamn används vid lagring av data på detta sätt.
F.1.4 Spara som-undermeny
Lagring av beräknad och tillverkad data för ritningar, objekt, material, flygbanor, ljudspår och ekogram sker med detta undermeny. Ljudspårs- och ekogramslagringen är automatisk när det gäller framåt- och bakåtkalkyler.
F.2 Redigera fönstermeny
Att öppna de olika redigeringsfönstren görs med denna meny. De två första menypunkterna öppnar de huvudsakliga modelleringsfönstren. De tre efter dessa öppnar lager för objekt, material och flygbanor. Den sista öppnar spårnings-, normaliserings- och auraliseringdatorn.
F.3 Övrigt-menyn
Denna meny öppnar inställningsfönstret, hanterar miljön för datarensning, och aktiverar eller deaktiverar hjälp-texten samt inställningarna för spårningsdatastruktur.
F.3.1 Rensa-undermeny
När du arbetar med ett minnesbegränsat system och modellerar med många små ändringar kan ångra-stackarna bli oproportionellt stora. Med detta i åtanke kan en tillfällig kallning av dessa funktioner låta systemet frigöra ett betydande antal minnesenheter, vilket gör det möjligt att förfina modellen ytterligare ett steg.
F.3.2 Spårningsdata-undermeny
Akustisk strålsökning är en minneskrävande uppgift, och möjligheten att ändra akustikens noggrannhet är mycket till hjälp. Den genererade datan bevaras fullt ut med dess intensitet, tid, tillryggalagd väglängd och påverkansvektor om kryssrutan "Stor" är ikryssad. Dessutom lagras käll- och mottagarpunkternas namn i textform. Den genererade datan bevaras med dess intensitet, tid och käll- och mottagarpunkternas namn i numerisk form om kryssrutan "Liten" är ikryssad. Om minnessystemet utgör en flaskhals bör den beräknade datan sparas direkt till hårddisken, och detta sker när kryssrutan "... Till Disk" är ikryssad.
Bilaga G: Filkartan
G.1 Soundtracer-huvudlåda
Detta är 3DA²-huvudlådan. Det rekommenderas att du har alla filer för din virtuella ljudmiljö och beräknad data inom denna lådas gränser.
G.2 3DA-Prefs-låda
Denna underlåda innehåller startdatafiler, som är skrivna i textform. Alla dessa filer kan redigeras med en vanlig textredigerare. Faktiskt är "Standardverktyget" redan "ed".
G.3 Ikoner-låda
Detta är 3DA²:s standardikonsamling, och alla ändringar av dessa ikoner kommer att ändra standardutseendet från det här ögonblicket framåt.
G.4 Ritningar, objekt, material och flygbanor
Dessa fält innehåller naturligtvis de lämpliga ritnings-, objekt-, material- och flygbanefilerna. Dessa filer kan antingen vara i textredigeringsform eller i IEEE-standard för matematisk data. Att minimera portabilitetsproblem är alltid en bra idé, och när hastighet och diskminne inte är ett problem är användning av textredigeringsalternativet att spara föredraget.
G.5 3DA²_ARexx-fält
Detta fält bör innehålla alla 3DA²-relaterade ARexx-filer. Vissa användare kanske vill använda "REXX:" och lagra dessa filer där. En allmän varning till dem som gör det: Det är enklare att avinstallera ett program om de associerade datafilerna finns i närheten. En tydlig hantering av associerade datafiler ökar användarens hastighet och gör användaren mer avslappnad.
G.6 3DA²-information
Som i alla andra Amiga-program kan användaren ställa in de särskilda "Verktygstyperna" som startparametrar. Stackalternativet är en mycket viktig parameter eftersom användaren kan skapa sin egen heuristiska funktion (t.ex. från 3DA³ och vidare). För att undvika stacköverlöd, särskilt när man hanterar rekursiva funktioner, bör användaren göra stackstorleken så stor som möjligt.
G.7 3DA².Rexx-information
Detta ikon är huvud-ARexx-ikonen, och om användaren vill redigera textfilen bör "Standardverktyg:" vara "ed" eller något annat redigeringsprogram. Om användaren vill köra ARexx-skriptet bör "Standardverktyg:" ställas in till "rx". Vanligtvis bör användaren öppna dessa filer för redigering, inte genom att dubbelklicka på ikonen utan istället från redigeraren själv.
Bilaga H: Böcker, hård- och programvara
"Timeo hominem unius libri"
De av er som vill veta och kanske vill börja skapa en ljudraytracer hittar dessa referenser av största vikt. Alla följande källor är listade i ordning efter hur ofta de nämns, med de mest vanliga överst.
H.1 Böcker som påverkat
- Heinrich Kuttruff, Rumakustik
- Cremer och Müller, Principer och tillämpningar av rumakustik.
- Andrew S. Glassner, En introduktion till ray tracing
- K. Blair Benson, Ljudteknikshandboken
- Alan Watt & Mark Watt, Avancerad animation och renderingstekniker
- Stewen Brawer, Introduktion till parallell programmering
- John Watkinson, Konsten om digitalt ljud
H.2 Artiklar som påverkat
- Yoichi Ando, Beräkning av subjektiv företräde vid varje plats i en konserthall, Acoustical Society of America 74 (1983) 873
- A. Krogstad, S. Strøm & S. Sørsdal, Femton års erfarenhet av datoriserad ray tracing, Applied Acoustics 16 (1983) 291
- Katsuaki Sekiguchi & Sho Kimura, Beräkning av ljudfält i ett rum med metoden för begränsad ljudstrålintegration, Applied Acoustics 32 (1991) 121
- Vern O. Knudsen, föreläsning hållen vid den 121:a mötet för Acoustical Society of America i Baltimore, 89 (1991)
- Leo L. Beranek, Konserthallsakustik, Acoustical Society of America 92 (1992) 1-39
H.3 Använda böcker
- Amiga ROM Kernel Reference Manual: Include och Autodocs
- Amiga User Interface Style Guide
- Amiga ROM Kernel Reference Manual: Libraries
- Amiga Hardware Reference Manual
- Steven Williams, Programmering av 68000
- Craig Bolon, Mästare i C
- J.D. Foley & A. van Dam, Grundläggande principer för interaktiv datorgrafik
- Karl Gustav Andersson, Lineär algebra
- Grant R. Fowles, Analytisk mekanik
- Tobias Weltner, Jens Trapp & Bruno Jennrich, Amiga Graphics Inside & Out
- Amiga ARexx Användarguide
- Merrill Callaway, THE ARexx COOKBOOK
- Martha L. Abell, James P. Braselton, The Maple V Handbook.
H.4 Snabbreferensböcker
- Encyclopedia Britannica version 1991
- Webster's International Dictionary
- Jorge de Sousa Pires, Elektronikhandbok
- Carl Nordling & Jonny Österman, Fysikhandbok
- Lennart Råde & Bertil Westergren, Beta Matematikhandbok
- Steven Williams, 68030 Assembler-språkreferens
- Alan V. Oppenheim & Ronald W. Schafer, Digital Signal Processing
H.5 Programinfluenser
- Real 3D v2.0, RealSoft
- Caligari, Octree
- Lightwave, NewTech
- Real 3D v1.4, RealSoft
- Imagine 2.0, Impulse
- Sculpt 3D, Eric Graham
- Videoscape, Aegis
H.6 Använd programvara
- Finalwriter, SoftWood, Skrivning av dokument.
- Deluxe Paint IV, Electronic Arts, Grafik och retusch.
- Brilliance, Carnage, Grafik och retusch.
- TxEd, Skrivprogram.
- Tool Maker, Commodore, Skapande av GUI.
- SAS C v6.0 och v6.5-kompilator, Programmering.
- CPR, Felsökning.
- Enforcer, Felsökningshjälpmedel.
- Devpac 3.0, HiSoft, optimering.
- Metacomco Macro Assembler, optimering.
- Maple IV, Hypotesundersökningar.
- Magic Workbench Icon Templates, Ikoner.
H.7 Använd hårdvara
- Amiga 500+ system 2.1, 50 MHz MC68030, 60 MHz 68882 och 10 MB, utveckling.
- Vidi Amiga, Rombo, Videoinspelning med Sony Handycam.
- Hewlett Packard Desk Jet 520, Huvudutskrift.
- Amiga 1200 system 3.0, 50 MHz MC68030, 50 MHz 68882 och 6 MB, testning och utveckling.
- Amiga 1000 system 1.3, 7.14 MHz MC68000 och 2.5 MB, optimeringar.
- Amiga 1000 system 2.04, 7.14 MHz MC68000 och 2.5 MB, konsistenskontroll.
- Amiga 3000 system 3.1, 40 MHz MC68040, konsistenskontroll.
- Amiga 4000 system 3.1, 30 MHz MC68040, konsistenskontroll.
- Quadraverb, Alesis, Försök med realtidsljudåtergivning.
- DDT sampler, DDT MIDI-gränssnitt med DDT Mixer, realtidsljudåtergivning.
- DSS8+ (Digital-Sound-Studio) Hård- och mjukvara, GVP, sampelredigering.
- Dynamisk mikrofon, Sherman, Dirac-samplingar (korrelationsuppskattning, modell <-> verklighet)
H.8 Källa till inspiration
- Foundation Epic, Isaac Asimov
- Amiga-konceptet
- Musiken från Tangerine Dream™, Yello, Vangelis, Jean-Michel Jarre, Kraftwerk
- Star Trek, filmer och TV-serier, Gene Roddenberry
- Gödel, Escher, Bach: En evig guldna knut, Douglas R. Hofstadter
- Bladerunner, film, Ridley Scott
- Drömmer androider om elektriska får?, Philip K. Dick
- Rymdforskning, NASA och andra.
- Porsche-konceptet