Hi, Ive been doing a project that allows people to play music in real time over a network or the internet , etc. I have this working by sending midi messages over the net using netsend, although this works perfectly with a LAN or a really high speed internet connection , there is alot of latency with normal internet connections. I had a look at OSC before I started this project and found it difficult to understand and use, there was little tutorials for it too, but my question is, would it be a big job to change how my program works if I used OSC instead of netsend/netreceive? At the moment I have several number boxes attached to different netsend objects, everything goes through a different port number, like for volume I use port 3001, for sending pitch bend I use port 3002, etc and as I change these numbers the other person receives them instantly, would this be possible with OSC??? I'm not sure how to get started with it Thanks for any help if you can cheers Adrian
Adrian deCleir wrote:
At the moment I have several number boxes attached to different netsend objects, everything goes through a different port number, like for volume I use port 3001, for sending pitch bend I use port 3002, etc and as I change these numbers the other person receives them instantly, would this be possible with OSC???
Since OSC uses exactly the same network that netsend uses and has a bit more overhead it can only be slower. The real problem is that the realworld internet is not instantaneous and packets can be delayed by unpredictable amounts up to many seconds - try traceroute to some site to see how long it can take. Using UDP for the connection instead of TCP improves latency by dispensing with some handshaking and error-detection. OSC theoretically supports timestamps, so you could introduce a known delay for everyone...if the beat were set to a multiple of this delay, you could play out of time but still be in sync...probably only a certain kind of techno music would be acceptable to play like this though.#-) Martin