would a dedicated command bypass the delay limitation? i mentioned something earlier, but something like TR.TRILL A 3 that allows you to select the trigger output and number of repeats would be really useful …

The delay limitation is pretty arbitrary at 8.

The size per delay slot looks like it’s about 100 bytes by itself, not really sure what other memory requirements it generates.

With 70kB RAM to spare, I don’t see why the delay stack couldn’t be much larger. It should be as easy as changing the constant and recompiling. There might be computing overhead on large delay stacks, however.

That said, your solution currently uses SCRIPT to perform a subroutine. The other options are: develop a macro for the PRE combination L + DEL or alter the parser to accept nested PREs.

TR.TRILL seems very specific. It’s musically useful, and this is a musical computer, so it might make sense, but implementing it would come at a cost and only do one thing.

Wouln’t it need some time and sperd parameter? TR.TRILL A x y z

agreed that a more modular design would be better for the whole system programmatically, but there seems to be emphasis in the language on simplicity, to which a very specific musical command would make sense.

ultimately i don’t care how it is implemented, but it’d be best if it could be accomplished without significant limitation (eg 8 DEL limit) in an efficient amount of code (within single script).

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

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.

9 Likes

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.

2 Likes

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

something like this could work:

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

2 Likes

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

or probably better:

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

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
3 Likes

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:

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
2 Likes

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

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
3 Likes

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.

1 Like

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

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!

1 Like

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:

2 Likes