Modul Opg. 3 og 4

Modulopgave 3

 

Præsentation af lydcollage

Byen har lyde. Dette faktum kan man ikke komme uden om, men som med så meget andet, tager man oftest dette lydunivers som omgiver os i byrummet dagligt for givet.

Så efter vi i starten af modulopgave 3 blev udstyret med en lydoptager, drog vi ud for at optage vores rutes lyde. Ved at lade mikrofonen være ens øre, åbnede der sig et helt nyt univers af uopdagede lyde, en bil var ikke længere blot en bil, men et instrument som kunne udlede en masse forskellige lyde. Dette mundede i vores lydcollage, som er et mix og manipulation af byrummets lyde.

 

Sammenhængen mellem Manovich 5 principper og vores lydcollage

Transkodning: Manovichs princip om transkodning handler basalt set om det at oversætte analog materiale til digitalt sprog – Det bliver til en repræsentation i tal.

Ved at bruge en lydoptager til at indfange lydene og derefter overføre dem til en computer, havde vi mulighed for at få de analoge lyde fra byrummet ned til en størrelse man kunne arbejde med og gøre dem tilgængelige og manipulerbare ved hjælp af digitaliseringen ved overførslen til en computer. Nu var der som sagt mulighed for at arbejde med og se lyden. Lydene havde nu fået en repræsentation i tal, en repræsentation computeren kan forstå og som den ved hjælp af vores handlinger kan arbejde med. Denne digitalisering var nødvendig i vores opgave, da vi ellers ikke kunne lave vores lydcollage.

 

Numerisk repræsentation: Efter at vi nu havde fået lydene overført til en computer, fik de også en numerisk repræsentation, ved en lyd er det oftest som bølger i et koordinatsystem. Ligegyldigt hvilke toner der var i lyden, kunne vi få koordinaterne til alle ”punkter” i en lyd. Dette er et af de to hovedelementer ved Manovichs princip numerisk repræsentation. Det andet er at man ved hjælp af bestemte algoritmer/metoder kan manipulere/ændre det digitale materiale – ”media becomes programmable” (Manovich s. 27), i dette tilfælde vores lyde. For at ændre på vores lyde, brugte vi programmeringssproget Java, hvor vi fik indarbejdet nogle metoder, så som: cut, changeFreq, echo, blend, reverse og loop, som vi kunne kalde på vores lydfiler, og dermed manipulere med dem.

Her følger et eksempel af loop(en metode som for en lyd til at gentage sig selv, et ønsket antal gange), først den generelle metode og derefter hvordan vi har anvendt loop:

 

Generel metode:

public Sound loop(int numberOfLoops)

{

  Sound target = new Sound(this);

  for(int i = 0; i<numberOfLoops; i++)

  {

    target = target.splice(this);

  }

  return target;

}

 

 

Hvordan vi har anvendt den:

{

  Sound rpige = pigeløb.reverse();

  Sound rfpige = rpige.splice(pigeløb);

  Sound pigeloop = rfpige.loop(20);

}

 

I vores eksempel vælger vi at oprette en ny lyd(rpige), som er lyden pigeløb afspillet baglæns, så laver vi en ny lyd, der er sammensat af lyden rpige og lyden pigeløb. Til sidst laver vi en 3. lyd, som består af lyden rfpige, der er blevet loop’et 20 gange.

 

Modularisering: Efter opdeling og klipning af lydene, så vi fik de lyde vi mente havde størst værdi i en lydcollage, har vi nu fået en masse små lyde/moduler at arbejde med. Disse kan fungere alene, som deres egen lyd, men i vores lydcollage er de blevet sammensat, så de bliver til en del af et større lydbillede. Modulariserings princippet af Manovich går netop ud på dette: ”…elements are assembled into large-scale objects but continue to maintain their separate identities.” (Manovich, s.30) De enkelte lyd-dele kan flyttes rundt og slettes uden at det ville umuliggøre en afspilning af lydcollagen, det vil sige at alle lydmodulerne opererer som en separat enhed. Hvis man lytter til vores lydcollage vil man også kunne høre nogle moduler som bliver gentaget, f.eks. bildøren, eller spillet hurtigere eller langsommere, som f.eks. ”gutentag”.

 

Automatisering: Det er umiddelbart sværere at se automatisering i vores lydcollage, da det er os som brugere, der beder computeren om at manipulere med lydene, dvs. den gør det ikke automatisk og den ændrer heller ikke lyden for hver gang, den bliver afspillet.

 

 

 

 

Modulopgave 4

Introduktion

Med baggrund i en billedmappe bestående af 111 digitaliserede billeder af Århus by, havde vi som opgave at studere billederne for en indirekte sammenhæng. Ved hjælp af java-programmering skulle vi lave et program, som udvalgte 10 billeder efter kriterier, vi havde valgt og hvis vi ønskede det, kunne vi manipulere med billederne for at fremhæve sammenhængen yderligere.

Beskrivelse

Vores primære udvælgelseskriterium var koncentrationen af rød i et bestemt område af billedet. Vi valgte farven rød, da vi ønskede at synliggøre, hvor meget rød der reelt er i bybilledet, uden at det registreres, på trods af dens iøjnefaldende farve. I samtlige billeder, fokuserede vi på et område omkring det gyldne snit, da øjet ofte falder på dette sted i et billede. Ved at lade java undersøge billederne i det udvalgte område, fandt java frem til 10 billeder med den højeste mængde af rød i det undersøgte område. For endnu engang at fremhæve vores kriterium, har vi valgt at manipulere med de 10 udvalgte billeder. Dette har vi gjort således at alt omkring det undersøgte område bliver i sort/hvid ved hjælp af en edgeDetection metode. Dette gøres for at skabe en kontrast og fremhævelse til selektionsområdet. Denne del manipuleres ligeledes ved hjælp af en metode som øger rødværdien med en hvis faktor i hvert pixel.

De udvalgte og manipulerede billeder bliver vist, imens en Turtle bevæger sig rundt i et kort over Århus. De 10 udvalgte billeder har en direkte påvirkning af den genererede rute, da det er billederne, som bestemmer hvor turtlen skal gå hen (vha. getCoordinate metoden). Når Turtlen bevæger sig på sin rute, vil billederne blive fremvist.

Mulighed for egen input er også inkluderet i vores modulopgave, da man kan vælge at ændre på 3 variabler. Ved vores gennemførelse af programmet brugte vi disse variabler: ModulOpgave4.main(256, 1.0, 3) . Som sagt kan disse variabler ændres, således at billedudvælgelsen, ruten og billedmanipulationen ændres. Første variabel er med til at specificere spektret for rød koncentration, som programmet skal vælge billederne efter, derved vil ruten ændres. Den anden variabel påvirker edgeDetection metoden, hvor kraftig edgeDetection skal virke. Den tredje variabel afgør, hvor meget rødværdien i det udvalgte område skal ganges med.

Hvis det ønskes at udvælgelsesprocessen udføres på baggrund af en anden farve, kan dette ændres i metoden redValue, hvor red kan erstattes med green eller blue.

Database og Algoritme

Databasen i vores modulopgave 4 er bestående af det bibliotek af billeder, som er givet på forhånd. Det er på baggrund af denne at vores java programmering har forudsætningerne til at kunne drage informationer til sig. Det er bibliotekets data, der gør det i stand til, for vores opgave at kunne vise en bestemt rute samt tilhørende billeder. Så vores database i dette program er mappen med de 111 billeder og deres navngivende koordinater.

Algoritmerne er at finde i vores kriterier, som ligger i vores kode. Det er disse som muliggør, at programkoderne kan hive de nyttige informationer fra vores database ind i programmet. Det er ligeledes algoritmerne, der fortæller programmeringen, hvor mange billeder der skal bearbejdes, manipuleres og vises.

Eksempel på algoritmerne<!–[if !supportFootnotes]–>[1]<!–[endif]–> ses bl.a. i form af: – Åbning af filer. - Farvemåling af billeder. – Placering efter største farveværdig. – Farvejusteringer. – Koordinat metode. – Bevægelse af Turtle.

Selvom database og algoritmer er to forskellige ting, kan man i vores opgave ikke få fuldt udbytte af den ene, uden også at anvende den anden. Forudsætningerne for at der findes et program er algoritmerne, og for at kunne køre dette, er det nødvendigt at det har en database at hente informationen, i dette tilfælde billederne og koordinaterne, fra.

Algoritme

Anvendt kode Bilag 1.

Åbning af filer

Picture[] pictures = Picture.loadPicturesInFolder(“c:\\intro-prog-java\\modulopgave4billeder\\”)

 

Picture background = new Picture(“c:\\intro-prog-java\\mediasources\\aarhuskort.jpg”)

Farvemåling af billeder

public int redValue()

{

Pixel pixelObj = null;

int redCounter = 0;

 

for (int x = (int) (this.getWidth()*0.17); x < (int) (this.getWidth()*0.5); x++)

{

for (int y = (int) (this.getHeight()*0.5); y < (int) (this.getHeight()*0.83); y++)

{

pixelObj = getPixel(x,y);

redCounter = redCounter+pixelObj.getRed();

}

}

return redCounter;

}

Placering efter største farveværdig

public int redValue()

{

Pixel pixelObj = null;

int redCounter = 0;

 

for (int x = (int) (this.getWidth()*0.17); x < (int) (this.getWidth()*0.5); x++)

{

for (int y = (int) (this.getHeight()*0.5); y < (int) (this.getHeight()*0.83); y++)

{

pixelObj = getPixel(x,y);

redCounter = redCounter+pixelObj.getRed();

}

}

return redCounter;

}

index = i;

}

}

}

}

return index;

}

Farvejusteringer

public void redColorize(double redFactor)

{

Pixel pixelObj = null;

 

 

for (int x = (int) (this.getWidth()*0.17); x < (int) (this.getWidth()*0.5); x++)

{

for (int y = (int) (this.getHeight()*0.5); y < (int) (this.getHeight()*0.87); y++)

{

 

pixelObj = this.getPixel(x,y);

 

pixelObj.setColor(new Color(Math.min((int) (pixelObj.getRed()*redFa

ctor), 255), pixelObj.getGreen(), pixelObj.getBlue()));

 

}

}

}

Koordinat metode

public int[] getCoordinate()

{

int[] ret = new int[2];

String[] stringArray = this.getFileName().split(“-”);

ret[0] = Integer.parseInt(stringArray[stringArray.length-2].split(“,”)[0]);

ret[1] = Integer.parseInt(stringArray[stringArray.length-2].split(“,”)[1]);

return ret;

}

Bevægelse af Turtle

public int[] getCoordinate()

{

int[] ret = new int[2];

String[] stringArray = this.getFileName().split(“-”);

ret[0] = Integer.parseInt(stringArray[stringArray.length-2].split(“,”)[0]);

ret[1] = Integer.parseInt(stringArray[stringArray.length-2].split(“,”)[1]);

return ret;

}

t.moveTo(desti[0], desti[1])

<!–[if !supportFootnotes]–>

<!–[endif]–>

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.