In-situ work at the IEM CUBE (06–10 July 2020)

{function: title}

{hhr, 200709}


Activity information. Each node sends out to all other nodes OSC messages of the form ["/active", <name>, <state>] where <name> is a string of "ji", "poz", "dp", "hhr", and <state> is an integer of either 0 (node has become inactive) or 1 (node has become active. The frequency of sending these updates should not be higher than one per second.


Here is a possible way to measure whether a node currently produces sound or not:


val in     =, 8)
val sig    = Mix.mono(in)
val period = 2.0
val tr     =
val peak   =, tr)
val thresh = "thresh".kr(-48.0.dbAmp)
val active = peak > thresh
val actL   =, tr)
val actTr  =
Reaction(actTr, active, "report")

This reads the output of first eight channels, sums it together and measures the peak amplitude across every two seconds. It then compares it to a threshold, and when it first crosses above or falls below the threshold, invokes some reaction (this would be SendReply in SC-lang, followed by some generation of the /active OSC message).

Each node should implement a strategy to be active no more than half of the time, within a reasonable window of observation. For example, it could use information of the other nodes or its monitor its own activity amount to decide when quietness is needed.

IP addresses.


The nodes use the following addresses:

  • Ji
  • Poz
  • HHR (.77 when working via laptop)
  • DP


The OSC communication uses the standard sc-lang UDP port 57120.