IPB

Welcome Guest ( Log In | Register )

R128GAIN: An EBU R128 compliant loudness scanner
pbelkner
post Jan 5 2011, 19:38
Post #1





Group: Members
Posts: 412
Joined: 13-June 10
Member No.: 81467



I've just uploaded on sourceforge a first version of r128gain, an EBU R128 (http://tech.ebu.ch/loudness) compliant loudness scanner:
http://sourceforge.net/projects/r128gain/files/
  • process single files (tracks):
    • In order to just scan and analyze one file (WAV, FLAC or WV):
      CODE
      r128gain <file>
    • In order to scan, analyze and tag one file (currently only FLAC, result will be in <directory>):
      CODE
      r128gain <file> <directory>
    • In order to scan, analyze one file (WAV, WV) and encode and tag into FLAC (result will be in <directory>):
      CODE
      r128gain <file> <directory> flac
  • recursively process directories (the content of a directory is considered an album):
    • In order to just recursively scan and analyze a directory:
      CODE
      r128gain <directory>
    • In order to recursively scan, analyze and tag a directory:
      CODE
      r128gain <directory> <directory>
      r128gain <directory>/* <directory>
    • In order to recursively scan, analyze a directory and encode and tag into FLAC:
      CODE
      r128gain <directory> <directory> flac
      r128gain <directory>/* <directory> flac
Tagging is currently supported only for FLAC:
  • REPLAYGAIN_REFERENCE_LOUDNESS: always -23 LUFS (corresponding to EBU R128)
  • REPLAYGAIN_TRACK_GAIN: loudness difference to -23 LUFS in LU measured for this track
  • REPLAYGAIN_TRACK_PEAK: true peak measured at 192 kHz for this track
  • REPLAYGAIN_ALBUM_GAIN: loudness difference to -23 LUFS in LU measured for the whole album
  • REPLAYGAIN_ALBUM_PEAK: true peak measured at 192 kHz for the whole album
These tags should be honored by each Replay Gain compliant media player.
Go to the top of the page
+Quote Post
 
Start new topic
Replies
C.R.Helmrich
post Jan 5 2011, 23:23
Post #2





Group: Developer
Posts: 681
Joined: 6-December 08
From: Erlangen Germany
Member No.: 64012



Wow, thank you so much for this tool! I was already mentally preparing myself to have to write my own R128 scanner, but here it is! And in version 0.2, it already does all I need. smile.gif

Having said that... smile.gif

When I pass a file path with spaces and without "enclosing quotes", or a file which doesn't exist, it prints an assert and crashes.

Other than that, it seems to analyze as expected, but I have some questions after looking at the source code.

  • For the loudness analysis, all input files are resampled to 48 kHz, right?
  • For the peak finder, the files are additionally resampled to 192 kHz, right?
  • The way I understand R128 is:
    Pass 1: analyze entire file/album, compute loudness taking into account the absolute gate of -70 LUFS.
    Pass 2: analyze entire file/album again, this time also taking into account the relative loudness gate derived from the result of pass 1. Is that how you implemented it?


Thanks again for your work!

Chris


--------------------
If I don't reply to your reply, it means I agree with you.
Go to the top of the page
+Quote Post
pbelkner
post Jan 6 2011, 00:46
Post #3





Group: Members
Posts: 412
Joined: 13-June 10
Member No.: 81467



QUOTE (C.R.Helmrich @ Jan 6 2011, 00:23) *
Wow, thank you so much for this tool! I was already mentally preparing myself to have to write my own R128 scanner, but here it is! And in version 0.2, it already does all I need. smile.gif

Thanks smile.gif

QUOTE (C.R.Helmrich @ Jan 6 2011, 00:23) *
When I pass a file path with spaces and without "enclosing quotes", or a file which doesn't exist, it prints an assert and crashes.

The scanner is heavily based on SoX (http://sox.sourceforge.net/). This is SoX philosophy: use assert() in production code, i.e. if a pre-condition isn't fulfilled just die.

QUOTE (C.R.Helmrich @ Jan 6 2011, 00:23) *
  • For the loudness analysis, all input files are resampled to 48 kHz, right?
  • For the peak finder, the files are additionally resampled to 192 kHz, right?

48 kHz is due to BS 1770 because they define filter coefficients for that sample rate only. R-REC-BS.1770-1-200709-I!!PDF-E.pdf states:

QUOTE
These filter coefficients are for a sampling rate of 48 kHz. Implementations at other sampling rates will require different coefficient values, which should be chosen to provide the same frequency response that the specified filter provides at 48 kHz. The values of these coefficients may need to be quantized due to the internal precision of the available hardware. Tests have shown that the performance of the algorithm is not sensitive to small variations in these coefficients.

It is not obvious for me how to quantize the given coefficients with respect to other sample frequencies, hence I decided to re-sample to 48 kHz

On the other hand R-REC-BS.1770-1-200709-I!!PDF-E.pdf states regarding true peak determination:

QUOTE
  1. Attenuate: 12.04 dB attenuation
  2. 4 × over-sampling
  3. Emphasis: Pre-emphasis shelving filter, zero at 14.1 kHz, pole at 20 kHz (optional)
  4. DC block (optional)
  5. Absolute: Absolute value
  6. Max: Highest value detection (optional, included if DC block is included).

The current version of R128GAIN combines all this in order to avoid multiple passes:
  1. Attenuate by 0.5 (i.e. ca. 6 dB, future versions will correct this).
  2. Up-sample to 192 kHz (i.e. approximately 4 x over-sampling)
  3. Determine "true" peak.
  4. Down-sample to 48 kHz in order to match defined filter coefficients.
  5. Apply R128 algorithm.
QUOTE (C.R.Helmrich @ Jan 6 2011, 00:23) *
The way I understand R128 is:
Pass 1: analyze entire file/album, compute loudness taking into account the absolute gate of -70 LUFS.
Pass 2: analyze entire file/album again, this time also taking into account the relative loudness gate derived from the result of pass 1. Is that how you implemented it?

tech3341.pdf states:

QUOTE
  1. using an absolute 'silence' gating threshold at -70 LUFS for the computation of the absolute-gated loudness level, and
  2. using a relative gating threshold, 8 LU below the absolute-gated loudness level, and
  3. the measurement input to which the gating threshold is applied is the loudness of the400 ms gating blocks measured using an ITU-R BS.1770 method without gating, that is, summed across channels;
  4. a constant overlap between consecutive gating blocks of at least 50% is required (for increased precision especially when measuring programs of short duration).

R128GAIN interprets this as follows:
  • the -70 LUFS is absolute, hence no second path is needed.
  • the 8 LU is relative to the 400ms gating block. R128GAIN uses a running 400ms gating block, hence 50% overlap is guarantied and no second pass is needed.
Go to the top of the page
+Quote Post
C.R.Helmrich
post Jan 6 2011, 15:23
Post #4





Group: Developer
Posts: 681
Joined: 6-December 08
From: Erlangen Germany
Member No.: 64012



QUOTE (pbelkner @ Jan 6 2011, 01:46) *
It is not obvious for me how to quantize the given coefficients with respect to other sample frequencies, hence I decided to re-sample to 48 kHz

For 44.1 kHz, I resampled the 48-kHz filter impulse responses and tried to find new coefficients which match the given transfer function. Here is what I got:

RLB: numerator = [1 -2 1], denominator = [1 -1.9891 0.98913], accurate to ~0.02 dB above 50 Hz
Pre: numerator = [1.535 -2.633 1.151], denominator = [1 -1.647 0.701], accurate to ~0.05 dB, will tune it a bit more soon

QUOTE
R128GAIN interprets this as follows:
  • the -70 LUFS is absolute, hence no second path is needed.
  • the 8 LU is relative to the 400ms gating block. R128GAIN uses a running 400ms gating block, hence 50% overlap is guarantied and no second pass is needed.

Sorry, but I don't think that's correct. Look at Tech doc 3341, Annex 1. I think the 8 LU is relative to the entire file/album (summation in equation 7, the Jg are the set of 400-ms gating blocks).

Chris

This post has been edited by C.R.Helmrich: Jan 6 2011, 15:35


--------------------
If I don't reply to your reply, it means I agree with you.
Go to the top of the page
+Quote Post
pbelkner
post Jan 6 2011, 16:03
Post #5





Group: Members
Posts: 412
Joined: 13-June 10
Member No.: 81467



QUOTE (C.R.Helmrich @ Jan 6 2011, 16:23) *
QUOTE
R128GAIN interprets this as follows:
  • the -70 LUFS is absolute, hence no second path is needed.
  • the 8 LU is relative to the 400ms gating block. R128GAIN uses a running 400ms gating block, hence 50% overlap is guarantied and no second pass is needed.

Sorry, but I don't think that's correct. Look at Tech doc 3341, Annex 1. I think the 8 LU is relative to the entire file/album (summation in equation 7).

What R128GAIN does is the following (in principle):
  • Create an empty gating block capable of holding samples up to 400ms using a ring buffer.
  • For each input sample:
    • If the gating block is full remove the first sample from it.
    • Add the current sample to the end of the gating block.
    • If the gating block is full:
      • Pick the sample cached in the middle of the gating block.
      • Depending on the (un-gated) loudness measure of the gating block decide, whether to add the picked sample to the overall statistics.
That's my understanding of Tech doc 3341, Annex 1, at least in principle.

Hopefully
EBU Tech Doc 3343 ‘Practical Guidelines for Production and Implementation in accordance with EBU R 128’
will clarify this, if published some day.
Go to the top of the page
+Quote Post
googlebot
post Jan 7 2011, 21:34
Post #6





Group: Members
Posts: 698
Joined: 6-March 10
Member No.: 78779



QUOTE (pbelkner @ Jan 6 2011, 16:03) *
What R128GAIN does is the following (in principle):
  • Create an empty gating block capable of holding samples up to 400ms using a ring buffer.
  • For each input sample:
    • If the gating block is full remove the first sample from it.
    • Add the current sample to the end of the gating block.
    • If the gating block is full:
      • Pick the sample cached in the middle of the gating block.
      • Depending on the (un-gated) loudness measure of the gating block decide, whether to add the picked sample to the overall statistics.
That's my understanding of Tech doc 3341, Annex 1, at least in principle.


I agree with C.R.H. that this interpretation doesn't seem to follow Tech 3341, Annex 1.

  1. A measurement interval is first divided into blocks of 400ms length (with at least 50% overlap). Basically doable with a ring buffer.
  2. From this set of blocks, eliminate all blocks with loudness below -70 LUFS. (I don't understand why you speak of adding samples (and not blocks) to the "overall statistic").
  3. Calculate the total loudness for the latter, decimated set of blocks.
  4. This loudness minus 8 LU is your final threshold.
  5. Decimate the already decimated set of blocks again: Remove all blocks below the final threshold (which can only be known after a complete pass).
  6. The "ungated" total loudness of the resulting set of blocks is your result.

I think it would be simpler to work with block indices (a list, array, or bitmap) than a ring buffer.* Read the input stream two times block by block and skip the calculated indices. Usually, with the buffering left to the OS, you should be reading the second pass from memory automatically.

PS The wording in Annex 1 could be better. Especially the "gated loudness" LKG in (6) and (8) should use different symbols. But mathematically it is not ambiguous. It took me over an hour to crunch the whole thing, though.

* Of course, you can still use something as a ring buffer for I/O. But I would put a block-wise abstraction layer on top of it to make the overall design simpler.

This post has been edited by googlebot: Jan 7 2011, 22:14
Go to the top of the page
+Quote Post
pbelkner
post Jan 7 2011, 22:17
Post #7





Group: Members
Posts: 412
Joined: 13-June 10
Member No.: 81467



QUOTE (googlebot @ Jan 7 2011, 22:34) *
I agree with C.R.H. that this interpretation doesn't seem to follow Tech 3341, Annex 1.

Probably you're both are right, I have to think about it.

What I have in mind (probably not correct) is the following:
  • BS.1770 defines a loudness measure to which all samples contribute the same way.
  • R128 adds a gate: some samples have to be removed from the pure BS.1770 measure.
  • In R128GAIN the gate is local to each sample, i.e. for each sample it consist of -200ms to +200ms samples relative to the sample under consideration. Depending on the pure (un-gated) BS.1770 loudness measure of the relative -200ms to +200ms block the sample under consideration is added to or removed from the (gated) BS.1770 loudness measure of the track/album.
The block relative to each sample is what I call the running gate because it's easy to update it's sum of squares at each step.

QUOTE (googlebot @ Jan 7 2011, 22:34) *
  • The "ungated" total loudness of the resulting set of blocks is your result.

What do you mean by "loudness of a set of blocks"? Doesn't it imply to count samples more than once?

It seems to me that what I've implemented is the limit of what you get if you let go the overlap to 100%. If this is true than it would be fully compliant because they require 50% at a minimum.

This post has been edited by pbelkner: Jan 7 2011, 22:21
Go to the top of the page
+Quote Post
googlebot
post Jan 7 2011, 22:35
Post #8





Group: Members
Posts: 698
Joined: 6-March 10
Member No.: 78779



QUOTE (pbelkner @ Jan 7 2011, 22:17) *
It seems to me that what I've implemented is the limit of what you get if you let go the overlap to 100%.


No. Because, for true overlap, the answer to this

QUOTE (pbelkner @ Jan 7 2011, 22:17) *
Doesn't it imply to count samples more than once?


is "Yes!". Within the overlapping area the same sample can be part of both, zero or more eliminated blocks and zero or more non-eliminated blocks. All non-eliminated blocks are part of the final calculation.

QUOTE (pbelkner @ Jan 7 2011, 22:17) *
What do you mean by "loudness of a set of blocks"?


Conceptually: Concatenate all non-eliminated blocks and calculate the "ungated" loudness for the whole interval. In practice you basically average the pre-calculated loudness values of all non-eliminated blocks, see step (8).

PS My comments are not supposed to curtain the fact that you have done a great job so far! smile.gif

This post has been edited by googlebot: Jan 7 2011, 23:05
Go to the top of the page
+Quote Post
pbelkner
post Jan 7 2011, 23:21
Post #9





Group: Members
Posts: 412
Joined: 13-June 10
Member No.: 81467



QUOTE (googlebot @ Jan 7 2011, 23:35) *
PS My comments are not supposed to curtain the fact that you have done a great job so far! smile.gif

Many thanks to C.R.Helmrich and you for the great comments! Meanwhile I've taken another look at the papers and I think the point is clear now.

Probably the next version will offer the two pass approach (and may leave the current one pass as a very good approximation).
Go to the top of the page
+Quote Post
C.R.Helmrich
post Jan 8 2011, 14:29
Post #10





Group: Developer
Posts: 681
Joined: 6-December 08
From: Erlangen Germany
Member No.: 64012



QUOTE (pbelkner @ Jan 8 2011, 00:21) *
Many thanks to C.R.Helmrich and you for the great comments!

Gern geschehen. Thank you for taking the implementation initiative!

I also agree with Jeff and googlebot and suggest to do it exactly like they proposed: compute a new block loudness measure every 9600 samples (at 48 kHz) and store all blocks with loudness > -70 LUFS in a linked list (or array if you know the track/album length ahead of time... which you do in our scenario, I guess). Then you can apply the relative gate on this list.

Actually, I think to avoid calculating the logarithm and division by T every 200 ms you can simply store the block energies in your list, because the comparison

block loudness > -70 LUFS

is, assuming your block energy = left energy + right energy + center energy + 1.41* ..., equivalent to

block energy > 0.4 * sample rate * 10^((-70+0.691)/10),

with the right-hand term being a constant (0.00225113 for 48 kHz, 0.00206823 for 44.1 kHz). Then you can work analogously for the relative gating: simply sum up all the block energies in your 70-gated list, divide by the number of energies in the list to get the average 70-gated energy, and apply the relative gating threshold by

block energy > 0.1584893 * average 70-gated energy

Chris

This post has been edited by C.R.Helmrich: Jan 8 2011, 15:13


--------------------
If I don't reply to your reply, it means I agree with you.
Go to the top of the page
+Quote Post

Posts in this topic
- pbelkner   R128GAIN: An EBU R128 compliant loudness scanner   Jan 5 2011, 19:38
- - googlebot   Didn't try the tool, yet, but had a look at th...   Jan 5 2011, 20:13
|- - pbelkner   QUOTE (googlebot @ Jan 5 2011, 21:13) Did...   Jan 5 2011, 21:32
- - C.R.Helmrich   Wow, thank you so much for this tool! I was al...   Jan 5 2011, 23:23
|- - pbelkner   QUOTE (C.R.Helmrich @ Jan 6 2011, 00:23) ...   Jan 6 2011, 00:46
|- - C.R.Helmrich   QUOTE (pbelkner @ Jan 6 2011, 01:46) It i...   Jan 6 2011, 15:23
|- - pbelkner   QUOTE (C.R.Helmrich @ Jan 6 2011, 16:23) ...   Jan 6 2011, 16:03
|- - googlebot   QUOTE (pbelkner @ Jan 6 2011, 16:03) What...   Jan 7 2011, 21:34
|- - pbelkner   QUOTE (googlebot @ Jan 7 2011, 22:34) I a...   Jan 7 2011, 22:17
|- - googlebot   QUOTE (pbelkner @ Jan 7 2011, 22:17) It s...   Jan 7 2011, 22:35
|- - pbelkner   QUOTE (googlebot @ Jan 7 2011, 23:35) PS ...   Jan 7 2011, 23:21
|- - C.R.Helmrich   QUOTE (pbelkner @ Jan 8 2011, 00:21) Many...   Jan 8 2011, 14:29
|- - pbelkner   QUOTE (C.R.Helmrich @ Jan 8 2011, 15:29) ...   Jan 10 2011, 17:38
|- - pbelkner   QUOTE (pbelkner @ Jan 10 2011, 18:38) The...   Jan 10 2011, 18:01
|- - C.R.Helmrich   Exactly, and if you pull out the "/n" in...   Jan 10 2011, 18:20
- - Fandango   On a completely other note... What about patents? ...   Jan 6 2011, 01:53
|- - mudlord   QUOTE (Fandango @ Jan 5 2011, 18:53) On a...   Jan 6 2011, 13:22
|- - cpchan   QUOTE (mudlord @ Jan 6 2011, 08:22) The o...   Jan 6 2011, 13:44
|- - mudlord   QUOTE (cpchan @ Jan 6 2011, 07:44) QUOTE ...   Jan 6 2011, 13:46
- - Notat   Congratulations on this! I know that BS.1770 ...   Jan 6 2011, 02:37
- - mudlord   What is the license for the tool?   Jan 6 2011, 03:42
- - A_Man_Eating_Duck   i can't for the life of me get this app to jus...   Jan 6 2011, 08:14
|- - pbelkner   QUOTE (A_Man_Eating_Duck @ Jan 6 2011, 09...   Jan 6 2011, 09:34
- - pbelkner   QUOTE (Fandango @ Jan 6 2011, 02:53) On a...   Jan 6 2011, 09:19
|- - mudlord   QUOTE (pbelkner @ Jan 6 2011, 02:19) It...   Jan 6 2011, 13:20
|- - pbelkner   QUOTE (mudlord @ Jan 6 2011, 14:20) QUOTE...   Jan 6 2011, 15:26
|- - Soap   QUOTE (pbelkner @ Jan 6 2011, 09:26) Both...   Jan 6 2011, 15:53
|- - cpchan   QUOTE (Soap @ Jan 6 2011, 10:53) ffmepg i...   Jan 6 2011, 16:09
|- - pbelkner   QUOTE (Soap @ Jan 6 2011, 16:53) QUOTE (p...   Jan 6 2011, 16:13
|- - Soap   QUOTE (pbelkner @ Jan 6 2011, 10:13) QUOT...   Jan 6 2011, 16:21
|- - pbelkner   QUOTE (Soap @ Jan 6 2011, 17:21) QUOTE (p...   Jan 6 2011, 16:49
|- - saratoga   QUOTE (pbelkner @ Jan 6 2011, 10:49) QUOT...   Jan 6 2011, 18:37
|- - cpchan   QUOTE (saratoga @ Jan 6 2011, 13:37) That...   Jan 7 2011, 01:39
- - Zao   Note that "use" in mudlord's post is...   Jan 6 2011, 13:29
|- - cpchan   QUOTE (Zao @ Jan 6 2011, 08:29) If you ev...   Jan 6 2011, 13:48
|- - Zao   QUOTE (cpchan @ Jan 6 2011, 13:48) QUOTE ...   Jan 6 2011, 13:52
|- - cpchan   QUOTE (Zao @ Jan 6 2011, 08:52) If more k...   Jan 6 2011, 13:59
- - Zao   Even if the end artifact is a program, this preven...   Jan 6 2011, 13:47
|- - cpchan   QUOTE (Zao @ Jan 6 2011, 08:47) Even if t...   Jan 6 2011, 13:52
|- - Zao   QUOTE (cpchan @ Jan 6 2011, 13:52) What i...   Jan 6 2011, 13:54
- - Zao   If a developer uses a library with one of the usua...   Jan 6 2011, 14:02
|- - cpchan   QUOTE (Zao @ Jan 6 2011, 09:02) If a deve...   Jan 6 2011, 14:14
- - lvqcl   Please remember that QUOTE (pbelkner @ Jan 6 ...   Jan 6 2011, 14:10
- - Zao   You cannot always dynamically link to a library, a...   Jan 6 2011, 14:16
|- - cpchan   QUOTE (Zao @ Jan 6 2011, 09:16) You canno...   Jan 6 2011, 14:33
|- - mudlord   QUOTE (cpchan @ Jan 6 2011, 08:33) QUOTE ...   Jan 7 2011, 07:19
|- - googlebot   QUOTE (mudlord @ Jan 7 2011, 07:19)To avo...   Jan 7 2011, 10:46
|- - 2Bdecided   QUOTE (googlebot @ Jan 7 2011, 09:46) No ...   Jan 7 2011, 17:45
- - GHammer   Seven of 38 posts on software licensing. Geesh...   Jan 7 2011, 04:39
|- - mudlord   QUOTE (GHammer @ Jan 6 2011, 21:39) Seven...   Jan 7 2011, 07:14
- - romor   Bad talk. You are free to see his posts if you wan...   Jan 7 2011, 15:57
|- - Soap   forget it.   Jan 7 2011, 16:43
|- - staale   Hi, Just wanted to add that we've released ou...   Jan 7 2011, 17:08
- - googlebot   Forget this, too. Else the joke doesn't work o...   Jan 7 2011, 17:02
- - jangk   Hello, back to audio issues again. Thank you pbel...   Jan 7 2011, 17:27
|- - pbelkner   QUOTE (jangk @ Jan 7 2011, 18:27) Am I mi...   Jan 7 2011, 18:13
|- - jangk   QUOTE (pbelkner @ Jan 7 2011, 18:13) QUOT...   Jan 7 2011, 19:13
|- - pbelkner   QUOTE (jangk @ Jan 7 2011, 20:13) Anyhow,...   Jan 7 2011, 19:56
- - mudlord   QUOTE How about you program your own lib or shut u...   Jan 7 2011, 18:57
- - jdoering   Please pardon the noob here; hopefully I'm kee...   Jan 8 2011, 00:28
|- - googlebot   Completely agree! One doesn't really have ...   Jan 8 2011, 01:51
|- - pbelkner   QUOTE (jdoering @ Jan 8 2011, 01:28) But ...   Jan 8 2011, 09:32
- - Notat   I have it on good authority that the calculation c...   Jan 8 2011, 18:42
- - googlebot   A fully standard compliant single-pass outline is ...   Jan 8 2011, 19:40
- - pbelkner   v0.3 released I've just uploaded the new vers...   Jan 9 2011, 18:47
|- - googlebot   QUOTE (pbelkner @ Jan 9 2011, 18:47) CODE...   Jan 12 2011, 20:26
|- - pbelkner   QUOTE (googlebot @ Jan 12 2011, 21:26) QU...   Jan 13 2011, 10:26
- - googlebot   Works perfectly, great job! Even for multichan...   Jan 10 2011, 09:58
- - googlebot   Just out of curiosity, where does that 0.4 come fr...   Jan 10 2011, 18:35
|- - jdoering   QUOTE (googlebot @ Jan 10 2011, 09:35) Ju...   Jan 10 2011, 19:27
- - googlebot   Duh. My bad!   Jan 10 2011, 21:40
- - Fandango   I have a proposal. New standard tag fields: EBU_...   Jan 11 2011, 23:14
|- - Notat   QUOTE (Fandango @ Jan 11 2011, 15:14) Wit...   Jan 12 2011, 04:11
|- - Fandango   QUOTE (Notat @ Jan 12 2011, 04:11) QUOTE ...   Jan 13 2011, 16:21
|- - pbelkner   QUOTE (Fandango @ Jan 13 2011, 17:21) But...   Jan 13 2011, 17:01
||- - 2Bdecided   QUOTE (pbelkner @ Jan 13 2011, 16:01) EBU...   Jan 13 2011, 17:24
|- - 2Bdecided   QUOTE (Fandango @ Jan 13 2011, 15:21) Mos...   Jan 13 2011, 17:20
- - Fandango   PS: I'd say that using GAIN in your prefix is ...   Jan 12 2011, 02:02
- - jdoering   I had been hoping that the written tags were being...   Jan 12 2011, 06:40
|- - pbelkner   QUOTE (jdoering @ Jan 12 2011, 07:40) I h...   Jan 12 2011, 10:21
|- - jdoering   QUOTE (pbelkner @ Jan 12 2011, 01:21) QUO...   Jan 12 2011, 21:24
|- - pbelkner   QUOTE (jdoering @ Jan 12 2011, 22:24) I t...   Jan 13 2011, 11:01
- - jdoering   Just compared r128gain output versus ReplayGain fo...   Jan 12 2011, 10:18
- - googlebot   I think you both have a valid point. I also think...   Jan 12 2011, 12:58
|- - pbelkner   QUOTE (googlebot @ Jan 12 2011, 13:58) =...   Jan 12 2011, 13:14
||- - C.R.Helmrich   QUOTE (pbelkner @ Jan 12 2011, 14:14) QUO...   Jan 12 2011, 18:27
|||- - Notat   QUOTE (C.R.Helmrich @ Jan 12 2011, 10:27)...   Jan 13 2011, 02:57
|||- - jdoering   QUOTE (Notat @ Jan 12 2011, 17:57) QUOTE ...   Jan 13 2011, 06:21
|||- - C.R.Helmrich   QUOTE (jdoering @ Jan 13 2011, 07:21) I...   Jan 13 2011, 10:25
|||- - pbelkner   QUOTE (C.R.Helmrich @ Jan 13 2011, 11:25)...   Jan 13 2011, 10:37
||- - 2Bdecided   QUOTE (pbelkner @ Jan 12 2011, 12:14) QUO...   Jan 13 2011, 11:23
||- - Notat   QUOTE (2Bdecided @ Jan 13 2011, 03:23) Yo...   Jan 13 2011, 15:41
|- - pbelkner   QUOTE (googlebot @ Jan 12 2011, 13:58) PS...   Jan 12 2011, 17:07
- - googlebot   How large are the expected differences? Is there a...   Jan 12 2011, 18:46
- - C.R.Helmrich   True. I guess for the averaging we should leave ou...   Jan 12 2011, 19:00
- - Raiden   What is so special about pink noise? How does pink...   Jan 13 2011, 11:44
- - googlebot   Pink noise has equal energy over all octaves. It...   Jan 13 2011, 12:02
- - jangk   Thank you Notat for the link to AES "Loudness...   Jan 13 2011, 13:57
- - benski   I'm with David. I think we should verify the ...   Jan 13 2011, 17:27
- - Fandango   So if the old tags are used, how do I know whether...   Jan 13 2011, 18:22
6 Pages V   1 2 3 > » 


Closed TopicStart new topic
2 User(s) are reading this topic (2 Guests and 0 Anonymous Users)
0 Members:

 



RSS Lo-Fi Version Time is now: 18th April 2014 - 22:44