Chucklib-livecode video (and notes on upcoming v0.5.1)


It’s been a couple of years since I posted a straight-ahead live coding screencast, showing everything that I’m doing. Lately I’ve tightened the syntax a bit and added some new features, getting ready for a release before the next semester starts.

I decided to do this after a conversation with my folks, where they told me that one of my dad’s colleagues had just passed away. Somewhere around age 11, I was fiddling with the BASIC language. Sr. Ellen was the one who introduced me to Pascal – my first exposure to proper control structures and local variable scopes – so that by the time I bumped into SC with some 20 years later, I already had those fundamentals. I couldn’t think of a better way to pay some respect than to use my own software to improvise some music.

If you used chucklib-livecode before, you might notice the changes:

  • I removed the first argument from generator expressions. I had been using that for source data, but the :: chain operator makes that unnecessary. If you look at some of the older videos, you’ll see things like \ins(, "*", 5, 0.5) with its inexplicable and ugly empty first comma. That’s gone now: it’s [optional source]::\ins("*", 5, 0.5). (No more nesting generators – it’s all done with chains now – although you can put a generator into a bracketed source too.)

  • A few generators can now be nested for compound sequences. Previously, sequencing required inserting wildcards and then replacing them with sequences, but the sequences could only be a single, flat generator. Now you can do things like \wrand("\seq("123")\seq("56")\seq("87")", 3, 1, 1) analogous to Pwrand([Pseq([1, 2, 3], 1), Pseq([5, 6], 1), Pseq([8, 7], 1)], [3, 1, 1].normalizeSum, inf). This has to be done in a specific type of generator argument, and only a few generators work this way, but it’s a big improvement (and used for variety in the video).

Updating the manual and doing more testing – should be ready for the next version in a week or two.