Jump to content

Does Logic self-dither on the output?


triplets

Recommended Posts

Since Logic works internally at 32-bit float, does it self-dither on the stereo output to 24-bit fixed?

Seems like the obvious answer since we cannot bounce to 32-bit float. At least not yet.

 

And what happens on the I/O plugin? Is there a self-dither to 24-bit fixed also?

 

The signal going in is 24 bit. Inside Logic, audio is processed in a 32 bit floating point format although you are still hearing a 24 bit signal out of your interface. The extra 8 bits do not contain audio data so there is no need to dither.

Link to comment
Share on other sites

Well, you certainly can dither on a bounce - that's what the dithering options are for.

 

For straight monitoring, I'm not sure we know for sure. I guess any plugin process that is reducing the word length or doing other processing internally may or may not choose to dither - they are a bit of a black box. I guess most plugins and mixer parameters though are just processing the 32f stream and dumping it back to the host (that's certainly how the plugin architecture works).

 

Where the signal goes from a 32f to a 24-bit stream for the interface, I'm not sure - I suspect it's Logic that does this after the output fader and delivers a 24-bit fixed point stream to the audio interface - or maybe it outputs a 32f signal to Core Audio and it's CA that converts to 24-fixed..? Really don't know...

Link to comment
Share on other sites

Ah the maniacs... invite them for a smoke break outside the studio. Start a discussion comparing the harmonic distortion of the Studer A800 vs the Otari MTR100 and how you find the wow and flutter to be smoother on the Otari vs the Studer. Nearly immediately excuse yourself, pretending an urging natural need for the bathroom, but instead go back to work in the studio using whatever digital equipment they have, while letting them talk amongst themselves outside. ;)

 

Anyway one thing is sure: when bouncing from 32f to 24 bit fixed with dither set to "none", Logic is not dithering, it's truncating. :P

Link to comment
Share on other sites

  • 2 years later...

I did some new tests with LPX and my conclusion is that LPX does not apply any automatic dither (such as TPDF) when quantizing from 32 bit float.

 

I generated a very low level test signal and compared the 32 bit floating point live stream in LPX to a bounced 24 bit truncated version of the same signal using AU NetSend from LPX to Audiofile Spectre. I also compared the spectral analysis in Izotope RX Advanced of dithered and non-dithered bounces, which shows no sign of automatic or hidden dither being applied to 24 bit bounces in LPX. All I see is truncation in both 24 bit and 16 bit bounces when no dither is applied.

 

We earlier concluded that Logic (originally back in version 8, I think) was applying auto dither. This was based on tests that showed an unexpected (but small) increase in peak level and spectral analysis that showed information which ought to have been truncated.

 

However, I now believe that we drew a hasty conclusion. The weird level change was real, but it was likely some kind of low order bit error in Logic Pro. I believe we saw the same behavior in Pro Tools at the time.

Link to comment
Share on other sites

  • 1 year later...

Allow me to bump this thread for maybe more recent info. Dither has been popping up in some well known gear forums, and Motown legend Bob Olhsson is an ardent defender of dithering to 24 bits.

 

Is there a way to measure if the latest version of Logic applies dither to the I/O plugin and the main Output (monitoring path)? At these two points, 64-bit float (10.3!) is being either truncated or dithered to 24-bit fixed.

Link to comment
Share on other sites

There is a bitscope plugin you can insert to see what bit depth is being utilized in real-time, called bitter, free download from, http://www.stillwellaudio.com/plugins/bitter/

 

if you start out with a 24bit audio file, and have no active plugins, then during playback, bitter will show you the bit depth is 24 bits everywhere in the mixer (see attached screenshot, No_active_plugin.png).   Or with no plugins active then the mixer signal path should be a straight pass thru where the output = input.

 

But once you activate a plugin in the mixer, then bitter will show you the bit depth after the active plugin has changed - in this case starting from a 24 bit depth - to what looks like 32 bit.  This example shows just taking Logic Pro's EQ out of bypass mode - w/o applying any EQ (see attached screenshot Active_plugin.png).

 

You can always make your last plugin one that sets the bit depth to whatever you like, e.g., 16, 24 bit,  and also apply some dither there if the plugin supports it.   I would hope that if Logic detects that the output is already 24 or 16 bit fixed, then it is not going to subsequently do anything to the audio (like apply dither again), while playing back/monitoring in real-time.

 

I sometimes thought real-time playback of audio in Logic did not sound the same as the results from offline bounce.  I was correct, but not for the reasons I expected.  After capturing the audio output from real-time playback, and comparing it with the audio files created by the bounce, I found glitches in the audio recorded from real-time playback aligned with wherever there was a high density of automation events in the mix.  The glitches/garbage was at a low level, but measurable.  I filed it as a bug, and I believe Apple notified me it had been fixed.

No_active_plugin.thumb.png.573d31fc099512769520f0f83115a1bf.png

Active_plugin.thumb.png.d4949a7132ab90a8480e507a4b73b22e.png

Link to comment
Share on other sites

Thanks @zplane! So the only way to measure if Logic dithers or truncates the outputs (and I/O plugin) would be to somehow send audio to another host that has the bitscope plugin on it. AFAIK Logic could even be outputting 32-bit float and letting the interface deal with it right?

 

I know that my RME interface explicitly states that it truncates to 24-bit.

 

We're still in the dark about this. For me it comes down to a coin toss between the lesser evil: possible truncation distortion or definite dither noise. Both inaudible to me, by the way!

Link to comment
Share on other sites

  • 7 months later...
I've done some further testing with the Bitter bitscope plugin, placing it in menuBUS (and also repeated the test using Loopback+Hosting AU). Logic outputs 32-bit audio and lets the interface deal with it. This seems to me the "correct" way to behave, instead of truncating or dithering the audio.
Link to comment
Share on other sites

Ah the maniacs... invite them for a smoke break outside the studio. Start a discussion comparing the harmonic distortion of the Studer A800 vs the Otari MTR100 and how you find the wow and flutter to be smoother on the Otari vs the Studer. Nearly immediately excuse yourself, pretending an urging natural need for the bathroom, but instead go back to work in the studio using whatever digital equipment they have, while letting them talk amongst themselves outside. ;)

 

 

 

This may be the best post I have read on any forum in the last 5 years :)

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...