Jump to content

Finalising Masters in Logic - A Couple of Questions


ew1

Recommended Posts

 

Hi all. I am mastering an album at the moment and would appreciate some expertise on the following queries. I should also say that, yes, I am aware that most of this stuff makes only a very negligible difference to the finished product and the vast majority of people won’t hear the difference. However, I still want to know the right way to do these things. Many thanks.

 

The mixes I am dealing with for this album are 44.1 kHz 24 bit files.

 

1.  In order to create 44.1 kHz/16 bit versions of the masters, do I simply select “16 bit” in Logic’s bounce window? Is that an acceptable way to do it?

 

Screenshot2023-03-10at11_39_29.thumb.png.4b5b48ce9c9cb27a1e8e1b2ea8ec4414.png

 

 

2. If I want to also create 48 kHz/24 bit versions in order to ensure compatibility with video, do I simply select “48 kHz” in Logic’s bounce window? Is the upsampling/downsampling that takes place in a Logic bounce good enough quality? 

 

Screenshot2023-03-10at11_40_55.thumb.png.bf8cf79b1a1bf16c8edb67ec181680cc.png

 

 

3. If the upsampling/downsampling that takes place in a Logic bounce is good enough quality, could you please comment on this:

This video from Dan Worrall suggests that you should always dither after downsampling/upsampling, not before. But if you are dithering within your final limiter and then upsampling from 44.1 kHz to 48 kHz simply by selecting 48 kHz in Logic’s bounce window, I assume that means that your limiter’s dithering is happening before the upsampling. If my assumption is correct, would you say it is bad to do the upsampling in Logic’s bounce function because it would be happening after your limiter’s dithering?

 

4. If I’m not mistaken, most modern DAWs operate at 46 or 32 bit “internally”. Does this mean that if you import 24 bit files into a Logic X session, what’s happening within that session is actually 32 bit or 64 bit and so when you create a 24 bit bounce, you are actually reducing the sample rate?

 

Thank you

 

Link to comment
Share on other sites

3 hours ago, polanoid said:

You use dithering when lowering the bit depth (e.g. 24 -> 16 bit), not when changing the sample rate

Thanks for the reply but you've misunderstood my question. I understand the difference between SRC and changing bit depth. If you read my question again, you'll see that I am talking about Dan's advice about the order in which SRC and bit depth changes should be done. At the point I linked to in the video, he says that your dithering should happen after your SRC, not before. My question is, if you dither within your limiter but do your SRC within Logic's bounce function, does that mean you are doing your SRC after your dithering (which is the opposite of what Dan's rule says)? And if so, why is this a problem? He doesn't explain why in the video.

Link to comment
Share on other sites

2 minutes ago, ew1 said:

Thanks for the reply but you've misunderstood my question. I understand the difference between SRC and changing bit depth. If you read my question again, you'll see that I am talking about Dan's advice about the order in which SRC and bit depth changes should be done. At the point I linked to in the video, he says that your dithering should happen after your SRC, not before. My question is, if you dither within your limiter but do your SRC within Logic's bounce function, does that mean you are doing your SRC after your dithering (which is the opposite of what Dan's rule says)? And if so, why is this a problem? He doesn't explain why in the video.

You dither when you convert the bit depth. Not when you convert the sample rate. So there's no "before" or "after"

Link to comment
Share on other sites

15 minutes ago, polanoid said:

You dither when you convert the bit depth. Not when you convert the sample rate. So there's no "before" or "after"

Thanks again but I think we're talking about two different things. Let me explain another way - if you want to both change the bit depth and change the sample rate of a piece of audio, Dan Worrall is saying that you must do the dithering for the bit depth change after you do the sample rate conversion, not before. My point is that if you are dithering within your limiter but doing the SRC within Logic's bounce function, that seems to mean that you would be dithering before you convert the sample rate (as I assume your limiter's processing is applied before the SRC that takes place during the bounce), which is the opposite of what Dan advises.

Link to comment
Share on other sites

8 minutes ago, ew1 said:

Dan Worrall is saying that you must do the dithering for the bit depth change after you do the sample rate conversion, not before.

Yes, dithering should always be the last process, and if you have to convert your sample rate, then you may as well do it at full bit depth.

But do you really need to convert your sample rate? What is the distribution format that requires that new sample rate? 

Link to comment
Share on other sites

3 minutes ago, David Nahmani said:

Yes, dithering should always be the last process, and if you have to convert your sample rate, then you may as well do it at full bit depth.

But do you really need to convert your sample rate? What is the distribution format that requires that new sample rate? 

Many thanks, David. The scenario is that I have 44.1 kHz/24 bit mixes that make up this album.

I need to provide 44.1 kHz/16 bit versions for CD and 48 kHz 24 bit versions to ensure compatibility with any video frame rate and to make the files more acceptable for sync agencies.

 

So in fact, I actually don't need to create versions of these masters in which both sample rate and bit depth have to be changed. I need to create one set of masters where I upsample but don't change bit depth and another set where I change bit depth but don't upsample. However, I know that dithering is good practice any time you bounce, even if you're not changing the bit depth. Therefore, I will dither when I create the 48 kHz/24 bit versions and I want to get the sequence of SRC/dither correct.

So if I need to dither last, it seems like when I create the 48kHz/24 bit versions, I  would have to bounce the masters at 48 kHz with no dithering, import those files into Logic and bounce them out again with dithering. This requires me to twice the bouncing work I would have to do if I could convert sample rate and then dither internally in logic in one go. Can you suggest a more efficient strategy?

Link to comment
Share on other sites

17 minutes ago, polanoid said:

That is very untrue. What would be the benefit of dithering (= adding noise) when you‘re keeping the bit depth?

Apologies, I should have specified - whenever you're creating a 24 bit bounce. I got that info from Justin Colletti. As far as I'm aware, the quantization errors can occur even if you're not changing the bit depth.

Link to comment
Share on other sites

Hey guys

As to the original question:

Yes, dithering should always be the last step. If you apply dithering in your limiter and subsequently sample rate convert, then that's not the optimum order.

While you absolutely can master the sound in Logic Pro, there's a reason why most mastering engineers use another app for mastering or two apps for this (i.e. LPX + something else), such as Izotope RX Advanced.

Two scenarios:

Mastering to only the original SR, at any bit depth
Do it all in LPX, use Logic Pro's licensed POW-r dithering. It's not the best and quite old, but it's okay.

POW-r #1 is fairly unintrusive and probably the best choice for a loud master, and #3 is the most effective of the bunch for dynamic material.

I can see a challenge in using the internal dither in the limiter. How do you fade in or out post-limiter? If you fade out on the channel strip containing the limiter then what happens to the bit depth as Logic's own processing expands the output of the fader from e.g. 16 bits dithered (coming out of the plug-in) to 32/64 bit floating point again?

You can use something like Bitter from Stillwell to monitor what's actually happening to your bit depth as you process and move a fader, but make sure you monitor after the fader, not on the same channel, so it may require a bit of auxing first.

This also relates to your question no. 4: When you import 24 bit files into Logic the bit depth of the files are unchanged upon import. If you place the file on an audio track with no processing and no change to the fader/balance and no processing on the stereo output there is still no change - bit for bit perfection as it plays in Logic.

Once you start touching the channel fader, add several tracks together or do any kind of processing on the channel, things will go into floating point land - 32 to 64 bits depending on what you're doing.

Finally, mastering to several different bit depths in Logic requires multiple manual steps, but it's possible without leaving LPX.

PS. If you choose to do the SR in Logic as well (hint: it's a lot better than ProTools, but worse than RX) then Logic will do the SR first and then apply dither in the correct order.

Mastering to several different SRCs, at any bit depth
Master the audio at the original SR in Logic Pro. As mentioned earlier, Logic will use up to 64 bit float when summing and in some internal processing (such as filters), while it varies in 3rd party plug-ins (e.g. 32 bit float).

Do not apply any dithering or SRC in Logic Pro, but bounce to 32 bit floating point (which automatically disables dithering) at the original SR.

Now either send the file directly from Logic's project audio window (using the hotkey for Open in External Audio Editor) to RX Advanced for single file processing or drag & drop the file(s) into RX's batch converter.

Set up a couple of SR/bit depth combos as presets in RX, such as 24 bit with Mbit+ and no SR, SR to 48 kHz and 24 bit with Mbit+, ditto with 16 bits, etc. Remember the processing order matters, so always dither last.

RX'll spit out all you need at the press of a single button and with the best available dithering in the world (MBit+) and the best or one of the best SRC algos as well. It can also automatically add e.g. [24 bit 48 kHz] to the end of the file name, etc.

You may experience small changes to the peak values, especially when SRC'ing very hot masters. Consider leaving a bit more headroom or limit these peaks in the SRC algo in RX. For dithering you should enable auto-blanking and consider enabling peak suppression as well. Don't worry, this won't cause audible artifacts.

RX Advanced is a bit expensive. You can probably skip the Advanced version and get the regular/small version for your needs, but check out the differences before you buy.

-
Regarding when to dither, the general rules of thumb are:

· Dither every time you go from a higher to a lower bit depth

That also means you should dither when going from Logic's internal 64 or 32 bit floating point summing/output to a integer/fixed 24 bit file. That's probably what Justin was referring to and was misunderstood as, paraphrased, "always dither, also at 24 bits".

We're talking very, very low level stuff here, though, and a 32 bit floating point signal versus the same 24 bit integer are virtually identical when output through a DAC.

· Try to avoid dithering multiple times in a row, i.e. try to stay at the highest possible bit depth and only dither once, at the very last stage

· Dithering can become audible under certain circumstances, but mainly when it accumulates, is gained up, and/or is re-applied many times.

 

 

Edited by lagerfeldt
  • Like 3
Link to comment
Share on other sites

27 minutes ago, lagerfeldt said:

That also means you should dither when going from Logic's internal 64 or 32 bit floating point summing/output to 24 bits fixed.

Adding this here from waves.com website: 

„You don’t need to dither when going from 32-bit floating point to 24-bit (because 32-bit floating point doesn’t have a higher bit depth), but you do from 32-bit fixed point to any lower bit depth“

 

Link to comment
Share on other sites

I don't believe that's true, although the differences are very small.

While the additional 8 bits in 32 bit float are in reality additional headroom, there is still a theoretical benefit to dithering when going for 32 bit float to 24 bit fixed.

This is also the position of Alexey Lukin, the inventor of Mbit+ and Izotope's principle engineer (and often considered one the world's leading experts on digital processing).

PS. I see the otherwise fine article was written by Mike Levine on Waves.com. In fact Mike has on occasion used - tadaa - Alexey for technical consultation, so I feel quite confident in Alexey's position on the matter.

Edited by lagerfeldt
  • Like 1
Link to comment
Share on other sites

2 hours ago, lagerfeldt said:

While you absolutely can master the sound in Logic Pro, there's a reason why most mastering engineers use another app for mastering or two apps for this (i.e. LPX + something else), such as Izotope RX Advanced.

Thank you for the illuminating, um, master class. 🙂 Excellent stuff.

Link to comment
Share on other sites

2 hours ago, lagerfeldt said:

That also means you should dither when going from Logic's internal 64 or 32 bit floating point summing/output to an integer/fixed 24 bit file.

Does any dithering take place when monitoring LPX during normal use? I.e. in the path between the 32-bit float output of the master fader and a 24-bit DAC in one's audio interface? If so, where does the dithering happen - in LPX, or in Core Audio (or somewhere else in the OS)? 

Link to comment
Share on other sites

3 hours ago, lagerfeldt said:

While the additional 8 bits in 32 bit float are in reality additional headroom, there is still a theoretical benefit to dithering when going for 32 bit float to 24 bit fixed.

What would be the scientific background behind that? The DAW cannot possibly use more than the 24 bit mantissa at its output, because using the additional headroom would only mean clipping the signal?

Link to comment
Share on other sites

1 minute ago, polanoid said:

The DAW cannot possibly use more than the 24 bit mantissa at its output

Sure it can, as soon as it starts processing any audio. If you sum two 24-bit signals, you get a 25-bit result. Those extra 8 bits (in the 32-bit float data) contain meaningful data by the time you're done mixing. So, you must dither when going back down to 24 bits.

Link to comment
Share on other sites

4 hours ago, dmitch57 said:

Sure it can, as soon as it starts processing any audio. If you sum two 24-bit signals, you get a 25-bit result. Those extra 8 bits (in the 32-bit float data) contain meaningful data by the time you're done mixing. So, you must dither when going back down to 24 bits.

Well no, because your "25-bit result" (which I assume you mean to be the result of two 1.0 (or 0dB) values) would clip the DAW's output by 6dB, which can only be useful if you bounce to 32 bit Floating Point for use of the file in another DAW.

When you bounce to anything else, like 24 or 16 bit, or when you send the main output to your audio interface to actually listen to it, you will of course set your faders so that the maximum signal level reached is 0dB or lower. 

A 0dB signal will only use the mantissa of the 32 bit float value, giving it the same precision than a 24 bit fixed point.

So again my question, what would be the use of dithering here?

Link to comment
Share on other sites

43 minutes ago, polanoid said:

So again my question, what would be the use of dithering here?

Answering my own question here, after some research and experimenting: Because for very low level signals, the resolution gets much better than the 24 bit fixed point can provide (because the floating point exponent can also get negative, I totally missed that). So, easily visualized here (used Adacity instead of Logic for file editing):

1) A sine wave at -142 dB created using Logic's Test Oscillator at -96 dB followed by a Gain Plug-in at -46 dB, bounced to 24 Bit without normalization or dithering, then imported into Audacity and normalized to 0dB looks like this:

image.thumb.png.527f6ad4c918a8eedf90b562702927c2.png

2) The same sine wave bounced to 32 bit float without normalization, then imported into Audacity and normalized to 0dB looks like this:

image.thumb.png.7d863372e274c2e0e08af40960c6ea92.png

So, case closed for me, dithering obviously makes sense when bouncing to 24 bit 🙂 

BTW this makes the statement from the Waves website rather questionable, doesn't it (because a low signal levels, 32 bit floating point does provide higher resolution that 24 bit fixed point)?

Edited by polanoid
  • Like 2
Link to comment
Share on other sites

18 hours ago, polanoid said:

So, case closed for me, dithering obviously makes sense when bouncing to 24 bit 🙂

What's the earliest Logic version where you have that 32-64 bit float processing that Lagerfeldt mensions? Maybe 10.3 or 10.4? Or later?

Man, I'm gonna have to change my workflow with all this new info for 24 bit.

Link to comment
Share on other sites

3 hours ago, triplets said:

What's the earliest Logic version where you have that 32-64 bit float processing that Lagerfeldt mensions? Maybe 10.3 or 10.4? Or later?

Has there ever been a Logic version that does not internally use 32 bit floating point? If so this must have been a looong time ago. You can check your Logic version yourself: if you have a channel strip somewhere before the output channel and feed it a signal way above 0dB, and still don’t get a  clipped signal if you attenuate it afterwards so it doesn’t exceed 0 dB anymore, it’s 32 Bit 😉 Regarding 64 bit processing, this might be used in some special plug-ins, but in the mixer itself I don’t think extending the dynamic range beyond 1500 dB would make any sense.

Edited by polanoid
Link to comment
Share on other sites

On 3/11/2023 at 12:03 PM, lagerfeldt said:

Hey guys

As to the original question:

Yes, dithering should always be the last step. If you apply dithering in your limiter and subsequently sample rate convert, then that's not the optimum order.

While you absolutely can master the sound in Logic Pro, there's a reason why most mastering engineers use another app for mastering or two apps for this (i.e. LPX + something else), such as Izotope RX Advanced.

Two scenarios:

Mastering to only the original SR, at any bit depth
Do it all in LPX, use Logic Pro's licensed POW-r dithering. It's not the best and quite old, but it's okay.

POW-r #1 is fairly unintrusive and probably the best choice for a loud master, and #3 is the most effective of the bunch for dynamic material.

I can see a challenge in using the internal dither in the limiter. How do you fade in or out post-limiter? If you fade out on the channel strip containing the limiter then what happens to the bit depth as Logic's own processing expands the output of the fader from e.g. 16 bits dithered (coming out of the plug-in) to 32/64 bit floating point again?

You can use something like Bitter from Stillwell to monitor what's actually happening to your bit depth as you process and move a fader, but make sure you monitor after the fader, not on the same channel, so it may require a bit of auxing first.

This also relates to your question no. 4: When you import 24 bit files into Logic the bit depth of the files are unchanged upon import. If you place the file on an audio track with no processing and no change to the fader/balance and no processing on the stereo output there is still no change - bit for bit perfection as it plays in Logic.

Once you start touching the channel fader, add several tracks together or do any kind of processing on the channel, things will go into floating point land - 32 to 64 bits depending on what you're doing.

Finally, mastering to several different bit depths in Logic requires multiple manual steps, but it's possible without leaving LPX.

PS. If you choose to do the SR in Logic as well (hint: it's a lot better than ProTools, but worse than RX) then Logic will do the SR first and then apply dither in the correct order.

Mastering to several different SRCs, at any bit depth
Master the audio at the original SR in Logic Pro. As mentioned earlier, Logic will use up to 64 bit float when summing and in some internal processing (such as filters), while it varies in 3rd party plug-ins (e.g. 32 bit float).

Do not apply any dithering or SRC in Logic Pro, but bounce to 32 bit floating point (which automatically disables dithering) at the original SR.

Now either send the file directly from Logic's project audio window (using the hotkey for Open in External Audio Editor) to RX Advanced for single file processing or drag & drop the file(s) into RX's batch converter.

Set up a couple of SR/bit depth combos as presets in RX, such as 24 bit with Mbit+ and no SR, SR to 48 kHz and 24 bit with Mbit+, ditto with 16 bits, etc. Remember the processing order matters, so always dither last.

RX'll spit out all you need at the press of a single button and with the best available dithering in the world (MBit+) and the best or one of the best SRC algos as well. It can also automatically add e.g. [24 bit 48 kHz] to the end of the file name, etc.

You may experience small changes to the peak values, especially when SRC'ing very hot masters. Consider leaving a bit more headroom or limit these peaks in the SRC algo in RX. For dithering you should enable auto-blanking and consider enabling peak suppression as well. Don't worry, this won't cause audible artifacts.

RX Advanced is a bit expensive. You can probably skip the Advanced version and get the regular/small version for your needs, but check out the differences before you buy.

-
Regarding when to dither, the general rules of thumb are:

· Dither every time you go from a higher to a lower bit depth

That also means you should dither when going from Logic's internal 64 or 32 bit floating point summing/output to a integer/fixed 24 bit file. That's probably what Justin was referring to and was misunderstood as, paraphrased, "always dither, also at 24 bits".

We're talking very, very low level stuff here, though, and a 32 bit floating point signal versus the same 24 bit integer are virtually identical when output through a DAC.

· Try to avoid dithering multiple times in a row, i.e. try to stay at the highest possible bit depth and only dither once, at the very last stage

· Dithering can become audible under certain circumstances, but mainly when it accumulates, is gained up, and/or is re-applied many times.

 

 

Hi Lagerfeldt. Firstly thank you so much for taking the time to write this. You’ve already been very helpful. It is much appreciated!

 

 

Being the pedantic guy I am, I have a few follow up questions! If you could find the time to respond, I would be grateful.

 

 

 

So, we have established that dithering should be the last stage in the process. 

 

 

If dithering is being applied, it should happen after SRC.

 

 

1. Is it also the case that if dithering is being applied, it should be applied after the bit depth has been changed (seeing as you said “dithering should always be the last step”)? 

 

 

2. If the answer to that question is yes, then I assume that if you select POW-r dithering, the dithering is applied after Logic’s bounce function applies any changes in bit depth. Is that correct?

 

 

3. If I’m not mistaken, if you dither within your limiter, anything that then happens within Logic’s bounce function is happening post-limiter and consequently, post-dither.  So for example, if you change the bit depth or the sample rate within Logic’s bounce window, those changes are happening after your limiter’s dithering. Is that correct?

 

4. Assuming my assumption in question 3 is correct, then we can say that dithering within your limiter should always be avoided when creating at 24 bit or 16 bit bounce in Logic unless:

 

you are not doing any SRC within Logic’s bounce function AND you are not doing any internal 32/64 bit processing within Logic. (if you are doing SRC, you would need to do the dithering after the SRC. If you are doing internal 32/64 bit processing within Logic, creating a 24 bit bounce will cause a change in bit depth and you would need have that change in dit depth occur before dithering.)

Correct?

 

 

5. If you are creating a 32 bit bounce in Logic, dithering within your limiter should be avoided if you are doing SRC within Logic’s bounce function. If you are not doing SRC within Logic’s bounce function, dithering within your limiter is fine as there is no bit depth change happening when you bounce. Correct?

 

 

Many thanks 

Link to comment
Share on other sites

6 minutes ago, ew1 said:

if dithering is being applied, it should be applied after the bit depth has been changed

Dithering is only ever applied when lowering bit depth. Everything else makes no sense whatsoever. Just think of bit depth conversion and dithering as one single step. Makes it much easier to understand 

Edited by polanoid
Link to comment
Share on other sites

3 hours ago, ew1 said:

if you are doing SRC, you would need to do the dithering after the SRC

Again, you don't dither when doing a pure SRC (Sample Rate Conversion). You dither when you decrease the bit rate. 

The whole after/before makes no sense. Watch this video which explains it quite well: The noise is added to the signal before the lower bits are thrown away, thereby the dithering is just part of the bit depth conversion process. There's no such thing as "only dithering" (you would never deliberately add noise to your signal if you wanted to keep its bit depth).

 

Edited by polanoid
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...