Yes I’m referring to the Development category. For example the CHAOS Op thread is a good reference for how the Op works.

1 Like

really curious to see a musical example of the chaos operator. i recall reading a lot of that thread last year without ever getting a sense of what kind of situations it would be fruitful in.

Unfortunately this is on my to do list, so I can’t give any examples currently. From the little of what I’ve gathered CHAOS act like another random generator, but one with a defined curve. For example, the Cubic algorithm should generate numbers that follow a sine like shape if graphed over a long period of time. However the rate of change between each consecutive number will be random. Again this is what I derived from 15 minutes of research, so it could be way off base.

This post I made a while back might help.

I used the example Chaos code in that thread to make random triggers

5 Likes

tl;dr: Do any of y’all use Teletype to handle “traditional” sequencing duties, and if so, any strategies you’d like to share?

Longer version: I’m a bit addicted to trying out sequencers, but recently took all of them except for Teletype out of my main 6U. It’s an experiment, but so far I’m loving it. Thinking of sequences as collections of numbers jives well with me. I also love how easy it is to introducing randomness / variation, which was the major shortcoming of my favorite vanilla sequencers, ER-101/2.

(I know that ER-102 does allow some control of variability / randomness, but it has never been intuitive to me and feels a bit tacked on.)

Back to Teletype: as much as it’s been mostly perfect, the thing I’m struggling to find an intuitive way to do now is have execute sequencers with a defined (ie, not random) but also not constant rhythm.

This is something that ER-101 does very well: each “step” has a duration. So I could dial in some duration differences to, say, take an 8-note sequence and present it as a mix of eighth & quarter notes. While I don’t see this sort of sequencing as the primary strength of the Teletype, it would be nice to do sometimes, without having to overload myself with sequencing options.

Does anyone have any strategies for accomplishing this with Teletype? I’m happy to hear about gate sequencers or small sequencers that folks might be using for gate sequencing that they’d recommend as well. I’m considering the Varigate 4+; I think I could dial in the sort of thing I’m after with a mix of its RPT for certain steps.

I don’t know if it’s what you’re looking for but I like the ER OP for something like that

There are several possibilities, but my favorite is using “magic numbers” to indicate rests, ties, etc. in the same stream as the note data. For instance, if 999 is a rest, you can have a pattern that goes “0, 999, 999, 4, 999, 7, 12, 999.”

  • If you only need triggers, or fixed length gates, do nothing on a 999 step, and do a TR.P and a CV on other steps (with the appropriate TR.TIME set).

  • If you want gates to be legato, but treat 999 as a rest: close the gate on a 999, open them on any other value.

  • If you want gates to hold until the next note: do nothing on a 999. On any other value, open the gate. Read ahead, and if the next number is NOT 999, set a timer to close the gate before the next pulse.

  • You could use 888 to indicate a hold (do nothing) and 999 to indicate a rest (turn gate off).

7 Likes

I’ve thought about doing something similar but using a second array for triggers. Basically just a parallel list with 0’s and 1’s to signify rests and triggers with continuous 1’s being sustained notes. Need to apply it though to see how well it would work.

Another option is to encode rhythms in binary. A single variable will give you a 16-step rhythm, and you don’t even need to store the current step anywhere. For instance:

1010100101010000 = 43344

And then on each step, check the leftmost bit and rotate left.

1:
B BGET A 16
A ADD B LSH A 1
IF B: $2

(Code not tested, just theory.)

26 Likes

wow THIS is BRILLIANT

As an addendum to this, have you figured out a way to make LSH, RSH ops that wrap around?

Another neat tip is the O+C hemisphere applet has a sequencer that utilizes a similar bit sequencer for 4 steps at a time that you can manipulate with the turn of a knob.

wow i had no idea about this functionality! i’ve also been wondering about how to use rests and ties in TT sequences.

1 Like

I’ve never looked at the Teletype firmware, so nope. Combining an ADD (or a binary OR) and an LSH was my workaround for lack of a rotating shift.

1 Like

You can also just use one of the patterns to store step length: Pattern 0 holds note values, Pattern 1 holds step length in ticks of M, then do this in M:

P.N 1
IF GTE O P.HERE: Y 1; O 0
IF NZ Y: P.NEXT; P.N 0
IF NZ Y: CV 1 N P.NEXT; Y 0

I’m not entirely happy with this, maybe it could be done more elegantly. One could get rid of lines 1 and 3 by requiring that the patterns for step length and note values have to be of equal length (and then just access the second pattern via PN using the index from the first pattern), but I thought it’d be nicer if you could specify rhythm and notes independently if you wanted.

Thanks for all the awesome input folks.

The best I’d come up with was something like “magic numbers”, but kept in a separate pattern. Nothing wrong with that, but also didn’t want to take up that second pattern if necessary.

Love the binary idea as well. I may try tinkering with that tonight!

Is it possible to use patterns to call scripts? I’m not sure what this would look like, I’m guessing a M script that calls the SCRIPT with P.NEXT every so many ticks?

It should be! SCRIPT P.NEXT should call the script with number determined by the value of the pattern. I don’t know what will happen if you try and call it with a number outside 1–8, though

1 Like

I would actually be interested in implementing a variable that does this all for you if there’s interest.

Set would set the variable to a 16 or 32 bit binary string.

Get would return a 1 or 0 then perform a left/right shift and wrap on the string.

so I’m on day one with the TT and I think I’m getting the hang of most of it, however I don’t believe I’m thinking like the TT yet.

For example I’m using the M script to call other scripts say 1,2,3,4 one per voice (kick, snare, hat, synth).

M Script:

X ADD X 1
X WRAP X 1 16

an example for SCRIPT 1:

IF EQ X 1: TR.P 1
IF EQ X 3: TR.P 1
IF EQ X 11: TR.P 1
TR.TIME 1 500

I suppose this is ok for a 16 step pattern, but once I step outside to say 64 steps, going line by line will not work. I guess I could use OR however that only doubles my specified steps. There could be some MOD usage as well I haven’t gone there. My initial thoughts here are that this is a place for a pattern with 1, 3, 11, 17, 19, 27…

I think I should also move “globals” such as the TR.TIME 1 500 to the M script or I script?

From there I’m not immediately seeing how to activate the pulse based on the pattern…and I’m not even sure if this is the correct mode of thinking. I know I need to do something different because I’m hitting the 6 lines per script quickly.