Difference between revisions of "Combining pattern structure"
Line 127:  Line 127:  
 2  3    2  3   
>  4  5  6   >  4  5  6   
−  =   +  =  4  5  
</pre>  </pre>  
−  This is  +  This is very similar to how <syntaxhighlight lang="Haskell" inline>+</syntaxhighlight> used to work in the versions of tidal prior to 1.0.0  it took structure from the left, but values from the right. Accordingly and <syntaxhighlight lang="Haskell" inline>#</syntaxhighlight> maintains this behaviour in the new tidal. 
Revision as of 14:57, 7 November 2018
This does not describe current behaviour  this is upcoming in version 1.0.0.
A core feature of Tidal is the ease in which two patterns can be combined. This is changing a lot in the upcoming 1.0.0 version of Tidal. For example, these are two patterns being combined by adding together their elements:
"2 3" + "4 5 6"
The two patterns line up over time like this:
 2  3  +  4  5  6 
Unlike in previous versions of Tidal, by default the structure now comes from _both sides_. This means you end up with _four_ events, because the 5 lines up both with the 2
and the 3
. So the result is equivalent to "6 [7 8] 9"
:
 2  3  +  4  5  6  =  6 78 9 
You can see that the event with the value of 4
fits in the event
with value of 2
, so you get a new event equalling their sum 6
. You
can see that the onset and duration is the interection, which in this
case is just the onset and duration of the original event with the
value 4
.
Also see that the event with value 5
is cut in half, to create two,
shorter events. Half matches with the 2
event and the other half
matches with the 3
event. Again, the onset and duration of both
events comes from the intersections.
The fourth and final event comes from the intersection of 3
and 6
,
giving a value of 9
.
Structure from the left
The old behaviour was to take the structure from the left. You can
still do this, but in this case using +`. For example: <syntaxhighlight lang="Haskell"> "2 3" + "4 5 6"
In the above example, you end up with structure from the first, leftmost pattern, like this:
 2  3  +  4  5  6  =  6  8 
You can see the structure comes from the 2
and 3
. 2
lines up
with 4
, and the start of 3
is in 5
, so you end up with 2+4=6
and 3+5=8
.
Structure from the right
Likewise, you can take the structure from the right, with +
. So "2 3" + "4 5 6"
looks like:
 2  3  +  4  5  6  =  6  7  9 
All the operators
Note that +
is actually an alias for +
. So +
is to take the
structure from the left, +
from the right, and +
or +
for
both. Here are all the basic operators you can use to combine
structure:
Function  Both  Left  Right 

Add  + /+

+

+

Subtract   /





Multiply  * /*

*

*

Divide  / //

/

/

Modulo  %

%

%

Left values  <

<

<

Right values  >

>

>

The last two are interesting, they let you only take values from one
side. So for example you could take structure from the left, but
values from the right with >
, for example:
 2  3  >  4  5  6  =  4  5 
This is very similar to how +
used to work in the versions of tidal prior to 1.0.0  it took structure from the left, but values from the right. Accordingly and #
maintains this behaviour in the new tidal.