File: jitlib_networking.schelp

package info (click to toggle)
supercollider 1%3A3.10.0%2Brepack-1
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 45,496 kB
  • sloc: cpp: 283,513; lisp: 74,040; ansic: 72,252; sh: 23,016; python: 7,175; makefile: 1,087; perl: 766; java: 677; yacc: 314; lex: 175; ruby: 136; objc: 65; xml: 15
file content (53 lines) | stat: -rw-r--r-- 1,732 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
title:: jitlib_networking
summary:: networked programming
categories:: JITLib>Tutorials, Tutorials>JITLib
related:: Overviews/JITLib

emphasis::please note any problems, I'll try to add solutions here.::

section::1) using ProxySpace with more than one client, with separate bus spaces

note::
if only one client is using a remote server, only step (a) and step (d) are relevant. The clientID argument can be left out then.
::

subsection::before you start

remember to synchronize your system clocks. This can be done by:
definitionList::
## in macOS || SystemPreferences>Date&Time: set emphasis::"Set Date & Time automatically":: to true.
## in Linux || set the ntp clock
::
a local time server is better than the apple time server. if you cannot sync the time, you can set the server latency to code::nil::. This will break the pattern's functionality though.


subsection::a) boot the (remote) server and create a local model

code::
s = Server("serverName", NetAddr(hostname, port));
s.options.maxLogins = 16; // or the maximum number of participants in the network
s.boot; // you cannot directly boot a remote server instance, but this initializes everything that is needed
::
definitionList::
## serverName || can be any name
## hostname || is an ip address, or if you have a name resolution, a network name
## port || the port on which the server is listening. default is 57110
::
see link::Classes/Server::

subsection::b) from each client, initialize the default node and set notify to true:

code::
s.boot; // this will initialize the tree and start notification

// if needed, a server window can be created:
s.makeWindow;
::


subsection::c) now create a ProxySpace from the server:

code::
p = ProxySpace.push(s);
::