"Passenger to taxtidriver: take me to number 37. I'll give you the street name when we are there."1
Disclaimer: there is no time, really; punctuality, however, is your personal responsibility.
Just in time programming (or: conversational programming, live coding2 , on-the fly-programming, interactive programming) is a paradigm that includes the programming activity in the program's operation. Here, a program is not taken as a tool that is made first to be productive later, but instead as a dynamic construction process of description and conversation. Writing code becomes an integral part of musical or experimental practice.
Being a dynamic programming language, SuperCollider provides several possibilities for modification of a running program - this library extends, unifies and develops them, mainly by providing abstract placeholders, called proxies, which can be used in calculations and modified at runtime.
JITLib consists of a number of placeholders (server side and client side proxies) and schemes of access3 . These two aspects of space corresponding to inclusion and reference, depend on their context - here the placeholders are like roles which have a certain behaviour and can be fulfilled by certain objects. It is useful to be aware of the three aspects of such a placeholder: a certain set of elements can be their source, they can be used in a set of contexts and have a default source, if none is given.
Frequently used classes: Tdef (for tasks), ProxySpace, NodeProxy and Ndef (for synths), Pdef and Pdefn (for patterns).
For additional functionality, see also JITLib extensions Quark. To install it, run the following:
This tutorial focusses on some basic concepts used in JITLib. There are many possibilities, such as server messaging and pattern proxies which are not covered in tutorial form presently.
the rest of the behaviour depends on its use.
client side: Pdef, Pdefn, Tdef, Pbindef, Psym, Pnsym, Fdef
server side: Ndef
helpfile: ProxySpace for the use together with other environments, see jitlib_basic_concepts_02
language side: PatternProxy, EventPatternProxy, TaskProxy, PbindProxy, Pdict
server side: NodeProxy
(for separate use: TdefGui, PdefGui, MonitorGui, NdefGui, NdefParamGui)
Note that the number of logins or the client id should be set.
History and GUI classes written by Alberto de Campo.
Thanks a lot for all the feedback and ideas!
The research for this project was funded by: German Research Foundation (DFG) and the Future Funds of Styria, Austria.