Closed grejppi closed 5 years ago
This is something that bothers me too, but I don't know how to fix it. Should we just make things quieter by default? If we do so, does that just postpone the problem for when the user adds even more instruments? Is it the user's job to make sure audio does not clip? Should LMMS implement some kind of UI or tool to help in this regard?
Making things quieter by default would be a very good idea.
So would be making the instruments output sound at the same level. Breaking older projects could be avoided with relevant additions to multimediaProject::upgrade()
.
(OpulenZ is at a pleasant level in my opinion)
"Is it the user's job to make sure audio does not clip? "
Uh... yes, pretty much? The user is in the best position to handle such things. And there are already plenty of tools available to deal with this problem: compressors, limiters...
I think trying to coddle the user too much is maybe counter-productive, as it in some cases can prevent the users from learning how to solve the problems themselves, which inevitably backfires later on. There should be good quality tools offered to the user, but learning how to use them should be left up to the user. There's an internet full of tutorials...
If you want to quickly jot down an idea, you might first use what's available by default. You don't want to turn down the knobs just so that you can hear what you're doing.
True, but couldn't you just change the master volume then?
What about a different mixing algorithm? Instead of performing addition when mixing audio streams, what if we did something like 0.5 * stream1 + 0.5 * stream2
?
I honestly don't know if this is a good idea; it's something I thought of but it might be stupid.
Would not work as one would never be able to find proper balances because things would change each time there's another stream. If you add signals you might end up with clipping - that's it. What we can do is default the master volume to 50% or something like that.
Now I'm thinking about a UI tool. What if a red "clip warning" turned on in each mixer channel whenever clipping occurred in that channel. The clipping warning would turn off as soon as you press play. While playing, if the clip warning turns on, it stays on until the next time you stop/pause and then play again.
Would this be useful?
FL Studio has a limiter on the master channel in the default template. It definitely helps beginners to make music without clipping, and more experienced users can get rid of it if they want.
Also I think that FL Studio does some kind of weird mixing thing. It seems like in FL Studio you can have 2 instruments that both peak at 100%, and somehow the final output doesn't clip.
Even after disabling the limiter?
Yes even after disabling the limiter. As an experiment, try this in both FL Studio and LMMS:
What we can do is default the master volume to 50% or something like that.
That would probably help a lot actually without being that much lower.
Also what happens in this scenario?
Mixer channel 1 has audio playing at 100% Mixer channel 2 has audio playing at 100% Both mixer channels are sent into mixer channel 3 and nothing else Channel 3 is sent to master Master has volume at 25%
Does the final output clip or not?
On 01/26/2014 02:39 AM, Andrew Kelley wrote:
Also what happens in this scenario?
Mixer channel 1 has audio playing at 100% Mixer channel 2 has audio playing at 100% Both mixer channels are sent into mixer channel 3 and nothing else Channel 3 is sent to master Master has volume at 25%
Does the final output clip or not?
— Reply to this email directly or view it on GitHub https://github.com/LMMS/lmms/issues/113#issuecomment-33305394.
No, it will not, because 32-bit floating point signal, which LMMS uses for all audio, has headroom for up to about +760dB, which in percentage values would be equivalent to (10^36)%.
But if you don't do anything about this, I was going to file a bug on that OpulenZ has really low levels compared to other instruments....
Auto-limiter is nice but I agree with Vesa that it tends to coddle the user too much and also can cause confusion down the road when subsequent volume adjustments have unexpected effects.
To quote the great Linus Torvalds, "If you think your users are idiots, only idiots will use it." :)
I particularly like the 100% volume default. I'm sure the presets could benefit from some "normalization" so to speak since some are ear piercing loud and others are quiet, but may just be nitpicking.
My vote is to keep it as is but I don't mind if they get lowered or a limiter gets added. Either way, I'm opposed to the main volume being anything other than 100%. I'd prefer that were left alone.
-Tres
I agree with Tres. Leave Master at 100%
Just caught up on this thread. I downloaded 0.9.92 for Windows 32bit. Loaded a project I'm working on and noticed that the OpelenZ volume is like 0.25 of what it was. No idea what happened there, but it's super quiet. So much so that I'll probably have to add an amplifier to it to get it back where it was.
And, honestly, I've begun adding the "Fast Lookahead Limiter" to the Master FX channel for a while now. It makes life a lot easier for me, personally.
But have you noticed that "if idiots can't use it, most people won't use it"? 21.2.2014 5.24 kirjoitti "Tres Finocchiaro" notifications@github.com:
Auto-limiter is nice but I agree with Vesa that it tends to coddle the user too much and also can cause confusion down the road when subsequent volume adjustments have unexpected effects.
To quote the great Linus Torvalds, "If you think your users are idiots, only idiots will use it." :)
I particularly like the 100% volume default. I'm sure the presets could benefit from some "normalization" so to speak since some are ear piercing loud and others are quiet, but may just be nitpicking.
My vote is to keep it as is but I don't mind if they get lowered or a limiter gets added. Either way, I'm opposed to the main volume being anything other than 100%. I'd prefer that were left alone.
-Tres
— Reply to this email directly or view it on GitHubhttps://github.com/LMMS/lmms/issues/113#issuecomment-35695888 .
Yes, I have noticed that. I think we all should keep this in mind when coming up with new features and implementing them. The simpler the better. Iphone was a huge success because of that. I have previously written that the old childish look of LMMS made people laugh and go away, but the other side of the story is of course that it was so easy that anyone could make music!
The same instrument (TAL NoiseMaker) with the exact same patch, loaded in both LMMS and Bitwig Studio and played at the default velocity and volume of each DAW.
Lo and behold, the weird mixing thing that FL, Bitwig, and actually most DAWs out there do. That is, turning down the master volume a bit. (EDIT: to be more precise, the default volume for tracks in Bitwig is around -10dB, while master is still at 0dB.)
I personally would not want any DAW I use to perform some hidden "sound enhancements" because I want total manual control over my sounds and this would be more of a problem than a feature. I don't like what FL Studio does to it's output, it confuses me.
One option I haven't heard is to make the default volume of placed notes something like 50% instead of 100%. This doesn't introduce any compatibility issues.
Personally, I am in favor of just adding a limiter to the default template, as suggested previously. I think this would do more good than harm. I don't know anyone who exports final songs without a limiter, so it saves time for everyone out there who is happy with the built-in limiter (and newbies), though the users who know what they're doing will obviously tweak it to their needs. Those who use more advanced limiters need only save over the default template and it's no more trouble for them ever again.
I'll be honest here. If my daw hadn't provided me with a default limiter on the master channel when I began writing music, I wouldn't have learned that it was normal practice to do that for at least 3-4 months, and my first few tracks would have inevitably had some clipping. Even most "smart" users typically start out as "stupid" users.
ehh.. limiter on master is commonly used by most? (?) I have read the exact opposite. (and have never used limiters on anything, except a specific preset) Is compressing perhaps what was in mind? Compressing on master is considered good, limiter is not -im confused now :confounded: (btw im with Vesa too, leave master sound /output/ raw, with no trickeries)
Wow. I didn't realize this conversation has been going on for over a year.
I mentioned it on the IRC, but my vote is to not do anything to the instruments themselves. I like @Wallacoloo idea of changing default note volume. I also think having a limiter (or a compressor, since @musikBear likes that idea better) on the main FX channel is a good option to prevent those loud noises on some instruments/voices.
Please don't hard-code anything into the master channel like FL Studio. One of the reasons LMMS is so great is because you can change almost anything.
I agree that they all need to be quieter by default. I'd even go as far to say that presets should never be over a certain DB level -- since presets are often the entry point into an instrument, they would need to adhere to the same quality standards.
I think the major task here is someone with a good sense of sane defaults sitting down and sanitizing things. First run should be the instruments themselves. Second run should be the presets IMO (presets could take weeks to go through properly).
I would suggest a spreadsheet default factory 3oc could be base value All instruments & all presets tested on same system, and all measured up against base-value. Then note how many dB each differ from base-value, in the spread-sheet. This would ensure that any specific settings on anyones specific pc, would be transparent. But there is a serious cravat: Are the sounds loudness equally comparable if they are created by different sound-devices ?? Eg, Will SDL output be significantly different from ALSA or JACK -what about ASIO ?? If Thats an issue, it would need one responsible for each devise choice..
I think the task of normalizing plugins/presets/samples can be fully automated, so I'd say we should go for that, instead of wasting our time on doing this over and over manually. Better make a system that'll do it for us and have it sorted out once and for all, no matter how many new presets/sampels/instruments there are to normalize.
I think ebur128 can be a nice tool for the measuring purpose:
ebur128 When_You_Fly,_Frostbyte.flac
Integrated loudness: 8.5 LU
Loudness range: 7.7 LU
This means that the signal should be attenuated by 8.5 dB to be normalized according to EBU R128. I think it's a nice idea to follow this standard. It'll ensure ours sounds are not too loud by default, and more importantly: they are consistent.
It uses the EBU R128 recommendation to measure loudness. This is more accurate than RMS or peak dB.
Now we could render 60 second second samples of all presets, analyze the loudness, and add a compensation loundess tweak (an amplifier plugin?). Excessive silence can be trimmed with sox, but it shouldn't be a problem since EBU R128 compatible meters can deal with that.
This way every preset gets normalized to the standard automatically. EBU R128 recommends the programme loudness to be normalized to 0 LU which is equivalent to -23 LUFS (Loudness Units Full Scale). So 0 LU is somewhat equivalent to -23 dBFS. Please note that it's by no means NOT the same thing.
I guess it's not that hard to generate an MMP file that'll play a middle C note for a given preset.
My vote is to pull the instruments volume down to 25% of the full scale by default. Here's my reason:
Typically the user would load up a project, pull down an instrument, and play a chord. Music rarely consists of one note at a time. A chord is typically 3 notes and the user will probably overlay a melody on top of a chord (one more note). So, the idea is to let that initial experience sound good, instead of clipped. The user will probably not notice clipping until he starts playing 5 notes with this setting.
Agreed (that it should be lowered) but this isn't a small task... I'll quote myself:
I agree that they all need to be quieter by default. I'd even go as far to say that presets should never be over a certain DB level -- since presets are often the entry point into an instrument, they would need to adhere to the same quality standards.
I think the major task here is someone with a good sense of sane defaults sitting down and sanitizing things. First run should be the instruments themselves. Second run should be the presets IMO (presets could take weeks to go through properly).
Some instruments are loud indeed, but my problem is, the 70% of them are barely audible. Even if i set the volume to 200%, those few normal volume instruments fade them.
I think a normalization would be nice.
Now I'm thinking about a UI tool. What if a red "clip warning" turned on in each mixer channel whenever clipping occurred in that channel. This is actually something that's very nicely done in ZynAdd's UI. If there's a clipping it shows not only that the sample clipped at some point but also how far above 0db it went.
Something like that should be added for LMMS' channels too, but it should auto reset on play start so you can easier figure out where it happens. ZynAdd's must be manually reset by clicking it. Currently there's only that tiny shortlived peak bar which lasts a second or so.
As far as the default volume goes, the argument that the volume needs to be less for chords is true, but so is that some presets are barely audible already. I got that problem with most ZynAdd presets for example, a few make my ears bleed but most are at the same volume barely hearable.
Maybe auto tweak the volume to a base level, like -10db by adjusting the volume knob of the instrument when it's added? That way you can see and change it if it interferes with your intention. A hidden auto tweaking is indeed undesireable because that can easily get away leaving you wondering wth is going wrong.
Alternatively (additionally?) offer a setting for the base level of added instruments? Like 70% so they get all added with 70% volume or -10db so they get set to that in whatever way the volume knob needs to be turned to do that. The auto leveling to -10db or so should definitely be done for previewing samples in the left panel though, because they can be all over the place with their volume and even if you need to tune it down afterwards so a chord won't blast full out would it still help in hearing what you're about to add as sample.
in RC3 win32 TripleOscillator (default) does barely react to base-velocity setting Recreate: Drag a default TripleOscillator in SE and play notes as base-velocity is manipulated.
zasfx has correct behaviour
That's because TripleOscillator is not a MIDI-based instrument and therefore can use the velocity value directly. This control is only used by MIDI-based instruments to convert it to the scale they can understand.
That's because TripleOscillator is not a MIDI-based instrument
@grejppi ah.. ok, but should the option then be available? I feel they need to be either greyed-out or removed on the instruments that does not allow changing base-velocity, just as PITCH has been removed on Vibed, f.i.
I'd recommend normalizing since it would make precise mixing much easier. Further than that, adding a little more headroom would be awesome. I'd say lowering the track volume by 3 or even 6db would help a lot. This new normalized value at -n db should be 100%
We should really make a unit test against new presets that sanitizes this. Afaik we have no way of scripting this, it would be a newly written unit test.
Also, we bundle some 3rd party presets like ZynAddSubFX. Not sure how to handle those since any changes would diverge from upstream.
As part of a pruning effort, this enhancement
request is archived into a dedicated "Better Workflow" checklist here #4877.
Every instrument's volume is at 100% by default.
Some instruments, such as Kicker and BitInvader, output their sound at 100%. Any overlapping sounds, such as two notes playing at the same time, will cause clipping.
Example project with Kicker, TripleOscillator, and BitInvader at their default settings.
This potentially leaves the user with a bad impression about the quality of LMMS' sound engine. It did for me initially.