Hello everyone, What follows is my preliminary gsoc proposal for the OSC networking project. I'm looking for lots of comments / feedback. Thanks everyone!
--- * OSC Networking for Pygame* *Background* "OSC is often used as an alternative to the 1983 MIDI standard, where higher performance, higher resolution and a richer musical parameter space is desired" (Wikipedia) In a nutshell, Open Sound Control (OSC) is a content format designed to accomodate the transmission of musical performance data between computers, instruments, and other multimedia devices. OSC has been applied in many areas, including software synths, robotics, and distributed sound applications. Despite its popularity, there is currently no implementation in Pygame. I would like to remedy that. *Proposal* To create a simple OSC implementation (over UDP) for Pygame using the Python socket API. The goal is to provide an interface within Pygame to create and use OSC clients/servers, OSC messages and bundles, as well as a multiple-unicast OSC-client with subscription and message-filtering support. Inspiration and direction will be taken from PyOSC, the "Simple OSC" implementation by Holth and McChesney, the documentation available at http://opensoundcontrol.org/, and most importantly, from my mentor and the Pygame community as a whole. Example applications will be created as development proceeds, both as a form of documentation, and to facilitate testing. Concise tutorials will be written for each example application, and "user-tested" on one or more of my colleagues who are relatively new to Python development, and anyone else in the community who would like to participate, comment, and provide feedback. This will be a good method of getting useful advice and feedback from the community. *About Me* My name is Gabriel Silk, and I'm a fifth-year undergraduate computer science student at the University of British Columbia in Vancouver, B.C. I have experience in networking, audio, game dev, and I'm a huge fan of open source software. My favorite hobby is making electronic music. So, I feel that Pygame's OSC project is a natural fit for me. I have experience in c, Python, network programming (I've written a proxy server, an ftp client, and simple TCP-like protocol on top of UDP for coursework). Recently I wrote an on-line multiplayer game called Squabble as a personal side-project, with a server written in Java, and a client written in Flash. Last term I wrote a world-modeller in c++ using Ogre. This term, I'm working on a multi-touch, collaborative, UML diagram creation tool for the SMART Table as a course project. I'm also working on a web-based CMS for the BC Cancer Agency. All of these projects will be finished by the end of April, before gsoc begins. Also, I've worked for Electronic Arts as well and Merck Frosst. Here's my blog: http://gabrielsilk.wordpress.com *Deliverables* a) Framework with OSC Server, Client, Message, Bundle and multiple-unicast interfaces b) API documentation, covering every class and public method d) At least three example applications, with a large coverage in terms of functionality demonstrated *Timeline* Week 1: Finalize design and intended API Week 2-3: Implement OSC Server Weeks 4-5: Implement OSC Client and Message classes, work on first example application Week 6-7: Implement Bundles, complete first example application Week 8: Finalize multicast API Week 9-10: Implement multicast, complete second example application Week 11: System and integration testing; complete third example application Week 12: Finish up documentation for system and examples