选择praat中的对象列表

时间:2017-01-23 19:05:13

标签: praat

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

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")

2 个答案:

答案 0 :(得分:3)

你可以试试这个:

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开始循环,我无法尝试你的代码。

答案 1 :(得分: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

然而,要使其正常工作,您需要将脚本放在插件的子目录中(因此在Linux / Mac中的~/.praat-dir/plugin_foo/scripts/here.praat之类的地方)。

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