The dynamic range of a selection of music is dependent on both estimating the time-varying loudness of the music and the timescale used for loudness evaluation. I propose a numerical method of estimating dynamic range that satisfies those dependencies using a modified ITU-R 1770 loudness filter and three moving windo[/i]ws to estimate loudness across three different timescales. The goal is to more accurately measure and compare dynamic range between different music genres and different masterings and processing techniques for the same music.Summary of algorithm: Apply ITU-R 1770 filters to convert amplitude to instantaneous loudness. Estimate loudness across three different timescales by computing 10ms ("short term"), 200ms ("medium term") and 3000ms ("long term") windowed RMS power. Decouple timescales by scaling 10ms loudness by 200ms loudness, and 200ms loudness by 3000ms loudness. Threshold loudness at each timescale to remove silence (optional) Compute histogram for each loudness estimate Dynamic range = range between 50th and 97.7th percentile, for each timescale
This makes the technique much more resilient to differences in mastering and medium; pops and ticks should not affect results, nor should small bits of digital silence, like in greynol's Tool example. (Yes, greynol, you can distinguish ppp from fff now.)
OK, replace "digital silence" in that sentence with "milliseconds of extremely quiet sound in the middle of a loud passage".
Tried to play a little with it.1. Values too small For pop music, even with with a good dynamic.
2. I made two files, 1k Sine tone with following distribution:File1: -12dB 5sec, 0 dB 5sec, -12dB 5sec, 0 dB 5sec;File2: -12dB 5sec, 0 dB 5sec, -12dB 5sec, 0 dB 5sec, -12dB 5sec, 0 dB 5sec, -12dB 5sec, 0 dB 5sec;So, File2 is just two concatenated File1s.I expect to have equal reports but:File1:ITU-R1770 loudness: 1.355045 dbLong term dynamics: 4.244141 dbMedium term dynamics: 4.674053 dbShort term dynamics: 0.024499 dbFile2:ITU-R1770 loudness: 1.355051 dbLong term dynamics: 3.323366 dbMedium term dynamics: 4.674758 dbShort term dynamics: 0.024645 dbDifference in "Long term dynamic". Is it predictable and OK?
Decouple timescales by scaling 10ms loudness by 200ms loudness, and 200ms loudness by 3000ms loudness.
This is very interesting. Most of it makes perfect sense, but can you explain this part in a little more detail please...Quote from: Axon on 13 January, 2008, 10:35:38 PM Decouple timescales by scaling 10ms loudness by 200ms loudness, and 200ms loudness by 3000ms loudness....I think I know what you mean, but I'm not 100% sure.Cheers,David.
Looks like a pretty interesting project. Was going to give it a go but put off due to 90MB download of LabVIEW 8.2.1 Run-Time Engine -- then thought - no big deal -- but then was put off by the grand registration process just to download the runtime environment. It could be just me being lazy, but I guess I've got used to apps being less of a deal to run. I wonder if this in part explains the low response to what I would have thought (due to the whole loudness war issue) is a pretty hot topic on HA. Just a thought.
I'm not familiar with LabView -- do a lot of applications use it? C.
Oh, yeah - I guess that could be a downer.Here's a direct link to the small runtime installer - it's designed for web browser integration but I think it has enough to run pfpf. It's 23MB and doesn't require registration.http://ftp.ni.com/support/softlib/labview/...vruntimeeng.exeOtherwise, I could build an installer .exe that has pfpf and the runtime included, but then the download size jumps from 2MB to 64MB (!).
It's used in a wide variety of scientific and engineering applications, but it's generally used more for institutional use than end-user use. (One notable exception is Lego Mindstorms NXT, albeit in a radically altered form.) I use it because it's the best tool I have available for the job. (Full disclosure: that's largely because I work for NI.)
;ITU-R1770;Long term;Medium term;Short termAFX - Hangable Auto Bulb;-7.788082;4.36652;3.337994;6.887517Aphex Twin - Come to Daddy;-10.227442;5.942758;3.847455;7.825321Aphex Twin - Drukqs;-9.917538;7.071786;4.388686;6.813219Aphex Twin - I Care Because You Do;-7.774041;4.54145;3.247972;6.422187Aphex Twin - Richard D James;-6.508191;6.523617;3.569301;6.64566Aphex Twin - Windowlicker;-5.959195;4.973649;3.996707;7.377451Autechre - Peel Session 2;-10.18724;5.11148;4.102982;6.688941Boards of Canada - Music Has the Right to Children;-11.859337;3.819474;3.979695;8.030439Daft Punk - Discovery;-9.502911;3.125146;3.895449;8.225183Daft Punk - Human After All;-4.745425;2.467026;2.417565;6.070163Depeche Mode - Playing The Angel (CD);-4.63066;5.671811;2.821454;5.167589Depeche Mode - Playing The Angel (vinyl);-13.377421;5.556798;2.950576;5.357894Kraftwerk - Aerodynamik;-9.119114;2.115024;2.772039;9.152209Led Zeppelin - Led Zeppelin IV;-14.694527;3.665771;2.850409;4.360807Miles Davis - Live around the World;-12.152856;6.635845;4.818088;7.318425Palais Schaumburg - Palais Schaumburg;-14.740098;3.944125;4.198906;8.591792Pink Floyd - Dark Side of the Moon;-11.909041;8.187197;3.667342;5.059493Pink Floyd - Wish You Were Here;-13.876637;5.944166;3.749432;5.118362Rage Against the Machine - Rage Against the Machine;-8.409433;3.806114;3.175354;6.820433The Orb - Orbus Terrarum;-11.880174;6.653551;3.57129;5.094658Underworld - 1992-2002 [JPN promo] (disc 1&2);-7.115458;2.978977;2.716756;6.985416Underworld - A Hundred Days Off;-8.154587;2.849434;2.973633;6.86929Underworld - Born Slippy Nuxx 2003;-5.42971;2.25276;2.278929;5.826855Underworld - Dark & Long;-7.047832;2.039863;2.558234;7.347276Underworld - Dark & Long [DNK];-12.963083;2.773522;2.618432;7.58829Underworld - Dirty Epic / Cowgirl;-13.302865;4.780328;2.772149;6.770922Underworld - Dirty Epic [DEU];-12.523822;4.366223;3.216058;6.722689Underworld - Dubnobasswithmyheadman;-17.540799;3.483473;3.178938;7.227787Underworld - Everything, Everything;-8.519916;3.4288;2.325238;5.567491Underworld - I'm A Big Sister, And I'm A Girl, And I'm A Princess, And This Is My Horse;-14.42569;4.771379;3.08573;5.026963Underworld - Live in Tokyo 25th November 2005 (disc 1&2&3);-11.736943;3.626;2.779501;5.980281Underworld - Lovely Broken Thing;-9.08797;3.564376;3.698982;8.525503Underworld - Mmm... Skyscraper I Love You;-16.179067;3.672679;3.428056;7.967833Underworld - Oblivion with Bells;-9.540373;3.765357;3.382677;6.600661Underworld - Pearl's Girl [USA];-9.761997;3.271767;2.887699;7.549634Underworld - Pizza for Eggs;-10.008908;4.363326;3.692727;5.965214Underworld - Second Toughest in the Infants [DEU];-15.170278;4.424356;3.175443;7.09311Underworld - Spikee/Dogman Go Woof;-15.873933;2.642126;3.138517;7.768897Venetian Snares - 2370894;-6.556472;6.74378;4.157356;6.369249Venetian Snares - A Giant Alien Force More Violent & Sick Than Anything You Can Imagine;-2.344575;3.570357;3.421717;5.569379Venetian Snares - Cavalcade of Glee and Dadaist Happy Hardcore Pom Poms;-2.515518;5.610292;3.641683;6.789516Venetian Snares - Doll Doll Doll;-2.246614;8.641083;4.100379;5.388812Venetian Snares - Find Candace;-6.297612;8.911154;3.858491;5.863097Venetian Snares - Higgins Ultra Low Track Glue Funk Hits 1972-2006;-3.985018;6.850304;3.618574;5.453436Venetian Snares - Huge Chrome Cylinder Box Unfolding;-5.650552;6.310211;4.741762;7.284746Venetian Snares - My Downfall;-4.995728;14.48013;4.618486;4.298872"Venetian Snares - printf(''shiver in eternal darkness-n'');";-4.088835;5.297741;3.762588;5.77607Venetian Snares - Rossz Csillag Allat Született;-5.816221;10.262339;4.676324;5.850983Venetian Snares - Songs about My Cats;-1.748199;6.035857;4.253491;6.424096Venetian Snares - Winter in the Belly of a Snake;-9.070008;10.172085;5.213827;6.626628Venetian Snares + Speedranch - Making Orange Things;3.147053;3.302486;2.562315;2.985406
Looks like a pretty interesting project. Was going to give it a go but put off due to 90MB download of LabVIEW 8.2.1 Run-Time Engine -- then thought - no big deal -- but then was put off by the grand registration process just to download the runtime environment. C.
Dloaded the small library and pfpf, installd both and rebooted. igot got all sort resource missing errors. Can not load frontpanel etc. So maybe look for a all in one package.
ps would it be usefull on good quality mp3 files?
Thank you very much for this great tool.
One minor issue with the UI: I could not adjust it to smaller resolutions like 1024x786.
Also, one feature request:http://img211.imageshack.us/img211/8289/declipperjd8.pnghttp://img87.imageshack.us/img87/3199/declipper2cz2.pngIt's the declipper from Izotope RX which features a so called "histogram of waveform levels" where you can see the sample distribution over the bitrange. However it is very limited as it just shows values from 0 until -8 dB and does not have a horizontal scale.Looking at an improved version would help estimating the amount of clipping.
Do you think this program would be helpful in working out audio levels for a release? i.e. if I was attempting to get db levels right across tracks of varying compression (not in the lossless/lossy sense) -- currently I use wavgain and then my ears for fine tuning -- can you see your app having a role in this kind of process
Hell, you can just download it from the FTP site. I'm mostly just deferring to the Web interface for deciding which installer to use, since my first pick was wrong.I broke down and uploaded a pfpf zip with an installer, including a runtime. I haven't tested it, I just hit "build". It's 64MB. Don't overdownload it
Your default timescales for long and medium are somewhat longer than mine, I think. So my averaging-meter is coming in somewhere between your long and medium term measurements, and my peak-meter somewhere between your medium and short term measurements. With that said, we're getting respectably similar-shaped graphs, I think.
Because I'm measuring things in a different way, I get a kind of DC-offset on my medium-term graph, which I also factor into my measurements. This has the neat side-effect of eliminating the enormous negative spikes I see on your graphs, though I get (smaller?) positive spikes instead. I don't think the human ear is as sensitive to sudden decreases in amplitude as it is to sudden increases, which is why I am comfortable with using a 300ms/99% decay rate on both meters.
Unfortunately, it's very difficult to read anything from your medium-term graph, for several reasons. Probably the biggest difference to usability would be if the X-axes for all three graphs were linked, so that it was easier to zoom in on the detail. It would also be neat to listen to the track while watching meter needles, as an engineer would - perhaps I can write a tool to do that in Linux.