activity diagram for token application

This commit is contained in:
Breval Ferrari 2025-05-13 23:05:23 +02:00
parent f4e6bd6e3d
commit faac093116

View file

@ -0,0 +1,44 @@
@startuml "Token.apply activity diagram"
title Token.apply
left footer
Les méthodes et champs de l'argument "context" et "self" ont été raccourcis pour gagner de la place.
"t" will be incremented by placing the length instruction in "slopes". Context.render will tick every slope variable at every frame.
endfooter
start
(C)
switch (T)
case (Silence)
:render(None);
case (Marser)
:result = [];
case (Note)
:render(n);
case (VariableChange)
:variables[name] = change.eval(variables);
case (Loop)
:old_context = context.clone();
:context.result = [];
:new_context = fold inner into current context with Token.apply;
:return new_context.replace(result, old_context.result + new_context.result * count);
case (Tuplet)
:current_length = current_length();
:calculate how many samples should fit in the current length;
:old_context = context.clone();
:context.result = [];
:new_context = fold inner into current context with Token.apply;
:new_context.variables[t] = old_context.variables[t];
:spray new_context.result with void until it fits the sample count;
:prepend old_context.result;
:return new context;
case (Slope)
:slopes += (each_frame.name, each_frame.change);
:context = fold inner into current context with Token.apply;
:slopes[each_frame.name].drop();
endswitch
stop
@enduml