• No results found

Datoriserad dans Computerized Choreography Simon Ternsjö

N/A
N/A
Protected

Academic year: 2021

Share "Datoriserad dans Computerized Choreography Simon Ternsjö"

Copied!
20
0
0

Loading.... (view fulltext now)

Full text

(1)
(2)

Teknisk- naturvetenskaplig fakultet UTH-enheten Besöksadress: Ångströmlaboratoriet Lägerhyddsvägen 1 Hus 4, Plan 0 Postadress: Box 536 751 21 Uppsala Telefon: 018 – 471 30 03 Telefax: 018 – 471 30 00 Hemsida: http://www.teknat.uu.se/student

Abstract

Datoriserad dans

Computerized Choreography

Simon Ternsjö

The project aims to construct a computer program for assisting in choreographing various dance routines to music. The program is written in Java and allows the user to determine how different dancers should move. The dance routine is described with the help of two text files. The dancers are illustrated on the screen in the form of circles and triangles. The program plays the music and the dancers' movement in the music as chosen by the user. The choreographer can send the file to other members so that they get an overview of the routine and can practice it without the whole group being gatherd. The program has been embraced with enthusiasm from members of various dance show groups. The Stenbäckens Buggförening has already expressed interest in using this program for future shows.

(3)

Datoriserad dans

Simon Ternsj¨o

simon.ternsjo.8301@student.uu.se

Sj¨alvst¨andigt arbete i Teknisk fysik

Teknisk fysik-programmet

Uppsala universitet · Institutionen f¨or teknikvetenskaper

6 juni 2010

¨

Amnesgranskare:

Tom Smedsaas, Uppsala Universitet

Handledare:

(4)

Abstract

Projektet g˚ar ut p˚a att konstruera ett dataprogram som hj¨alpmedel f¨or att koreografera olika dansru-tiner till musik. Programmet ¨ar skrivet i Java och l˚ater anv¨andaren best¨amma hur olika dansare ska r¨ora sig. Dansrutinen beskrivs med hj¨alp av tv˚a textfiler. Dansarna illustreras p˚a bildsk¨armen i form av cirklar och trianglar. Programmet spelar upp musiken och dansarnas r¨orelse i den musiktakt anv¨andaren valt. Koreografen kan skicka filen till ¨ovriga medlemmar s˚a att de f˚ar en ¨overblick av rutinen och kan tr¨ana p˚a den utan att hela gruppen beh¨over samlas.

(5)
(6)

1 Inledning

N¨ar man ska koreografera olika rutiner inom dans ¨ar det s¨allan alla deltagarna ¨ar p˚a samma st¨alle och det kan vara sv˚art att f¨ormedla hur alla ska r¨ora sig i f¨orh˚allande till varandra. Till exempel har show-gruppen Silver Shadows medlemmar som bor i olika l¨ander och de brukar tr¨affas tv˚a veckor innan t¨avlingar/shower f¨or att s¨atta ihop nya rutiner. D˚a ¨ar det viktigt att de kan kommunicera hur alla ska dansa och r¨ora sig l˚angt i f¨orv¨ag s˚a att de enskilda medlemmarna kan tr¨ana utan hela gruppen.

Silver Shadows har l¨ost detta problem genom att tejpa fast bilder p˚a gruppmedlemmar p˚a PET-flaskor och filmat dessa medan n˚agon flyttar runt dem (Ried, ”2010”). Detta utg¨or ett enkelt s¨att att illustrera rutinen, men om n˚agon vill ¨andra lite i rutinen m˚aste det d˚a spelas in en ny film. Detta g¨or ocks˚a att filerna som skickas till gruppmedlemmarna blir on¨odigt stora.

F¨or att g¨ora det enklare att i en grupp tillsammans koreografera en rutin, utan att beh¨ova vara p˚a samma st¨alle, borde det finnas ett datoriserat s¨att att illustrera f¨or varandra hur man t¨anker att de olika medlemmarna ska r¨ora sig.

1.1

Syfte

Syftet med projektet ¨ar att ta fram ett datorprogram som ska underl¨atta koreografering samt illustration av dansrutiner. Fokus kommer ligga p˚a hur dansarna ska r¨ora sig i f¨orh˚allande till varandra, inte hur de ska ta vissa steg eller g¨ora vissa turer, se figur 1.1 f¨or exempel. Det ¨ar allts˚a inte ett dans-inl¨arnings-program, utan ett rutin-samordnings-program.

Figur 1.1: Programmet visar hur r¨ott par ska l¨amna plats ˚at bl˚att par

(7)

2 Begrepp

Programmet ¨ar skrivet i Java och anv¨ander vanliga Java-implementationer s˚a som undantagsklasser, tok-enizerklasser, Canvas-paketet (Deitel och Deitel ”2010”).

En undantagsklass ¨ar n˚agot som programmet kan ”kasta” n¨ar n˚agot fel har intr¨affat, denna klass kan skrivas s˚a att felet som kastas ser ut p˚a ett visst s¨att, s˚a att anv¨andaren f¨orst˚ar vart felet uppst˚att.

En tokenizerklass ¨ar en klass som programmet anv¨ander f¨or att l¨asa en text. Den delar upp texten i mindre bitar (ord, siffror, tecken mm) s˚a att den blir mer l¨atthanterlig f¨or programmet. Programmet kan sedan p˚a ett l¨attare s¨att utvinna information ur texten.

(8)

3 Metod

Programmet ¨ar skrivet i Java f¨or att Java har st¨od f¨or 2D-grafik samt att det g˚ar att l¨agga upp Java-program p˚a internet. Som IDE har NetBeans anv¨ands, eftersom det programmet ger f¨orslag p˚a kod som ska skrivas och strukturerar klasserna p˚a ett enkelt s¨att. Enda nackdelen med NetBeans ¨ar att det ¨ar ett tungt program att k¨ora och tar mycket av datorns prestanda.

F¨or att implementera koden och f˚a tips om vilka funktioner som b¨or anv¨andas, har bland annat r˚adfr˚agning skett med personal p˚a IT-institutionen p˚a Uppsala universitet. Omfattande s¨okning p˚a in-ternet, framf¨orallt p˚a java.sun.com, har skett.

Strukturen p˚a programmet bygger p˚a Sk¨oldpaddsprogrammet (Sedvall ”2009”). Den g˚ar ut p˚a att det ¨ar en klass som styr allt som h¨ander och en klass som reppressenterar dom enskillda sk¨oldpaddorna/dansarna.

(9)

4 Programbeskrivning

Programmet ¨ar uppbyggt av tv˚a huvudklasser; Dansgolv och Dansare. Det finns ¨aven en Mainklass, en Tokenizerklass samt n˚agra undantagsklasser, RutinException och BibliotekException, se klassdiagramet i figur 4.1.

4.1

Klassen dansgolv

Programet skapar f¨orst ett dansgolvs-objekt. N¨ar detta skapas l¨aser programmet in information med hj¨alp av tokenizerklassen fr˚an textfilen ”rutin” (exempelrutin finns i appendix: 8.1 ). Textfilen inneh˚aller infor-mation om hur m˚anga dansare som ¨ar med i rutinen, vilket tempo musiken har och hur l¨ange dansarna ska v¨anta innan de b¨orjar dansa (detta ¨ar f¨or att de ska bli synkroniserade med musiken). ”Dansgolvet” skapar ¨aven en vektor, dansare[], d¨ar alla dansare sparas, en lista, bibliotekNamnAL, f¨or alla turernas namn samt en matris, bibliotekTurer, med deffenitioner av upp till 200 olika turer.

Efter att dansgolvet blivit skapat k¨ors metoderna skapaDansare, l¨asInBibliotek, deligeraTurer och f¨orfinaDansenefter varandra, nedan f¨oljer en punktformad beskrivning av vad dessa metoder g¨or.

skapaDansarel¨aser i filen ”rutin.txt” (exempelrutin finns i appendix: 8.1 ) • vilken typ av dansare som ska skapas

• var dansaren ska placeras initialt

• vilken f¨arj dansaren ska ha (om f¨arg inte ¨ar angivet i rutin.txt kommer metoden v¨alja f¨arg ˚at dansaren)

Till exempel, om det st˚ar i b¨orjan av en dansares rutin (L 200 100) kommer programmet att skapa en f¨orare (”Leader”) med start p˚a koordinaten x = 200 och y = 100, och om det st˚ar (F 180 300 o) kommer programmet att skapa en f¨oljare (”Follower”) p˚a positionen x = 180 och y = 300 och ge denna f¨oljare f¨argen orange.

l¨asInBibliotekl¨aser i filen Bibliotek.txt (exempelbibliotek finns i appendix: 8.2 ) • f¨orbi alla rubriker

• turens namn, som st˚ar i b¨orjan av varje rad, och l¨agger in det i tur och ordning i listan bibliotek-NamnAL

• alla siffror som beskriver turen och l¨agger dessa i matrisen bibliotekTurer, p˚a samma rad som namnet sparades p˚a i bibliotekNamnAL

• metoden kontrollerar ¨aven att turen inte ¨ar l¨angre ¨an 8 taktslag, eller har ord d¨ar koordinaterna ska vara

(10)

Dansgolv Dansare[] dansare SimplifiedTokenizer tokenizer ArrayList bibliotekNamnAL double[][] bibliotekTurer int startPaus int iSize int jSize int antalDansare int maxTaktslag int uppdelningspunkter AudioClip clip String musikfil int kollaAntalDansare() int kollaTempo() int kollaStartPaus() void run() void skapaDansare() void läsInBibliotek() int kollMinus() void deligeraTurer() void förfinaDansen() int kollaVinkel() int[] kollaRiktning() double getNumberRutin() int getTurNummer(String, int, int) void geTur(int, int, int, int[], String) void openWindow()

void paintPlupp(Graphics) void startaMusiken() Boolean sleep(long)

Main

void main(String[] arg)

Dansare double posX double posY double gammalVinkel int uppdelningsPunkter char typ String color ArrayList turArayListX ArrayList turArayListY double[] turListX double[] turListY void setUP(int) void setGammalVinkel(int) void addVinkel(double)

void svangTill(double, double, int) void tvangsFlytta(double, double) void flyttaTill(double, double, double)

void adToList(double, double, int, int[]) void adToListX(double) void adToListY(double) void förfinaDansen() SimplifiedTokenizer StreamTokenizer rutin StreamTokenizer bibliotek String bibliotekRef String rutinRef int nextTokenRutin() int nextTokenBibliotek() boolean isNumberRutin() boolean isNumberBibliotek() boolean isWordRutin() boolean isWordBibliotek() boolean isEOLRutin() boolean isEOLBibliotek() double getNumberRutin() double getNumberBibliotek() String getWordRutin() String getWordBibliotek() boolean isThisWordRutin(String) boolean isThisWordBibliotek(String) boolean isLeftBracketRutin() boolean isRightBracketRutin() boolean isLeftSQRBracketRutin() boolean isRightSQRBracketRutin() int getCharRutin() int getCharBibliotek() String toStringRutin() String toStringBibliotek String getTokenRutin() String getTokenBibliotek() void skipEOLsRutin() void skipEOLsBibliotek() void skipToEOLRutin() void skipToEOLBibliotek() RutinException BibliotekException

(11)

deligeraTurer

• l¨aser in turnamnet som varje dansare ska g¨ora och j¨amf¨or sedan detta namn med bibliotekNamnAL f¨or att ta ut turnummret f¨or turen

• koordinaterna tas ut f¨or den turen fr˚an bliotekTurer

• koordinaterna modifieras beroende p˚a om turen ska utf¨oras i en viss vinkel och om dansaren ska f¨orflytta sig medans turen utf¨ors

• koordinaterna ges till dansaren som sparar dem i en ”ArrayList” av koordinater som varje dansare har, dansaren kommer sedan att g˚a till dessa koordinater i tur och ordning n¨ar dansen simuleras f¨orfinaDansen

• anropar metoden f¨orfinaDansen (se beskrivning i 4.2) hos alla dansarna. Hos dansarna kommer d˚a diskretiseringspunkterna att tripplas, genom att tv˚a extra punkter l¨aggs till via en interpolering mellan tv˚a i tiden n¨arliggande befintliga punkter

Efter dessa metoder ¨oppnar dansgolvsklassen f¨onstret och m˚alar ut alla dansarna med hj¨alp av Canvas-paketet, startar musiken, v¨antar tills dansarna ska b¨orja dansa och sen loopar den ett anrop av metoden nextStephos alla dansarna, vilket g¨or att de tar ett steg fram˚at i rutinen, och metoden sleep, vilken g¨or att dansarna dansar i takt.

4.2

Klassen dansare

Ett dansobjekt beskriver en dansare och representers av en fylld cirkel, trekant eller fyrkant beroende p˚a om det ¨ar en f¨orare, f¨oljare eller ¨ovrig person. Ett dansobjekt har tv˚a listor, turArrayListX och turAr-rayListY, som beskriver hur dansaren ska flytta sig i x- respektive y-led i rutinen. Dessa listor ¨ar ArrayList eftersom de ¨ar l¨atta att fylla p˚a med nya tal, men kommer ¨andras till vanliga listor, turListX och turListY, n¨ar dansaren ska stega igenom rutinen, detta eftersom det g˚ar snabbare att h¨amta koordinaterna fr˚an en vanlig lista ¨an fr˚an en ArrayList.

Listorna fylls p˚a genom att dansgolvs-objektet anropar metoden adToList som tar in ett steg i form av argumenten; x, y, vinkel och riktning. Metoden konverterar x och y koordinaterna med hj¨alp av vinkeln s˚a att de utf¨ors i r¨att vinkel, metoden l¨agger ¨aven till riktningen. Till exempel, om ett steg ¨ar 0 10, betyder det att steget ska vara 10 pixlar i y riktningen, men om argumenten s¨ager att turen ska tas i vinkeln 45 grader konverterar metoden 0 10 till ungef¨ar -7 7, och om argumenten s¨ager att turen ska utf¨oras medan dansaren g˚ar i riktningen 3 0, kommer metoden konvertera -7 7 till -4 7.

Om en tur ska utf¨oras i 90 graders vinkel, m˚aste ¨aven dansarna ha vridit sig 90grader runt varandra innan turen b¨orjar, detta sk¨oter metoden svangTill som anropas av dansgolvet innan adToList-metoden anropas i b¨orjan av varje tur. svangTill tar in de kartesiska koordinaterna f¨or mittpunkten mellan dansarna fr˚an den aktuella dansaren samt vinkeln med vilken turen ska utf¨oras. Sen tar metoden bort den sista koordinaten i turArrayListX och turArrayListY och ers¨atter dessa med de koordinater som ¨ar vridna kring mittpunkten med den angivna vinkeln.

(12)

Figur 4.2: Illustrerar skillnaden p˚a att g¨ora en SwingOut i 45 graders vinkel (bl˚att par) och rakt eller i 0 graders vinkel (r¨ott par)

4.3

Dansbeskrivning, rutin-filen

Anv¨andaren till programmet skapar en vanlig textfil som heter ”Rutin.txt”. Rutinen beskrivs (exempel-rutin finns i appendix: 8.1 ) genom att ange hur m˚anga dansare som ¨ar med i (exempel-rutinen, tempot p˚a l˚aten och hur l¨ange dansarna ska v¨anta innan de b¨orjar dansa, detta f¨or att de ska synkroniseras med musiken. F¨or varje dansare deffineras om det ¨ar en f¨orare, f¨oljare eller ¨ovrig, vilka startpositioner som de ska ha och, valfritt, dansarens f¨arg, allt detta kallas deklareringen av dansare.

Efter detta kommer k¨arnan i textfilen, n¨amligen alla turer som dansarna ska g¨ora. Under varje dansares deklarering st˚ar alla turer som den dansaren kommer g¨ora i rutinen. Om det till exempel st˚ar FSwingOut betyder det att en f¨oljare ska g¨ora turen SwingOut rakt fram och p˚a st¨allet. Efter turerna kan ¨aven oli-ka argument skrivas, som beskriver hur turen soli-ka utf¨oras. Argument inom paranteser beskriver i vilken vinkel turen ska utf¨oras, st˚ar det till exempel FSwingOut(45) ska turen g¨oras i 45 graders vinkel (se figur 4.2). Argument inom hakparanteser anger hur dansaren ska f¨orflytta sig i rummet medans turen utf¨ors, st˚ar det till exempel FSwingOut(30)[10 5] ska f¨oljaren g¨ora en SwingOut i 30 graders vinkel samtidigt som denne r¨or sig 10 pixlar ˚at h¨oger och 5 pixlar upp˚at, per taktslag.

Det kan ocks˚a st˚a tv˚a kommandon, ”Corr(x y)” och ”FT(st x y)”, som inte ¨ar n˚agra specifika turer. ”Corr(x y)” flyttar/korrigerar dansaren utan att det tar n˚agon tid x pixlar ˚at h¨oger och y pixlar upp˚at. Detta kan beh¨ovas om man har gjort en ganska l˚ang slinga och avrundningsfelet i ber¨akningarna av koordina-terna b¨orjar bli f¨or stora. ”FT(st x y)” (Flytta Till) flyttar en dansare p˚a ”st” taktslag till koordinaten (x, y). Detta kan beh¨ovas om det dansande paret separerat fr˚an varandra f¨or att g¨ora solodans och sedan ska hitta tillbaka till varandra.

En dansare ¨ar inte sammankopplad i par med n˚agon annan vilket g¨or att varje dansare kan r¨ora sig fritt och utan hinder, men det g¨or ocks˚a att dansarna kan r¨ora sig i f¨orh˚allande till varandra p˚a ett s¨att som inte ¨ar ¨onskv¨art.

Det ¨ar viktigt att turerna skrivs i en dansm¨assigt giltig form, s˚a att om en tur slutar i ”¨oppen position” b¨orjar n¨asta tur i ”¨oppen position” och inte i ”sluten position”. Detta brukar i praktiken inte orsaka problem.

4.4

Dansbeskrivning, bibliotek-filen

Dessa turer ¨ar definerade i en annan textfil som heter ”Bibliotek”. Detta g¨or att anv¨andaren kan l¨agga till egna turer, vilket ¨ar viktigt eftersom koreografer ofta tillverkar nya turer till rutiner. I denna fil skrivs f¨orst namnet p˚a en tur och sedan ett antal siffror som beskriver hur turen utf¨ors. De f¨orsta tv˚a siffrorna (kallas x y) beskriver hur det ¨ar t¨ankt att dansaren st˚ar, i f¨orh˚allande till sin partner, vid turens b¨orjan. St˚ar det till exempel LPassering 0 40 betyder det att i b¨orjan av turen Passering har f¨oraren 0 pixlar i x-led och 40 pixlar i y-led till mittpunkten mellan sig och sin partner. Detta ¨ar till f¨or att om turen inte ska g¨oras rakt fram (utan i n˚agon form av vinkel) s˚a ska dansaren f¨orst roteras kring denna mittpunkt med den angivna vinkeln.

Efter ”x y”-siffrorna kommer ”vink”-siffran och den beskriver vinkeln som paret slutar turen i. Till exempel i turen Passering b¨orjar man i vinkeln 0 grader men eftersom man byter plats hamnar man v¨anda

(13)

om varandra, allts˚a slutar man i 180 grader.

Efter ”vink”-siffran kommer k¨arnan i beskrivningen, en beskrivning av den relativa r¨orelsen i x- och y-led som dansaren ska g¨ora vid varje taktslag i rutinen. St˚ar det till exempel

” Tur -10 0 0 10 0 0 7 ”

betyder det att i turen Tur har dansaren sin partner 20 pixlar till v¨anster i b¨orjan, att turen inte roterar paret och att dansaren ska ta ett 10-pixlels steg rakt ˚at h¨oger, f¨oljt av ett 7-pixels steg rakt ner˚at, och att turen totalt tar tv˚a taktslag att genomf¨ora.

(14)

5 Anv¨andningsomr˚aden

Programmet kan anv¨andas till att samordna och visualisera dansrutiner f¨or showgrupper d¨ar dansarna inte ¨ar tillsammans. Med hj¨alp av programmet kan en medlem i en dansgrupp l¨ara sig sammans¨attningen av dansens turer, och hur det ¨ar t¨ankt att dansarna och dansparen ska f¨orflytta sig i de olika turerna. Medlem-marna i dansgruppen beh¨over inte tr¨affas vid sj¨alva inl¨arningen av turerna i dansen, utan inl¨arningen sker individuellt, med hj¨alp av progrmmet. I och med att deltagarna blir v¨al f¨orberedda p˚a dansen innan den ¨ovas praktiskt, sparas tid och kostnader, eftersom tiden f¨or de praktiska ¨ovningarna kan reduceras. Kost-nader minskar eftersom resor och tiden f¨or hyra av danslokal f¨or repetition kan reduceras.

Det finns fler anv¨andningsomr˚aden till det datoriserade dansprogrammet. Vissa partier i en rutin kan tydligg¨oras. Att i grupp tillsammans studera formationerna i en dans genom symbolerna p˚a en bildsk¨arm, och diskutera koreografin, kan ge en tydligare samst¨ammighet ¨an om dansens koreografi diskuteras utifr˚an hur dansen har upplevts av de dansande. Tillsammans f˚ar deltagarna en gemensam syn p˚a dansens turer.

I m˚anga olika grupper ing˚ar marscherande i formation eller att r¨ora sig i ett visst f¨orutbest¨amt m¨onster. Koreografen kan ¨aven h¨ar teoretiskt skapa formationerna och l˚ata deltagarna ta del av kore-ografin innan de tr¨affas f¨or praktiska ¨ovningar. Verksamheter som skulle kunna ha nytta av ett datoriserat dansprogram skulle kunna vara musik- och trumk˚arer, dressyrklubbar, gymnastik- och vattenakrobatik-grupper, cheerleadinglag med flera.

¨

Aven d¨ar inte exakt r¨attning och formation ¨ar viktigt skulle programmet kunna anv¨andas. I olika lagidrotter skulle en tr¨anare kunna illustrera hur laget ska utf¨ora en viss spel-strategi, tillexempel vid fasta situationer i fotboll (h¨orna, frispark mf).

(15)

6 F¨orb¨attringar

Det finns utvecklingspotential f¨or anv¨andarv¨anligheten i detta program. Strukturen i programmet skulle

kunna f¨orb¨attras. Vidare skulle vissa funktioner och metoder kunna f¨or¨andras f¨or att f¨orb¨attra anv¨andargr¨anssnittet. Informativa anv¨andarinstruktioner saknas i dagsl¨aget.

6.1

Enklare f¨orb¨attringar

Risken f¨or anv¨andarfel i programmet ¨ar ganska stort, till exempel kan biblioteksfilen ha bokst¨aver d¨ar det bara f˚ar varar siffror, ett udda antal koordinater osv, rutinfilen kan ha ord i sig som inte ¨ar definerade i biblioteket, eller f¨or m˚anga ord per rad osv. D˚a ¨ar det viktigt att programmet inneh˚aller felmeddelanden som talar om vart felet intr¨affat och ger f¨orslag p˚a l¨osning. M˚anga vanligt f¨orekommande fel ¨ar program-met bra p˚a att ber¨atta f¨or anv¨andaren, till exempel kan det st˚a

DatoriseradDans.RutinException: Kan inte hitta turen ”LSkipupp” hos dansare nr: 5 p˚a rad: 11. Rekomenderar att stava r¨att i rutinen.

F¨or vissa fel anger inte programmet var felet ligger. Om man till exempel skriver fel i Corr(x y) och gl¨ommer slutparentesen kommer programmet att ge felmeddelandet:

DatoriseradDans.RutinException: Saknar en ’)’ vid Corr!

h¨ar, till exempel, borde programmet ange vilken dansare det g¨aller och p˚a vilken rad i rutinen.

N¨ar man koreograferar en rutin kan det vara bra att strukturera upp rutinen i olika block. Om musiken till exempel byter karakt¨ar vill man ocks˚a tydligt se det i sina anteckningar. Ett s¨att att strukturera upp rutin-filen ¨ar att ha tomma rader d¨ar anv¨andaren vill dela upp rutinen, men utan att uppspelningen av rutinen p˚averkas. Programmet st¨odjer inte tomma rader utan tolkar det som att rutinen ¨ar slut, men det borde programmet kunna st¨odja och helt enkelt l¨asa f¨orbi tomma rader. Programmet borde ¨aven kunna ge st¨od f¨or kommentarer i textfilen, tillexempel skulle alla rader som b¨orjar med ”//” kunna enbart l¨asas f¨orbi. D˚a skulle anv¨andaren kunna skriva hur denna t¨ant kring vissa turer och strukturera upp filen p˚a ett bra s¨att.

N¨ar man anv¨ander komandot FT(st x y) ska anv¨andaren ange koordinaten som dansaren ska g˚a till, men som anv¨andare kanske man vet vart p˚a sk¨armen man vill att dansaren ska g˚a men man vet inte vad det ¨ar f¨or koordinat. D¨arf¨or borde programmet exempelvis ha en funktion som anger koordinaterna f¨or en viss punkt som anv¨andaren klickar p˚a.

N¨ar en showgrupp showar med en rutin kan det h¨anda att det finns restriktioner p˚a hur mycket dansar-na kan r¨ora sig p˚a grund av scenenstorleken, och formen p˚a scenen. D¨arf¨or borde programmet kundansar-na ha st¨od f¨or att ange m˚att och form p˚a scenen, s˚a att programmet kan visa dansarna p˚a en scen som har r¨att storlek. P˚a s˚a s¨att kan man se om n˚agon dansare l¨oper risk att dansa in i en v¨agg, dansa av golvet eller liknande.

(16)

Programmet ¨ar nu skrivet med on¨odigt m˚anga metoder i SimplifiedTokenizer-klassen, detta eftersom programmet anv¨ander tv˚a StreamTokenizer’s, en f¨or att l¨asa Rutin-filen och en f¨or att l¨asa Bibliotek-filen. D˚a ¨ar metoder skrivna tv˚a g˚anger, en f¨or varje StreamTokenizer, ist¨allet f¨or att ha en metod som kan l¨asa b˚ada filerna, och ha n˚agon form av inparameter som avg¨or vilken fil som l¨ases. Till exempel finns nu tv˚a metoder f¨or att l¨asa n¨asta tok, en nextTokenRutin() och en nextTokenBibliotek(). Dessa b˚ada borde kunna ers¨attas av en metod, nextToken(String), d¨ar str¨angen avg¨or om det ¨ar i Rutinen eller Biblioteket som l¨asningen ska ske.

6.2

Visioner

Som programmet ¨ar skrivet nu kommer den att leta efter tv˚a textfiler i mappen C:/DansBibliotek/ som het-er Rutin.txt och Bibliotek.txt samt en l˚at i samma mapp med namnet Musik.wav. Ett mhet-er anv¨andarv¨anligt program hade kanske fr˚agat efter s¨okv¨agen till rutin-filen och musik-filen, vilket hade gjort att anv¨andaren skulle kunna d¨opa filerna till namnen p˚a rutinen eller l˚aten, och ha m˚anga rutiner sparade. Programmet borde ocks˚a till˚ata mp3-filer, men Java har inte st¨od f¨or det i grundutf¨orandet.

Vissa l˚atar har olika tempon i olika delar av l˚aten, i ”Alla snubbar vill ju vara katt” h¨ojs tempot fr˚an 120 till 264BPM (taktslag per minut). Om man ska g¨ora en rutin till en s˚adan l˚at kan det vara bra om man kunde ¨andra tempot som dansarna flyttar sig med i rutinen.

Att anv¨anda en vanlig textfil f¨or att skriva rutinen g¨or att den blir l¨att plottrig och ostrukturerad. Att skriva in rutinen i ett Excel ark eller liknande skulle g¨ora sj¨alva dansbeskrivningen mer l¨att¨oversk˚adlig. Helst skulle programmet haft ett grafiskt anv¨andargr¨anssnitt d¨ar man skulle kunna skapa nya turer genom att klicka och dra p˚a sk¨armen, d¨ar alla dansare och deras turer skulle kunna vara uppstaplade i rader och tabeller, d¨ar l˚atens tidsaxel skulle kunna visas brevid turerna och att man skulle kunna spola fram och tillbaka och pausa l˚aten.

(17)

7 Diskussion

Efter mitt arbete att konstruera ett dataprogram som hj¨alpmedel att koreografera olika dansrutiner till musik, har jag f˚att flera positiva reaktioner. Mina id´eer har bland andra mottagits med entusiasm av ordf¨oranden i Stenb¨ackens Buggf¨orening (Heaggblom Bjell˚a, ”2010”). Hon vill testa programmet i sam-band med koreografering och ¨ovning inf¨or deras kommande dansshow. Det ¨ar framf¨orallt programmets f¨orm˚aga att l˚ata dansare l¨ara k¨anna dansrutinerna, trots att ¨ovriga dansare inte ¨ar n¨arvarande, som tilltalat Heaggblom Bjell˚a. Programmet ¨ar t¨ankt att anv¨andas vid skapandet av rutinerna, varefter dansarna, som ¨ar bosatta i mellansverige, kommer att f˚a ta del av programmet i samband med en introduktionstr¨aff i oktober. Efter introduktionstr¨affen kommer dansarna att kunna l¨ara sig dansens turer p˚a hemmaplan, och kommer att kunna l¨amna synpunkter p˚a turerna till koreografen. Dansarna kommer att kunna l¨ara k¨anna musiken och dansen med dess turer p˚a ett helt annat s¨att ¨an vad som sker vid traditionella genomg˚angar och ¨ovningar. Heaggblom Bjell˚a h¨avdar att programmet kommer att spara en hel del tid och kostnader, b˚ade ˚at dansarna och ˚at f¨oreningen.

(18)

8 Appendix

8.1

Rutin

A n t a l D a n s a r e 4 b l ˚a =b r ¨o d = r g r ¨o n =g o r a n g e =o g u l =y Tempo 214

S t a r t P a u s 9200

( L 180 2 6 0 ) ( F 200 2 6 0 ) ( L 280 2 6 0 ) ( F 300 2 6 0 ) L S O S l u t e n ( 4 5 ) F S O S l u t e n ( 4 5 ) L S O S l u t e n ( 4 5 ) F S O S l u t e n ( 4 5 ) LSO ( 4 5 ) FSO ( 4 5 ) LSO ( 4 5 ) FSO ( 4 5 )

(19)
(20)

Litteraturf¨orteckning

[1] Mailintervju med Ried, Andy (2010-05), medgrundare av showdansgruppen ”the Silver Shadows” [2] O. Deitel och H. Deitel (2010) Java How To Program, Eighth Edition Pearson education

[3] Sun Microsystems, Inc (2003) http://java.sun.com/j2se/1.4.2/docs/api/java/awt/Canvas.html (2010-05)

[4] Sedvall, Matts (2009) Programeringsteknik 1, 1TD433, IT-institutionen, Uppsala Universitet. [5] Intervju med Heaggblom Bjell˚a, Anna (2010-04), ordf¨orande Stenb¨ackens Buggf¨orening

References

Related documents

[r]

Den ovanst˚ aende bevistekniken ¨ar ett modernt p˚ afund och knepet att skapa en l¨amplig tv˚ a- dimensionell f¨ordelning

F¨ or att kunna r¨ akna ut A −1 p˚ a det s¨ attet s˚ a m˚ aste det f¨ orst g˚ a att g¨ ora Gausseliminering av A till trappstegsform med exakt n piv˚ aelement, och om vi kan

Po¨ angen p˚ a godk¨ anda duggor summeras och avg¨ or slutbetyget.. L¨ osningarna skall vara v¨ almotiverade och

[Tips: Faktorisera polyno-

D¨arf¨or ¨ar 2X exponentialf¨ordelad, med v¨antev¨arde 2a, vilket ¨ar samma f¨ordelning som f¨or Y.. Uppgiften ¨ar egentligen felformulerad; det ¨ar signifikansnniv˚an 1%

Genom föreslagen planlösning och glasning på två sidor av de flesta balkonger kan målet högst 55 dB(A) ekvivalentnivå samt högst 70 dB(A) maximalnivå utanför minst hälften

Ovning 1: Hur m˚ ¨ anga relationer finns det p˚ a en m¨ angd med 3 element? Hur m˚ anga reflexiva relationer finns det? Vad kan du s¨ aga i det allm¨ anna fallet, om antalet