Syntax for a process definition

as of 25 apr 2019

When using SuperCollider, Luc tends to work mainly in the server side, creating synth definitions or directly writing his own Ugens, making relatively little usage of the SC language. The most Ugens he writes can be formulated as recursive functions, which are basically called once per sample with specific parameters and arguments. Writing Ugens for the SC server can be a tedious process, given the C++ style and all the standard function definitions required by the sc server. 

 

The idea of this small language is to simplify this process by abstracting some functionalities in a more compact language (first sketches in Haskell), which can then make use of the LLVM library in order to automatically generate the code and directly compile for the sc server. In this process of abstraction, formalising Luc's approach to 'DSP composition' was crucial in order to plan the key functionalities he would need in the new language. 

A Small DSP Language

function body

proc mysin3(x) =

       sin(x) * 0.5, (x + 0.05)

name

argument

continuation function

(substitutes argument in the next iteration)

warning, may become loud very suddenly

[hhr 190424] what I find peculiar about this short demonstration is the complexity of the sound and the brevity of the code that produces it, with no direct link from reading the few lines of code to an (accurate) assumption about the sound that we are going to hear. This brevity somehow reminds me of James McCartney's new language 'sapf' (mentioned in initial conversations).