LMMS / lmms

Cross-platform music production software
https://lmms.io
GNU General Public License v2.0
8.11k stars 1.01k forks source link

LMMS Flanger Noise Bug #5842

Closed RoxasKH closed 3 years ago

RoxasKH commented 3 years ago

Bug Summary Once the LMMS Flanger with some noise activated start playing, the noise doesn't stop, and it goes for the whole song instead of affecting only the sound the flanger is on. Even clicking the stop button, doesn't stop the noise to play.

Steps to reproduce

  1. Open a new LMMS Project.
  2. Add the LMMS native flanger effect where you want (on master or on the default 3osc patch or any instrument you want) and give the noise knob a certain amount as you please (let's say 0.01).
  3. Create a little pattern (even only a short note) with an instrument the flanger effect is affecting, as an input is required to make the noise start.
  4. The noise can start even while you're creating the pattern if when you draw the note it plays. Otherwise, press play in songeditor and let it go even after the pattern you created, the noise will still be there.
  5. Press stop in the songeditor and the noise will again still playing. The only way to make the noise stop being there, is taking the noise knob to 0. At that point even increasing its value won't make the noise reappear.

Expected behavior The noise should be affecting only the sound the flanger is on, so it should be present only while the flanger gets an input.

Actual behavior The noise is unstoppable, after the flanger gets an input it continues playing for the whole song, and goes on even stopping the song. Also even if the noise goes on playing, the master fader doesn't show any sound playing, neither the oscilloscope on the top bar.

Screenshot immagine

Affected LMMS versions LMMS 1.2.0 Stable on Windows 10 64-bit LMMS 1.2.2 Stable on Windows 10 64-bit LMMS 1.3.0 Alpha 1.33+g4f74151f0-mingw-win64 on Windows 10 64-bit

zonkmachine commented 3 years ago

The noise should be affecting only the sound the flanger is on, so it should be present only while the flanger gets an input.

Wrong. This is an actual noise generator emulating how a flanger sounds and these are pretty noisy things.

the master fader doesn't show any sound playing, neither the oscilloscope on the top bar.

White noise has a high energy density. It will punch it's way through the mix even on a low level. But if you turn the volume up you will absolutely see that its there lighting up the fader. Turn it up some more and you will see it in the oscilloscope too.

There are other effects that will also keep sounding even if there is no input. All delay based effects, and a flanger is actually a delay based effect, operates this way. It's by design. I don't know how this works on other systems but I expect this to be the same on Cubase and Ableton too. This is not a bug.

Maybe the setting to turn the effect on/off without an input is an acceptable solution to you? Edit -> Settings -> Performance -> Keep effects running even without input. Uncheck. Restart. Now you can set how fast the effect will turn off in between input. On the effect control in the effect chain, set the Decay to 0ms and turn up the Gate a bit until the noise cuts out.

RoxasKH commented 3 years ago

The noise should be affecting only the sound the flanger is on, so it should be present only while the flanger gets an input.

Wrong. This is an actual noise generator emulating how a flanger sounds and these are pretty noisy things.

the master fader doesn't show any sound playing, neither the oscilloscope on the top bar.

White noise has a high energy density. It will punch it's way through the mix even on a low level. But if you turn the volume up you will absolutely see that its there lighting up the fader. Turn it up some more and you will see it in the oscilloscope too.

There are other effects that will also keep sounding even if there is no input. All delay based effects, and a flanger is actually a delay based effect, operates this way. It's by design. I don't know how this works on other systems but I expect this to be the same on Cubase and Ableton too. This is not a bug.

Maybe the setting to turn the effect on/off without an input is an acceptable solution to you? Edit -> Settings -> Performance -> Keep effects running even without input. Uncheck. Restart. Now you can set how fast the effect will turn off in between input. On the effect control in the effect chain, set the Decay to 0ms and turn up the Gate a bit until the noise cuts out.

No, that option make bpm based effects like dblue glitch or BIGKIXDIPPA unusuable.

For the master fader and oscilloscope you're right.

I'm not able to find any flanger which has an analog noise knob or option, so i'm guessing on what that was based. I understand a delay should run even while it doesn't get an input, or it'd lose its function, still i think that if i want to make a sound with the flanger more noisy, the noise shouldn't affect the whole song, but only the sound i wanted it on it. I'm guessing if there's no way to make only the noise knob act differently. I can't think of any musical purpose for a knob which literally add noise throughout a whole song, even if it's the effect that has it is only on a single intrument.

It's not like i use the flanger plugin so often, but i just feel like that if the noise was present only while the plugin gets an input would be more useful.

LostRobotMusic commented 3 years ago

The issue is that there would be waveform discontinuities when the noise is enabled/disabled, if it were simply checking whether it had an input. A potential solution would be to add the ability to make the noise follow the input volume via a simple input follower, or alternatively a sidechain gate so the noise fades in/out as the input crosses a set threshold? I'm almost done with the LMMS Phaser, and given the plugin is a hybrid with a Flanger, upgrading the Flanger plugin shouldn't be too difficult. Maybe I'll do that. Someday.

zonkmachine commented 3 years ago

The algorithm for the noise is: signal out = signal in + noise A simple algorithm that would achieve what @RoxasKH is looking for: signal out = signal in + (signal in * noise) I just tried it on the flanger and it works fine but it's not something I would build into lmms as it's a bit too specialized but you could hack up a separate plugin to solve this. Something that you add in front of a flanger/phaser to spice them up.

LostRobotMusic commented 3 years ago

Oh, I avoided that since it's ring modulation, but I forgot it doesn't actually matter since white noise has a flat frequency spectrum across all frequencies.

zonkmachine commented 3 years ago

@DouglasDGI I think your way with some sort of envelope sensing is probably the way to go.

@RoxasKH I believe this is actually the intended behavior so I'm closing this issue as invalid. I may bump this issue if I find an lv2 solution that is good enough.