I’ve been working on this project for quite a while. I think it’s about time to share it with the community.
Živa is a set of tools to quickly setup a live coding environment and start playing right away with very few lines of code.
Regular SC code can be used anywhere, because Živa is just SC code with a lot of syntax sugar to make things less verbose and faster to type. Instead of using the preInterpreter, and creating a new syntax, it uses SC’s syntax flexibility to make things short.
I’m still documenting it, but I wrote a quick starting guide in the README.
I’ve been greatly inspired by @thor 's Ixilang, @totalgee 's Bacalao, @yaxu ‘s TidalCycles, the Mandelbrots’ many inventions, @jamshark70 's chucklib, and many others. I owe all of them a lot: thank you all Masters of the code.
It was partly developed in a residency at Ljudmila (in Ljubljana, Slovenia) as part of the On-the-fly project. I am grateful to them, too.
I’m not familiar with any other clock than TempoClock.default, but my guess is that you may be able to pass LinkClock as a parameter to .play(), like any other Pdef().play. The .ziva array is actually a Ppar inside a Pdef(\ziva):
[ ... ].ziva
// is syntax sugar for
[ ... ].pdef(\ziva).play.quant_(1)
// which is syntax sugar for
[ ... ].pdef(\ziva).play(yourLinkClock)
and see if it works. Let me know either way. I’d like to know if it does!
that should work, the rhythms are just a Dictionary. Could you post the full error stack? Do you have ddwCommon installed? That might be related (I’ll have to check). My intention is to remove all dependencies in a not to distant furure.
Sadly, I don’t think there is any other solution than removing either one. I’m not sure there’s anything similar to namespaces in SuperCollider. If there is I’d love to know and implement it in my classes : )
Looking at lvm’s Pmidi, I think it might work with Živa, too, since it’s just a pattern, very similar to what’s in mine. Try removing my implementation of Pmidi and see if the other one works. The code is quite similar, and – as stated above --, Živa is regular SC code so any other SC should work seamlessly. Please let me know if this works.
The code might look something like this:
~lvmmidi = Pmidi( /*whatever goes here in lvm's code*/ );
// or a regular Pbind
~apbind = Pbind(\type, \midi, \midiout, MIDIOut(0));
// even this should work -- and so should any other Pbind type
No matter where I put .faster for above example it runs the same? My intention for second was to run only cutoff faster by putting it after deg.
2. If I put array of parameters e.g. [ ~nala.faster.deg([0,2,3]).cutoff([2000,200,1000]).trace ].ziva; does it spawn all at the same time or goes in order. Like it would create 3 different synths with deg 0 + 2000 cutoff, deg 2 + 200 cutoff and deg 3 + 1000 cutoff? Or 3 with same parameters.
@jamshark70 thanks for advice. It works fine except I had a problem because CmdPeriod killed LinkClock and I am addicted to CmdPeriod. So I added function to recreate Clock every time kill command is used with snippet below
.fast is a shortcut for .dur(1/2), so it affects all the parameters because it’s the same as using Pbind(\dur, ...). Same for its siblings faster, slow, slower, ....
To have different “durations” for different parameters, I’d set the duration for the whole Pbind to the fastest one you need then modify the slower ones. A couple of variants come to mind:
...cutoff(Pstep([2000,200,1000].pseq, 2))... (I think this is the proper one)
I’m not sure, but from other combinations I’ve tried, your mapping seems correct to me: (deg 0 + cutoff 2000); (deg 2 + cutoff 200) + ; ...