Before starting the big work of porting my experimental #LiveCoding #uzulang #godwit 's #parser from #Alex and #Happy to #Parsec, I finally managed to get a snapshot working in #Termux on my phone by making a tarball including the generated #Haskell files on a machine where Alex and Happy were available and transferring it over network.

This isn't ideal as I can't edit the parser on my phone (no Alex/Happy there; at least not recent enough versions, old ones got via cjacker's Hugs 2019 improvement), so I still want to switch to Parsec which is not so horribly #GHC -only (Parsec has a version that works with #MicroHs and probably #Hugs #HaskellHugs too).

I put the snapshot at
https://mathr.co.uk/web/godwit.html#Download and meanwhile updated the bootstrap script as patching MicroHs isn't necessary any more.

Godwit :: mathr

Experimental pattern live-coding system inspired by Tidal.

switched from #Android app #UserLAnd to #Termux due to the promise of working sound via #portaudio , and also being generally much less outdated.

need to add a portaudio backend to clive (my thing for #LiveCoding #audio #dsp in the #C programming language) to be able to test it.

had hoped to test with #godwit (my #uzulang in progress) and classic Dirt sampler (which built in Termux with minor fixes), but compiling godwit depends on the #haskell programs alex and happy for generating the parser, and it seems Termux repos don't have them. nor is there darcs (also implemented in Haskell), which I'd need to get #HaskellHugs Hugs 2019 improvement (inc happy) working.

getting happy and alex working with #MicroHs is also far from trivial, even old versions depend on MagicHash and other ghc-isms.

my work in progress live coding uzulang -zwirn - moved to codeberg! i hopefully get around to publishing some proper installation instructions soon!

https://codeberg.org/uzu/zwirn/
#uzulang #zwirn

zwirn

zwirn is a live coding language for playing with nested functions of time

Codeberg.org

@tristanC also pluguzu is inspiring me to think about porting my "livecode DSP in C" thing to other environments than standalone (optionally JACK-enabled) application.

maybe a Pd external could be the first target, because I'm familiar with that environment. have some ideas for using dlsym() to look up functions for inlet messages too; the tricky part (apart from the threading and race conditions etc) will be supporting accurate timing using Pd's notion of time.

And then a Pd-external version of pluguzu would be fun too, for pattern coding + dsp coding in the same thing.

#LiveCoding #DSP #C #clive #PureData #UzuLang #Haskell

more #godwit #uzulang problems:

I would like to write:

_jux f p = [(p # pan [0]), (f p # pan [1])]

but the syntax sugar doesn't work in library code for some reason

next, I tried

_jux f p = stack $ empty : (p # pan (pure 0.0)) : (f p # pan (pure 1.0))

but that gives bizarre compilation errors, maybe down to operator fixity not being handled properly?

finally, this seems to compile and work:

_jux f p = stack $ snoc (snoc empty (p # pan (pure 0.0))) (f p # pan (pure 1.0))

but it's not really expressive/idiomatic: which is the main point of creating a language

not really at all satisfied by this situation.

also not satisfied by my RTS needing 100s of MB of RAM for non-trivial patterns.

A quick first go at a website around the emerging idea of the 'uzulang' family of live coding languages:
https://uzu.lurk.org/

Lots more to add, feel free to contribute if you have some ideas.

As ever, also still on the lookout for the perfect live coding photo for websites like this, featuring performer(s), code projection + audience, all having a good time ! #tidalcycles #uzulang #strudel #livecoding

Uzulangs

i've written a basic debugger for my #uzulang : https://garten.salat.dev/uzu/uzulang3.html using some fancy js features like Proxies and generator functions
๐ŸŒฑ uzulang III: looking inside

garden time: cross-pollinating my minimal #uzulang with a lispy interpreter https://garten.salat.dev/uzu/uzulang1.html
๐ŸŒฑ uzulang #1