libebur128 - (yet another) EBU R 128 implementation |
libebur128 - (yet another) EBU R 128 implementation |
Jan 12 2011, 17:08
Post
#1
|
|
![]() Group: Developer Posts: 224 Joined: 14-September 04 Member No.: 17002 |
Hi,
inspired by the wonderful work in this thread, I wrote my own implementation of the EBU R 128 standard. It is written in plain ANSI C and designed as a library, so you can use it in your own code. It's licensed under the MIT license. I've also implemented a simple scanning tool, which outputs something like this: CODE $ ./r128-sndfile -l -p both ~/music/bad\ loop\ -\ Luo/*.flac -12.81 LUFS, LRA: 14.16 LU, sample peak: 0.89151001, true peak: 0.99826229, /home/jan/music/bad loop - Luo/bad loop - Luo - 01 Nio.flac -11.15 LUFS, LRA: 8.26 LU, sample peak: 0.89163208, true peak: 0.99095666, /home/jan/music/bad loop - Luo/bad loop - Luo - 02 Eri Valeire.flac -10.14 LUFS, LRA: 11.79 LU, sample peak: 0.89154053, true peak: 0.99171823, /home/jan/music/bad loop - Luo/bad loop - Luo - 03 Kauniit Ihmiset.flac -11.31 LUFS, LRA: 11.75 LU, sample peak: 0.89157104, true peak: 0.92898595, /home/jan/music/bad loop - Luo/bad loop - Luo - 04 Mmin.flac -26.13 LUFS, LRA: 14.87 LU, sample peak: 0.25204468, true peak: 0.25203928, /home/jan/music/bad loop - Luo/bad loop - Luo - 05 3b Or T.flac -14.10 LUFS, LRA: 11.40 LU, sample peak: 0.89151001, true peak: 1.02603507, /home/jan/music/bad loop - Luo/bad loop - Luo - 06 Kannas Nsp.flac -------------------------------------------------------------------------------- -11.75 LUFS, LRA: 13.34 LU, sample peak: 0.89163208, true peak: 1.02603507 There is also ReplayGain tagging, using a reference level of -18 LUFS to match RG's loudness: CODE r128-mpg123 -t album [FILE|DIRECTORY]... r128-mpg123 -t track [FILE|DIRECTORY]... Download current version here. This post has been edited by Raiden: Feb 27 2011, 22:29 |
|
|
|
![]() |
Feb 23 2011, 12:38
Post
#2
|
|
![]() Group: Developer Posts: 224 Joined: 14-September 04 Member No.: 17002 |
It turned out that the text output of r128-ffmpeg changed somewhat. You can see it when you pipe the output to e.g. hexdump. So in my case piping the output to bc for calculation causes a syntax error. Yes, the output changed in the last version a bit... Currently it is not really meant for scripts as it writes everything to stderr. I will try to write something useful to stdout. And a suggestion: As I said I use your software for calculation of normalization. When it turns out that an audiofile has to be made "louder" I measure the given headroom with sox - actualy another time costing scan. Maybe it would be useful if you add a switch that outputs the highest true-peak within a given file. I will try to get true peak measurement done for the next version, thanks for the feedback. |
|
|
|
Raiden libebur128 - (yet another) EBU R 128 implementation Jan 12 2011, 17:08
googlebot While I'm really a big proponent of modern cod... Jan 12 2011, 18:01
googlebot IMHO, you should both think about contributing you... Jan 12 2011, 18:58
pbelkner First of all congratulations, Raiden, for the grea... Jan 13 2011, 09:38
googlebot QUOTE (pbelkner @ Jan 13 2011, 09:38) On ... Jan 13 2011, 11:32
mudlord Nice nice work.
QUOTE IMHO, you should both think... Jan 12 2011, 20:14
pbelkner QUOTE (mudlord @ Jan 12 2011, 21:14) Why,... Jan 13 2011, 09:45
Raiden QUOTE (googlebot @ Jan 12 2011, 18:01) Th... Jan 12 2011, 20:14
googlebot Great! Even gets the 6-channel case right in c... Jan 12 2011, 20:28
mudlord Hmmm, shouldn't ebur128_write_frames be ebur... Jan 12 2011, 21:49
Raiden QUOTE (googlebot @ Jan 12 2011, 20:28) Gr... Jan 12 2011, 21:52
pbelkner QUOTE (Raiden @ Jan 12 2011, 22:52) QUOTE... Jan 13 2011, 09:51
Raiden QUOTE (mudlord @ Jan 12 2011, 21:49) Hmmm... Jan 12 2011, 22:12
googlebot QUOTE (Raiden @ Jan 12 2011, 22:12) How d... Jan 12 2011, 23:07
benski Is there a good mapping between LUFS and ReplayGai... Jan 12 2011, 22:17
Raiden I've just uploaded version 0.1.2:
- fixed a ra... Jan 14 2011, 10:31
Raiden QUOTE (pbelkner @ Jan 13 2011, 09:51) Up ... Jan 14 2011, 10:40
pbelkner QUOTE (Raiden @ Jan 14 2011, 11:40) QUOTE... Jan 14 2011, 10:46
Raiden QUOTE (pbelkner @ Jan 14 2011, 10:46) Tha... Jan 14 2011, 11:01
Raiden 0.1.3 is up!
- Added tagging support. You need... Jan 16 2011, 00:51
C.R.Helmrich I gave this a try yesterday (r128-sndfile, version... Jan 16 2011, 14:28
pbelkner QUOTE (C.R.Helmrich @ Jan 16 2011, 15:28)... Jan 16 2011, 15:07
C.R.Helmrich QUOTE (C.R.Helmrich @ Jan 16 2011, 15:28)... Jan 16 2011, 16:13
pbelkner QUOTE (C.R.Helmrich @ Jan 16 2011, 17:13)... Jan 16 2011, 16:46

benski QUOTE (pbelkner @ Jan 16 2011, 10:46) On ... Jan 16 2011, 20:24

pbelkner QUOTE (benski @ Jan 16 2011, 21:24) QUOTE... Jan 16 2011, 20:32
Notat QUOTE (C.R.Helmrich @ Jan 16 2011, 15:28)... Jan 16 2011, 21:40
Raiden QUOTE (C.R.Helmrich @ Jan 16 2011, 14:28)... Jan 16 2011, 17:47
pbelkner QUOTE (Raiden @ Jan 16 2011, 18:47) I... Jan 16 2011, 18:49
Notat QUOTE (Raiden @ Jan 16 2011, 09:47) Yeste... Jan 16 2011, 21:46
pbelkner QUOTE (Raiden @ Jan 16 2011, 18:47) Yeste... Jan 17 2011, 18:22
lvqcl QUOTE now it only calls out coefficients for 48 an... Jan 16 2011, 21:58
Notat QUOTE (lvqcl @ Jan 16 2011, 13:58) QUOTE ... Jan 17 2011, 00:35
Raiden QUOTE (Notat @ Jan 16 2011, 21:46) QUOTE ... Jan 17 2011, 00:18
Raiden QUOTE (C.R.Helmrich @ Jan 16 2011, 14:28)... Jan 17 2011, 00:25
Raiden 0.1.4 has been uploaded, with the following new fe... Jan 17 2011, 00:42
verdemar Thanks, works very well for me.
Just thought I... Jan 17 2011, 21:36
benski Correct.
V are gain values and have no relation... Jan 17 2011, 19:11
pbelkner QUOTE (benski @ Jan 17 2011, 20:11) Corre... Jan 19 2011, 16:40
Raiden QUOTE (verdemar @ Jan 17 2011, 21:36) Sub... Jan 18 2011, 23:53
Raiden Version 0.1.5 has arrived!
- I've seperate... Jan 19 2011, 00:21
Raiden QUOTE (pbelkner @ Jan 19 2011, 16:40) The... Jan 23 2011, 16:49
Raiden I've uploaded 0.1.6:
- The main new feature is... Jan 23 2011, 17:00
hödyr Any idea why r128-mpg123 does not work for me on W... Jan 23 2011, 18:17
C.R.Helmrich Thanks for the new version. When I check the same ... Jan 23 2011, 20:00
Raiden QUOTE (C.R.Helmrich @ Jan 23 2011, 20:00)... Jan 23 2011, 20:28
Raiden QUOTE (hödyr @ Jan 23 2011, 18:17) Any id... Jan 23 2011, 20:42
Raiden Version 0.1.7 is just a bug fix:
- Handle MP3... Jan 23 2011, 23:05
hödyr Thanks. Could you fix the build script to run on F... Jan 24 2011, 11:55
Raiden QUOTE (hödyr @ Jan 24 2011, 11:55) Thanks... Jan 24 2011, 12:45
Raiden I've uploaded 0.1.8:
- Some improvements to th... Jan 24 2011, 23:50
kode54 I've made my own preliminary foo_r128scan comp... Jan 26 2011, 06:25
Raiden I've uploaded 0.1.9. This is mostly a library ... Jan 28 2011, 12:14
kode54 You made a mistake in ebur128_change_parameters:
... Jan 29 2011, 02:58
C.R.Helmrich And in ebur128.h it says:
QUOTE /* Get short-term... Jan 29 2011, 17:13
Raiden Thank you for the bug reports!
I've upload... Jan 30 2011, 21:04
gjgriffith Is SSE2 required to run this tool? The only versio... Jan 31 2011, 02:33
Raiden Here are non SSE builds:
http://www-public.tu-bs.d... Jan 31 2011, 09:51
gjgriffith QUOTE (Raiden @ Jan 31 2011, 09:51) Here ... Jan 31 2011, 19:34
nucelar QUOTE (gjgriffith @ Jan 31 2011, 19:34) Q... Feb 3 2011, 11:47
googlebot The R128 spec defines a measurement of short-term ... Feb 3 2011, 12:31
nucelar QUOTE (googlebot @ Feb 3 2011, 12:31) The... Feb 3 2011, 12:48
Raiden QUOTE (nucelar @ Feb 3 2011, 11:47) First... Feb 3 2011, 20:55
nucelar QUOTE (Raiden @ Feb 3 2011, 20:55) It is ... Feb 4 2011, 12:03
Raiden QUOTE (nucelar @ Feb 4 2011, 12:03) Later... Feb 5 2011, 18:42
Raiden I've uploaded 0.1.11. There are no changes to ... Feb 5 2011, 18:51
kode54 You may want to take a look at the silly changes I... Feb 6 2011, 08:50
googlebot QUOTE (kode54 @ Feb 6 2011, 08:50) You ma... Feb 6 2011, 09:15
Raiden QUOTE (kode54 @ Feb 6 2011, 08:50) You ma... Feb 6 2011, 11:42
googlebot QUOTE (Raiden @ Feb 6 2011, 11:42) I supp... Feb 6 2011, 11:46
pbelkner QUOTE (Raiden @ Feb 6 2011, 11:42) Tech 3... Feb 6 2011, 11:59
leirbag Hi,
I have just tested last version (libebur128-0... Feb 6 2011, 12:28
Raiden Thanks for the report! It was a bug in the com... Feb 6 2011, 13:38
leirbag QUOTE (Raiden @ Feb 6 2011, 13:38) Thanks... Feb 6 2011, 14:14
leirbag QUOTE (Raiden @ Feb 6 2011, 13:38) Thanks... Feb 6 2011, 14:19
benski Raiden.
For gated loudness of a segment, the EBU ... Feb 6 2011, 20:51
Raiden QUOTE (benski @ Feb 6 2011, 20:51) For ga... Feb 6 2011, 22:16
benski And in the example of a 600ms input, it should be ... Feb 6 2011, 22:36
kode54 Ah, right, then. Well, then it would be helpful to... Feb 7 2011, 00:44
Raiden QUOTE (googlebot @ Feb 6 2011, 11:46) PS ... Feb 7 2011, 02:06
romor QUOTE (Raiden @ Feb 7 2011, 02:06) It cou... Feb 7 2011, 03:08
Raiden QUOTE (benski @ Feb 6 2011, 22:36) And in... Feb 7 2011, 02:21
benski QUOTE (Raiden @ Feb 6 2011, 20:21) QUOTE ... Feb 7 2011, 05:22
Raiden QUOTE (kode54 @ Feb 7 2011, 00:44) Ah, ri... Feb 7 2011, 02:40
Raiden It is doing window overlap. Otherwise, the block e... Feb 7 2011, 06:36
benski QUOTE (Raiden @ Feb 7 2011, 00:36) It is ... Feb 7 2011, 16:20
kode54 The library doesn't like it very much if the s... Feb 7 2011, 15:06
pbelkner QUOTE (kode54 @ Feb 7 2011, 15:06) /5*2.
... Feb 7 2011, 15:20
nucelar Hi raiden, you're last improvements/ additions... Feb 7 2011, 16:59
Raiden Hi again,
I've uploaded 0.2.0:
Library:
- Rem... Feb 20 2011, 18:55
habasud QUOTE (Raiden @ Feb 20 2011, 18:55) Hi ag... Feb 23 2011, 09:46
C.R.Helmrich FYI: EBU tech doc 3343 has been published.
Chris Feb 26 2011, 13:10
Raiden I've uploaded 0.2.1.
Library:
- removed the e... Feb 26 2011, 20:20
Raiden And here is 0.2.2, with a single change:
- added ... Feb 27 2011, 22:40
nucelar QUOTE (Raiden @ Feb 27 2011, 22:40) And h... Mar 3 2011, 18:01
Raiden QUOTE (nucelar @ Mar 3 2011, 18:01) Hey R... Mar 3 2011, 22:33
nucelar Hi!
Thanks for the Macports suggestion, i will... Mar 4 2011, 11:53
habasud ...maybe someone finds it useful to visualize the ... Mar 4 2011, 12:36
Surfi ::
SSE2 Win32 compile doesn't work with comma... Mar 5 2011, 18:37![]() ![]() |
|
Lo-Fi Version | Time is now: 18th May 2013 - 21:23 |