Old 06-19-2021, 09:26 PM   #1
matt_t
Human being with feelings
 
Join Date: Nov 2012
Location: West Midlands, UK
Posts: 379
Default v6.29+dev0619 - June 19 2021

v6.29+dev0619 - June 19 2021
  • * Includes feature branch: render normalization
  • * Includes feature branch: MIDI editor note reordering
  • * Includes feature branch: media item lanes
  • * Includes feature branch: EEL2 x86_64/SSE
  • * Includes feature branch: VST3 bridging
  • + Meters: more informative tooltips
  • + Render: support normalizing to LUFS-M max or LUFS-S max
  • # Render: don't calculate true peak for meters during render (saves CPU)
This thread is for pre-release features discussion. Use the Feature Requests forum for other requests.

Changelog - Pre-Releases

Generated by X-Raym's REAPER ChangeLog to BBCode
matt_t is offline   Reply With Quote
Old 06-20-2021, 12:38 AM   #2
chmaha
Human being with feelings
 
chmaha's Avatar
 
Join Date: Feb 2021
Posts: 2,261
Default

Quote:
+ Render: support normalizing to LUFS-M max or LUFS-S max
Thank you, thank you, thank you!
chmaha is offline   Reply With Quote
Old 06-20-2021, 01:33 AM   #3
AZpercussion
Human being with feelings
 
Join Date: Oct 2019
Location: Moscow / Tbilisi
Posts: 909
Default

Quote:
Originally Posted by matt_t View Post
[*]+ Render: support normalizing to LUFS-M max or LUFS-S max
Cool, thanks!!!

And please, devs, let sliders of jsfx loudness plugin be linkable via parameter modulation. Of course, this link could have only one vector: from loudness plugin to other one.
AZpercussion is offline   Reply With Quote
Old 06-20-2021, 02:07 AM   #4
Phazma
Human being with feelings
 
Join Date: Jun 2019
Posts: 2,872
Default

Quote:
Originally Posted by matt_t View Post
+ Meters: more informative tooltips
Thanks in the name of clarity!

However for several metering options the tooltips seem to be inverted for meter and readout. When choosing LUFS-M (LUFS-I) for example it claims that the readout is "LUFS-M", while the meter is "Peak+LUFS-I". Same with LUFS-S (LRA). It says meter is "Peak+LRA" and readout is "LUFS-S".

I think it's worth going through the options and make sure they all display correctly on the tooltips, otherwise the tooltips cause more confusion than clarity.

Quote:
Originally Posted by matt_t View Post
+ Render: support normalizing to LUFS-M max or LUFS-S max
Thanks in the name of flexibility!

Also I like how the normalization target defines the loudness value shown in the render analysis. I think RMS-I should also be hidden by default and only visible (instead of LUFS-I/M/S) if we are normalizing to it.

Even better would be to have options to configure which values we want to see by default and if normalizing to a target that has been excluded it only gets added for that render. It would help keeping the analysis clear and only have us see values that we care about.


Quote:
Originally Posted by matt_t View Post
# Render: don't calculate true peak for meters during render (saves CPU)
Thanks in the name of efficiency!

Nothing to add here, saves CPU/time as it should.
Phazma is offline   Reply With Quote
Old 06-20-2021, 03:31 AM   #5
Meo-Ada Mespotine
Human being with feelings
 
Meo-Ada Mespotine's Avatar
 
Join Date: May 2017
Location: Leipzig
Posts: 6,621
Default

Quote:
Originally Posted by matt_t View Post
[*]+ Render: support normalizing to LUFS-M max or LUFS-S max
I noticed, that LUFS-M max or LUFS-S max are still missing from the returned string from GetSetProjectInfo_String, when doing dry render. Is that expected behavior?

Edit:
What unit is the CLIP-indicator in the returned string? It doesn't seem to be db.

Edit2:
Would it be possible to add dry-render for stems too? Currently, I could do it for each track individually, but this would take ages.
GetSetProjectInfo_String would probably need to return multiple strings for each stem.

This would also be cool for selected media items on an individual basis, returning stats for each media item as well.
So we could measure individual items in one go, rather than having to iterate and dryrender through all of them to get their individual loudnesses.

So the string would be like:

"FILE:Global;PEAK:+9.569350;CLIP:4802;RMSI:-14.231545;LUFSI:-0.199355;... FILE:Item1.wav;PEAK:+9.569350;CLIP:4802;RMSI:-14.231545;LUFSI:-0.199355;... FILE:Item2.wav;PEAK:+9.569350;CLIP:4802;RMSI:-14.231545;LUFSI:-0.199355"

Where Global is loudness over all items, like it currently is, while Item1.wav is the loudness of Item1, Item2.wav is the loudness of Item2, etc.
__________________
Use you/she/her.Ultraschall-Api Lua Api4Reaper - Donate, if you wish

On vacation for the time being...

Last edited by schwa; 06-20-2021 at 06:55 AM. Reason: line breaks added for forum readability
Meo-Ada Mespotine is offline   Reply With Quote
Old 06-20-2021, 04:12 AM   #6
Phazma
Human being with feelings
 
Join Date: Jun 2019
Posts: 2,872
Default

Ah btw what about applying the same rounding from the master peak meter to the render peak meter.

It is really no biggie but I have noticed in a few cases that the render meter tends to round lower than master meter (for example if I use the clipper "Oxford Inflator" as last element in a render chain it happens).

In case the rounding of the master meter can be easily applied to the render meter I think it would be nice for consistency but if it involves some more complicated stuff I guess it might not be worth the hassle.
Phazma is offline   Reply With Quote
Old 06-20-2021, 04:49 AM   #7
chmaha
Human being with feelings
 
chmaha's Avatar
 
Join Date: Feb 2021
Posts: 2,261
Default

Quote:
Originally Posted by Phazma View Post
Ah btw what about applying the same rounding from the master peak meter to the render peak meter.
+1 on this. The master meter now agrees with the JSFX loudness meter (thanks devs!) so it would be great if the render meter did the same.
chmaha is offline   Reply With Quote
Old 06-20-2021, 06:15 AM   #8
schwa
Administrator
 
schwa's Avatar
 
Join Date: Mar 2007
Location: NY
Posts: 15,749
Default

Quote:
Originally Posted by Meo-Ada Mespotine View Post
I noticed, that LUFS-M max or LUFS-S max are still missing from the returned string from GetSetProjectInfo_String, when doing dry render. Is that expected behavior?
LUFS-M or LUFS-S are only calculated, and therefore only returned from the APi call, if normalizing to them.

Quote:
Originally Posted by Meo-Ada Mespotine View Post
What unit is the CLIP-indicator in the returned string? It doesn't seem to be db.
It's the number of samples that are outside [-1,1], which are clipped if rendering to fixed point.

Quote:
Originally Posted by Meo-Ada Mespotine View Post
Would it be possible to add dry-render for stems too? Currently, I could do it for each track individually, but this would take ages.
GetSetProjectInfo_String would probably need to return multiple strings for each stem.

This would also be cool for selected media items on an individual basis, returning stats for each media item as well.
So we could measure individual items in one go, rather than having to iterate and dryrender through all of them to get their individual loudnesses.
The "selected tracks" and "selected items" actions already return stats for all selected tracks or selected items -- not sure I understand the question?
schwa is offline   Reply With Quote
Old 06-20-2021, 06:31 AM   #9
Meo-Ada Mespotine
Human being with feelings
 
Meo-Ada Mespotine's Avatar
 
Join Date: May 2017
Location: Leipzig
Posts: 6,621
Default

Quote:
Originally Posted by schwa View Post
It's the number of samples that are outside [-1,1], which are clipped if rendering to fixed point.
Ah, I understand.
I wonder, if it would be possible to replace the current CLIP-value with CLIP=position,number of samples,position,number of samples, etc
So it would represent the position, where clipping starts and the amount of affected samples.
That way, we could not only get the amount of samples clipping, but also where they clip, so we could jump to the clipping-points directly to fix them.
Don't know, how messy and long the string would become with this, though.

Quote:
LUFS-M or LUFS-S are only calculated, and therefore only returned from the APi call, if normalizing to them.
Ah, so for dry-rendering-stats, they wouldn't be that much of use anyway?

Quote:
The "selected tracks" and "selected items" actions already return stats for all selected tracks or selected items -- not sure I understand the question?
They return the loudness for all tracks/items combined, at least from what it looks like to me.
What I would love to have is a way to have

Stems/selected tracks:
1. calculate all loudnesses of them combined(just like currently) plus
2. as well as loudness of track/item 1 only plus
3. as well as loudness of track/item 2 only plus
4. as well as loudness of track/item 3 only, etc.

That way, I could see, if the overall loudness is good but also the individual loudnesses are good.
For instance, I could see, which stem has CLIPs and which not.
If I only get the stats for all combined, I still wouldn't know, which one has CLIPs. So to get the clipping stem/track, I need to dry render all of them individually.

Maybe I'm missing something, but the returned string only contains one of the loudness values(the one combined for all items/tracks), as far as I can see, not the loudnesses for each item/track individually.

Or I'm holding it wrong...
__________________
Use you/she/her.Ultraschall-Api Lua Api4Reaper - Donate, if you wish

On vacation for the time being...
Meo-Ada Mespotine is offline   Reply With Quote
Old 06-20-2021, 06:38 AM   #10
schwa
Administrator
 
schwa's Avatar
 
Join Date: Mar 2007
Location: NY
Posts: 15,749
Default

Quote:
Originally Posted by Meo-Ada Mespotine View Post
They return the loudness for all tracks/items combined, at least from what it looks like to me.
With two tracks selected

Code:
ret,str=reaper.GetSetProjectInfo_String(0, "RENDER_STATS", "42438", 0)
reaper.ShowConsoleMsg(str)
returns

Code:
FILE:C:\Users\schwa\Documents\REAPER Media\firsttrack.wav;PEAK:-1.272261;TRUEPEAK:-1.272261;RMSI:-19.391594;LRA:14.900000;LUFSI:-15.300448;FILE:C:\Users\schwa\Documents\REAPER Media\secondtrack.wav;PEAK:-1.272261;TRUEPEAK:-1.272261;RMSI:-19.687808;LRA:14.700000;LUFSI:-15.311927
Is that not what you are seeing?
schwa is offline   Reply With Quote
Old 06-20-2021, 06:45 AM   #11
nofish
Human being with feelings
 
nofish's Avatar
 
Join Date: Oct 2007
Location: home is where the heart is
Posts: 12,096
Default

^ what is RMSI there?
Is that max. of 400 ms sliding window (then it should maybe be renamed like RMSmax?) or over the whole file?
nofish is offline   Reply With Quote
Old 06-20-2021, 06:48 AM   #12
schwa
Administrator
 
schwa's Avatar
 
Join Date: Mar 2007
Location: NY
Posts: 15,749
Default

Similar to LUFS-I, RMS-I is an integrated loudness measure of the entire content. Internally it's calculated exactly like LUFS-I, but replacing every 400ms-window "loudness measurement" (L-sub-K in the EBU spec) with an RMS calculation, and not gated.
schwa is offline   Reply With Quote
Old 06-20-2021, 07:00 AM   #13
nofish
Human being with feelings
 
nofish's Avatar
 
Join Date: Oct 2007
Location: home is where the heart is
Posts: 12,096
Default

Thanks.
nofish is offline   Reply With Quote
Old 06-20-2021, 07:04 AM   #14
Meo-Ada Mespotine
Human being with feelings
 
Meo-Ada Mespotine's Avatar
 
Join Date: May 2017
Location: Leipzig
Posts: 6,621
Default

Quote:
Originally Posted by schwa View Post
With two tracks selected

Code:
ret,str=reaper.GetSetProjectInfo_String(0, "RENDER_STATS", "42438", 0)
reaper.ShowConsoleMsg(str)
returns

Code:
FILE:C:\Users\schwa\Documents\REAPER Media\firsttrack.wav;PEAK:-1.272261;TRUEPEAK:-1.272261;RMSI:-19.391594;LRA:14.900000;LUFSI:-15.300448;FILE:C:\Users\schwa\Documents\REAPER Media\secondtrack.wav;PEAK:-1.272261;TRUEPEAK:-1.272261;RMSI:-19.687808;LRA:14.700000;LUFSI:-15.311927
Is that not what you are seeing?
Ehrmm..*coughcough*...now that I realized, that I hadn't selected the tracks in my tests and changed this, it works as expected.
I go now to hide in shame in the depths of Moria with my best buddy, Baldi the Balrog
*insert facepalm emoji in here* m)


BTW: Just noticed, when using

Code:
ret,str=reaper.GetSetProjectInfo_String(0, "RENDER_STATS", "42437", 0)
and no item selected, it will show a dialog with "No Media Items Selected".
I think it would be better, if no dialog appears and the function returns false instead, so error-messages are handled by the script instead.
Only when one runs the dry-render-actions directly, the dialog would be helpful.
__________________
Use you/she/her.Ultraschall-Api Lua Api4Reaper - Donate, if you wish

On vacation for the time being...

Last edited by Meo-Ada Mespotine; 06-20-2021 at 07:13 AM.
Meo-Ada Mespotine is offline   Reply With Quote
Old 06-20-2021, 07:47 AM   #15
amagalma
Human being with feelings
 
amagalma's Avatar
 
Join Date: Apr 2011
Posts: 3,451
Default

Is there any case currently, where the return of GetSetProjectInfo_String with "RENDER_STATS" would be false? It seems to always return true, no matter what. So, what is its purpose?
Quote:
Originally Posted by Mespotine
I think it would be better, if no dialog appears and the function returns false instead, so error-messages are handled by the script instead.
Only when one runs the dry-render-actions directly, the dialog would be helpful
Agree.

Actions 42438 and 42439 do not display any error window if no tracks are selected.
__________________
Most of my scripts can be found in ReaPack.
If you find them useful, a donation would be greatly appreciated! Thank you! :)
amagalma is offline   Reply With Quote
Old 06-20-2021, 08:28 AM   #16
Meo-Ada Mespotine
Human being with feelings
 
Meo-Ada Mespotine's Avatar
 
Join Date: May 2017
Location: Leipzig
Posts: 6,621
Default

Quote:
Originally Posted by amagalma View Post
Is there any case currently, where the return of GetSetProjectInfo_String with "RENDER_STATS" would be false? It seems to always return true, no matter what. So, what is its purpose?


Agree.

Actions 42438 and 42439 do not display any error window if no tracks are selected.
Additionally,

Code:
ret,str=reaper.GetSetProjectInfo_String(0, "RENDER_STATS", "42440", 0)
shows a dialog "Don't know what to render" when the project is empty.

I wonder, maybe it would be a good idea to return false as retval and the error-message from the dialogs as returnvalue str in an error-case.
__________________
Use you/she/her.Ultraschall-Api Lua Api4Reaper - Donate, if you wish

On vacation for the time being...
Meo-Ada Mespotine is offline   Reply With Quote
Old 06-20-2021, 11:47 AM   #17
UknownSource
Human being with feelings
 
UknownSource's Avatar
 
Join Date: May 2020
Posts: 434
Default

ok nice updates,really amazing devs!

But c'mon, I don't understand the feature requests forum if the devs don't give it any attention to popular requests. at least let us know what do you think, any plans? do you need anything from us to explain ?

My friend told me about this DAW and I love many things here but there is only one feature I need before I will be able to move from my other DAW to reaper.
is there any chance to get your attention please?

sorry for the off topic, I just don't understand and I want to know if the feature I need is something you (devs) like and think it can be implemented in your DAW.

Best regards
__________________
"FX-Container"
UknownSource is offline   Reply With Quote
Old 06-20-2021, 11:56 AM   #18
mccrabney
Human being with feelings
 
mccrabney's Avatar
 
Join Date: Aug 2015
Posts: 3,669
Default

Quote:
* Includes feature branch: MIDI editor note reordering
if you have reordered some notes, and then run "View: Hide unused note rows," the note order gets reset. any chance this could be changed so that it keeps the custom note order?

i toggle that action a lot while working on drums, so i've been losing my custom order every time i add a new element and then hide unused note rows.
__________________
mccrabney scripts: MIDI edits from the Arrange screen ala jjos/MPC sequencer
|sis - - - anacru| isn't what we performed: pls no extra noteons in loop recording
| - - - - - anacru|sis <==this is what we actually performed.
mccrabney is online now   Reply With Quote
Old 06-20-2021, 12:22 PM   #19
Daodan
Human being with feelings
 
Join Date: Jan 2011
Posts: 1,167
Default

Quote:
Originally Posted by mccrabney View Post
if you have reordered some notes, and then run "View: Hide unused note rows," the note order gets reset. any chance this could be changed so that it keeps the custom note order?

i toggle that action a lot while working on drums, so i've been losing my custom order every time i add a new element and then hide unused note rows.
I think it will be improved. For now you can use action View: Show custom note row view to bring custom order back.
Daodan is offline   Reply With Quote
Old 06-20-2021, 12:28 PM   #20
citizenkeith
Human being with feelings
 
Join Date: Jun 2014
Location: Ohio
Posts: 978
Default

Quote:
Originally Posted by UknownSource View Post
ok nice updates,really amazing devs!

But c'mon, I don't understand the feature requests forum if the devs don't give it any attention to popular requests. at least let us know what do you think, any plans? do you need anything from us to explain ?

My friend told me about this DAW and I love many things here but there is only one feature I need before I will be able to move from my other DAW to reaper.
is there any chance to get your attention please?

sorry for the off topic, I just don't understand and I want to know if the feature I need is something you (devs) like and think it can be implemented in your DAW.

Best regards

https://forum.cockos.com/showthread.php?t=22836

"Please post any comments and especially bug reports about pre-release builds in this forum. It's best to keep discussion of features and bugs in the main forums, and on outside forums, limited to the current release build, and talk about the new stuff here."
citizenkeith is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -7. The time now is 07:21 AM.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.