Skip to content

Commit

Permalink
Updates to Server and Bus helpfiles
Browse files Browse the repository at this point in the history
(cherry picked from commit f62ea68)
  • Loading branch information
lijon committed Feb 9, 2012
1 parent 67f7b98 commit b899e09
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 7 deletions.
4 changes: 1 addition & 3 deletions HelpSource/Classes/Bus.schelp
Expand Up @@ -101,7 +101,7 @@ Get a new Bus that is a subset of this bus (see code::newFrom::).
subsection:: Asynchronous Control Bus Methods

The following commands apply only to control buses and are asynchronous. For synchronous access to control busses please
consult link::Classes/Bus#synchronous::.
consult link::Classes/Bus#synchronous_control_bus_methods::.

method:: value
Set all channels to this float value. This command is asynchronous.
Expand All @@ -128,8 +128,6 @@ a function that will be evaluated when the server responds, with the current val

subsection:: Synchronous Control Bus Methods

anchor::synchronous::

Synchronous access to control busses only works for local servers. You can check with link::Classes/Server#-hasShmInterface#hasShmInterface:: if the server provides these methods.

note:: Before 3.5 the the internal server could be controlled via shared control busses and link::Classes/SharedIn:: and
Expand Down
9 changes: 5 additions & 4 deletions HelpSource/Classes/Server.schelp
Expand Up @@ -39,14 +39,15 @@ If a Server has been booted from the command line you must call code::initTree::

subsection:: Local vs. Internal

In general, when working with a single machine one will probably be using one of two Server objects which are created at startup and stored in the class variables local and internal. By default two GUI windows are created to control these.
In general, when working with a single machine one will probably be using one of two Server objects which are created at startup and stored in the class variables link::#*local:: and link::#*internal::. In SuperCollider.app (OSX), two GUI windows are created to control these. Use link::#-makeGui:: to create a GUI window manually.

The difference between the two is that the local server runs as a separate application with its own address space, and the internal server runs within the same space as the language/client app.

The internal server has the advantage of being able to access shared memory, thus allowing for things like scope windows (see below) and link::Classes/SharedIn:: / link::Classes/SharedOut::.
It also minimizes messaging latency.
Both local and internal server supports link::#-scope#scoping::, and local server also supports link::Classes/Bus#synchronous_control_bus_methods#synchronous bus access::.

The local server, and any other server apps running on your local machine, have the advantage that if the language app crashes, it (and thus possibly your piece) will continue to run. It is thus an inherently more robust arrangement.
There is generally no benefit in using the internal server.

The local server, and any other server apps running on your local machine, have the advantage that if the language app crashes, it (and thus possibly your piece) will continue to run. It is thus an inherently more robust arrangement. But note that even if the synths on the server continue to run, any language-side sequencing and control will terminate if the language app crashes.

subsection:: The default Server

Expand Down

0 comments on commit b899e09

Please sign in to comment.