Thanks, but that would give me a pattern of 64 zeros; P.L would return 64, and since setting P.L is non-destructive, there doesn’t seem to be any way of resetting the pattern programmatically.

L 0 63 : P I 0
P.L 0

it’s not one line, but this should work?

Ok, I understand now. Manually entering pattern values in the tracker doesn’t effect the length of the pattern. Looks like initializing a pattern is like creating an array of 64 zeros with the length set to 0. I was hung up on the concept of arrays and overthinking it.

Thanks!

On a random note, I prepose we resurrect the <tt> HTML element for Teletype code samples.

1 Like

that is amazing-- i had no idea this existed. and i’ve been using html since the mid 90’s. wow.

1 Like

Just got mine in, looking over this thread - great work everyone! :smiley:

Welcome here, feel free to share your difficulties !

… and/or discoveries!

perhaps someone here could help me solve this?

i’m using P.N RAND 3 on a footswitch to jump between patterns. sometimes it will stay on the same pattern for a few clicks. i’d prefer that it changes to a different pattern every time.

P.N WRAP 1 4 ADD P.N RRAND 1 3

untested, but conceptually should work?

yeah that looks like it would work, but for some reason it’s not wrapping back to P.N 0 - it’s sticking at P.N 3

solved!

P.N WRAP ADD P.N RRAND 1 3 0 3

just barely fits on a line

1 Like

I’ve been really tempted by Orca but I want knobs for my voltages, at least some knobs… so I’ve decided to see what I can do marrying Rene and TT.
This is the first experiment.
TT emulates Rene.

A few notes -

A Short Bus or two OR logic modules are needed for this scene.

Rene has 4 banks of 16 stored voltages. This scene can import all 4 and switch between them. To free the IN & PARAM I chose a TRIG to switch between the 4. Visual corroboration of selection seemed important, especially when dealing with modules like Rene which are ‘temperamental’ to be kind. The CV 4 out was free so I sent various voltages to it from 0 to 9v so that the LCD went from off, to dim, to less dim, to bright. It works for me.

Rene has logic. IN is free to add this. Rene has 2 ins, here there is only one. So be it.

Rene has coordinate gate and clock control. Each can be toggled on or off in real time. This scene does not have this BUT it does have probabilistic control of trigger outs. The PARAM knob offers real time control. This is my first try at this and I (or we) will probably come up with a better plan but this is my first offering -

Z DIV PARAM 163 gives 0-100 from the PARAM knob. I have constructed a system with 4 zones so that the PARAM knob can constructively modulate the probability of X axis trigger (A), and Y axis trigger (B).

If Z is 0 or 100 then both variables are 100. If z is >33 and <66 then both variables are set to 75.

When Z > 0 and < 34 then A 's values are 99 - 66 and B’s values are 2 - 66

When Z > 65 and < 100 then A’s values are 66 - 0 and B’s values are 66 - 99

This is the best I could come up with for one knob - two useful values. I welcome input.

How it works is - at 12 o’clock and close to 12 o’clock A and B are 75 (% probability)

At all the way CCW or CW A and B are 100.

From 8 o’clock to 10 o’clock A decreases from 99 to 66 and B Increases from 2 to 66.

From 2 o’clock to 4 o’clock A decreases from 66 to 2 and B Increases from 66 to 99.

My math may be off by one or two…

Here’s the scene

VARIABLES

X - PATTERN #
Y - NOTE INSERTED INTO PATTERN VIA SCRIPT 8
Z - VALUE OF THE PARAM KNOB (0-100)
A - VARIABLE BASED UPON Z
B - VARIABLE BASED UPON Z (see above)

Pattern lengths must be set in Tracker mode - all 4 patterns set to 16.

Metro script calculates the value of variable A (from value of variable Z). M is not working as a clock here so once it has made it’s calculation it turns itself off again.

M (calculates variable A)

IF EZ MOD Z 100 : A 100
ELIF LT Z 34 : A SUB 99 Z
ELIF GT Z 65 : A MUL 2 SUB 99 Z
ELSE : A 75
M.ACT 0

I

X 0
P.N X
L 1 4 : TR.TIME I 10

1 (triggered by the OR of both clock ins)

Z DIV PARAM 163

3 (x axis trigger)

M.ACT 1 (calculates variable A)
P.N X
P.NEXT
PROB A : TR.PULSE 2

(trigger pulse 2 and 3 are combined using OR logic and sent to tr IN 5)

4 (y axis trigger)

TR. PULSE 1 (calculates variable B)
P.N X
L 1 4 : P.NEXT
PROB B : TR.PULSE 3

(trigger pulse 2 and 3 are combined using OR logic and sent to tr IN 5)

5

P.N X
CV 1 N P.HERE
TR.PULSE 4

6 (calculates variable B)

IF EZ MOD Z 100 : B 100
ELIF LT Z 34 : B MUL 2 Z
ELIF GT Z 65 : B Z
ELSE : B 75

7 (choose pattern)

X ADD X 1
IF EQ 4 X : X 0
CV 4 V MUL 3 X

8 (load notes from Rene manual gate/trig recommended. James Cigler MPC mode works nicely))

P.N X
Y DIV QT IN N 1 N 1
P.INS 0 Y

6 Likes

Hey everybody!

I’m new here, absolutely loving the all the monome stuff (just picked up an emergence collection). Teletype is nuts, great job @tehn and everybody else who worked on it. I’m really looking forward to seeing how this evolves. It’s already so great! I love how it really pushes me to think through patches with a design perspective when debugging scenes/scripts instead of just getting lost patching for hours. Also funny how heavy script load really does push you to optimize code.

Just figured I’d chime in with some wish list ideas I have for future firmware updates, please forgive me if I’m misinterpreting the design or have overlooked some existing feature/workaround or forum post. I read through everything in this thread and a bunch of other threads but can’t be 100% sure caught everything. I realize that there is a desire to keep things simple for accessibility’s sake but due to the 6 line limit on scripts (as well as bug that crashes lines of code that are longer than the screen), a few more shorthand commands would definitely help milk the most power out of the module.


TR.PULSE assignment

Basically I’ve been trying to make a pattern sequencer that can sequence all of the triggers using one pattern bank instead of multiple. The part I can’t quite get right now is how to trigger multiple outputs at once without using tons of code.

Example code:

X RRAND 0 7
TR.PULSE X

It would be nice if X = 0 didn’t trigger anything . It would also be nice if numbers above 4 triggered auxiliary scripts (I know there’s been mention of some sort of script triggering/recursion detection in an upcoming update). Perhaps 1 - 8 can be assigned to the existing input scripts, and 9 & 0 can be aux scripts (note: would love at least 4 aux scripts though if you do implement them). This forces us to use A - D for trig outputs, but maybe that’s not so bad. Can use other letters for variables if needed.

Also this doesn’t necessarily need to be TR.PULSE… could be just that a simple 1 assigned to any TR would trigger the associated script.


Trig Mode (Gate/flip-flop vs Trigs)

I was trying to make this rhythmic sequencer also ratchet at audio rates (OK maybe this is pushing the teletype too far?) and noticed that the current trigger setting inverts the gate setting on a trigger output when a pulse is sent while the state is 1. It would be nice if this is the default state but there was a way to turn it off such that pulses always end on 0. Don’t get me wrong, I like this setting, and also understand how it probably saves some computation maybe? But if there could be a mode that simply inserts 1 sample of a 0 before it re-engages a TR that is currently at 1, and then automatically goes back to 0 after TR.TIME, that would be rad. Mode could just be triggered with a command like TR.STICK 0

edit: just saw that this is already being worked on woohoo

This kindof leads in to a lot of audio-rate processing stuff, which I haven’t tried much of yet. I imagine there isn’t enough processing power to do anything crazy, but even glitchy results could be fun. For example, making wavetables with the pattern banks could turn audio-rate triggers into strange oscillators. Or more to my tastes, some autechre-ish territory where a drum trigger is re-triggered at audio rate but then dissolves back into a rhythmic sequence after. Will keep working on this either way to see what I can squeeze out of the module


While loop

Since so much of the module is about event/time management, a simple provision for a while loop could pay back in droves…

I guess it’s a fine balance because you don’t want buggy scripts freezing up the teletype with recursive loops. Perhaps this can just be fixed by making the scene button take precedence over everything else and allowing the user to change scenes even while in a crazy loop?


Pattern Swap

Would be nice if there was a simple command to just swap two indexes in a pattern bank. Maybe something like

P.SWAP a b

I realize there’s a way to do this with a variable and a few lines of code but would be nice if we could save those lines for crazier stuff :yum:

On that note, it would also be amazing if we could swap sections of entire banks of patterns too, but that’s probably too convoluted.

Anyways hope that wasn’t too long, looking forward to hearing everybody’s thoughts

Also please excuse my ignorance re: coding, there are probably reasons why some of these suggestions are nonsense, I’m just spitballing what I think could be cool haha

Amazing suggestions.
The flip-flop triggering “bug” is indeed known.
Regarding audio rate triggering, is it something that TT can really handle ?

1 Like

Ya I just tried making an oscillator with one of the cv outs but really it doesn’t track anywhere close to fast enough to do wavetables. Can get a pretty wicked phasey square wave though. For the most part good enough for all I can see myself using it for anyways.

Maybe one day somebody will port the teletype code over to an aleph so I don’t have to learn how to do crazy dsp programming heh

1 Like

so it records notes from Rene when receiving trigger #8? great idea. and got me thinking about doing a script that would serve as a sequencer controller / recorder. so it would output clock and reset which you would connect to your sequencer (giving you direct knob pitch control), one trigger would record the whole sequence by making it step through each value while recording it, another trigger would play it back at the speed determined by the knob, and other triggers could do something interesting to the sequence, shift it, swap notes around etc.

Yes, you could do that with Rene by temporarily putting it in snake mode and then using L 1 16 TR. Pulse and then tying to a script like mine. I made it manual because I wanted to be able to load all 4 sets of 16 notes from Rene into the 4 patterns in TT. The 4 sets in Rene can (for now) only be changed manually.
I do think sitting a Rene next to TT would offer best of both worlds in many situations. I spent much of yesterday experimenting with earthsea and thus far I think I prefer playing Rene by hand…

i like this idea not just because you can use knobs to program teletype sequences, but also because you could use it to cue new sequences, if you can pre-listen to the sequencer output you can program another sequence while TT is playing the current one, then get TT to read the sequence into a new bank and switch on the fly.

i also like it because it’s a not immediately obvious application of TT but one that shows how powerful it can be.