[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [fluid-dev] FluidSynth overbuffer MIDI data will get loud blast of s
Re: [fluid-dev] FluidSynth overbuffer MIDI data will get loud blast of sounds
Thu, 2 Dec 2010 11:42:46 -0800
On Thu, Dec 2, 2010 at 6:26 AM, yanli lei <address@hidden> wrote:
> I have this issue on MIDI Yoke and LoopBe that when will blast my ears with
> overbuffer of MIDI data when I start playing this file
> Joe Hisaishi - Friends.mid
> To reproduce:
> 0) Get any MIDI player that can sent data to FluidSynth either by LoopBe or
> MIDI Yoke as output port. Load and play any fast MIDI song.
> 1) While FluidSynth run in its own console is able to produce sound, press
> Ctl+C or close the console this is in case if the user accidentally
> terminate the FluidSynth process.
> 2) Launch FluidSynth again with winmidi to either LoopBe or MIDI Yoke driver
> and gain as 1.
> 3) You may get sudden loud blast of sounds, is that called overbuffer MIDI
> 4) Check you heatbeat and ears.
> This defect appear on MAudio and Realtek HD. OS: XP and 7.
> Not sure if FluidSynth could clear the abandon MIDI data during SF startup?
> Tested on 1.1.1 and 1.1.3.
> I did workaround by mute the first 1/2 second but not all MIDI songs can be
> fix some blast would appear the first key is play. I hope there is a better
> Now my heart is still in panic mode.
> Meanwhile, the previous issue on Chanel 10 will be test over the weekend.
Sounds like you got quite a scare! I've had that happen on some
occasions in the past (FluidSynth used to have a fairly unstable
filter, which was known to output extremely loud out of control
explosions at maximum volume). From your description though, it seems
FluidSynth is receiving many queued up MIDI events all at once. Since
you are on Windows, I imagine you are using the winmidi FluidSynth
driver for MIDI input?
I'm not sure what the proper way is to ensure that any queued up
events are cleared out during init (midiInOpen call). Perhaps
ensuring that FluidSynth calls midiInClose() even when CTRL-C is
pressed would resolve it?
I know on Linux this is handled by trapping signals (SIGINT), but I'm
not sure how that is handled on Windows.