> teletype : code exchange



That makes sense, maybe I skimmed his post and missed the part about TR.TIME x

I’m all for this


Well, I would say, let’s keep the additional channel options open, since there is some actual prospect of the TT expander on the horizon.
And my understanding is that the first one would be adding 4 triggers and 4 CV outputs to TT… so we need to be able to target TR and CV output beyond the 1-4 spectrum…


I do like the idea of leaving upper triggers open, but in playing around with this idea a little last night, it did seem to be beneficial to have the ability to have no trigger if you sent a tr.pulse 0 or something equivalent. Would it be possible to keep the upper bounds open, but anything below 1 be disabled?


I think decisions about the expander might be a bit of a red herring at this stage. Perhaps a better question to answer is what to do if the input variable corresponds to something that doesn’t exist. At the moment the code tries to clamp that value to one that does, e.g. TR.PULSE 5 will actually pulse out 4, and hypothetical if you had an expander TR.PULSE 9 will pulse 8.

I’m of the opinion that if you provide a value that is out of bounds for your system the code should do nothing, that clamping the value to the nearest probably isn’t what the user wanted, but this is a change from the existing functionality and so needs to be thought about carefully, particularly as it may break some existing scripts.


Ah, I’d read @tambouri’s reply and got the wrong idea. It would be good to use a pulse time of 0 to disable the pulse, sometimes having multiple approaches to solve the same problem can be beneficial (and sometimes not!).

Hopefully that’s not too difficult to do either, just changes to op_TR_PULSE and a_TR_TIME maybe? I can put a PR in if you want, or review someone elses…


yes it seems it’d require very minor changes to TR_TIME and TR_PULSE. i’m in frantic pre-departure mode for a bit, so if you want to go ahead i’d be happy to pull it in.

also i’m in agreement that throwing out out-of-bounds indexes makes sense. if we do an expander in the future, it’s a very simple modification to accommodate. note that this bit would have to be dynamic based on the presence of the expander hardware, so let’s deal with that when it happens.


go ahead with this
enjoy the roadtrip!


Cool, I’ll try and get something done tomorrow or at the weekend.


i’m re-reading the docs and trying to decide whether the tracker is the best way to handle more complex rhythm tasks

if i want tr outs or cv outs to loop only portions of a pattern (e.g. tr 1 cycles thru indices 1-3 while tr 2 uses values 8-21 of the same bank) is that currently possible?

if i figure it out before somebody else i’ll share my findings


You’d just need to maintain your own index and use the P or PN command. e.g.

X WRAP ADD 1 X 1 3
TR 1 PN 0 X
Y WRAP ADD 1 Y 8 21
TR 2 PN 0 X

If you don’t want to use a variable up, you could also save the index in a pattern location, similarly you could also save the start and ends of the loops in pattern locations, especially as patterns are easy to edit ‘live’.

Is that what you’re after?

(as an aside, one of the things I’d like to contribute at some point are PN.xxx versions of all of the P.xxx commands, e.g. PN.POP 0 will pop a value from pattern 0)

Teletype v2 proposals


i havent had time with TT since you posted this


Would the PN.xxx include the ability to do PN.NEXT 0 ??

I believe this was in a different thread, but being able to stack a few pattern advances w/o using lines to reassign the pattern would be great!


That’s the plan. I’m assuming it’s doable, I haven’t actually looked yet, though I’d be very surprised if it isn’t, and it’s dependent on being accepted as a worthwhile addition. Personally I’d prefer to use a PN.xxx command unless I’m specifically making use of the non-determinate pattern selection of a P.xxx command.


doable and agreed that this is good functionality.



merged but i won’t have time to publish a new release for a bit.


BTW this works great and I’m still making minor tweaks/refinements…the main difference in my script is use of “O” to increment rather than ADD

so it goes

X WRAP O 1 3 TR 1 PN 0 X


Would it be possible to make loops of several lines (and containing inner loops) ?0 7 :

L 0 3 :
( P.N I
P.L 8
L 0 7 : P I TOSS )


you could do this with two scripts.

edit: typo!


L 0 3 : SCRIPT 2


P.L 8
L 0 7 : P I TOSS

should work?

implementing nested loops into the syntax would add more complexity than i’d like to undertake in this simple language.


That’s not so easy to do…

You could try using another script and the SCRIPT command.


L 0 3 : SCRIPT 2


P.L 8
L 0 7 : P I TOSS

You’ll need to see what happens to the value of I, it should be overwritten when you run the second (or inner) L, but that shouldn’t affect the outer L. When the first L is run it will reset the value of I to the correct value.

I’ve tested this on my teletype and it seems to work.