Home | ER-101 | ER-102 | ER-301 | Wiki | Contact

Grid Ops Base Controller for ER-301


#21

i had the idea of a patch matrix for a while but kinda abandoned it, the main reason being - it woudn’t work well for CVs due to the fact that teletype doesn’t deal with continuous values, so there would always be steppiness (so, if you used the CV input as one of the sources it would work more like a sample&hold), although you could address it to an extent by using a fast metro script. so scratch the vibrato idea :slight_smile:

but with different random generators and sequencers i think it can still be usable, especially if you run those sequencers on different divisions of the clock. so then a slower sequencer could provide transposition, for instance.

for this kind of scene i think adding a group of faders to control slew on each SC.CV would also be very useful.


#22

@Joe, @ermina - added your scenes to the grid code exchange page - thank you!


#23

morphing faders scene - this can be an interesting way to control multiple parameters for er-301

a set of fine faders (16 when used vertically, 7/15 when used horizontally) with 2 presets. the bottom row is a crossfader that morphs between the 2 presets. you can change values at any point but presets are only set when using the edge points.

you can also clock it (trigger input 1), it will step through morphing (press on the bottom row to hold it there). the knob controls the slew amount (up to 200 ms).

this scene will output to both SC and TO, you can disable whichever one you don’t need (or change it to teletype outputs), to do that edit the appropriate lines in scripts 1, 5 and M.

morphing_faders.txt (2.0 KB)

Summary
MORPHING FADERS

SET OF FADERS WITH 2 PRESETS
AND MORPHING BETWEEN THEM

BOTTOM ROW MORPHS
TRIGGER 1 STEPS THROUGH
MORPHING

SET D TO:
7 FOR GRID 128, 15 FOR 256
SET Y TO:
1 FOR VERTICAL FADERS
0 FOR HORIZONTAL FADERS

KNOB CONTROLS SLEW

CHOOSE OUTPUT IN SCRIPTS
1, 5 AND M

#1
IF G.GBTN.C 0: BREAK
I + T G.FDR.N 0
IF < I 0: I 1; T - 0 T
IF > I 15: I 14; T - 0 T
G.FDR.N 0 I; SCRIPT 2; I + I 1
SC.TR.P I; TO.TR.P I

#2
L 1 16: SCRIPT 3

#3
X G.FDR.N 0
A SCL 0 15 PN 0 I PN 1 I X
G.FDR.V I A
SCRIPT 5

#4
I G.FDRI; A G.FDRV; SCRIPT 5
I G.FDR.N 0
IF EZ I: PN 0 G.FDRI G.FDRV
IF == I 15: PN 1 G.FDRI G.FDRV

#5
SC.CV I A
TO.CV I A

#6

#7
G.FDX 1 0 0 16 1 6 223 4 1 D
G.REC 0 4 16 4 -2 -2
G.REC 0 12 16 4 -2 -2

#8
G.FDX 1 0 0 1 D 7 200 4 16 1
G.REC 4 0 4 16 -2 -2
G.REC 12 0 4 16 -2 -2

#M
A SCL 0 V 10 0 200 PARAM
L 1 16: SC.CV.SLEW I A
L 1 16: TO.CV.SLEW I A

#I
D 7; Y 1
G.RST; G.FDR 0 0 D 16 1 2 4 2
G.GFDR.RN 0 0 V 5; $ 2; T 1
G.BTX 0 0 D 1 1 0 -3 0 16 1
IF Y: SCRIPT 8
ELSE: SCRIPT 7

#P
7	0	0	0
1	1	1	1
4	0	0	0
6	63	63	63

5366	0	0	0
4710	7898	0	0
4710	7898	0	0
4710	7898	0	0
4710	7898	0	0
2826	7898	0	0
2826	7898	0	0
2826	7898	0	0
2826	830	0	0
7362	830	0	0
4148	830	0	0
7864	830	0	0
7362	830	0	0
7362	328	0	0
7362	830	0	0
7362	942	0	0
7362	830	0	0
0	0	0	0
0	0	0	0
0	0	0	0
0	0	0	0
0	0	0	0
0	0	0	0
0	0	0	0
0	0	0	0
0	0	0	0
0	0	0	0
0	0	0	0
0	0	0	0
0	0	0	0
0	0	0	0
0	0	0	0
0	0	0	0
0	0	0	0
0	0	0	0
0	0	0	0
0	0	0	0
0	0	0	0
0	0	0	0
0	0	0	0
0	0	0	0
0	0	0	0
0	0	0	0
0	0	0	0
0	0	0	0
0	0	0	0
0	0	0	0
0	0	0	0
0	0	0	0
0	0	0	0
0	0	0	0
0	0	0	0
0	0	0	0
0	0	0	0
0	0	0	0
0	0	0	0
0	0	0	0
0	0	0	0
0	0	0	0
0	0	0	0
0	0	0	0
0	0	0	0
0	0	0	0
0	0	0	0

#G
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000

14	209	209	209	209	206	206	206	26	34	29	35	34	22	34	37
0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0

This text will be hidden

video demo

older demos:
one
two
three


#24

Oh, this is available now!? Exciting! Love the new demo.:slight_smile:

Do I have to do anything special to make it work on a grid 128?


#25

as posted above it’ll work on grid 128 (you can control it by setting D in init script to 7 for grid 128 and 15 for grid 256). you can also choose whether you want faders to be horizontal (set Y to 0) or vertical (1).

this was done by taking advantage of the free space left - if you hard code it for whatever scenario works for you you can save some lines and add more features! (jump to random step, use CV input to control the position…)


#26

Just finally getting back to this. @joe have you been using this scene? Has anyone had any problems with it? I cant get the toggle gates or fader cv to show up in my 301 patch using the SC.TR and SC.CV units with this scene. I can however get a response within those units if I have a script with SC.TR.PULSE 1 or SC.CV 1 V 10 (for example) and then trigger that script. Am I missing a step?
Also - I have scripts 1-3 being triggered externally- after hitting the toggle button in the scene (bottom left corner button on grid but I expect its all of them) a couple of times the grid goes blank until I rerun the INIT script. Is it the case that these setup scripts can’t be rerun whilst using the grid ops?
I have checked the scene against the one you’ve posted and I’m spot on. Any thoughts?
(I admit that I haven’t had the chance to learn the gridops and haven’t done any significant debugging as I am getting ready for a performance and was hoping to use this as a basic controller. I do intend to be able to answer this myself and contribute here when I have a bit more time.)


#27

Hey @yoyosandshoes! Thanks for bringing my attention back to this. No, I haven’t used it since I built it. I had started making some mods to it, got distracted with building a bunch of bespoke units, and left it in a broken state on my Teletype.

So I reloaded the original to test it. I did find a bug, but it’s not what you’re describing. The trigger type buttons were double firing. I guess they call their script both when pressed and released. Not sure how I didn’t catch or notice that the first time. Here is an updated script with the fix.

ER301 Base Controller.zip (485 Bytes)

I also re-tested the other control types (faders & toggles). They worked as I’d remembered. Here is a quick video walk through and the chain patch that I’m using in the video, which is for ER-301 v.0.4.x firmware. See if these help or let me know if you’re still having problems. :slight_smile:

tt controller test.zip (1.4 KB)


#28

Forgot to address this part of the question. Scripts 1 and 2 handle the button presses and fader changes, respectively. The way they are written, they get the value of the last fader or button touched, and send that value to the corresponding ER-301 Teletype unit.

So I would expect externally triggering script 1 & 2 to not do much of anything noticeable. They would be re-sending the same value to the ER-301 teletype unit. IE if fader 1 had a value of 2V, it would just resend 2V to the corresponding unit, if that was the last fader touched. If the last thing you touched happened to be a toggle, it would likely flip it’s state on the ER-301 without changing the grid display to reflect it.

Script 3 handles the page changes (though there’s only 1 page with anything on it right now). The very first thing it does is disables all the groups (which makes them disappear). Then it enables the groups that it needs to based on which page button you pressed. The effect of triggering it externally is unknown to me, but based on it’s first line, I could see where it might potentially make things go blank if you trigger it without ever having pressed a page button. It might leave all the groups disabled because it doesn’t know what to enable.

What are you trying to accomplish by manually triggering these scripts? They weren’t really designed with external triggering in mind. They were intended to be called by touching a button or fader on the grid… :thinking:


#29

@joe thanks for your response. I haven’t had a chance to check the updated scene and I will have to come back to it. I’m also having TT and 301 freezes because I think I need the (help me with this…) backpack? for the i2c. As I’m preparing for a show I had to put the grid op controller aside for the time being. I will return to it soon.
Wrt the script triggering, it was because I was (re)developing a scene for a patch and it was already all connected. Then I added the grid ops and the triggers were still in the patch. Actually this prompts me, I had initially put the scripts 1,2 and 3 for your grip ops controller scene in scripts 6,7 and 8 because these weren’t being triggered in the existing patch. The grid controller came up but I had the problem described above and I changed it as trouble shooting. The question is, does it matter which scripts the grid ops sit in (aside from the Init)?


#30

What all is the TT connected to? I know I have mine connected to the ER-301 and Ansible directly without a backpack. No issues or freezes. Do you have your grid powered externally?

It definitely does. You could move scripts 1,2,3 to other scripts, but you’d need to modify the code in init a bit.

Take this line of code, for example, from init. This defines the 8 momentary, non-latching buttons.
G.GBX 1 1 0 7 1 1 0 4 1 8 1

From the grid ops docs, the meaning of this line is:
G.GBX group id x y w h latch level script columns rows

You can see the 3rd to last parameter (which is a 1) is telling it to execute script 1 when these buttons are pressed or released. And script 1 is what’s sending a SC.TR.P to the ER-301. So you would have to repoint the script references in the grid op object instantiations.


#31

ER 301, TT, Just Friends, Ansible and W/. I’m pretty sure I need one but was hoping to wing it … hehe and grid is powered externally.

It seems the script numbering/locations might have been a problem but not the problem. Again, I’ll get back and report back after an upcoming show. Thanks for your time on this @joe. FYI as a generic grid controller for the 301 I think its spot on. The only thing is I would have more latching gates than triggers but I can see from the code that its a simple hack.


#32

Yep, you probably need a backpack then.

I agree with you on more latching gates. Definitely going to include more of those in the next version. Might as well use that empty row 7 (which was there for aesthetics, but I now think unnecessary) to create at least 12 of each, though I might lean it more heavily toward latches.

I’ve been putting some thought into what’s next for this thing. I’m thinking there should be at least 1 trigger sequencer, and 1 note sequencer - both of a straightforward variety. To keep it minimal on the scripts, I think they would just leverage the patterns and all edits would be done with grid control mode. And maybe just have a few grid ops buttons to control playback (start/stop, maybe clock division, direction). At least that’s where my head’s at. We’ll see what comes out.


#33

sorry, just catching up to this thread!

indeed, momentary buttons will trigger the corresponding script both on press and release. this was done so that you could have a script that would open a gate while a button is pressed, as an example (which would be something like TR 1 G.BTNV). if it didn’t trigger on release this wouldn’t be possible. a workaround is to do something like IF EZ G.BTNV: BREAK as the 1st line of your script, and i’m planning to add a momentary button type that will only trigger on press.

@yoyosandshoes - i agree, with that many devices connected to i2c i would definitely use a powered backpack!


#34

Just set up things for a performance this friday with teletype grid control mode on the right hand side of 128 and the base controller on the left hand side, set up for mixing a few voices from my synth and my bandmates’ systems.

I did a very bad job showing this in the video I took this evening, but that’s what’s happening here:

Specifically, I’m using grid control mode in the pattern screen in order to change which notes of the blippy sequence by tapping start end position on the first pattern. The faders are set up to get to full volume in half the screen (gain on the SC.CV is set to 4x). It is awesome having everything at hand!


#35

Just got my teletype today and had a go trying to figure out how this works and all I want to know for now is how to add the extra pages. I would love having 3 more sets of everything