Internal soundgen function
splitContour(anchors, discontThres = 0.05, jumpThres = 0.01)
a dataframe with two columns: time and value (time on any scale)
if two anchors are closer in time than
discontThres
, the contour is broken into segments with a linear
transition between these anchors; if anchors are closer than
jumpThres
, a new section starts with no transition at all (e.g. for
adding pitch jumps)
if two anchors are closer in time than
discontThres
, the contour is broken into segments with a linear
transition between these anchors; if anchors are closer than
jumpThres
, a new section starts with no transition at all (e.g. for
adding pitch jumps)
Returns a dataframe containing the index of anchor rows for start and end of each segment and whether we want a transition or a jump between segments.
Splits a smooth contour into several segments. A new segments is started if the time step between two anchors is smaller than discontThres.
# NOT RUN {
soundgen:::splitContour(data.frame(time = c(0, 370, 650, 655, 1050, 1400),
value = c(360, 316, 345, 550, 610, 590)))
soundgen:::splitContour(data.frame(time = c(0, .2, .205, .8, .81, 1),
value = c(360, 316, 345, 550, 610, 590)))
soundgen:::splitContour(data.frame(time = c(0, .4, .45, .6, .8, 1),
value = c(360, 316, 345, 550, 610, 590)))
soundgen:::splitContour(data.frame(time = c(0, .4, .45, .6, .8, 1),
value = c(360, 316, 345, 550, 610, 590)),
discontThres = .1)
soundgen:::splitContour(data.frame(time = c(0, 1),
value = c(360, 590)))
# }
Run the code above in your browser using DataLab