An overdue update on my pattern language work. <ht...
# two-minute-week
c
An overdue update on my pattern language work.

https://youtu.be/9qxKgAKpmEoā–¾

šŸ‘šŸ½ 2
šŸŽ¶ 2
I don't go into details in this short video, but the basic idea of the runtime is that I have a set of pipelines inside each pattern pattern -> notes << random << scale, notes << values, .... amplitudes << values Each pipe line can have several steps, and is a list so that each pattern can contain several groups of notes. At resolve time, the C++ runtime evaluates the pattern completely for one full iteration. These notes are queued outside the audio thread, which receives them on a lock-free queue and plays them. I'm still working hard on making the audio thread lock free, and other performance issues.
The janet lang ends up generating pattern pipelines which are evaluated later. I believe I can probably drop Ixi lang on top of the runtime; and I intend to try that soon. In the meantime I have bugs šŸ˜‰
c
cool! is it easy to (algorithmically) transform existing patterns?
c
It should be once I add operators. In this form, it's a DSL which describes patterns, so you have a list of operators that can run on them such as 'delay, random,swing, etc.'. If you want more control, that really depends on how it is scripted. IxiLang doesn't need much control, just basic operations, but if you wanted something like extempore's more free form programmability then you would need a more complex pattern/music language. I'm interested in research in those areas, but I'm more interested initially in having something simple that just works 'out of the box'.
c
yeah, I guess I’m thinking of things more like
shift
in ixi lang
c
That's simple enough; just a new pattern operator in the runtime. I've been thinking about trying to put Ixi lang on top of it, as an experiment.
s
Really nice! I wasn't aware until now you're using Janet for the scripting. Also, I see you mute patterns using '(pat!)', is that just a command that kills the old pattern and ignores the rest of its arguments?
c
Yes, that's right, just a command that accepts any number of args. I also have a starter-for-10 Ixi lang implementation, which I find far more intuitive for making music.