Re: thoughts on java vs SC for a general-purpose networking app?
My first reaction is, what are you wanting to do with this tool? I do a lot of networking with my band Glitch Lich and we use our own server written in C++ using oscpack which works really well (we are a distributed ensemble and having synchronization is key). If you're looking for some kind of server situation, something like Java (or even better C++, ok I'm biased) would be easier to set up on a remote machine. If you don't want to use a server, and you're mainly doing things in SC I would just write your code in SC. There are many network bands that face similar issues although often with some key differences. The mandelbrots are another band that has their own solution, but written in SC (with some code in Lua I believe for video mixing) however they have different problems because they mainly live code yet aren't distributed. Also, if live coding is something you're interested in you should look at the republic quark which is great. Some things worth looking at:
OscGroups: C++ server used to facilitate peer to peer OSC communication. Often this is a go to for many network ensembles and its what my band used until we made our own. It makes keeping track of IP addresses and sending/receiving packets much easier. Ross Bencina is a beast coder and its well made.
BenoitLib: The Mandelbrots networking library. Lots of useful stuff for sharing code and time synchronization. Mostly written in SC
Republic: live coding quark. Haven't used it too much myself, however the minds behind it are legend and I've heard its very good. You get it by looking in your Quarks.gui;
OSCthulhu: Glitch Lich's OSC server with synchronization (Credit to my brother Curtis McKinney for the majority of the work on it). OscGroups simply sets up peer to peer messaging where as OSCthulhu is a central hub where all information passes. Works on an object synchronization scheme similar to video games. Because of the synchronization cycles there is a guaranteed state across the network and it essentially eliminates issues related to dropped packets. We have a paper coming out at ICMC about it which might illuminate some of the decisions behind it. The codebase probably needs some updating and it probably needs a good tutorial because networking with this philosophy is very different from networking in a typical direct messaging manner. However if you want to give a go:
Make something yourself: Its not as hard as you might think, if you're willing to invest some time into it. However there's no reason to reinvent the wheel if something like OscGroups is going to give you what you want. The advantage with something custom is that you can really tailor it to the needs of your ensemble.
As far as performance, I have never done any formal testing for SC vs Java. However if you're using Java to communicate to SC you're adding another layer on top so it's cumulative to begin with. That said, these things are quite fast, I would not worry about benchmarks, and worry more about the right solution. What's the name of your band? best,
On Sat, Jun 16, 2012 at 1:31 AM, Jascha Narveson <jnarveson-KaPM4R2U43T2fBVCVOL8/A@public.gmane.org>
Hello, list -
I'm thinking of making a general purpose OSC tool for my LAN-based laptop ensemble, to manage some of the problems we encounter when using wireless networks (which we want to keep using, because we hate wires, and like widely spaced arrangements sometimes).
What advantages might there be to writing this in Java vs as a standalone SC app? I'm wondering if, for instance, networking runs more smoothly in one language than the other, for some reason - things like that. At some point I'll do some tests myself, but I'm curious if people have initial reactions one way or the other...
sc-users mailing list
info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml