Music Language: Strudel

Sort of interesting, a bit different from CSound:

https://strudel.cc/

Getting Started ๐ŸŒ€ Strudel

Looks a bit more dialect-y, e.g. the default example has:

[bd <hh oh>]*2

What that means (if you hit play) is that it is a length 2 pattern. The first time through, it plays:

[bd hh]  ; bass drum, high hat

The second time through it plays:

[bd oh]  ; bass drum, open high hat

A Rebol version of such a thing would be oriented differently... to get a value-add you'd want to use lists instead of a TAG! for your alternates so you get proper automatic structure, and then perhaps a CHAIN! or PATH! to give a repeat count if you didn't want a space:

[bd {hh oh}] * 2

[bd {hh oh}]:2

What Could A Rebol Approach Buy You?

To get anything you would have to be doing things like driving it with PARSE, leveraging binding so you can define subpatterns, being able to COMPOSE the code.

bd: #tr909_bd
hh: #tr909_hh
oh: #tr909_oh
[bd {hh oh}]:2

or:

use tr909  ; inject definitions in binding environment for bd/hh/oh/etc....
[bd {hh oh}]:2

(Compare with their version as: s("[bd <hh oh>]*2").bank("tr909") ...)

To get the value you have to be thinking this way and using what the system offers.

Given how things are going, these questions of "can you make Rebol a meaningful tool for this application" will probably wind up being puzzle challenges for AI, I think. :man_shrugging:

1 Like

Thatโ€™s what I thought too. Looks like potentially a fun case for reparameterization-by-dialect.

1 Like

Worth noting that the Strudel (and its pattern language) is a direct descendant of Haskellโ€™s TidalCycles.

2 Likes

The Haskell version seems saner, though the immediate feedback in the web interface is nice. Unfortunate they made a new syntax. :face_with_diagonal_mouth:

Programming/sound stuff is interesting to me but despite doing both I have never really been drawn to the "code" interfaces. This seems closer to something I might use though....