Comments (4)
Original comment author: Mr_Bumpy
I couldn't attach the file because it was too large, but you can find it here.
Original comment by: elementgreen
from fluidsynth.
Original comment author: diwic
Hello Christian,
sorry that nobody has taken the time to investigate this bug further, now that you have put so much effort in creating good test cases. I'm new to that part of FluidSynth, but I thought I would give it a go and see if I could fix the bugs you are experiencing. I started by going through the math behind the first one:
-2400 cents = two octaves down
Sustain of 13% means 13% off the top level, 100% - 13% = 87% remaining.
87% of -2400 = -2088
Then the desired behaivour is an additional 7 semitones (i e a perfect fifth up), so total adjustment should be 27 semitones and 88 cents, which is what you have in the "Soundtrack FS Fix" instrument.
I have a hard time seeing what FluidSynth does wrong, or if my calculation above are wrong in some way, or if there is something else affecting the pitch...? Can you help me out?
Original comment by: elementgreen
from fluidsynth.
Original comment author: Mr_Bumpy
My apologies... it appears as though it is the Audigy that is doing the miscalculation; all of my measured tests show FluidSynth to be 100% what the values should be.
In the Soundtrack example, I have the modenv->pitch set to -2400 cents. The Audigy, however, seems to not go any lower than -1200 cents, so it uses it's actual limited value for performing the calculations. So you end up with:
set value: -2400
calculation: 13% of -2400 cents
Audigy:
set value: -2400
calculation: 13% of -1200 cents
Setting the modenv->pitch to -1200 in the SoundFont provides identical playback for both Audigy and FluidSynth.
For the sweep pad, I discovered two factors that create the large difference in playback between the Audigy and FluidSynth:
-
The Audigy's mod envelope does not take into account the difference between actual and audible linear scaling. For example, 100 to 200 hz is an octave, but 200 to 300 hz is only half an octave. The Audigy scales numerically linear, and the audible result is that the pitch/filter moves very quickly at low frequencies and very slowly at high frequencies. FluidSynth scales based on the perceived sound, so it covers 100 to 200 hz in the same amount of time it takes to cover 200 to 400 hz. FluidSynth's method is preferred, IMO, but it does change the percieved filter/pitch of the sound compared to the Audigy.
-
The Audigy just plain seems to miscalculate some things, and I haven't completely figured out why. For example:
instrument-level attack: 0.1 sec
preset-level attack: x60
resulting attack: 6 sec
Audigy:
instrument-level attack: 0.1 sec
preset-level attack: x60
resulting attack: 10.5 sec (estimated)
I don't know why the Audigy gets its results, but I can't see any reason why it would be correct in doing so.
Original comment by: elementgreen
from fluidsynth.
- status changed from new to closed
- resolution set to invalid
Original comment by: elementgreen
from fluidsynth.
Related Issues (20)
- Issue with chorus on/off HOT 1
- Build Failure on Android Studio (Win 11) HOT 1
- Ability to mute certan velocities HOT 1
- Bug when playing notes outside of key range HOT 10
- android up to 2.3.1, the render wav file has long blank.... and the version 2.2.8 is ok.
- Add global volume envelope ADSR parameters
- libfluidsynth: negative sample refcount when a soundfont is shared by multiple synth instances HOT 6
- Some MIDI files never finish playing, with a note lingering forever at the end, since FluidSynth v2.3.1 HOT 11
- Some notes being duplicated when rendering a wav audio file HOT 6
- Pipewire's Jack implementation not found by CMake HOT 1
- Daemon is broken with MIDI & WINE HOT 12
- The maximum playback duration has been reached HOT 4
- Make settings more pleasing, natural and subtler HOT 11
- set synth.chorus.speed minumum is reported as out of range HOT 1
- fluidsynth doesn't play sound and hangs my sound card untill reboot (gentoo-gnome-wayland-pipewire) HOT 4
- time slowly drifts away from what it should be HOT 3
- Bad dependency requires on fluidsynth 2.3.2+ HOT 1
- Pausing does not work HOT 1
- Unable to load DLS files in fluidsynth 2.3.4 Windows builds. HOT 3
- fluidsynth: error: Internal error: Trying to replace an existing rvoice in fluid_rvoice_mixer_add_voice?! HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from fluidsynth.