glicol icon indicating copy to clipboard operation
glicol copied to clipboard

Can you make the song auto progress?

Open galfaroth opened this issue 2 years ago • 8 comments

I like the language, and demos are great, but I'm missing a song that will have beginning, middle and end for example. I have no idea how to approach that. Can you simply make a song that has 4 bars, then 4 other bars and then 4 other (with on/off of some nodes)?

galfaroth avatar Jun 04 '22 10:06 galfaroth

Or is there a node that lets you delay a few bars some chain?

galfaroth avatar Jun 04 '22 16:06 galfaroth

You can mute some chains by commenting them out. So the progress basically depends on the user interaction, which means you should decide on when to run what. I am also experimenting with different scoring or controlling syntax.

chaosprint avatar Jun 04 '22 16:06 chaosprint

I know it's the premise of live coding. But I want more control and variety over chains of music. Not possible to mute for 4 bars?

galfaroth avatar Jun 05 '22 00:06 galfaroth

I know it's the premise of live coding. But I want more control and variety over chains of music. Not possible to mute for 4 bars?

I will soon add a node called shape for customising any envelope.

For now, off the tutorial, you can use the pattern syntax, which is just an experimental feature.

o: speed 8.0 >> seq 60 >> mul ~gate >> sp \sid

~gate: sig "[email protected] [email protected]"(8)

chaosprint avatar Jun 07 '22 09:06 chaosprint

You can now use arrange to control seq:

~t1: speed 2.0 >> seq 60 62 64 65
~t2: speed 8.0 >> seq 48 72
out: arrange ~t1 3 ~t2 1 >> sawsynth 0.01 0.1

chaosprint avatar Sep 15 '22 09:09 chaosprint

This is amazing! Thank you so much. I will test it tomorrow!

galfaroth avatar Sep 15 '22 09:09 galfaroth

Hey! I checked this sample:

~t1: speed 2.0 >> seq 48 48 48 48 ~t2: speed 2.0 >> seq 72 72 ~p1: arrange ~t1 1 ~t2 1

~t5: speed 2.0 >> seq 62 64 65 67 ~t6: speed 2.0 >> seq 60 62 ~p2: arrange ~t5 1 ~t6 1

out: arrange ~p1 1 ~p2 1 >> sawsynth 0.01 0.02

plate 0.1 >> mul 4 >> lpf 2000.0 1.0

And what I would expect is it should play the whole phrase 1, then whole phrase 2 after arranging them together. Can you help @chaosprint ?

galfaroth avatar Sep 27 '22 11:09 galfaroth

Hey! I checked this sample:

~t1: speed 2.0 >> seq 48 48 48 48 ~t2: speed 2.0 >> seq 72 72 ~p1: arrange ~t1 1 ~t2 1

~t5: speed 2.0 >> seq 62 64 65 67 ~t6: speed 2.0 >> seq 60 62 ~p2: arrange ~t5 1 ~t6 1

out: arrange ~p1 1 ~p2 1 >> sawsynth 0.01 0.02

plate 0.1 >> mul 4 >> lpf 2000.0 1.0

And what I would expect is it should play the whole phrase 1, then whole phrase 2 after arranging them together. Can you help @chaosprint ?

The arrange is just to wrap seq; it is simply a router that runs on the global timeline and allows the signal of a particular ~ref to pass after the given bars.

So when you wrap another arrange it will work but may not be what you want. I assume that you want the arrange to eat up each part. But that's very hard to implement and it's one point that real-time live coding draws a difference from general-purpose programming.

I will make the doc for arrange soon to better explain it.

chaosprint avatar Sep 29 '22 07:09 chaosprint