[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[pygame] summer of code: OSC networking proposal



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