Rereading, I think maybe you just want the normal at method. Arrays have no concept of “scrolling through” hence nothing special to do with the array for that. You can get an index number from the mouse and ~envelopes[index].
What information do you have? Here the answer is an array (OSC message) consisting of ['/ctrl', a node ID, a message ID, a mouse value] and only the last is relevant. Also you have an array of envelope strings.
What information do you need? Presumably this is just the envelope string in the array at the index.
What operations will get from 1 to 2? I think here it may be as simple as ~envelopes[msg].
First line means ~mouse.put(selection, ~envelopes) – a/ put is meaningful for arrays but ~mouse starts off as a number so that’s not going to get very far; b/ selection is nil and you can’t put into an array at an index of nil; c/ even supposing you address those, I’ve no idea how it helps you get from 1 to 2 above by saving a reference to your complete array into another array.
Second line erases the first result and replaces it with [index] + ["1", "2"] … again, I’m not sure of the relevance of this operation.
Does the following get you closer to where you want to go?