> teletype : code exchange

llllllll

#424

i’d think time being dictated by the TR.TIME value is fine. spread, sure that would be useful.


#425

Just wanted to say that I raised this idea (a command that would fire a series of triggers) early last year in the TT v2 proposals thread:

and to say: I still think it would be super useful.


#426

While I would prioritize debugging the current firmware atm I think this sounds interesting. Three parameters would be great as even with TIME there would have to be a gap specified between the triggers.


#427

wondering about this myself. we now have SCRIPT, so less cabling necessary. is that currently the best practice for delays with probability?


#428

something like this could work:

PROB (prob_value) : X FLIP
DEL MUL X (delay_value) : (command)


#429

oh ho ho, very clever! gotta try this out…


#430

or probably better:

X 0
PROB (prob_value) : X 1
DEL MUL X (delay_value) : (command)


#431

Finally got my TT in a rack. Thought I’d share my clock divider here. It’s pretty rough, set the divisor with the knob (1-16), clock on 1 is the only input, as 2, 3, and 8 are subroutines. I haven’t ironed out the rounding errors so there are duplicate triggers that will occur sometimes near the master clock. You can mask them with sufficient TR.TIME.

As a first attempt it works 90% okay, but it’s not super accurate. :slight_smile: I’ll give it another crack tomorrow.

M
SCRIPT 8
D LIM DIV PARAM 1000 1 16

I
Q.N 4
M.ACT 0
T 0
TIME.ACT 1
D LIM DIV PARAM 1000 1 16
X 0

1
M.ACT 0
SCRIPT 8
Q TIME
TIME 0
X LIM ADD X 1 0 4
IF EQ X 4 : SCRIPT 2

2
M DIV Q.AVG D
M.RESET
M.ACT 1

8
TR.PULSE 1

#432

So I called this a clock divider, but I guess it’s really a clock multiplier.

I was thinking in terms of musical notes: producing smaller notes is division.

This produces more triggers than it receives, not fewer. :sweat_smile:


#433

It’s still not perfect, but this works fairly well! No more dupe triggers, but the potential for dropped ones. (Get a hardware clock multiplier. This is kludgey and buggy and a waste of good hardware.)

M
TR.PULSE 1
D SCALE 0 16000 2 16 PARAM
C TIME

I
Q.N 4
M.ACT 0
T 0
D SCALE 0 16000 2 16 PARAM
X 0

1
M.ACT 0
Q TIME
SCRIPT 3
TIME 0
X LIM ADD X 1 0 4
IF EQ X 4 : SCRIPT 2


2
M DIV Q.AVG D
M.RESET
M.ACT 1

3
B SUB TIME C
IF GT B DIV M 2 : TR.PULSE 1

#434

has anyone tried the JI command ? how does it work exactly?


#435

Been really gassing hard for a grid lately so i tried to build a meadowphysics inspired scene with the teletype. I’ve never owned a grid or used a meadowphysics app but i tried to build a scene based on what i read in the manual/tutorial. So please forgive me if its way off…

Master clock/rate on the param knob, 4 trigger tracks(tracks 2 & 3 and 4 & 3 pre-linked in cascading manner) bunch of random generators on the cv outs, scripts 5 - 8 i like to manually trigger off the keyboard to change the pattern length/reset to 0 and reset to 8 steps. (1 needed on the 1st step of each tracker lane)

Obviously its very simplified so i was hoping so of the more experienced coders here can give me some ideas to to make the scene more elaborate or reduce lines. Maybe some more interesting/musical melody generators for the cv outs and some ways to introduce some more of the rules that meadowphysics uses. Or any suggestions really :smiley:

I
P.N 3
P.L 8
CV.SLEW 2 60
CV.SLEW 3 100

M
M SUB 280 RSH PARAM 6
SCRIPT 1
SCRIPT 4

1
P.N 0
P.L 8
P.PREV
IF EQ P.HERE 1 : TR.PULSE 1
IF EQ P.HERE 1 : SCRIPT 2
CV 1 VV RRAND 0 350

2
P.N 1
P.L 8
P.PREV
IF EQ P.HERE 1 : TR.PULSE 2
IF EQ P.HERE 1 : SCRIPT 3
CV 1 N QT RAND 36 3

3
P.N 2
P.L 8
P.PREV
IF EQ P.HERE 1 : TR.PULSE 3
CV 3 V RRAND -2 2

4
P.N 3
P.L 8
P.PREV
IF EQ P.HERE 1 : TR.PULSE 4
IF EQ P.HERE 1 : SCRIPT 3
PROB 50 : CV 4 V RRAND -5 5

5
P.N 1
P.END RRAND 1 4
P.N 2
P.END RRAND 1 6
P.N 3
P.END RRAND 1 8

6
P.N 0
P.END RRAND 1 6

7
P.N 0
P.END 8
P.N 1
P.END 8
P.N 2
P.END 8

8
P.N 0
P.I 0
P.N 1
P.I 0
P.N 2
P.I 0

#436

Unfortunately JI is broken at the moment, but I’ve got a 3/4’s written update that should be rolled into the next major release. General idea is simply to send it just ratios which are converted to voltages in the 0-1V range.

eg: CV 1 JI 3 2 sets CV 1, to the ratio 3:2 (a just perfect-fifth) at 1volt per octave.

Fractions outside the 1-2x range are converted to be within the single octave range. At present the math is imperfect and the scaling is not accurate / things won’t be in tune.


#437

thanks, I’ll wait for the release to try it out then.


#438

looking for some help brainstorming…

i’m using TT as a sort of earthsea translator - taking cv & gate from ES and re-routing it to various outputs. all is working well enough, but i’d like to retain the playable gate-length of ES. i tried rapidly polling STATE with M, and that’s giving me a responsive return of 0 or 1, but i can’t find a good way to map that variable to TR.TIME. i thought TR.POL would be the ticket, but i guess that actually just inverts the trigger’s response to pulses - not it’s resting state. perhaps i need to be using TR.TOG and a bit of logic?

all that said, i’m open to other ideas for varying TR.TIME. i tried mapping it to a scaled PARAM variable, and while that worked for the most part - I’d sometimes encounter lock-ups with long TR.TIME values and overlapping TR.PULSE commands… which i guess is a bug i should report? perhaps we need a new OP akin to KILL that only effects the triggers (i’d like my delays to remain intact)? then i could place that at the beginning of a script to clear out existing trigs before sending new ones.

any insights are appreciated!

/////////////////

edit / follow-up:
wow the answer was ridiculously simple…

M (running at 10ms)
TR 1 STATE 1

somehow i missed the bit about sending a 1 or 0 to a TR to set it’s gate high or low. i’ve been living in a TR.PULSE world all this time!


#439

Not sure I ever explicitly thanked you for taking the time to write this up. Nice primer!

For anyone following along, teletype 1.1 allows for a little refinement, as you can use the SCRIPT op to trigger 2 doing away with the need to self patch. Which is to say:

TR.PULSE 1 — sends a pulse out of trigger OUTPUT 1 which is connected (self-patched) to INPUT 2 on teletype. (This is basically my way of extending this script beyond the 6 lines limit. The content of SCRPT 2 could have easily been sitting in SCRIPT 1.)

can become simply SCRIPT 2 and you can skip:

Connect trigger OUTPUT A to INPUT 2

Oh, and FWIW, this link has gone stale:

I set up the pattern as 24 steps, which is an equivalent of two identical bars from the “Clapping Music” (see here: http://www.music.mcgill.ca/~gary/306/week10/clapping.pdf

Here’s a fresh one:

http://earreader.nl/wp-content/uploads/2016/01/SteveReich-ClappingMusic.pdf

(Or take a trip in the wayback machine.)

:beers:


#440

Not exactly a code quesiton but more about general handling:

I often get into situations where I have to insert an additional line in a script, e.g. for modifying/processing a variable before using it on something - is this possible somehow. By now I rewrite the whole script then…


#441

Shift + Enter should do that if I’m not mistaken.


#442

Ah, it doubles the current line - yes, that works.

Thanks a lot!


#443

it inserts whatever currently in the edit line, type something else to insert that instead.

many useful key commands in the key reference btw: