Scripting 4.3. Querying objects

You can get the name of a selected object into a string variable. For instance, the following reads the name of the second selected Sound (as counted from the top of the list of objects) into the variable name$:

name$ = selected$ ("Sound", 2)

If the Sound was called "Sound hallo", the variable name$ will contain the string "hallo". To get the name of the topmost selected Sound object, you can leave out the number:

name$ = selected$ ("Sound")

To get the full name (type + name) of the third selected object, you do:

fullName$ = selected$ (3)

To get the full name of the topmost selected object, you do:

fullName$ = selected$ ()

To get the type and name out of the full name, you do:

type$ = extractWord$ (fullName$, "")
name$ = extractLine$ (fullName$, " ")

Negative numbers count from the bottom. Thus, to get the name of the bottom-most selected Sound object, you say

name$ = selected$ ("Sound", -1)

You would use selected$ for drawing the object name in a picture:

Draw: 0, 0, 0, 0, "yes"
name$ = selected$ ("Sound")
Text top: "no", "This is sound " + name$

For identifying previously selected objects, this method is not very suitable, since there may be multiple objects with the same name:

# The following two lines are OK:
soundName$ = selected$ ("Sound", -1)
pitchName$ = selected$ ("Pitch")
# But the following line is questionable, since it doesn't
# necessarily select the previously selected Pitch again:
selectObject: "Pitch " + pitchName$

Instead of this error-prone approach, you should get the object's unique ID. The correct version of our example becomes:

sound = selected ("Sound", -1)
pitch = selected ("Pitch")
# Correct:
selectObject: pitch

To get the number of selected Sound objects into a variable, use

numberOfSelectedSounds = numberOfSelected ("Sound")

To get the number of selected objects into a variable, use

numberOfSelectedObjects = numberOfSelected ()

Example: doing something to every selected Sound

n = numberOfSelected ("Sound")
for i to n
    sound [i] = selected ("Sound", i)
endfor
# Median pitches of all selected sounds:
for i to n
    selectObject: sound [i]
    To Pitch: 0.0, 75, 600
    f0 = Get quantile: 0, 0, 0.50, "Hertz"
    appendInfoLine: f0
    Remove
endfor
# Restore selection:
selectObject ( ) ; deselect all objects
for i from 1 to n
    plusObject: sound [i]
endfor

Links to this page


© ppgb, January 11, 2014