What a great idea x2! I have the twister and never thought it could be a Grid replacement. And it never crossed my mind to use the VCMCs usb output as a direct control for the TT! Need to update my TT and try this.

1 Like

MIDI in ops have been merged to the latest beta posted here: Teletype 3.2+ feature requests and discussions

i’ve also enabled the midi clock event but don’t seem to be able to test it successfully (either my devices aren’t sending midi clock or i’m doing something wrong…) if somebody could give it a try it would be great!

since midi clock runs on 24ppqn, it’s divided. by default the divider is set to 24, you can set it to any value between 1 and 24 with the MI.CLKD op (run it without a parameter to get the current value). you can reset the clock division counter with MI.CLKR.

5 Likes

I’m trying to figure out a way to control different voices of Just Friends and keep them sustained till I release the key instead of cycling with a fixed AD envelope. Is there a way to do this? Let’s say that I want to trigger different notes each one on a different channel. I could solve it by executing different scripts depending on which channel the note comes from, but I’m stuck with it …

Ok. I’ve managed to do this … A simple GATE/CV converter to I2C over MIDI, using the BEFACO VCMC.
Probably there a lot of things to polish …

VCMC 2 JUST FIRENDS I2C

IF VELOCITY NEEDED PER VOICE
CHANGE SCRIPT #1 LINE #4
FROM PN 5 TO PN 2 AND
DELETE LINE #3 



#1
L 1 MI.NL: PN 0 MI.NCH 1
L 1 MI.NL: PN 1 MI.NCH MI.N
L 0 5: PN 2 I 4
L 1 MI.NL: PN 5 MI.NCH MI.LV
$ 3

#2
L 1 MI.OL: PN 0 MI.OCH MI.N
$ 3

#3
L 0 5: PN 3 I * PN 0 I PN 2 I
L 1 6: JF.VOX I N PN 1 - 1 I 4
L 1 6: JF.VTR I V PN 3 - 1 I

#4

#5

#6

#7

#8

#M
TO.TR.M 1 PARAM

#I
JF.MODE 1; JF.SHIFT N -36
MI.$ 1 1; MI.$ 2 2
PARAM.SCALE 10 1000
TO.TR.TIME 1 5
TO.TR.M.ACT 1 1
M.ACT 1; M 50

#P
6	6	6	6
1	1	1	1
0	0	0	0
63	63	63	63

0	50	3	0
0	27	3	0
0	13	3	0
0	13	3	0
0	13	3	0
0	13	3	0
4 Likes

How did you connect TT with VCMC? To the best of my knowledge the VCMC doesn’t (fully?) support i2c yet, so am I right to assume you went via USB from the front, qnd hence used the MIDI ops?

Yes, by using a USB cable from VCMC to TELETYPE. As I have the TWO>ONE module I can still change from the keyboard to the external midi in without unplugging the cables

I can confirm the clock event is working. Both my Kronos and Hydrasynth seem to be sending clock just fine. I just tried a very simple experiment to flash the LED.

MI.$ 4 1

1:
TR.P 1

All looks good, it’s flashing on the quarter notes and I can adjust the speed with the tempo controls on the device sending the clock. I don’t think the M.CLKD or M.CLKR ops made it into build CB56E83 though. I am getting unknown word on those ops.

1 Like

great, thanks for your help with testing!
and sorry, had a typo there - it should be MI.CLKD and MI.CLKR.

1 Like

Ah, of course. Should have caught that myself. I can confirm that MI.CLKD seems to work as expected then. I’m not quite sure how to test MI.CLKR. Happy to try something if you have a suggestion.

1 Like

not sure to be honest! i added it more so that there is a way to reset the division counter. i think it would make sense to reset it on a midi start event, or if you have a trigger that signals the start of a bar, you could put it in the corresponding script.

1 Like

I am having troubles with reading out the toggle messages from my softStep.
I have to press a lot of times until the message gets through.

My script is just like:
I
MI.$ 3 1

1
l 1 MI.CL : A MI.C

So in the variables overview I see A changing after pressing 5-8 times for each toggle.
IF I use the pressure sensor mode on the pads, I instantly get the MI.C.

Sorry for bothering. It works now. I had to change the smooth parameter in Softstep Editor Software. Everything works like a charm now :slight_smile: Thanks for this. It replaced the FH-2 from my system :slight_smile:

1 Like

How would I write a script to send the midi notes and triggers Im playing out of CV 1 and TR 1 of the teleype so I can sequence another voice in my case? I have it working great controlling just friends, but would also like to play my mangrove as well, in unison is fine. Unsure how to word the script, any help is appreciated!

to send incoming MIDI notes to just friends over i2c you would do something like this:

#I
MI.$ 1 1

#1
L 1 MI.NL: JF.NOTE MI.NV MI.VV

since just friends supports 6 voice polyphony, this script will use all available voices. it also doesn’t process note off messages, since you would need to implement voice allocation in your script. in this case you control the note length on just friends itself.

for controlling a single voice via CV/TR you could ignore multiple notes played at once and always output the latest note played. you could do it by adding this line to script 1:

CV 1 MI.LNV; TR.P 1

in this case you also ignore note off messages, and note length is controlled by the pulse length of trigger 1 (set with TR.TIME op). if you want to use note off messages, add this line to the init script:

MI.$ 2 2

this will assign note off events to script 2. then instead of the line above, use this line in script 1:

CV 1 MI.LNV; TR 1 1

and this line in script 2:

TR 1 0

here is the complete script:

#I
MI.$ 1 1
MI.$ 2 2

#1
L 1 MI.NL: JF.NOTE MI.NV MI.VV
CV 1 MI.LNV; TR 1 1

#2
TR 1 0

you could also use CV 2 for velocity. modify script 1 like this (2nd line added):

#1
L 1 MI.NL: JF.NOTE MI.NV MI.VV
CV 2 MI.LVV
CV 1 MI.LNV; TR 1 1
1 Like

Thank you for the thorough explanation @scanner_darkly that is exactly what I needed!
Much Appreciated. Have tested Op 1 and Op Z, both work great. Hermod works aswell. Still trying to figure out how to use elektron devices, specifically digitakt.

people reported having issues with elektron samples as well. unfortunately, not all USB MIDI devices will work with teletype.

1 Like

I can confirm that the sensel morph works. And I wrote a small arpeggiator:

#I
MI.$ 1 1; MI.$ 2 1

#1
L 1 MI.NL: PN 0 MI.N 1
L 1 MI.NL: PN 0 MI.O 0

#2
L 0 63: PN.POP 1
L 0 63: $ 3
CV 1 N PN.NEXT 1
IF PN.MAX 0: TR.P 1

#3
IF PN 0 I: PN.PUSH 1 I

script 1 updates a bitset in pattern 0 with note on/off events.
script 2 & 3 transform the bitset to a sequence an plays it if at least one bit is set in pattern 0.

I wonder if it could be done with 2 scripts or one pattern.

is there a typo in the init script? i think you mean it to be MI.$ 1 1; MI.$ 2 1 (assign both note on and note off events to script 1).

not sure why you need to use pattern bank 1? if i understand correctly, you want to cycle through the notes that are pressed, correct? and you’re using trigger 2 as the arpeggiator clock?

Yes, the init script had a typo.

not sure why you need to use pattern bank 1? if i understand correctly, you want to cycle through the notes that are pressed, correct? and you’re using trigger 2 as the arpeggiator clock?

Yes, that is what I try to do.
Let’s say midi notes 2 3 and 7 a currently pressed, pattern 0 would look like this:
0 0 1 1 0 0 0 1 ...
The first 2 lines of script 2 transform that to pattern 1 which results in
2 3 7

I did not find a way to jump to the next 1 in pattern 0 (something like W EZ PN.NEXT 0: K PN.I is an infinite loop and slows down teletype extremely).
Storing only the second pattern would be even nicer for further manipulations.

ah i see. yeah, i don’t think you could copy non zero elements to a different bank in one script, you need a loop and a condition and you can’t combine both on one line. but you could implement it with one pattern bank: set the pattern length to 64 in the init script:

P.L 64

and change your scripts 2&3 to this:

#2
L 1 P.L: SCRIPT 3
IF P.HERE: CV 1 N P.HERE
IF P.HERE: TR.P 1
P.NEXT

#3
IF EZ P.HERE: P.NEXT

script 2 starts by finding the next non zero element by calling script 3 up to (length - 1) times (we don’t need to search more as we’ll end up on the same step). if we do find a non zero step, we set the CV and output a trigger and move to the next step.