11 mars 2008

Val av programmeringsspråk för Wiinamp

Att fortsätta använda C# i utvecklingen av pluginen Wiinamp kändes optimalt men är tyvärr inte möjligt. Det går att göra men nackdelerna överväger fördelarna och att använda C eller C++ är att föredra.

Plugins till Winamp fungerar på de sättet att de skrivs som unmanaged C-DLL:er som sedan laddas av programmet. Polis Pilavas är en utvecklare som portat det SDK för C++, som Winamp erbjuder på sin webbplats, till C#. På sin webbplats för projektet förklarar han att plugin till Winamps kan skrivas i C# men att nackdelarna överväger fördelarna:

"No it doesn't have plugin functionality, because winamp load's unmanaged C dlls as plugins, so if you want to create a plugin you'd be better of doing it in C or C++.You can however create a separate program that monitors for when another song starts playing, and does 'some things'. As far as I can tell the only way to have managed code running as a winamp plugin is to have a unmanaged (C or C++) dll, that uses COM via COM/Interop to call a procedure in a managed dll, but even then you would have to find a way to read winamp's memory in a managed process. So the cons definitely outweigh the pros for writing a managed winamp plugin."

Dessa unmanaged C-DLL:er kan skrivas i såväl C som C++. Eftersom Wiinamp med största sannolikhet kommer bestå av kort och okomplicerad kod spelar valet ingen större roll. Alexander och Aram som jobbar med Wiinamp har grundläggande respektive goda kunskaper inom C respektive C++ och känner att lära sig respektive utveckla sina kunskaper i C++ är intressantare än att göra detsamma i C.

Designidén bakom Wiinamp är att låta WiiMove (arbetsnamnet för applikationen för inspelning och identifiering) skicka ut namnet på den identifierande gesten i form av en textsträng till Wiinamp via en named pipe (detta alternativ kan ändras men verkar attraktivast hittills). Pluginen utvecklas att lyssna efter textsträngar och skickar sedan olika kommandon till Winamp beroende på vilken textsträng den läser.


Val av mediaspelare

Vi har sedan början av arbetet varit överens om att vi vill tillämpa vårt verktyg genom att styra en medispelare med olika gester. Valet föll på en välbekannt och populär mediaspelare som idag används av drygt 57 miljoner människor, nämligen Winamp.


Vi valde Winamp av följande orsaker:

  • Populäritet: 57 miljoner användare talar för sig själv.
  • Tacksamt att modifiera: På Winamps officiella webbplatsfinns omfattande vägledning för utveckling tillgänglig. Ett stort utvecklingsforum erbjuds i kombination med ett SDK (Software Development Kit) och tusentals nerladdningsklara plugins.

Vårt minimimål är nu att med enkla gester kontrollera funktioner som play, paus, next, previous, volume up, volume down med flera i denna mediaspelare.


Namnet på pluginen blir såklart Wiinamp.

10 mars 2008

Vecka 10 - Erik

Aktivitets- och tidsrapport för vecka 10.
  • MÅNDAG: Möte.
  • TISDAG: Jobbat med GUI:t i skolan.
  • TORSDAG: Föreläsning och möte.
  • SÖNDAG: Uppdaterade blogg.
Tid denna vecka: 8,5 h
Totalt: 102,5 h

Status - Vecka 10

Denna vecka handlade mest om att fördela och planera arbetet under tentaperioden och det efterföljande höstlovet. Ett arbetsschema togs fram och finns att se i detta mötesprotokoll.

Implementeringen av HMM tar små steg framåt. Flera fel har hittats och rättats till men fortfarande fungerar inte inspelningn eller identifieringen så väl som vi vill.

Arbetet har delats upp. Erik har nu hand om designen av GUI:t. Alexander och Aram skall arbeta med att göra en plugin till mediaspelaren. Valet föll på Winamp. Johan och Fredrik fortsätter med att färdigställa HMM-implementeringen.

Angående GUI:t har vi nu en klarare bild över hur det skall se ut. I grova drag kommer det bestå av tre delar. En för inspelning, en för att fördela gester till önskade applikationer och en för att organisera gestern. Skärmdumpar kommer att läggas upp när tillgängliga.

Kort om de tre delarnas design:

  • Inspelning: Visar våre tre accelerometergrafer för feedback. Innehåller information över hur en inspelning skall göras.
  • Organisation: En lista med namn på inspelade gester och knappar för att addera, radera, spela in (på nytt).
  • Fördelning: En lista med program och vilka gester man bundit till dem samt en separat lista med gester som man kan välja att binda till program.

Vecka 10 - Alexander

Aktivitets- och tidsrapport för vecka 10.
  • Måndag 03.03.08: Möte. Administrativt arbete.
  • Tisdag 04.03.08: Arbete med gruppen. Parallellt jobb.
  • Onsdag 05.03.08: Administrativt arbete.
  • Torsdag 06.03.08: Möte. Start av text om utvärdering av plugin till Winamp.
  • Fredag 07.03.08: -
  • Lördag 08.03.08: -
  • Söndag 09.03.08: Uppdatering av bloggen.

Tid denna vecka: 8 h 30 min
Totalt: 137 h 30 min

09 mars 2008

Vecka 10 - Johan

Aktivitets- och tidsrapport för vecka 10.
  • 2008-03-10: Handledarmöte
  • 2008-03-11: Möte med gruppen
  • 2008-03-13: Föreläsning: Resultathantering och struktur
  • 2008-03-13: Möte med gruppen

Tid denna vecka: 9 h
Totalt: 92 h 15 min