zynaddsubfx / zyn-fusion-issues

Issue Only Repo
31 stars 0 forks source link

Improve Formant Filter User Interface #98

Open fundamental opened 7 years ago

fundamental commented 7 years ago

Based upon feedback observed in a recent vlog by @unfa ( https://www.youtube.com/watch?v=Y93Jh1UIpys )

Notes:

Figure 1. Display of vowel positions with hinting about band pass shape (non-numerically accurate). The user should be able to grab circles here and move with drag/drop operations and perhaps manipulate the alt parameter with scroll wheel. zyn-formant-seq1

Figure 2. Alternative Display of vowel positions zyn-formant-seq2

Figure 3. Display of vowel sequence. Emphasis put on sequence pos and frequency, alternative direction should show q or amplitude with the user selecting which one they want to see. The user should be able to grab circles here and move with drag/drop operations and perhaps manipulate the alt parameter with scroll wheel. zyn-formant-seq

unfa commented 7 years ago

Wow, this looks like formant filter can be very intuitive and easy to use. This is far beyond what I could imagine as an improvement - a table of values would already be more readable, but this is even better.

I'm so glad my videos inspire improvements to ZynAddSubFX! Thank you for your amazing work, @fundamental !

unfa commented 7 years ago

Also:

The formant frequency response doesn't reproduce the notches that occur when using high-Q filters.

Example: https://youtu.be/Y93Jh1UIpys?t=23m58s

In my video you can see that Baudline shows a different spectrum than ZynAddSubFX, maybe it'd be good to correct for that too?

fundamental commented 7 years ago

Per the extra notches, those are an unintended side effect of the DSP implementation.

A full explanation would take a while, but essentially the formant filter is built by summing up the output of several band pass filters. Each filter produces one resonant peak, but summing two together does not give you (in the frequency domain) the sum of the magnitude responses. The phase information is also important and since different filters produce different (frequency dependent) phase responses, summing them results in other changes in the total frequency response. To fix this I think the simple solution might be a set of fractional delay filters to compensate for phase responses, but there might be a simpler solution that I'm overlooking as it has been a while since I've looked at the summed resonant band pass setup in a while. If such a solution is implemented, it will likely apply to SUBsynth as well.

DerAndere1 commented 7 years ago

The phoneme-preset idea and the new visual drag/drop design looks great. Maybe the visualization in Fig. 1 is more intuitive than Fig. 2 because the formants are represented more like peaks in a spectrum. Actually the filter would be easier to understand if I it had only one vocal and relied on MIDI-learn/automation to modulate each of its parameters (cfreq, bandwith and amplitude of for each formant). But I understand that with 12 formants, this would end up in a huge list of parameters. So sticking with Zyn's concept (sweeping through a sequence of predefineable vocals) is probably better for handling.

Edit: At least in Fig. 3 The 1/q radius schould be more transparent and the handles in the center smaller. Otherwise the diagram might look crowded when 12 formants are active.

@unfa: Thx for all your helpful video tutorials! @fundamental: Zyn is a beast and it deserved your amazing new UI :)