29 mars 2008

Vecka 13 - Alexander

Aktivitets- och tidsrapport för vecka 13.

  • Måndag 24.03.08: -
  • Tisdag 25.03.08: -
  • Onsdag 26.03.08: -
  • Torsdag 27.03.08: -
  • Fredag 28.03.08: -
  • Lördag 29.03.08: Arbete med gruppen. Förberedelse för halvtidpresentationen.
  • Söndag 30.03.08: Arbete med gruppen. Uppdatering av bloggen

Tid denna vecka: 9 h 30 min

Totalt: 175 h

Möte 29.03.08

Möte: Inom gruppen.


Närvarande: Aram, Fredrik, Erik och Alexander. Johan var sjuk.


Uppgifter till detta möte: Arbetsmängden med tentor och omtentor har lämnat lite tid över till de planerade uppgifterna. Av de uppgifter som kan ses här har Alexander och Aram gjort allt sitt. Aram har lite kvar om biblioteksvalet. Erik har börjat med sina uppgifter men är inte klar. Erik och Johan har inte skrivit något om sina uppgifter förrän idag. Det kommer dock inte bli ett problem att hinna med detta för inlämningen av halvtidsrapporten.


Gjort detta möte: Tagit fram en presentation i PowerPoint för halvtidsredovisningen samt gjort designbeslut för GUI:t.

Beslut:

  • Fredrik och Alexander sköter halvtidspresentationen.
  • Möte imorgon 15.00 utanför Linsen.
  • Samling 13.15 på måndag utanför Linsen. Repetition av halvtidsredovisningen.
  • Inlämning av halvtidsrapport till Kalle och Staffan samt GU-gruppen tisdag kväll.

Tid:  5 h

28 mars 2008

Vecka 10 - Fredrik

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.
Tid denna vecka: 8 h
Totalt: 100 h

24 mars 2008

Vecka 12 - Alexander

Aktivitets- och tidsrapport för vecka 12.

  • Måndag 17.03.08: Möte med Kalle. Info om utvecklingen av Wiinamp skriven på bloggen
  • Tisdag 18.03.08: -
  • Onsdag 19.03.08: -
  • Torsdag 20.03.08: -
  • Fredag 21.03.08: -
  • Lördag 22.03.08: -
  • Söndag 23.03.08: -


Tid denna vecka: 3 h

Totalt: 165 h 30 min

17 mars 2008

Möte 17.03.08

Möte: Med Kalle och Staffan.

Närvarande: Alexander och Staffan

Uppgifter till detta möte: -


Diskuterat på mötet: Jag och Staffan gick översiktligt igenom vår nuvarande version av rapporten. Kommentarer från Staffans sida finns nu infogade i dokumentet på Google Docs. Vi diskuterade även projektets status och jag demonstrerade Wiinamp innan vi mer i detalj analyserade gruppens nuvarande och framtida arbetssätt. Jag fick dessutom några kandidat- och exjobbsrapporter mailade till mig att använda som fingervisningar inför framtida skrivande.


Staffan rekommenderade att vi under avsnittet för genomförande borde berätta kontinuerligt hur vi arbetet och tagit oss fram med arbetet. Att dela upp avsnittet för GUI:t, Wiinamp, identifieringen och inspelningen är ett sämre alterantiv eftersom vi hittills arbetat mycket gemensamt och våra parallella uppgifter troligtvis kommer att påverka varandra en hel del. Att beskriva val och förändringar av blir lättare och läsaren får lättare att förstå hur arbetet utförts.


Notera att vi kommer diskutera mallen för genomförandeavsnittet med Staffan och Kalle igen efter påsklovet. Det blev lite flummigt som det blev nu :)


Tid: 1 h

Status - Vecka 11

Denna vecka fick vi oväntat mycket gjort trots att vi inte arbetade tillsammans och alla i gruppen hade tentor att skriva.


Jag och Arams uppgift sedan det senaste mötet var att utveckla pluginen för den mediaspelare vi vill kunna styra med gester. Valet gick fort och kan läsas här. I vilket språk pluginen skulle skrivas i bestämde vi också. Valet finns dokumenterat här.


Utvecklingen av pluginen gick oväntat smidigt. Jag bekantade mig men området under veckan och tillsammans med Aram blev vi klara i fredags.


Pluginen fick namnet Wiinamp och är i detta skede designad så att man kan styra Winamp genom att skicka textsträngar till applikationen via kommadoprompten i Windows. Vi valde att endast stöda funktionerna play, pause, next, previous samt volume up och volume down. Dessa var de mest önskade enligt undersökningen jag och Erik utförde tidigare och vi tycker de duger att utgå ifrån. Att lägga till flera är dessutom väldigt lätt. 


Wiinamp använder sig av named pipes för att utbyta information mellan kommandoprompten och Winamp. Följande beskrivning av metoden kommer frånwebblatsen för Microsoft Developer Network:


A named pipe is a named, one-way or duplex pipe for communication between the pipe server and one or more pipe clients. All instances of a named pipe share the same pipe name, but each instance has its own buffers and handles, and provides a separate conduit for client/server communication. The use of instances enables multiple pipe clients to use the same named pipe simultaneously. Any process can access named pipes, subject to security checks, making named pipes an easy form of communication between related or unrelated processes. Any process can act as both a server and a client, making peer-to-peer communication possible. As used here, the term pipe server refers to a process that creates a named pipe, and the term pipe client refers to a process that connects to an instance of a named pipe. Named pipes can be used to provide communication between processes on the same computer or between processes on different computers across a network. If the server service is running, all named pipes are accessible remotely. If you intend to use a named pipe locally only, deny access to NT AUTHORITY\NETWORK or switch to local RPC.


För mer info om denna metod besök denna länk. En utvärdering av metoden och andra kandidater vi hade i åtanke kommer att läggas upp på bloggen så småningom. Men kort sagt valde denna metod eftersom det är ett smidigt alternativ eftersom WiiMove kommer att agera server och skicka ut textsträngar till flera olika klienter via en bestämd process.


En del arbete finns kvar att göra för att få WiiMove och Wiinamp utbyta information mellan varandra på samma smidiga sätt som kommandoprompten  och mediaspelaren gör i detta skede. Vi har inte ännu beslutat hur applikationen skall designas för detta ändamål och därför utvecklades Wiinamp till sin nuvarande form. Grovjobbet är dock definitivt redan gjort och att anpassa Wiinamp til WiiMove i ett senare skede tror vi kommer att gå smärtfritt.

Vecka 11 - Aram

Aktivitets- och tidsrapport för vecka 11.
  • 2008-03-14: Arbete i skolan med Alexander.
Tid denna vecka: 5 h
Totalt: 111 h

Vecka 10 - Aram

Aktivitets- och tidsrapport för vecka 10.
  • 2008-03-03: Möte med handledare
  • 2008-03-04: Möte med gruppen
  • 2008-03-06: Föreläsning och möte med gruppen
Tid denna vecka: 8 h
Totalt: 106 h

Vecka 11 - Alexander

Aktivitets- och tidsrapport för vecka 11.

  • Måndag 10.03.08: Arbete med rapporten.
  • Tisdag 11.03.08: Val av mediaspelare. Informationssökning om pluginutveckling till Winamp. Uppdatering av bloggen.
  • Onsdag 12.03.08: Studerande av C++ för Programmering av Wiinamp. Utveckling av Wiinamp.
  • Torsdag 13.03.08: Utveckling av Wiinamp.
  • Fredag 14.03.08: Utveckling av Wiinamp tillsammans med Aram
  • Lördag 15.03.08: -
  • Söndag 16.03.08: -

Tid denna vecka: 25 h
Totalt: 162 h 30 min

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.