duplicate_tier | R Documentation |
Duplicate (and rename) a textgrid tier.
duplicate_tier
A Praat script
path of the textgrid file to read in
tier to copy
name to use for the duplicated tier
where to place the new tier: last
(default),
first
, before
or after
the original.
path of the textgrid file to create
library(tjm.praat) tg <- system.file( "demo-textgrids/merge-duplicate-intervals.TextGrid", package = "tjm.praat" ) tg_out <- tempfile("test", fileext = ".TextGrid") # Note that there are three tiers tg |> readtextgrid::read_textgrid() |> magrittr::extract(c("tier_num", "tier_name")) |> unique() #> # A tibble: 3 x 2 #> tier_num tier_name #> <dbl> <chr> #> 1 1 words #> 2 2 phones #> 3 3 silence f_duplicate_tier <- wrap_praat_script( script_code_to_run = duplicate_tier, returning = "last-argument" ) tg_out <- tg |> f_duplicate_tier("phones", "duplicate-is-first", "first", tg_out) |> f_duplicate_tier("phones", "duplicate-is-last", "last", tg_out) |> f_duplicate_tier("phones", "duplicate-is-after", "after", tg_out) |> f_duplicate_tier("phones", "duplicate-is-before", "before", tg_out) # We duplicated "phones" four times and # placed the copy into separate locations tg_out |> readtextgrid::read_textgrid() |> magrittr::extract(c("tier_num", "tier_name")) |> unique() #> # A tibble: 7 x 2 #> tier_num tier_name #> <dbl> <chr> #> 1 1 duplicate-is-first #> 2 2 words #> 3 3 duplicate-is-before #> 4 4 phones #> 5 5 duplicate-is-after #> 6 6 silence #> 7 7 duplicate-is-last
print(f_duplicate_tier, condense = FALSE) function (textgrid_in = NULL, target_tier = "phones", duplicate_name = "phones2", duplicate_position = "1", textgrid_out = NULL) # <wrapped_praat_script> # returning: "last-argument" form Duplicate a TextGrid tier sentence Textgrid_in sentence Target_tier phones sentence Duplicate_name phones2 choice Duplicate_position: 1 button last button first button before button after sentence Textgrid_out endform Read from file: textgrid_in$ # Find and duplicate tier @findNumberForTier: target_tier$ tiers = Get number of tiers @setDuplicatePosition: duplicate_position$, findNumberForTier.result, tiers Duplicate tier: ... findNumberForTier.result, ... setDuplicatePosition.result, ... duplicate_name$ Save as text file: textgrid_out$ procedure setDuplicatePosition: .position$, .current_num, .total_tiers if .position$ = "last" .result = .total_tiers + 1 endif if .position$ = "first" .result = 1 endif if .position$ = "before" .result = .current_num endif if .position$ = "after" .result = .current_num + 1 endif endproc # Find the number of the (last) tier with a given name procedure findNumberForTier: .target_tier$ .tiers = Get number of tiers .result = 0 for .tier_i to .tiers .tier_i_name$ = Get tier name: .tier_i if .tier_i_name$ == .target_tier$ .result = .tier_i endif endfor endproc
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.