Skip to content

Commit

Permalink
help: add tutorial category to tutorials and update some helpfiles. T…
Browse files Browse the repository at this point in the history
…his fixes #693
  • Loading branch information
Julian Rohrhuber committed Apr 6, 2014
1 parent 4f98efb commit 07669a1
Show file tree
Hide file tree
Showing 18 changed files with 54 additions and 79 deletions.
2 changes: 1 addition & 1 deletion HelpSource/Guides/How-to-Use-the-Interpreter.schelp
@@ -1,6 +1,6 @@
title:: How-to-Use-the-Interpreter
summary:: Basic tutorial on how to run code
categories:: Frontends
categories:: Frontends, Tutorials

This document is OSX (SCapp) specific in key commands, though the principles extend to all platforms. See the helpfile link::Reference/KeyboardShortcuts:: for key commands in other editors. For the emacs sclang interface please also see link::Reference/EmacsEditor:: specific documentation.

Expand Down
14 changes: 9 additions & 5 deletions HelpSource/Overviews/JITLib.schelp
@@ -1,13 +1,11 @@
title:: JITLib
summary:: An overview of the Just In Time library
categories:: Libraries>JITLib
categories:: Libraries>JITLib, Tutorials>JITLib

section::Introduction

emphasis::"Passenger to taxtidriver: take me to number 37. I'll give you the street name when we are there."::
footnote::
an austrian math teacher's joke
::
footnote::An austrian math teacher's joke::

Disclaimer: there is no time, really; punctuality is your personal responsibility though.

Expand Down Expand Up @@ -106,7 +104,13 @@ definitionList::
section::Networking

list::
## in remote and local networks thanks to sc-architecture node proxies can be strong::used on any server::, as long as it notifies the client and has a correctly initialized default node. strong::note that the client id should be set::.
## in remote and local networks thanks to sc-architecture node proxies can be strong::used on any server::, as long as it notifies the client and has a correctly initialized default node.

strong::Note that the number of logins or the client id should be set::.

code::
s.options.maxLogins = 16; // an ensemble with up to 16 servers
::
::

section::Internal classes / abstract classes
Expand Down
@@ -1,6 +1,6 @@
title:: basic_live_coding_techniques
summary:: basic live coding techniques
categories:: Libraries>JITLib>Tutorials
categories:: Libraries>JITLib>Tutorials, Tutorials>JITLib

basic live coding techniques ("object style") without the use of JITLib

Expand Down
33 changes: 24 additions & 9 deletions HelpSource/Tutorials/JITLib/jitlib_basic_concepts_01.schelp
@@ -1,15 +1,17 @@
title:: jitlib_basic_concepts_01
summary:: some placeholders in supercollider
categories:: Libraries>JITLib>Tutorials
categories:: Libraries>JITLib>Tutorials, Tutorials>JITLib
related:: Overviews/JITLib, Tutorials/JITLib/jitlib_basic_concepts_02

this helpfile explains some basic concepts of interactive programming with supercollider and proxy space.
This helpfile explains some basic concepts of interactive programming with supercollider and proxy space.

section::a) What is a proxy?
section::What is a proxy?

A proxy is a place holder that is often used to operate on something that does not yet exist. For example, an emphasis::OutputProxy:: is used to represent multiple outputs of a ugen, even if only one ugen is created eventually. Any object can have proxy behaviour (it may delegate function calls to different objects for example) but specially functions and references can be used as operands while they keep their referential quality.

see also: link::Classes/OutputProxy::, link::Classes/Function::, link::Classes/Ref::
See also: link::Classes/OutputProxy::, link::Classes/Function::, link::Classes/Ref::

Further reading: link::Classes/NodeProxy::, link::Classes/ProxySpace::, link::Classes/Ndef::

subsection::using a Ref as a proxy

Expand Down Expand Up @@ -72,11 +74,9 @@ z.value;

see also client side proxies like link::Classes/Tdef::, link::Classes/Pdefn::, link::Classes/Pdef::, link::Classes/Fdef::

section::b) NodeProxy

For interactive programming it can be useful to be able to use something before it is there - it makes evaluation order more flexible and allows to postpone decisions to a later moment. Some preparations have to be done usually - like above, a reference has to be created. In other situations this sort of preparation is not enough, for example if one wants to do maths with running processes on the server.
section::NodeProxy, ProxySpace, Ndef

Audio output on the server has mainly two properties - a emphasis::calculation rate:: (audio or control) and a certain emphasis::number of channels::. These are the main static properties of a node proxy, which cannot be changed while it is in use.
For interactive programming it can be useful to be able to use something before it is there - it makes evaluation order more flexible and allows to postpone decisions to a later moment. Some preparations have to be done usually - like above, a reference has to be created. In other situations this sort of preparation is not enough, for example if one wants to apply mathematical operations on signals of running processes on the server.

code::
// boot the server
Expand Down Expand Up @@ -126,6 +126,21 @@ p.clear;
p.pop;
::

further readings: link::Classes/NodeProxy::, link::Classes/ProxySpace::, link::Classes/Ndef::
Another, quite common way to access node proxies is Ndef (this is the same as the above, just written with Ndef):
code::
Ndef(\z).play;


Ndef(\z, Ndef(\y).sin * 0.2);


Ndef(\y, { Saw.ar([300, 301], 4 * pi) });


Ndef.clear;

::

Further reading: link::Classes/NodeProxy::, link::Classes/ProxySpace::, link::Classes/Ndef::

next: link::Tutorials/JITLib/jitlib_basic_concepts_02::
@@ -1,6 +1,6 @@
title:: jitlib_basic_concepts_02
summary:: proxy space - basic concepts
categories:: Libraries>JITLib>Tutorials
categories:: Libraries>JITLib>Tutorials, Tutorials>JITLib
related:: Overviews/JITLib, Tutorials/JITLib/jitlib_basic_concepts_01, Tutorials/JITLib/jitlib_basic_concepts_03

external structure of the node proxy, referencing in proxyspace and environments.
Expand Down
@@ -1,6 +1,6 @@
title:: jitlib_basic_concepts_03
summary:: proxyspace - basic concepts
categories:: Libraries>JITLib>Tutorials
categories:: Libraries>JITLib>Tutorials, Tutorials>JITLib
related:: Overviews/JITLib, Tutorials/JITLib/jitlib_basic_concepts_02, Tutorials/JITLib/jitlib_basic_concepts_04

internal structure of the node proxy, node order and the parameter context
Expand Down
@@ -1,6 +1,6 @@
title:: jitlib_basic_concepts_04
summary:: Timing in NodeProxy
categories:: Libraries>JITLib>Tutorials
categories:: Libraries>JITLib>Tutorials, Tutorials>JITLib
related:: Overviews/JITLib, Tutorials/JITLib/jitlib_basic_concepts_03

Changes that happen to NodeProxy, most importantly setting its source, are normally done
Expand Down
2 changes: 1 addition & 1 deletion HelpSource/Tutorials/JITLib/jitlib_efficiency.schelp
@@ -1,6 +1,6 @@
title:: jitlib_efficiency
summary:: Efficient coding with NodeProxy
categories:: Libraries>JITLib>Tutorials
categories:: Libraries>JITLib>Tutorials, Tutorials>JITLib
related:: Overviews/JITLib

link::Classes/NodeProxy:: (and, in disguise link::Classes/ProxySpace::) represent "pronouns", placeholders for all kinds of sound producing objects that are able to write to a specific bus on the server.
Expand Down
2 changes: 1 addition & 1 deletion HelpSource/Tutorials/JITLib/jitlib_fading.schelp
@@ -1,6 +1,6 @@
title:: jitlib_fading
summary:: Fade envelope generation and crossfading
categories:: Libraries>JITLib>Tutorials
categories:: Libraries>JITLib>Tutorials, Tutorials>JITLib
related:: Overviews/JITLib

link::Classes/NodeProxy:: ( link::Classes/ProxySynthDef:: ) looks for inner envelopes in your definition function to find out whether a fade envelope is needed or not. In case there is no other inner possibility of freeing the synth, either
Expand Down
56 changes: 6 additions & 50 deletions HelpSource/Tutorials/JITLib/jitlib_networking.schelp
@@ -1,6 +1,6 @@
title:: jitlib_networking
summary:: networked programming
categories:: Libraries>JITLib>Tutorials
categories:: Libraries>JITLib>Tutorials, Tutorials>JITLib
related:: Overviews/JITLib

emphasis::please note any problems, I'll try to add solutions here.::
Expand All @@ -20,18 +20,18 @@ definitionList::
::
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

(you cannot directly boot a remote server instance)
subsection::a) boot the (remote) server and create a local model

code::
s = Server("serverName", NetAddr(hostname, port), clientID);
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
## clientID || for each client (each sc-lang) emphasis::a different integer number has to be given::
::
see link::Classes/Server::

Expand All @@ -44,54 +44,10 @@ s.boot; // this will initialize the tree and start notification
s.makeWindow;
::

subsection::c) preallocate a range of busses in each client.

If there is conflicts, increase the number of busses in the server options before booting:

code::
s.options.numAudioBusChannels = 1024; //optional
::

code::
(
var numberOfParticipants, n;
numberOfParticipants = 4;


n = s.options.numAudioBusChannels / numberOfParticipants;
n = n.floor.asInteger * s.clientID;
s.audioBusAllocator.alloc(n);


n = s.options.numControlBusChannels / numberOfParticipants;
n = n.floor.asInteger * s.clientID;
s.controlBusAllocator.alloc(n);
)
::

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

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

section::2) using ProxySpace with more than one client, with a partly shared bus space

step a, b like in link::#1)_using_proxyspace_with_more_than_one_client,_with_separate_bus_spaces#(1)::, skip (d)

subsection::c) before allocating a number of busses for each client, create shared busses:

code::
p = ProxySpace.push(s);
~shared1.ar(2);
~shared2.ar(2);
~sharedkr.kr(1); // or other names.
::

then do (c) like in link::#1)_using_proxyspace_with_more_than_one_client,_with_separate_bus_spaces#(1)::, just take care that the shared busses are taking number space already, so the easiest is to increase the numberOfParticipants by one, so no overrun happens.

section::3) writing a chat

see example in link::Classes/Client:: in the strong::JITLibExtensions:: quark.

see also link::Classes/Public:: in the strong::JITLibExtensions:: quark.
2 changes: 1 addition & 1 deletion HelpSource/Tutorials/JITLib/proxyspace_examples.schelp
@@ -1,6 +1,6 @@
title:: ProxySpace examples
summary:: Some ProxySpace examples
categories:: Libraries>JITLib>Tutorials
categories:: Libraries>JITLib>Tutorials, Tutorials>JITLib
related:: Overviews/JITLib, Classes/ProxySpace

section::main examples
Expand Down
2 changes: 1 addition & 1 deletion HelpSource/Tutorials/Streams-Patterns-Events1.schelp
@@ -1,7 +1,7 @@
title:: Understanding Streams, Patterns and Events - Part 1
summary:: Streams & Routines
related:: Tutorials/Streams-Patterns-Events2, Tutorials/Streams-Patterns-Events3, Tutorials/Streams-Patterns-Events4, Tutorials/Streams-Patterns-Events5, Tutorials/Streams-Patterns-Events6, Tutorials/Streams-Patterns-Events7
categories:: Streams-Patterns-Events>Understanding-Streams-Patterns-and-Events
categories:: Tutorials>Streams-Patterns-Events

The SuperCollider Pattern library provides a means of specifying dynamic structural transformations of musical processes. It provides similar capabilities as one finds in Nyquist, Elody, Siren, Kyma, HMSL, DMix, and Patchwork.

Expand Down
2 changes: 1 addition & 1 deletion HelpSource/Tutorials/Streams-Patterns-Events2.schelp
@@ -1,7 +1,7 @@
title:: Understanding Streams, Patterns and Events - Part 2
summary:: Patterns Introduction
related:: Tutorials/Streams-Patterns-Events1, Tutorials/Streams-Patterns-Events3, Tutorials/Streams-Patterns-Events4, Tutorials/Streams-Patterns-Events5, Tutorials/Streams-Patterns-Events6, Tutorials/Streams-Patterns-Events7
categories:: Streams-Patterns-Events>Understanding-Streams-Patterns-and-Events
categories:: Tutorials>Streams-Patterns-Events

section::Patterns

Expand Down
2 changes: 1 addition & 1 deletion HelpSource/Tutorials/Streams-Patterns-Events3.schelp
@@ -1,7 +1,7 @@
title:: Understanding Streams, Patterns and Events - Part 3
summary:: ListPatterns
related:: Tutorials/Streams-Patterns-Events1, Tutorials/Streams-Patterns-Events2, Tutorials/Streams-Patterns-Events4, Tutorials/Streams-Patterns-Events5, Tutorials/Streams-Patterns-Events6, Tutorials/Streams-Patterns-Events7
categories:: Streams-Patterns-Events>Understanding-Streams-Patterns-and-Events
categories:: Tutorials>Streams-Patterns-Events

section::ListPatterns

Expand Down
2 changes: 1 addition & 1 deletion HelpSource/Tutorials/Streams-Patterns-Events4.schelp
@@ -1,7 +1,7 @@
title:: Understanding Streams, Patterns and Events - Part 4
summary:: Environment & Event
related:: Tutorials/Streams-Patterns-Events1, Tutorials/Streams-Patterns-Events2, Tutorials/Streams-Patterns-Events3, Tutorials/Streams-Patterns-Events5, Tutorials/Streams-Patterns-Events6, Tutorials/Streams-Patterns-Events7
categories:: Streams-Patterns-Events>Understanding-Streams-Patterns-and-Events
categories:: Tutorials>Streams-Patterns-Events

The preceeding sections showed how to use Streams and Patterns to generate complex sequences of values for a single parameter at a time.

Expand Down
2 changes: 1 addition & 1 deletion HelpSource/Tutorials/Streams-Patterns-Events5.schelp
@@ -1,7 +1,7 @@
title:: Understanding Streams, Patterns and Events - Part 5
summary:: Event.default
related:: Tutorials/Streams-Patterns-Events1, Tutorials/Streams-Patterns-Events2, Tutorials/Streams-Patterns-Events3, Tutorials/Streams-Patterns-Events4, Tutorials/Streams-Patterns-Events6, Tutorials/Streams-Patterns-Events7
categories:: Streams-Patterns-Events>Understanding-Streams-Patterns-and-Events
categories:: Tutorials>Streams-Patterns-Events

More about the default Event:

Expand Down
2 changes: 1 addition & 1 deletion HelpSource/Tutorials/Streams-Patterns-Events6.schelp
@@ -1,7 +1,7 @@
title:: Understanding Streams, Patterns and Events - Part 6
summary:: Parallel Patterns
related:: Tutorials/Streams-Patterns-Events1, Tutorials/Streams-Patterns-Events2, Tutorials/Streams-Patterns-Events3, Tutorials/Streams-Patterns-Events4, Tutorials/Streams-Patterns-Events5, Tutorials/Streams-Patterns-Events7
categories:: Streams-Patterns-Events>Understanding-Streams-Patterns-and-Events
categories:: Tutorials>Streams-Patterns-Events

section::Parallel Patterns

Expand Down
2 changes: 1 addition & 1 deletion HelpSource/Tutorials/Streams-Patterns-Events7.schelp
@@ -1,7 +1,7 @@
title:: Understanding Streams, Patterns and Events - Part 7
summary:: Practical Considerations
related:: Tutorials/Streams-Patterns-Events1, Tutorials/Streams-Patterns-Events2, Tutorials/Streams-Patterns-Events3, Tutorials/Streams-Patterns-Events4, Tutorials/Streams-Patterns-Events5, Tutorials/Streams-Patterns-Events6
categories:: Streams-Patterns-Events>Understanding-Streams-Patterns-and-Events
categories:: Tutorials>Streams-Patterns-Events

section::Practical Considerations

Expand Down

0 comments on commit 07669a1

Please sign in to comment.