-
Notifications
You must be signed in to change notification settings - Fork 7
add support for dynamic targets in cycle #50
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
Conversation
- support subdivisions or alternating parameters as target - parse op_replicate , op_weight and op_degrade as number value only
|
@unlessgames actually wanted to work on #31 but then noticed that this isn't supported yet, and should be cleared first. The `impl From<&Rc> for Target' is pretty ugly, but I didn't want to change the pest rules too much and sort it out there. This at least fixes some other, related workarounds, but maybe you have a better idea here... |
Benchmark for 862c8b5Click to view benchmark
|
|
Not sure if this gives the right behaviour, an expression like results in Where the structure of the pattern changes according to the targets' pattern, this is expected for cases where the right side multiplies the left side (ie it affects the structure) but in this it should only affect the targets, not the structure maybe? See a strudel example for something similar: https://strudel.cc/#JDogcygiW2phenogamF6el06WzEgMiAzXSIpLl9wdW5jaGNhcmQoKQ%3D%3D I'd expect the output to be |
|
When Tidal does this, people will expect it here too. Wasn't ware of this. I wouldn't have started this if I knew that. Do you think it's possible to add such a behavior on top of this PR? Else decide you please if this PR should be skipped, extended or ... |
|
I'll look into it. I think the application of targets has to be done separately since even though the structure is not applied the way it is with multiplication, it still needs to be applied to create stacks: if the right side has them, the output will get stacked as well. https://strudel.cc/#JDogcygiW2phenogamF6el06WzEgMywgNCA1XSIpLl9wdW5jaGNhcmQoKQ%3D%3D |
|
Here I made it behave as it should. While this works, it's definitely not optimal and I feel we are accumulating more tech debt here, there should be some generialization possibility as well.. |
Benchmark for 9b1729bClick to view benchmark
|
|
Thanks. I'll give this a good test later. It's true that things likely only gets more complicated from here on, but how do you think it would be possible to streamline things here? I guess the main problem here is the emulation of a functional language here. Or do you think we should simply stop here and avoid adding all features from tidal here? |
|
Have to think about streamlining but for one, I think we need more generalized methods to combine different event streams together like I mentioned here. Don't think it's much about the language itself. Rust is powerful enough even if more verbose for some things. That said, there isn't too much left to do in terms of mini-notation anyway. Improving the afseq specific target features to include volume and so on might be the kind of priority here that could bring the largest benefits: For example, patterning bjorklund parameters can be mimicked with a bit of duplication, or chained expressions can be fixed by forcing the evaluation order using brackets like Otherwise, the rest of tidal mainly happens outside the mini-notation where you can combine different patterns together with helper functions. Allowing some of these combination techniques in afseq would be the responsibility of the outer context I guess, not this mini-notation part, because ideally one could utilize such helpers across regular afseq rhythms and cycles. |
Agreed. That's why I started this PR in the first place. Thanks for taking care of it. Works as promised now, so let me merge this...
Yes, let continue discussing this in a new issue or on the forums... |
Benchmark for d153cbdClick to view benchmark
|
Follow up of #36