# Peak propagation

The peak propagation step computes a set of peak sequence variants that may follow the peak tuple of the previous frame and evaluates each of them for plausibility. Each peak sequence is computed by a look-ahead strategy for the next peak. In general, we look two peaks ahead before deciding on the next one.

The following peak sequence variants are considered:

- - V1 (regular case): the peaks continue at about the same distance as the peaks in the previous frame;
- - V2 (elongated periods): the periods are elongated and the peak distances become larger;
- - V3 (octave jump down): the peaks follow at double distance as in the previous frame;
- - V4 (octave jump up): the peaks follow at half the distance as in the previous frame.

The peak sequence variants are computed depending on the octave jump state of the previous frame. The octave jump state is maintained for each frame and its default value is “none”. There are two additional values, “down” and “up”, for the state of F0 that is an octave higher than normal, and the state of an F0 estimate that has fallen by an octave. Variant V2 is used to detect extended periods that may not be captured by V1. V3 is necessary to test the case of a sudden octave jump down but is only calculated in the case of an octave jump “none”. V4 is considered only in an octave jump down state to check whether such a phase has ended. Currently, our algorithm detects neither repeated octave jumps down nor a sudden octave jump up, but the recognition of these cases can be implemented in the future.

For each of the variants V1-V4, we define interval ranges where subsequent peaks are expected, check which peaks occur in these intervals and try to find an optimal peak sequence. The interval ranges are defined relative to the last peak distance D, i.e. D is the distance between the last two peaks in propagation direction of the previously computed peak sequence. The continued peak sequence starts with the peak tuple for the previous frame and adds peaks to the left side if the peak propagation is to the left or to the right side, otherwise. Each new peak to be added is searched for in the expected interval, while at the same time checking whether a similar peak exists in the interval that follows. Therefore, we have a peak look-ahead of 2. Each such peak pair - the two peaks looked ahead - is scored by computing their mean absolute height. The first peak of the pair that achieves the highest such score is installed as the definite next peak in the peak sequence. This peak propagation stops as soon as the center position of the addressed frame has passed by two peaks or if no further peak is found. It is deliberate that the score to evaluate peaks in unstable intervals considers only the absolute peak heights. A measure that accounted also for the peak distances would deliver false peak sequences, owing to the irregular peak distances that we expect in unstable intervals. Figure 9.4 illustrates the lookahead strategy for successor peaks in left propagation direction, starting at peak p_{0} that is part of peak tuple (p_{0}, p_{1}, p_{R}) of the previous frame. It shows the case of elongated periods V2. The interval where a first peak is expected is denoted by I_{0}. We find two possible candidate peaks in I_{0}, namely p_{k}(_{1}) and p_{k}(_{2}). For both candidate peaks, we look for possible look-ahead peaks. In Figure 9.4, the look-ahead peaks for p_{k}(_{2}) are shown, they are p_{k}(_{2},_{1}) and p_{k}(_{2},_{2}) in interval I_{k}(_{2}) that depends on the position of p_{k}(_{2}). The peak pair p_{k}(_{2}) and pk(2,2) achieves the highest score, and thus pk(2) is installed as the next valid peak in the peak propagation.

**Figure 9.4. ***Peak look-ahead strategy of 2 for the extended period case V2 that starts with tuple P = (po, p**1**, *pr*) **in propagation direction to the left. Peaks pk(**1**) and pk(**2**) are inspected from po in interval Io, and peaks pk(**2**,i) and pk(**2**,**2**) are the look-ahead peaks found in expected interval I _{k}(_{2}) starting from p_{k}(_{2}).*

The final step in the peak propagation stage is the evaluation of the various peak sequence variants. In general, the variant with the highest score, i.e. with the highest mean absolute peak height, is the best peak continuation sequence. However, some additional checks are needed to verify it. Here, we describe the evaluation procedure for the case where the previous frame has no octave jump. A similar procedure is applied if the previous frame is in an octave jump down state. In the case of currently no octave jump, we first check whether V1 and V2 deliver the same peak sequence. If so, we keep V1 and discard V2. Otherwise, an additional peak propagation step for the next frame is performed to see whether V2 diverges in a double period case. If this is the case, V2 is discarded and V1 is kept. In all other cases, we keep the variant of either V1 or V2 with the larger score, i.e. the higher absolute mean peak height, in V1. Then, we evaluate V1 against the double period variant V3 if V3 has a score greater than or equal to V1. V3 is installed and the frame’s octave jump state is set to “down” only if V3 has no middle peaks of sufficient heights, i.e. if the absolute height of a potential middle peak is smaller than a given percentage of the minimum of the absolute heights of the enclosing peaks. Otherwise, the peak tuple from the peak sequence of V1 is installed for the current frame.