< Back to IRCAM Forum

Following a Flute

I’m working on a piece for flute and electronic sounds using Max and Antescofo. I encountered two problems with Antescofo:

  1. The latency of Antescofo is very long sometimes (up to 200 ms or more). This should be also due to the slow attack and to the air sound which are both characteristics of the flute, especially in its low register. On the whole I can work with that very well, as I welcome the responsiveness of the flute and how it is somehow mirrored by a listening and responding machine, but there are moments where I’d like the latter to be faster. Could this be accomplished, e.g. by changing a certainty threshold?
  2. Antescofo misses repeated notes if pauses between these are shorter than a minimum time (which I observe to be about 400 ms after minor reverberations of the flute body). I understand that the listening model of Antescofo makes the distinction between held and repeated notes difficult. But I wonder if it is possible to control the boundary between “still the same” and “new” event, e.g. by setting some threshold or using a directive in the score.

@kyl: Latency of 200ms on flute is way too much and unusual! On wind instruments, even on airy extended techniques, the latency should be imperceptible!

This is what I recommend to diagnose and fix the problem in order:

  • Check Calibration: Have a look at this post (link) and also explanations in calibration patcher of the help file. If calibration is bad, you typically experience a lot of latency. You can check this, for example, on a recording and also ask your flutist to play excerpts with different dynamics.

  • If the above is not a problem: Send an info message to your Antescofo and have a look at the parameters. What are your “analysis parameters”? What is the sampling rate you are using in Max (44.1Khz)? In a common 44.1K setup, analysis parameter of 4096 512 is sufficient for Flute. You can reduce this to 2048 512 for more reactivity but honestly this should not be the case on flute!

  • Case of extreme dynamics: In scores with extreme dynamics, ranging from ppp to fff we sometimes adapt the gamma parameter (see Calibration help) inside the score. The Gamma parameter makes Antescofo less or more sensitive to attacks. Default value is -1.0. Going less (e.g. -2.0) will make it more sensitive. There are only a few pieces with continuous ppp sections that uses this feature.

Also, sometimes bad audio input (saturated or transposed due to synch problems) cause latency… .

If your problem persists, send us a sample recording of the flute + the Antescofo score for us to test.

Hope this helps.

Hello,

  1. Antescofo has no onset detector, so it cannot distinguish repeated notes. So in such cases, it successively detects the notes according to the detected tempo.
    For instance, with a score like this:
    BPM 60
    NOTE A4 1
    NOTE A4 1
    NOTE A4 1
    Antescofo successively detects a note every second. So it does the job if the estimated tempo is correct.

But warning: this no longer works if there are RESTS between the successive notes.
BPM 60
NOTE A4 1/2
NOTE 0 1/2
NOTE A4 1/2
NOTE 0 1/2
NOTE A4 1/2
NOTE 0 1/2
In such cases, Antescofo “expects” pauses between the notes. If there is actually no pause in the signal, Antescofo may detect notes too late.

Is this the way your score is written?

  1. Arshia is right, flute usually works very well. If you want we can have a look on your score.

@Arshia: Indeed, neglected calibration was the problem. Now I’ve realized that you should calibrate more often than not. Especially the energy calibration seems to be very important.

@Philippe: So I understand that Antescofo is counting out time in the first example (without pauses in the Antescofo score), based on the tempo estimation. But if a pause is long enough, it will detect the onset, even if there is a fluctuation in the performed durations. I just wondered if it is possible to control or influence Antescofo’s distinction between note and pause, to draw its attention towards onsets.

Your hints helped me a lot. Thank you very much, Kai Yves

You should calibrate every time you change audio setups, change room, change instrument, or change musician! Usually you do this once during dress rehearsal and things will be fine afterwards.

Regarding repeated notes, here is my musical two-cents : I would suggest focusing on the “musical output” rather than precise following on repeated notes since the output of the follower (on long repeated note sections) can vary from performance to performance. Therefore, the real question to ask is what are the actions that you want to trigger on those repeated notes? Do you want them to be tightly synchronous to attacks?

We asked such question this last summer for a piece by @jkapusci . We ended up putting actions in a group (think a polyphonic electronic phrase) and determining their synchronization behavior as it was musically required by composer (@jkapusci) using one of the synchronization strategies described here (link).

“I just wondered if it is possible to control or influence Antescofo’s distinction between note and pause, to draw its attention towards onsets.”

Surprisingly, making Antescofo able to distinguish between note and pause is one of the most delicate research issue on score following, so there is still plenty of room for improvement!
So far, you can use one tool to influence the detection. Suppose than a note is usually played with some silence after it, but of unknown length. You can declare it as a “pizzicato”, by writing the @pizz in the score, after the duration of the note. For instance:
BPM 60
NOTE A4 1 @pizz
NOTE A4 1
NOTE A4 1
This attribute might be helpful in case you really want to detect the onset of the subsequent note with a fast reaction time. But warning, if the note is actually played legato (or the calibration is bad), it may increase the detection latency. So writing this attribute on all notes may be a bad idea.
In other cases, it is probably wiser to consider groups of sequenced actions, as Arshia has explained.