Aodyo Instruments

    Aodyo Community

    • S'inscrire
    • Se connecter
    • Récent
    • Catégories
    • Recherche

    How Breath Rate affects Latency

    Sylphyo General
    latency breath rate
    4
    4
    660
    Charger plus de messages
    • Du plus ancien au plus récent
    • Du plus récent au plus ancien
    • Les plus votés
    Répondre
    • Répondre à l'aide d'un nouveau sujet
    Se connecter pour répondre
    Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.
    • Clint
      Clint dernière édition par

      At the suggestion of @join, I tested how the Breath Rate setting on the Sylphyo affect the time it takes to go from the Breath Impulse to the appearance of MIDI on the Link. The setting is located in MIDI Mappings => Breath => More Options => Breath Rate.

      As I expected, as I reduced the scanning frequency from Max down to Low, the delay in recieving the MIDI Note on climbed from 9.18 to 12.77 msec. However ...

      When I set Breath Rate to Low - reporting a paltry 63 times per second - Latency plummeted to 7.87 msec.

      Could anyone suggest why this happens? Has anyone else seen this behavior??

      I did 10 tests for each case and plotted the average, the +/- standard deviation, and the min and max values:

      Sylphyo_BreathRate_vs_Latency_150dpiC10.jpg

      A full listing of my other settings are in this other thread.

      -- Clint Goss

      Peter Ostry 1 réponse Dernière réponse Répondre Citer
      • Peter Ostry
        Peter Ostry @Clint dernière édition par Peter Ostry

        Hm ... pretty large standard deviation ...
        What can be the cause for such variations and do they play a role for general latency?

        That's maybe Jitter. The higher the breath rate, the more jitter you get. Here are MIDI Jitter measurements from a Sylphyo connected via USB:

        Untitled1.png

        The first graph is just a breath example for the test, don't compare it to the other graphs. Please do not trust the 1000 Hz graph because this seems to go beyond the border of my measurement possibilities.

        If a "jitter interpreter" drops unrealistic jumps instead of interpolating the history, you may get less "good" events and therefore, in an unlucky moment, more latency with a high breath rate than with the tamer jitter of lower rates. An unlucky moment could be right at the start of playing, at least this may be part of explanation why you get the best attack at the lowest rate, where almost every event counts. This is just a wild theory but as good as many others :-)

        But the most important question, after you switched back from technician to musician again:
        Do you actually feel a better attack with the lowest breath rate? It's clear that slow rates do not allow advanced techniques like flutter tounge, but is the overall feeling different? Specifically for the attack I would expect a timing difference between Sylphyo's audio out and any MIDI process but not so much between settings of MIDI processes. Well, for a MIDI guitar the attack is very important, but for a wind instrument ... ?

        I'm not a trained horn player, but I can't create a puff of air that is comparable to the attack of a string or a key.

        Clint 1 réponse Dernière réponse Répondre Citer
        • Clint
          Clint @Peter Ostry dernière édition par

          Nice jitter analysis! I'm new to all this latency stuff, but bending my brain around it.

          My Sylphyo needed a reset after all the hundreds of settting changes, so I decided to review my entire Sylphyo config and (now that I understand things a lot better) made some fundamental changes.

          My feeling is that my prior testing is highly dependent on my prior settings. I'll basically need to re-test with the new settings (shown below).

          Two interesting techniques I've stumbled on:

          • Humming into the flute is a great way to see how a sound module behaves at rapid-fire breath pressure changes and/or lots of note-on/note-off pairs per sec.

          • Playing into speakers and changing your distance from those speakers. At one msec per foot, I got to experience the sound/feel of adding another 20msec of latency. Works great with a dry sound. Great ear training for latency.

          >>> Setting Changes

          Here are the mods I've made in my setup, with some rationale. These changes have made, for me, a substantial improvement in playability and latency. My full setup is listed below.

          MIDI Mapping / Breath / Breath rate: Low (125 Hz) ==> High (500 Hz)

          After all my testing (rather than real playing) it turns out that Low (125 Hz) simply doesn't work on my VL70-m. Not usable. Don't know exactly why, but after exercising the VL70-m, XpressO, and Respiro, High (500 Hz) is the winner.

          Max (1 kHz) overloads the VL70-m.

          MIDI Mapping / Breath / Delay notes if needed: On ==> Off

          Turned this off on general principle. I can see the results in the MIDI stream, but have not (yet) heard any real-world results from this setting.

          Note that the "syndrome" described below (in Note-off delay) does NOT seem to be affected by whether this setting is ON or OFF.

          MIDI Mapping / Velocity: Dynamic, 20ms, 127 ==> 1, ---, ---

          To eliminate the 20ms delay in determining the dynamic velocity. The VL70-m and XpressO seem OK with this.

          MIDI Mapping / Note-off delay: 10ms ==> 1ms

          Lowered in a general bid to improve latency. I see the change in the MIDI stream, but cannot detect a real-world difference in Respiro or the VL70-m. Setting this value too high (like 60ms) induces a syndrome where, occasionally during extremely fast legato runs with Respiro, sound will come to an end.

          It looks like a MIDI sequencing issue - there is no pending Note On even though Breath Controller data is still flowing.

          Breath / Curve: Log ==> Linear

          Change from Log to Linear produces much better response at low breath pressures. This long-standing issue (error) was born in the days when I was wrestling with "grit" from aliasing as Breath Controller values hovered around 0-1-2-3-2-3-2-1-0 levels. I had applied the Log curve, thinking it was something line an exponential curve, when actually the Log increases its output quickly from low breath pressures.

          Breath / Filtering: On ==> Off

          Based on the description, this should have been off all-along. Interesting to note that Pedro Eustache [PE] had this set ON in his May 2019 settings.

          Keys / Reaction time: 20ms ==> 1ms

          A good test is whether intermediate notes are heard when doing a trill involving multiple fingers. On NativeFlute, trilling between <ooo|xoo and <xxo|xoo is a good test. If there are intermediate transient fingerings of <oxo|xoo, then an octave-up "pop" will be heard in addition to the two intended trill pitch. However, this is an extreme case. In practice, a trill between <xxx|xxx and <xxx|xoo is more representative of real play, and an accidental transient note of <xxx|xxo is hardly noticable (if at all).

          In tests on 12/1/2021, using Respiro and the <ooo|xoo and <xxo|xoo trill, I got frequent pops at 1ms, occasional pops at 10ms, and almost no pops at 15 ms. However, I am chosing 1ms now because of the excellent responsive play on the VL70-m in exchange for an occasional unintended transient note in oddball situations.

          Keys / More Sensitive: On ==> Off

          Not much info on this setting. I'm turning it off to see what happens.

          >>> Full Settings

          Clint's Configuration Settings for the Aodyo Sylphyo
          Firmware version: 1.4.8
          As of 12/01/2021
          
             %%	A non-default setting (these are the only ones that need to be changed
          	after a Reset).
             ##	A setting that significantly affects the typical MIDI playability
          	of the instrument.
          
          * Sound
          	Volume:			100%			%%
          	Reverb:			70%			%%
          
          * MIDI Mapping
          	Breath:			CC 2, --, --		%%
          	Breath rate:		High (500 Hz)		%% ##
          	...per CC:		On
          
          	Delay notes if needed:	Off			%% ##
          
          	Velocity:		1			%% ##
          		Capture delay:	20ms
          		Max. velocity:	127			%%
          
          	Slider ctrl.		CC 1
          	Top slider ctrl.	CC 12
          	Btm. slider ctrl.	CC 13
          	Elevation ctrl.		CC 75
          	Roll ctrl.		CC 76
          	Compass ctrl.		CC 77
          	Key-bend ctrl.		CC 78
          
          	Program change >	Off, ---, ---
          
          	Note-off delay:		1ms			%% ##
          	
          * Breath
          	Minimum:		20
          	Range:			600
          	Curve:			Linear 			%% ##
          	Filtering:		Off			%% ##
          
          * Keys
          	Fingering:		NativeFlute+		%%
          		Octaves:	   5(+2) octaves
          		Invert ocatves:	   Disabled
          		Left pinky: -1st:  Disabled
          		Right pinky: +1st: Disabled
          		Replay same note:  Disabled
          
          	Reaction time:		 1ms			%% ##
          	R.time octaves:		30ms
          	More sensitive:		Disabled		%% ##
          
          	Key-bend (BETA):	PB+			%%
          	Key noise (BETA):	Disabled
          
          * Slider
          	Function:		Control (latch)
          	Top edge:		Bend -
          	Btm. edge:		Control
          	Edge size:		9mm
          	
          * Movement
          	Shake to move:		On
          
          	Shake vibrato:		On
          		Range:		20%			%%
          		Sensitivity:	43%
          		Threshold:	 9%
          
          	Elevation control:	On
          		Bidirectional:	Off
          		Absolute:	Off
          		Range:		+-35 degrees
          
          	Roll control:		On
          		Bidirectional:	Off
          		Absolute:	Off
          		Range:		+-20 degrees
          
          	Compass ctrl. (BETA):	On
          		Absolute:	Off
          		Bidirectional:	Off
          		Range:		+-20 degrees		%%
          
          	Always on:		Off
          ----
          * Base Key:			A3			%%
          * Output:			MIDI ch. 1
          ----
          * Invert Display: Off
          * Receiver device: Connected CH 23
          * LED: Off
          

          -- Clint Goss

          1 réponse Dernière réponse Répondre Citer
          • rudyverpaele
            rudyverpaele dernière édition par

            If a note Off is delayed, then there is a moment that two notes are ON. This might cause a mini legato / glide in Respiro.

            If the Respiro note transition is set to Synth mode then you will have less pops versus when you use the Real mode.

            I would need to dig into the Sylphyo to understand the way it deals with key glitches. But typically when using certain fingering transitions, glitches can occurs due to the changing keystroke (not all fingers in sync). I think this is why the Key / Reaction time parameter exist. Typically keystrokes less than 20ms are glitches. Therefore setting this value to 1ms will probably not filter glitches keystrokes and provide a more snappy response to your fingering BUT it demands that you master your fingering technique...Respiro is responding super fast to note changes and a glitch note during playing can result in a create a pop.

            With other words, if you set the reaction time to 1ms, then I would advice Respiro in Synth Mode and increase the value till pops are gone...

            Hope this helps ;-)

            1 réponse Dernière réponse Répondre Citer
            • Référencé par  Peter Ostry Peter Ostry 
            • 1 / 1
            • Premier message
              Dernier message
            Copyright © 2015 NodeBB Forums | Contributors

            Il semble que votre connexion ait été perdue, veuillez patienter pendant que nous vous re-connectons.