Welcome, Guest
Username: Password: Remember me
  • Page:
  • 1
  • 2

TOPIC: v2.1 issues with default velocity-to-fc mod

v2.1 issues with default velocity-to-fc mod 1 week 2 days ago #1

  • S. Christian Collins
  • S. Christian Collins's Avatar
  • Offline
  • Junior Member
  • Posts: 38
  • Thank you received: 12
Before I can get into the problems, I need to talk a bit about the quagmire that is the SoundFont format's default velocity-to-filter cutoff modulator (henceforth referred to as "vel->fc"). The first SoundFont version to support modulators was 2.01, which was used by the Sound Blaster Audigy and E-MU APS series sound cards. The default vel->fc modulator in this SoundFont version was defined as follows:

Primary source: Note-On velocity, negative unipolar linear
Secondary source: Note-On velocity, negative unipolar switch
Destination: Initial Filter Cutoff
Amount: -2400

The idea was for velocity-based filtering to be disabled at velocities below 64. This is not how it worked in the implementation, though, instead causing a huge filter jump between velocities 63 and 64, an effect that probably zero people on the planet actually want. Creative later realized their mistake and removed the modulator's secondary source in the SoundFont 2.04 spec. However, this caused another problem: you must cancel the modulator differently depending on whether you are using a 2.01 or 2.04 spec device. The result of this mess is that SoundFont synths don't share a common behavior regarding the default vel->fc modulator, leaving SoundFont designers in a difficult position. FluidSynth's developers thought this issue was big enough that they disabled the default vel->fc modulator altogether.

My way of dealing with this is to disable the default modulator in every instrument I create and then add a custom vel-to-fc modulator as needed. However, in attempting to do this in Polyphone, I ran across a few issues:

Issue #1: Disabling SoundFont 2.04 vel->fc modulator in Polyphone has no audible effect

If I cancel the default vel->fc modulator in Polyphone, playback is still filtered. I have created a SoundFont "filter mod canceling test 01.sf2" (in the attached zip) to demonstrate this. It contains two presets:

000: veloToFC-default - No filter modulators are added or canceled.
  • Expected result: You should hear the default velocity-to-filter cutoff modulator reducing the filter cutoff at lower velocities (-2400 Hz at the lowest velocity).
  • Polyphone result: CORRECT
001: veloToFC-sf2.04-dis - Default velocity-to-fc modulator canceled at the instrument level according to the SoundFont 2.04 spec.
  • Expected result: You should hear no velocity-based filtering.
  • Polyphone result: While Polyphone properly labels the canceling modulator as such ("disabling default mod"), the playback is still using the default -2400 Hz filter curve.

Issue #2: Disabling SoundFont 2.01 vel->fc modulator in Polyphone is not recognized by my Audigy 2 or Vienna SoundFont Studio

If I use the SoundFont 2.01 method to disable the default vel->fc modulator using Vienna SoundFont Studio (which interfaces with the Audigy 2 hardware synth), the filtering correctly disappears and Vienna recognizes that the default modulator has been removed. If I perform this task in Polyphone instead, then load the SoundFont into Vienna SoundFont Studio (or Audigy 2 hardware), the vel->fc default modulator does not show as disabled, and the filtering still occurs. Opening both SoundFonts in Polyphone shows that the modulators are configured identically, but only the one created in Vienna is recognized or actually disables the modulator. Canceling this modulator in the editors Viena (one 'n') and Swami also works correctly, so it would appear Polyphone is doing something uniquely wrong with how this information is written into the SF2 file.

The following SoundFonts are also included in the attached zip file and are identical apart from which editor was used to disable the default vel-fc modulator:
  • 2.01 velo-to-fc mod removed in Polyphone.sf2
  • 2.01 velo-to-fc mod removed in Vienna.sf2
Hopefully it should be easy to see what Polyphone is doing differently by comparing the RIFF chunk data between the two files.

Issue #3: Consider adding a toggle in preferences for the editor's vel->fc modulator behavior

I would like to suggest adding support for the following vel->fc modulator behaviors in Polyphone's playback, selectable in preferences:
  1. SoundFont 2.04 <--- default
  2. SoundFont 2.01
  3. Disabled (FluidSynth & others)
The first two options would cause playback and modulator cancellation to follow the 2.04 and 2.01 spec respectively. If it is too complicated to build SoundFont 2.01 spec modulator behavior into the editor, than providing at least #3 as an option would be useful to help sound developers simulate the expected behavior of their target SoundFont synth engine(s), since many SoundFont synths do not implement the default vel->fc modulator at all. FYI, this "disabled" option should only affect the default modulator, not vel->fc modulators that have been added by the user.

This message has an attachment file.
Please log in or register to see it.

Last Edit: 1 week 2 days ago by S. Christian Collins.
The administrator has disabled public write access.
The following user(s) said Thank You: Davy

v2.1 issues with default velocity-to-fc mod 1 week 1 day ago #2

  • ziyametedemircan
  • ziyametedemircan's Avatar
  • Offline
  • Senior Member
  • Posts: 70
  • Thank you received: 18
I added a file that contains the differences between the two files (veloToFcRemoved...).
Maybe it helps, Maybe it is useless :huh:

This message has an attachment file.
Please log in or register to see it.

Last Edit: 1 week 1 day ago by ziyametedemircan.
The administrator has disabled public write access.
The following user(s) said Thank You: Davy

v2.1 issues with default velocity-to-fc mod 5 days 20 hours ago #3

  • Davy
  • Davy's Avatar
  • Offline
  • Administrator
  • Organ enthusiast and creator of Polyphone
  • Posts: 309
  • Thank you received: 67
This has been solved here:
github.com/davy7125/polyphone/issues/73

When we create a modulator in Polyphone the transform, that is either 0 "linear" or 2 "absolute value" was set to 1... The modulator was not recognized correctly after that.

I add the option as suggested: soundfont 2.01 / 2.04 or none.
The administrator has disabled public write access.
The following user(s) said Thank You: S. Christian Collins

v2.1 issues with default velocity-to-fc mod 5 days 15 hours ago #4

  • S. Christian Collins
  • S. Christian Collins's Avatar
  • Offline
  • Junior Member
  • Posts: 38
  • Thank you received: 12
Thanks, Davy! How should I go about correcting the existing, bad modulators? Will a simple file save with the next version of Polyphone fix it, or do I need to do something manually?
The administrator has disabled public write access.

v2.1 issues with default velocity-to-fc mod 5 days 15 hours ago #5

  • Davy
  • Davy's Avatar
  • Offline
  • Administrator
  • Organ enthusiast and creator of Polyphone
  • Posts: 309
  • Thank you received: 67
You can update Polyphone with the new version I uploaded. Just open the modulators with the bad transform and save it, it will be fixed.
The administrator has disabled public write access.
The following user(s) said Thank You: S. Christian Collins

v2.1 issues with default velocity-to-fc mod 5 days 13 hours ago #6

  • S. Christian Collins
  • S. Christian Collins's Avatar
  • Offline
  • Junior Member
  • Posts: 38
  • Thank you received: 12
The "polyphone_2.1-1_ubuntu18.04_amd64.deb" file is identical to the previous version (via MD5 sum). Is there a different location I should be downloading it from?

Thanks again for all the work you have been putting into Polyphone. It is really a fantastic SoundFont editor, and is becoming my go-to for all of my SoundFont design work now that modulators play back in the editor.
The administrator has disabled public write access.
  • Page:
  • 1
  • 2
Time to create page: 0.055 seconds