select praat 中的对象列表

select a list of objects in praat

我有一个来自 for 循环的对象列表,我想将它们附加到一个列表中,以便我可以 select 并连接它们。我的想法是代码的功能或多或少是这样的:

for stringNumber from 0 to numberOfStrings
    do string stuff...


    tgID = Create TextGrid: tmin, tmax, tier_name$, phone$
    Set interval text: 1, 1, phone$
    # THIS IS WHERE I NEED HELP
    tgList = append: tgID + ", " 

endfor

selectObject: tgList
do ("Concatenate")

你可以试试这个:

for stringNumber from 0 to numberOfStrings
    # do string stuff...

    tgID = Create TextGrid: tmin, tmax, tier_name$, phone$
    Set interval text: 1, 1, phone$

    tgList[stringNumber + 1] = tgID
endfor

selectObject()

for i from 1 to numberOfStrings + 1
    plusObject: tgList[i]
endfor

Concatenate

selectObject() 取消选择所有内容,然后 plusObject 将当前对象添加到选择中。我不确定选择循环中的循环索引是否正确,因为你从 0 开始循环,我无法尝试你的代码。

在这种特殊情况下可能有点矫枉过正,但您也可以使用 CPrAN 上提供的 selection 插件,它是为管理对象选择而创建的(完全公开:我写的):

include ../../plugin_selection/procedures/tables.proc

@createEmptySelectionTable()
selection = createEmptySelectionTable.table

for stringNumber from 0 to numberOfStrings
    Create TextGrid: tmin, tmax, tier_name$, phone$
    Set interval text: 1, 1, phone$
    @addToSelectionTable: selection
endfor   

@restoreSavedSelection: selection 
removeObject: selection
Concatenate

但是,要使其正常工作,您需要将脚本放在插件中的 sub-directory 中(因此 Linux / [=23= 中的 ~/.praat-dir/plugin_foo/scripts/here.praat ]).

希望将来有办法解决这个问题。再一次,大多数 Praat 脚本确实应该在插件中,即使它们是特定于项目的,所以... </rant>