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.