TNM113 - Procedurell ljuddesign för användargränssnitt, VT2023

Laboration 1 - förberedelse

Till uppgiften behöver ni några olika ljud att arbeta med. Fundera över hur de fyra ljuden ska låta, eller förändras för att återkoppla till användaren. Ska det vara korta ljud eller längre, ska de vara mer sprakande brusiga ljud eller klingande toner, vilket frekvensomfång ska de ha, och vilket dynamiskt omfång?

Klura sedan vad ni har omkring er som kan användas för att skapa grunden till ljuden ni vill använda; knäpp med fingrarna, bryt av en liten gren, slå två trägafflar mot varandra, klinga en sked mot ett glas, riv sönder ett papper, dra lite fuktig frigolit mot en glasruta, …

Spela sen in några ljud. För ändamålet räcker det gott med att spela in i mobiltelefonen. Kolla bara upp att telefonens inspelning har tillräckligt kvalitet vad gäller samplingsfrekvens, bitupplösning och kodning. Kom ihåg Nyquist-Shannon-teoremet och undvik förstörande komprimering som mp3 och m4a.

Bekanta er med SC

Ladda först ned och installera SC: https://supercollider.github.io/download

När SC startas skapas ett nytt tomt ”projekt”. Till höger (oftast) om detta ligger Help browser där det går att söka hjälp om SC, och nedanför detta finns Post window. Nedanför Post window visas om kodtolken är aktiv, och en del info om Servern som CPU-belastning etc.

Det är möjligt att skriva ut saker till Post window, och det görs med postln (post line). Genom postln("Hello world"); så skriver SC ut Hello world i Post window. Kodraden exekveras genom att stå på kodraden med markören och klicka på <Shift> + <Enter>. Ett annat sätt att skriva detta på är ("Hello world").postln; vilket resulterar i samma output.

En variabel deklareras med var x; och flera variabler kan deklareras i samtidigt med var x, y, z;. Alla variabler måste deklareras först i en funktion eller i en synthdefinition. Globala variabler deklareras utanför funktionerna och det finns ”superglobala” variabler typ s (server) och w (window), och det finns environment-variabler som deklareras med ~.

Skapa en variabel som innehåller strängen ”Hello world” och skriv sedan ut variabeln. Eftersom <Shift> + <Enter> exekverar en rad i taget så måste båda raderna markeras för att innehållet i variabeln ska skrivas ut. Därför är det bra att sätta parenteser kring koden, en startparentes innan koden och sedan en slutparentes efter koden. Då går det att använda <Ctrl> + <Enter> i Windows eller <Cmd> + <Enter> i Mac för att exekvera all kod i parentesen. Med <Shift> + <Enter> körs fortfarande bara den/de rader som är markerade. Med <Ctrl> + <.> i Windows och <Cmd> + <.> stoppas exekveringen.
(
var x = ("Hello world");
x.postln;
)
Med // kommenteras en rad i taget i koden, och med /* .. */ kommenteras flera rader. När man skriver kod och vissa keywords dyker det upp rutor så att det är enkelt att välja rätt nyckelord och få tips om användning och fortsättning på koden.

Det händer att kodtolken i SC rasar, under menyn Language kan man både avsluta den och/eller starta om den.

Att skriva ut till Post window görs på klientsidan. Det går inte att skriva ut på samma sätt från serversidan. Än så länge har inte servern startats, detta måste göras manuellt antingen genom att välja Server -> Boot Server eller genom att exekvera s.boot;. I menyn Server kan man också starta om servern eller döda alla servrar som är i gång, det går också att stänga av servern genom att exekvera s.quit;. När servern bootats visas i Post window de ljuddevices som är tillgängliga i datorn. När kodtolken startas om dödas också alla servrar som är igång.

Med s.scope; skapas ett oscilloskop vilket kan vara till hjälp i laborationerna i den här kursen. Läs mer här: https://doc.sccode.org/Classes/Server.html

Testa på SC och bekanta er med gränssnittet i SC. Följande är några tips för att komma igång mer än vad den korta introduktionen ger i denna text. Eli Fieeldsteel har en väldigt bra Youtube-kanal med många exempel och tips: https://youtu.be/yRzsOOiJ_p4. Det finns också ett antal tutorials här: http://doc.sccode.org/Tutorials/Getting-Started/00-Getting-Started-With-SC.html. Och här finns info om SC, om strukturen och klasser: http://doc.sccode.org/.