Aodyo Instruments

    Aodyo Community

    • Register
    • Login
    • Recent
    • Categories
    • Search

    How Breath Rate affects Latency

    Sylphyo General
    latency breath rate
    4
    4
    278
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Clint
      Clint last edited by

      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 Reply Last reply Reply Quote
      • Peter Ostry
        Peter Ostry @Clint last edited by 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 Reply Last reply Reply Quote
        • Clint
          Clint @Peter Ostry last edited by

          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 Reply Last reply Reply Quote
          • rudyverpaele
            rudyverpaele last edited by

            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 Reply Last reply Reply Quote
            • 1 / 1
            • First post
              Last post
            Copyright © 2015 NodeBB Forums | Contributors