Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Can you make the song auto progress? #101

Open
galfaroth opened this issue Jun 4, 2022 · 8 comments
Open

Can you make the song auto progress? #101

galfaroth opened this issue Jun 4, 2022 · 8 comments

Comments

@galfaroth
Copy link

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
Copy link
Author

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

@chaosprint
Copy link
Owner

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.

@galfaroth
Copy link
Author

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?

@chaosprint
Copy link
Owner

chaosprint commented Jun 7, 2022

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 "1.0@0.0 0.0@4.0"(8)

@chaosprint
Copy link
Owner

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

@galfaroth
Copy link
Author

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

@galfaroth
Copy link
Author

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 ?

@chaosprint chaosprint reopened this Sep 29, 2022
@chaosprint
Copy link
Owner

chaosprint commented Sep 29, 2022

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants