UMEÅ UNIVERSITET Projektrapport Enheten för professionskurser 2010-05-18 Generering av ljud utifrån fysikalisk simulering Introduktion till ingenjörsarbete Namn Anders Berglund Viktor Johansson Sara Leonardsson E-Mail anders.l.berglund@gmail.com johansson.v@gmail.com saraleonardsson@gmail.com Handledare Fredrik Nordfelth Martin Servin
Innehåll 1 Bakgrund 1 1.1 Gitarrsträng.............................. 1 1.1.1 Metodbeskrivning...................... 1 1.1.1.1 Tidsfördöjning/Samplingstid........... 2 1.1.2 Resultat............................ 3 1.1.2.1 Material...................... 4 1.1.3 Analys & slutsats....................... 5 1.2 Rektangulär platta träffas av en sfär................ 5 1.2.1 Metod............................. 5 1.2.2 Resultat............................ 5 1.2.3 Analys & slutsats....................... 6 i
1 Bakgrund En fysikmotor möjliggör simulering av rörelse hos fysikaliska modeller med egenskaper som till exempel massa, hastighet, friktion och luftmotstånd. Den kan under rätta förhållanden simulera och förutsäga effekter som motsvarar vad som sker i verkligheten. Främsta användningsområdet finns inom datorspel, animering och teknisk produktutveckling. Företaget Algoryx i Umeå har två fysikmotorer på marknaden, dels 3D-fysikmotorn AgX men även 2D-fysikmotorn Algodoo. En önskan från Algoryx är att kunna generera ljud i sina simuleringar där ljudet baseras på dynamiken i simuleringarna. Det här projektet har syftat till att ta fram ett första förslag på hur ljud kan genereras genom fysikalisk simulering. Förslaget ska ligga till grund för ett fortsatt utvecklingsarbete där slutmålet är en väl fungerande ljudmodell. Om det i en simulering släpps ett glas i golvet, glaset går sönder och skärvorna sprids över golvet, så ska ljudet som genereras utifrån dynamiken i simuleringen låta precis som om ett verkligt glas gått sönder. En bra modell att utgå ifrån var en gitarrsträng eftersom den endast svänger i två dimensioner och det finns teori om en gitarrsträngs svängningar, grundfrekvens, övertoner att jämföra med. 1.1 Gitarrsträng En modell av en gitarrsträng bestående av 100 punkter byggdes i fysikmotorn AgX. Gitarrsträngen sattes i rörelse genom att olika initialvillkor lades in i simuleringen. 1.1.1 Metodbeskrivning Hur skall man utifrån strängens rörelse kunna generera ljud? Ett sätt att få reda på med vilka frekvenser strängen svänger är att ta fram ett frekvensspektrum genom en Fourieranalys. En Fouriertransform kan genomföras både i tidsplanet och i rummet. Båda dessa metoder har sina för- respektive nackdelar Tidssplanet Fördelen med en fouriertransform i tidsplanet är att det är lätt att få ut ett frekvensspektra för svängningen. En annan fördel är att det skulle vara möjligt att utöka modellen genom att bestämma vilken punkt i rummet man lyssnar i. Nackdelen är att data måste samlas under en viss samplingstid för att kunna genomföra fouriertransformen. Det kommer att ge en viss tidsfördröjning av ljudet. Ljudet genereras i varje enskild tidpunkt utifrån den form som objektet i den givna tidpunkten antagit. Denna modell har fördelen att ljudet som genereras motsvarar vad som sker just nu utan någon tidsmässigt lagg. Rummet Fördelen med en fouriertransform i rummet är att det inte blir något problem med en tidsfördröjning av ljudet då varje tidssteg direkt ger ett 1
Figur 1: Med parallella samplingar kan mjukare övergångar åstadkommas ljud. Nackdelen är att det är svårare att utifrån det spektra som erhålls att få ut svängningens frekvens. Modellen går heller inte att bygga vidare på ett sådant sätt att man kan lyssna i olika punkter. Ljudet genereras här genom att följa hur de enskilda partiklarnas utsvängning från normalläget ändras under en tidperiod. Den här metoden har nackdelen av att en liten tidsmässig förskjutning uppstår då den beror av en viss lång samplingstid för att kunna användas. Efter att ha vägt för- och nackdelar mot varandra valdes metoden med fouriertransform i tidsplanet då den tillåter en mer direkt analys av ljudet. En fouriertransform ger här direkt de frekvenser som svängningen består av. En annan stor fördel med den här metoden är att den tillåter att man i ett senare skede lägger till funktioner som gör att ljudet uppfattas olika beroende på var man lyssnar. 1.1.1.1 Tidsfördöjning/Samplingstid Då det behövs en viss samplingstid för att kunna genomföra fouriertransformen i tidsplanet och upplösa de frekvenser man är intresserad av kommer en viss tidsfördröjning av ljudet alltid att förekomma. Exempelvis för att kunna upplösa 60 Hz krävs en samplingstid på minst 1/60 s. Däremot är det möjligt att undvika att ljudet upplevs hackigt när det spelas upp. Under den första samplingstiden finns ingen data att generera ljud utifrån. När den första samplingen är klar kan ett ljud spelas upp. För att åstadkomma ett kontinuerligt ljud så måste varje ljudsnutt spelas upp i motsvarande en samplingstid för att nästa ljud skall hinna bli klart för uppspelning och inget glapp skall uppstå. Problemet är att ljudet hinner förändras nämnvärt under denna samplingstid och när ljudet spelas upp så kan skarvarna mellan två ljudsnuttar höras tydligt. För att lösa detta problem gjordes fyra stycken parallella samplingar med en liten förskjutning sinsemellan. När den första samplingen började inväntades en fjärdedel av samplingstiden innan en andra sampling började. Denna sampling avslutades därmed en fjärdedel av en samplingstid efter den första. På samma sätt gjordes en tredje och en fjärde sampling med motsvarande förskjutningar. Detta medförde att när den första ljudbiten var klar behövde den bara spelas upp i en fjärdedel så lång tid innan nästa var klar för uppspelning, o.s.v. En schematisk förklaring ges i figur 1. 2
Figur 2: Grundfrekvens och första överton detekteras i Fourierspektrat. Figur 3: Grundfrekvens, först- och andra överton detekteras i Fourierspektrumet. 1.1.2 Resultat Fourieranalysen genomfördes i MATLAB på två olika punkter på strängen. Dels precis i mitten av strängen och även vid 3/4 av dess längd. De frekvenser som detekteras i Fourierspektrat beror på hur strängen anslås och var någonstans på strängen som fourieranalysen utförs samt hur styv och spänd gitarrsträngen är. I figur 2 visas ett spektra som innehåller grundfrekvensen och den första övertonen detekterat vid 3/4 av strängens längd. Ett annorlunda anslag av gitarrsträngen gör att även den andra övertonen kan detekteras i samma punkt på strängen. Frekvenserna och amplituderna som hittas i spektrat kan sedan spelas upp med funktionen sound i MATLAB. En sträng i rörelse får ett frekvensspektrum bestående av en grundton och multiplar av denna i form av övertoner med avtagande amplitud. När en sträng sätts i svängning kommer olika frekvenser ha olika noder, dvs. punkter på strängen där utsvängningen är konstant noll. Den första övertonen, dvs. 2f, har en nod mitt på strängen. Det betyder att den aldrig kommer att 3
Figur 4: Grundfrekvens och övertoner. Alla jämna övertoner har en nod i mittpunkten. kunna upptäckas i fourierspektrat från en punkt mitt på strängen även om gitarrsträngen egentligen svänger med den frekvensen. Detsamma gäller alla andra jämna övertoner (se figur 4). Det här tankesättet går att applicera på andra punkter på strängen, dvs. i en del punkter på strängen kan inte vissa frekvenser upptäckas. 1.1.2.1 Material För att få ett ljud som är så naturtroget som möjligt måste egenskaperna på strängen motsvara det hos ett verkligt material. Egenskaperna som i denna simuleringen gick att variera var styvheten på de tvång som band samman partiklarna med varandra, dämpningen på dessa samt vilka frihetsgrader de skulle ha i form av Joint. Joint Om man jämför BallJoint med DistanceJoint i fallet med gitarrsträngen så borde de ge samma resultat då partiklarnas eventuella spinn inte borde göra någon skillnad på svängningen. Fogen, eller jointen, är satt i partiklarna dvs. att det inte finns någon joint mellan partiklarna. I praktiken fungerar alltså balljointen som en distancejoint i strängfallet eftersom den enda begränsningen kommer från avståndet mellan dem. Dock har vi inte fått DistanceJoint att fungera så kan vi tyvärr inte verifiera detta. Compliance Compliance dvs. styvheten strängens styvhet var en annan variabel som kunde justeras. Enligt Algoryx är compliance en konstant gånger inversen av elasticitetsmodulen multiplicerat med objektets tvärsnittsarea. Det betyder att compliance får dimensionen [N] 1 dvs. att den är ett uttryck för 4
utsträckning per newton. Compliance = k EA = k N m m = k 2 N 2 För att kolla dess naturtrogenhet kördes en simulering där strängen tänktes vara 1 mm tjock och av stål vilket ger en area av ca 1E-6 och elasticitetsmodulen 200 GPa vilket ger att compliance blir 5E-6. Detta innebär, som en jämförelse, att om strängen är en meter lång måste den belastas med en kraft av ca 200 kg för att sträckas ut 1 cm eller 1 %. 1.1.3 Analys & slutsats Resultatet visar att vår modell gör det möjligt att generera ljud med frekvenser som är rimliga för en gitarrsträng. Spelar man ett A på en gitarr motsvarar det en frekvens på 440 Hz. Frekvenserna som vår modell genererade var i närheten av ett A om compliance har storleken 10 6, 10 7. Detta stämmer bra med vad som antogs om compliance i teorin. Vårt förslag till Algoryx är att basera sin ljudmodell på en Fouriertransform i tidsplanet. Detta eftersom att frekvensanalysen blir enkel och rättfram då frekvenserns erhålls direkt från Fourierspektrat. En annan fördel är att modellen går att utöka med funktionen att ljudet kan detekteras i punkter på olika avstånd från det ljudalstrande objektet. Med andra ord kommer det vara möjligt att låta ljudstyrkan på ett längre avstånd från objektet vara svagare än i en punkt närmare objektet. Likaså kommer ljudet från olika delar av objektet att nå fram till avlyssningspunkten vid olika tidpunkter. Sammantaget ger en Fouriertransform i tidsplanet en fysikaliskt mer korrekt ljudmodell än en Fouriertransform i rummet. 1.2 Rektangulär platta träffas av en sfär 1.2.1 Metod Plattan byggdes upp precis som gitarrsträngen med 20 20 partiklar som bands ihop med hjälp av bolljoints. Partiklarna satt ihop med grannarna över, under och diagonalt uppåt. En sfär kastades från ett avstånd och träffade plattan ungefär på mitten och satte då partiklarna i svängning. Dessa partiklars position i y-led loggades precis som i modellen av gitarrsträngen och utifrån dessa genererades ljud i MATLAB. 1.2.2 Resultat Fourieranalysen genomfördes i MATLAB på olika punkter på plattan. Först loggades bara en partikels position och fourieranalyserades. Partikeln som valdes låg ungefär i mitten på plattan och gav då frekvensen som visas i figur 5. Partikeln svänger med en frekvens på 78 Hz. I artikeln [1] simuleras en liknande modell med hjälp av finita elementmetoder. I artikeln fås flera olika frekvenser, bland annat en frekvens på ca 70 Hz som 5
1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 0 500 1000 1500 Hz Figur 5: Frekvens för en punkt detekteras i Fourierspektrat. 1.5 x 10 9 1 0.5 0 500 1000 1500 2000 2500 3000 3500 4000 4500 5000 Hz Figur 6: Frekvens för fyra punkter med ett compliance C = 10 6 detekteras i Fourierspektrat. skulle kunna vara den som även vår metod fick. Det skulle innebära att vårt resultat kan stämma, vi vet dock inte materialet på plattan de använder sig av och det gör det svårt att jämföra. Det gjordes även en fourieranalys på fyra olika punkter som var grannar. Dessa tillsammans med ett compliance på 10 6 gav upphov till spektrat som visas i figur 6. Frekvensen i denna ligger väldigt högt, ca 2000 Hz. Provar vi sänka compliance till 10 6 för att få en styvare platta fås resultatet som visas i figur 7 med en frekvens på 3500 Hz. 1.2.3 Analys & slutsats Även i detta resultat visar att vår modell gör det möjligt att generera ljud. Om detta ljud blir korrekt är frågan man kan ställa sig då vi får bara en frekvens och det gör det svårt att jämför med [1] resultat, vi anser dock att vi har en för höga frekvenser för att det ska kännas rimligt. Vi har inte heller uträtt tillräckligt mycket vad som händer med frekvenserna för olika värden på compliance, dämpning eller utgångshastighet på sfären. I vår modell har vi bara loggat partikelns position i en riktning som är i samma riktning som sfärens utgångshastighet. 6
3.5 x 10 8 3 2.5 2 1.5 1 0.5 0 0 1000 2000 3000 4000 5000 Hz Figur 7: Frekvens för en punkt med ett compliance C = 10 10 detekteras i Fourierspektrat. En fortsättning på detta skulle kunna vara att få rätsida på vad som händer med frekvenserna för olika värden på compliance, dämpning och utgångshastigheter. Man bör även titta på partiklarnas vibrationer i alla riktningar (x, y och z). Referenser [1] James F. O Brien, Perry R. Cook och Georg Essl. Synthesizing sounds from physically based motion. I: Proceedings of ACM SIGGRAPH 2001, ss 529 536. ACM Press, augusti 2001. 7