I have written the following to allow for a 5 cycle randomisation which seems to be working, but is there a way to stop (space) from resetting the cycle.
lookup CycleLetters {
# Define consonant cycle
sub @Con0 @Con0' by @Con1;
sub @Con1 @Con0' by @Con2;
sub @Con2 @Con0' by @Con3;
sub @Con3 @Con0' by @Con4;
sub @Con4 @Con0' by @Con0;
# Define vowel cycle
sub @Voc0 @Voc0' by @Voc1;
sub @Voc1 @Voc0' by @Voc2;
sub @Voc2 @Voc0' by @Voc3;
sub @Voc3 @Voc0' by @Voc4;
sub @Voc4 @Voc0' by @Voc0;
# Define consonant-vowel cycle
sub @Con0 [@Voc0 @Voc1 @Voc2] @Con0' by @Con1;
sub @Con1 [@Voc0 @Voc1 @Voc2] @Con0' by @Con2;
sub @Con2 [@Voc0 @Voc1 @Voc2] @Con0' by @Con3;
sub @Con3 [@Voc0 @Voc1 @Voc2] @Con0' by @Con4;
sub @Con4 [@Voc0 @Voc1 @Voc2] @Con0' by @Con0;
# Define vowel-consonant cycle
sub @Voc0 [@Con0 @Con1 @Con2] @Voc0' by @Voc1;
sub @Voc1 [@Con0 @Con1 @Con2] @Voc0' by @Voc2;
sub @Voc2 [@Con0 @Con1 @Con2] @Voc0' by @Voc3;
sub @Voc3 [@Con0 @Con1 @Con2] @Voc0' by @Voc4;
sub @Voc4 [@Con0 @Con1 @Con2] @Voc0' by @Voc0;
# Define consonant-vowel-consonant cycle
sub @Con0 [@Voc0 @Voc1 @Voc2] [@Voc0 @Voc1 @Voc2] @Con0' by @Con1;
sub @Con1 [@Voc0 @Voc1 @Voc2] [@Voc0 @Voc1 @Voc2] @Con0' by @Con2;
sub @Con2 [@Voc0 @Voc1 @Voc2] [@Voc0 @Voc1 @Voc2] @Con0' by @Con3;
sub @Con3 [@Voc0 @Voc1 @Voc2] [@Voc0 @Voc1 @Voc2] @Con0' by @Con4;
sub @Con4 [@Voc0 @Voc1 @Voc2] [@Voc0 @Voc1 @Voc2] @Con0' by @Con0;
} CycleLetters;