did you have a chance to test SCENE.G?

1 Like

Nyet, I had a live set last week and didn’t want to disturb anything. The time after that has been consumed by Life™, but I’ll try my best to take a crack at it in the next couple of days. :slight_smile:

1 Like

Well that took a while!

It works!! This frees up 3 whole scripts for one of my performance scenes. I can’t thank you enough, this really opens up a lot of possibilities. :slight_smile:

1 Like

Howdy! I just caught a 128 grid+ansible on Reverb. I’ve been looking for solutions to the power issues with running the grid into the teletype (currently been dreaming scripts up in grid visualizer til I found a good deal). I was curious if progress was ever made using the ansible to power the grid while still controlling the teletype via i2c? I’m still wrapping my head around all of this, so y’all will have to forgive my confusion in asking this stuff. Any help is appreciated, and I am so excited to join the grid ops TT fun <3

There’s no way to have ansible power the grid while the grid is connected to Teletype (not sure that was a proposed solution that I’ve seen).

I would recommend you get one of these:

If you want to switch between grid and keyboard with teletype while powering, the @scanner_darkly and @MengQiMusic 2>1 module , although be advised that it pulls from the 5V rail.

2 Likes

i think there was a thought of using ansible as sort of a grid-i2c adapter, but this likely wouldn’t work well. besides, it’s just easier to use other solutions, like the ones @Jonny mentioned.

you could also power two>one from an external USB power supply.

1 Like

Both excellent and much more reasonable solutions. That’s a fancy lookin cable, too. :metal::pray:

I really got so much inspiration from the grid ops studies, thank you for this @scanner_darkly! I’ve been eagerly waiting for new content, any plans for adding details for these placeholders ?

FADERS

X/Y PAD

GAME OF LIFE

VISUALIZER

SCENE MANAGEMENT

TIPS AND TRICKS

control brightness with param knob

radio buttons

:nerd_face::pray:

6 Likes

thanks for the reminder - i need to get to this sooner rather than later… no timeline but will keep it at the top of the list!

10 Likes

I have gone way down the grid ops rabbit hole and would be happy to contribute, help edit, etc. if needed. :slight_smile:

While I’m here, I’d like to say I’m so grateful for this addition. It’s no exaggeration to say it’s a game changer for me. Thank you!!

5 Likes

Your time and effort is much appreciated. Looking forward to the update! :muscle:

1 Like

thank you - it’s really great to hear, and i might take you up on the offer - one thing that would be super helpful is maybe doing some editing of the existing studies and just checking if anything is out of date? (pretty sure some ops changed after i wrote them). this will allow me to concentrate on adding new content.

another thing i thought would be cool to add is people describing how they integrate it in their setup - whether it’s simply triggering scripts with a grid or something more complex. and i’m really curious whether people tend to use the same grid scene or change it for different tracks/patches.

6 Likes

I’m definitely heading towards loading different scenes as part of a longer performance. Haven’t used the grid ops yet, but will jump in soon.

1 Like

Stopping by to inquire about the ol’ MLR script–think you might revisit that at some point?
I’ve been working on a slight edit of it for the STS that I shared here, but it’s still super preliminary. Works by sending a slewed signal upwards that resets on each button press/whenever the sequence moves forwards, which is passed into the start position input on the STS to create a fine granular scrub, and the speed of the slew affects the speed of playback. It doesn’t sound perfect but it sounds and feels really cool, and I think a lot of the kinks can be worked out… one question mark I’ve run into is how to get the tracks running independently from each other, so I can adjust the playback speed of individual channels? Been messing with the DEL ops but haven’t figured out a nifty way of getting that to function yet. Definitely keeping this project going, and hopefully convince a few other people to try out the STS as that is a very powerful sampler!

afraid it would be quite some time before i would get a chance to work on the MLR script again - just too many projects waiting, including more teletype grid studies…

looking at the old MLR script i posted here it should be pretty straightforward to modify it to have independent clock for each track if you are willing to clock it externally. metro script just triggers script 1, which then loops through advancing each track:

#1
L 0 3: A I; SCRIPT 3

and looks like scripts 5, 6, 7 are not used (if i’m looking at the right version). so what you could do instead is use external triggers into inputs 1, 5, 6, 7 and modify the scripts as follows:

#1
A 0; SCRIPT 3

#5
A 1; SCRIPT 3

#6
A 2; SCRIPT 3

#7
A 3; SCRIPT 3

you could also refactor it so you can use trigger inputs 1-4, you’ll have to move scripts 2-4 to 5-7 and update all the script references.

could also probably refactor it to still use the internal clock. and if you just want independent divisions of the main clock do something like:

#1
EVERY 1: A 0; SCRIPT 3
EVERY 4: A 1; SCRIPT 3
EVERY 7: A 2; SCRIPT 3
EVERY 13: A 3; SCRIPT 3
5 Likes

This is invaluable! I’ll keep posted as this continues, think I might make use of crow for the next step—thanks for the input :slight_smile:

Question for grip ops users:

I am trying to make a grip ops sequencer using my 64 grid where the sequence advances along the X axis on every metro and along the Y axis latched grid buttons will indicate what scripts to trigger, from 1-7. For example coordinates (0,1) will trigger script 1 on the first beat, and (4,7) will trigger script 7 on the fifth beat. Simply put, using the grid to create an internal gate sequencer to sequence the triggering of scripts.

Here’s where I’m at:

M
M BPM PARAM
G.LED P.I 0 0
P.NEXT; G.LED P.I 0 15

I
PARAM.SCALE 40 240
G.BTX 1 0 1 1 1 1 0 0 8 7

(PARAM knob is my tempo knob, a blinky light goes across row 0 with the metro when it’s running, and all other 56 buttons are enabled for latching. I have P 0 going between 0 and 7)

I’m trying to find a way to get teletype to read (every metro) which LEDs are lit at P.I and use the y coordinate value to trigger all of the scripts which have the buttons lit. I was thinking this would be the easiest way but now I’m a bit stuck, so perhaps I’m going about it wrong. Is there a way to be like at “at x coordinate P.I, trigger $ y coordinate” Even if this is possible will I be running into a problem getting it to trigger multiple scripts on the same beat? Perhaps I have to do some sort of L function…?

Thank you in advance if anyone has tips, I tried looking at Scanner Darkly’s rain scene but it’s not quite doing what I’m looking for and I couldn’t quite figure how to make it apply…

Yep, a loop is your ticket. Sadly, you also need an IF, at least from what I can figure, and you can’t mix prefixes. Happily, you won’t be using script 8 for anything else, so you can use it for a little subroutine. I’d interject into M at line 3: L 1 7: $ 8 and then do the following…

#8
IF G.LED P.I I: $ I

Does that make sense? (Also does it work, I’m not at my modular to test) This is a simple and cool idea BTW!

1 Like

so you have a block of 7 rows of 8 buttons each. P.I indicates the current column. on each step you want to trigger the scripts that have the corresponding buttons latched. this does require a loop, because on each step you need to check each of the 7 rows. since there are 7 scripts we can trigger, this leaves one script that can be used for this task.

add this line to the metro script before you advance to the next step:

L 1 7: SCRIPT 8

in script 8 we now need to do this: check the button located in the row specified by variable I (which gets passed from the calling loop) and the column specified by P.I and fire a corresponding script if it’s latched. to check a button state we can use G.BTN.V index op, where index is the button index. when you use G.BTX to create a block of buttons, the first parameter is the starting index, and buttons are given consecutive numbers, arranged left to right first, then top to bottom. so in case of your block the indexes are:

01 02 03 04 05 06 07 08
09 10 11 12 13 14 15 16
... and so on

to get the index of the button we want we can use this formula:

J - + P.I * I 8 7

since there are 8 buttons in each row, we multiple the row number (I) by 8 and add the current horizontal position (P.I). we then need to shift it by 7 so that the leftmost button in row 1 gives us index 1, which is the starting index in your button block definition (you can change it to start with 8 instead of 1, then you don’t need to subtract 7 here).

with the button index now determined it’s easy to do the rest:

IF G.BTN.V J: SCRIPT I


another suggestion - instead of using G.LED and a separate row to indicate the current step you can do this:

G.CLR
G.REC P.I 1 1 7 -2 -2

G.CLR removes all previously drawn LEDs - but this doesn’t affect buttons and faders. then we draw a 1 column wide rectangle using the special brightness level of -2 - it makes everything underneath it a little brighter. this way you can see the current step in the sequencer itself.


now, could we expand this to all 8 scripts and 8 rows? yes! define the button block like this:

G.BTX 8 0 0 1 1 1 0 0 8 8

and change metro to this:

G.CLR
G.REC P.I 0 1 8 -2 -2
J P.I
L 1 8: $ * I G.BTN.V + J * I 8
P.NEXT

here is what happens here: we use a similar formula to calculate the button index and we get that button’s state. it can only be 1 (if it’s pressed/latched) or 0. so when we multiply it by I we either get the script number (since we just multiple by 1) or 0. SCRIPT 0 does nothing, since there is no script 9 which is exactly the effect we want and allows us to combine this all in one loop without using IF.

this line has the max number of characters, so if you want to use this with grid 128 this won’t fit:
L 1 8: $ * I G.BTN.V + T * I 16

instead, store 16 in a variable: Z 16 and use it instead:
L 1 8: $ * I G.BTN.V + T * I Z

4 Likes

Does G.LED not get the lit state of buttons? My bad