do cps (86/60/2) d9 $ midicmd "midiClock*48" # s "midi" d1 $ note ((scaleP scalePattern $ off 4 ((+ 2 ).slow 2) $ off 1 (inversion.slow 2) $ off 3 (inversion.slow 3) $ off 1.5 ((+ 2).rev.slow 2) $ generateMelodicSeed ))#s "[pe-gtr:10,midi]" #gain 1 #orbit 0 #midichan 1 do cps (86/60/2) d9 $ midicmd "midiClock*48" # s "midi" do d9 $ midicmd "stop" # s "midi" hush
index > /home/xinniw/Documents/garden/Tranquility - the process of translation.md

Tranquility: process of translation

other places where you see this kind of thing

This resembles something you sometimes see with popular API's which are available in a number of programming languages. This happens frequently with libraries that facilitate communication over some kind of common protocol. For example, Google's GRPC protocal provides libraries that have similar or identical API's in many programming languages as the Tx and Rx may be running programs written in different languages.

Tidal is a kind of domain specific language which is similar and related to the idea of API. Translating a DSL to another programming language is a bit like implementing the same API in another programming language. We have equivalent methods, objects, and data-structures to the extent that the host programming language allows.

This allows the programmer to use the same, or very similar expressions, to denote the same end behavior to the computer even though the way it is executed may be radically different. (For example: the machine code that is run for a strudel pattern vs. a tidal pattern would look nothing like one another)

translation - observed qualitative differences between tidal and its translations

In translating computer code from one language to another this does not, at first seem to be the case. However, I wonder if it depends on where we think the meaning is coming from. For example if tidal's d1 $ cat [s "bd", fast 3 $ s "sd"] and strudel's cat([ s("bd"), s("sd").fast(3)]) do not produce the same sounds, one of the systems would be said to be broken. It would be treated as a bug or malfunction.

From perspective of the improviser these two expressions require different physical actions and different mental framing to reproduce. In the case of tidal, the pattern flows outward and to the left. The patterns are born inside the brackets and are transformed on their way leftward to the code d1 where the system receives them and plays them back. In the strudel example, the patterns flow outward and to the right and they do not reach any terminating point. Strudel also requires more parentheses as it lacks Haskell's $ operator. This is a bit like a righthanded guitar vs. a left-handed guitar.

What is preserved through the difference in syntax seems to be the relationship between functions.

Something that is different is the way that the computer interprets the instructions (even if they sound the same).

perhaps this is a bit like having two character sets that represent the same spoken language?

perhaps this is like


index > /home/xinniw/Documents/garden/Tranquility - the process of translation.md