< Back to IRCAM Forum

"Tempo smoothness parameter is obsolete." - Docs for new params?

The exciting new version of Antescofo gives me:

antescofo~: Tempo smoothness parameter is obsolete. See commansds: 'tempo_sliding_mem', 'small_tempo_phase_coupling_strenght', 'large_tempo_phase_coupling_strenght', 'small_tempo_period_adaptation_rate', 'large_tempo_period_adaptation_rate', and 'large_tempo_parameters'

Searching for these in the docs gives me no hits. Is there anything on how to use these?

(Aside: To make upgrading easier, would it be possible to deprecate things like this so existing scores still work for a version or two before they completely go away?)

Thanks for your work on this, excited to try it out.

Hello c-harl-ie.

The doc for tuning the tempo inference is given here.
Tempo inference - AntescofoDoc

The tempo smoothness was an attempt to provide more control over the tempo inference, but was not really working.

If you tune the tempo inference, please try first the predefined tempo inference strategies specified with the command antescofo::large_tempo_parameters.

You can track the infered tempo, e.g. at the end of a performance, using data gathered by the function @performance_data().

I want to stress the following warning from the doc:

It should be emphasized that the inferred tempo is used by the listening machine to improve detection of the occurrence of the next musical event. Modifying the inference parameters modifies the calculated tempo, and its value can degrade the recognition of musical events. The default parameters are intended to be relevant in a wide variety of musical contexts. If the inferred tempo is not suitable for driving certain electronic processes, a solution that is often more appropriate is to impose an ad-hoc computed tempo on these processes, rather than changing the inference parameters.

For instance, if you want to “smooth” the tempo, you can compute a tempo as an average on a sliding window, and then use this computed tempo:

@global $tempo0 := 60
@global $tempo1 := 60
@global $tempo2 := 60
@global $tempo := 60

whenever ($RT_TEMPO)
{
   $tempo2 := $tempo1
   $tempo1 := $tempo0
   $tempo0 := $RT_TEMPO
   $tempo := ($tempo0 + $tempo1 + $tempo2)/2
}
; ...
Group G_with_my_smoothed_tempo @tempo := $tempo
{
     ; actions...
}

With these definitions, at each tempo update (following the detection of a musical event), $tempo is recomputed and averages the last 3 musician tempo values.

The new tempo inference departs greatly from the previous approach and it was not possible to maintain a tempo smoothness with its previous meaning.

1 Like

Ahhh thanks so much! I get it now. Will have a play :slight_smile: