Support for high-resolution MIDI?
Are there any plans to support high-resolution MIDI control messages for breath? Particularly at the low end, I'm finding the quantization to 7-bit MIDI signals to be very noticeable compared to the built-in sounds, so I assume the breath sensor is more sensitive than the 7-bit range represented by a single control message. Would be great to have access to that sensitivity over MIDI as well!
I am hoping this explains what I am hearing at low breath pressures. I've only been working with the Sylphyo for 3 days, but my playing style does use low breath pressures, and so this issue stood out.
I recorded a short demo emphasizing low breath pressure. The demo is on the Sylphyo via Link through the Patchman English Horn sample set, using Kontakt and recorded in Cantabile. Here is the waveform:
Here are links to WAV and MP3 (Lame -v2) versions of the recording:
... The critical areas are in the areas (in seconds) of 1-2, 13-15, and 20-22.
Is the "jittering" in those areas due to 7-bit MIDI?
Interesting ! I think the clue about what it is, can be found in a midi monitor.
My first impression is that the the tone generator does not properly react on the low pressure.
I use the full rage : from very low to very high. Now to virtual instuments hosted by Gig performer: its midi monitor shows the gigantic range.
Nice sound: I am not trying to play "real" instruments. I combine it with a Vl70m with the Patchman rom. Found that i play most the Plate model..
I like your approach : sorru i cannot match your data : I am redoing the studio : so all is disconnected.
Hi Metered section
when i look at the midi monitor of my host i see a high resolution data stream is send from Breath.
I would love it if midi data will be sent in high resolution NRPN 's The synth i intend to use with Sylpyo uses those : ASM Hydrasynth ,
will try to give extra data when mu studio is up and running
Support_AODYO last edited by
We'll have a more in depth look at this. In the meantime, can you try to set the minimum in the breath settings menu lower? The default should be 20, but try something like 5 and it should respond better to lower breath.
@Support_AODYO Thanks for the info.
I tried setting Breath => Minimum to 5, 1, and 117. This seems to change the minimum breath pressure where a "Note On" occurs from very low to pretty hig, but the first Breath Controller value transmitted is still 1 (looking in MIDIView). And, if I "hang out" right at that minimum breath are, I still get a "stuttering" that I'm pretty sure occurs when Breath Controller values of 1, 0, 1, 0 are transmitted (I have seen strings of at least 10 of these [1,0] sequences before a Note Off is transmitted).
The solution might lie in the volume curve of the virtual instrument I am playing. I am not sure right now what I volume curve my virtual instruments are using (or how to change it ... I'm pretty new to virtual instruments), but I can imagine that there is a curve someplace that tells Kontakt how to shape the volume output based on Breath Controller inputs. Rather than a straight line, if it were an "S" curve or Bezier or some such, then the volume output with Breath Controller = 1 would be greatly reduced and the "stuttering" might be inaudible ...
Support_AODYO last edited by
@Clint We have experienced some similar issues with Kontakt in the past. It's quite difficult to set it to respond to wind controllers in a satisfactory way. You could try changing the Midi note-off delay on the Sylphyo and see if that changes anything?
Let me know what you come up with.
No Luck. Setting MIDI Mapping => Note-off delay to 1ms is substantially worse. Values of 20ms and 75ms are no improvement. I reset it to 10ms.
I also experimented with setting Breath => Filtering to Off, which made this stuttering issue much worse. Setting Breath => Curve to anything other than Log made the stuttering issue worse. Log-Lin was worse and Linear was much worse.
I have also been experimenting with various MIDI filters in Cantabile to try to minimize stuttering, with no success ...
I am thinking that any solution short of 14-bit BC commands will inherently be prone to stuttering at low volumes.
What are the prospects for 14-bit Breath Controller output from the Sylphyo?
(However, I just found out that Kontakt 6 does not handle 14-bit BC MIDI commands ... Sigh.)
Here's (what appears to be) a solution for Kontakt. It was provided in the Native Instruments forum in post #6 of this thread:
In addition, I did find that in Kontakt 6.4.2, I am able to use the Volume modulation in the Amplifier section by using a Flexible Envelope. (I don't know if Flexible Envelope is available in all/earlier versions of Kontakt).
Using a Flexible Envelope - either using Bezier curves or the Table option - I can then define any curve I like. With a very gentle rising slope from the left (CC2 = 0) end of the range ... I have reduced the stuttering to almost inaudible.
As Stephen23 pointed out ... "You'll find 7-bit control entirely adequate".
The main trouble about using high resolution MIDI is that it needs 2 MIDI messages to be transmitted thus requiring twice the bandwidth of a standard MIDI message. As there are many other MIDI messages to be transmitted (note on/note off, and all the various MIDI CC messages transmitted by the Sylphyo) using high resolution MIDI messages would double the resolution but would also lead to bigger time between MIDI breath messages and thus stepping effects would come back ...
Issue is there on the MIDI side but would also have similar impact on the wireless transmission which have to face similar bandwidth constraints.
requiring twice the bandwidth of a standard MIDI message
Watching the messages fly by, I suspected as much ...
I believe (hope) that the "server side" solution for Kontakt that I described above, as provided in the Native Instruments forum, is the complete solution. It does require the sampler to have such a custom envelope facility, and I have no idea if other samplers offer that.
Another "client side" ("Sylphyo-side") solution might be to offer another choice for Breath => Curve ... maybe a "Hyper-Logarithmic" or "Log-Log" or "Log-Squared" (Log^2) curve? That would probably approximate what I am doing in Kontakt ...
I check the messages : had to smile when you mentioned 127 bits, i guess you meant 127 value.
In the NI conversation they talk about the curve, while i think that is not your problem : it is low values of breath.
My machines are not connected but i remember seeing a very high resolution for breath in the minimonitor of rig control , the host i use when using VST 's I will check if i can values from my hardware, life i want to lmit myself to hardware synth(s) only. My choice has been a Hydrasynth .
Hydrasynths uses NRPN for data transfer
join last edited by join
Chiming in a bit late…
Breath control resolution is somewhat of a tricky subject. It's very easy to assume that a 7-bit MIDI signal isn't enough, but often I've found the problem lies in the perceptual mismatch between the breath signal produced by the performer and the perceived sound intensity of a sound produced by a synth.
Because we're very sensitive to that "jitter" between "no sound" and "a very faint sound", the synth should ideally increase volume/intensity veeeery gradually in the very low range (when the CC is 0, 1, 2, etc.), even if the curve can be steeper after that.
Having more extreme curves on the Sylphyo side would be a good idea (even regardless of this particular issue), but I don't think it would really help mask the perceived discontinuity in the very low range in most cases: if the sound is too loud at CC value 1 compared to CC value 0 (silence), then it's not good.
A 14-bit signal would help a little in this case, but I'm not sure it would be practical anyway because you would need a tremendous amount of accuracy to produce a smooth signal using the breath. And it could also bring in the timing issues Laurent talked about.
The synth will be smoothing your breath signal regardless of its resolution, and it'll do it at least over 32 bits, so it'll create the intermediate values your 7-bit or 14-bit signal lacks. The real question is how the synth smooths the signal: is it a good tradeoff between no perceived discontinuities and reactivity?
To me, the solution indeed lies in the volume curve, as Clint proposed. We're very sensitive to the difference between CC values 0 and 1, but I've yet to come across people complaining that there isn't enough steps between CC values 80 and 81. Bending the synth's volume/brightness curves to our perceptual expectations is more likely to bring about the desired results, in my opinion.
Have you found a good solution for this?
If not, you could try using some kind of program (like Max from Cycling 74) to produce the MIDI data needed to play the synth at a desired breath CC level, and check whether you hear a large discontinuity between 0 and 1.
If you do, then there should be some curve bending work to do on the synth side. If not, then we could try adding some new, more extreme curves on the Sylphyo side and see if it solves the issue.
Have you found a good solution for this?
Yes! For my current use - Sylphyo => Link/MIDI => Cantabile => Kontakt 6 - the facilities for drawing response curves has been the complete solution for handling this issue. This was suggested and discussed in detail in this thread on the Native Instruments forum:
... and I have found that the flexible envelopes (drawn, rather than the table option) are a straightforward and complete solution. I have recently been using envelopes for other purposes - controlling parameters on modular synths using elevation and roll (have not tried compass yet) and that is a fantastic alternative to expression pedals.
For other scenarios that do not have the flexibility provided by Kontakt, I am not sure the solution. MIDI filters do not seem to be the answer, since they are translating MIDI to MIDI, not extending the bit depth of the MIDI stream itself.
There might also be an issues for sound libraries that are encrypted (locked) by the vendor, rendering the curve inaccessible - but I'm not sure about that.
... and Thank You @join for the amazing amount of detailed information!