edit: oh yeh, and thanks for getting me distracted with this crap again Muser...
thats a pleasure.. I rely on distracting you with this crap.
otherwise the only option would be to suffer people who really don't want DAWs summing engines to sound the same, soooo much that they would be even willing to live with broken or poorly functioning DAWs just so they could say
"I told you so".
but yeah, thats what I was thinking too this morning.. that Logic must be truncating a 32bit.
as I say, on version 6 or an early 7 the 32bit freeze float files used to be able to be imported.
then it was stopped.
so this might be a clue to a broken 32bit to 24bit system translation. even with some of it's own plug ins.
or part of the engine where plug-ins are used 3rd party which leverage Logics internal translation
at any stage.. it's the only currently viable explanation I can think of. and it mildly conforms to
what David found can happen even if the 24th bit is not dithered. not meaning it's the same problem
but that not just one bit is not dithered but (every) bit is undithered.
after all, you are seeming to keep finding low frequency artifacts. and I have had similar impressions.
also, I have done a large amount of work in Logic and one thing that always seems to crop up is that
when you check the DC offset in Logic, there's always some new DC offset creeps in.
for example, it's possible (though I haven't checked) that the DC could put tension on your
speaker in one dirrection and so alter the speakers response. or bias the waveform in some
way, which has an equivalent kind of response. sometimes I have built up a DC bias in a waveform
and imported it into my Akai sampler, because I noticed a subtle sonic difference. so if that's true
then It's not just within a DAW app where something like that can effect sonic performance.
now if this is a problem in the listening condition but is somehow overcome in the bounce condition
then that could explain some of the low frequency phenomena some people seem to come to expect
when using Logic. if thats true, it doesn't take long for expectation bias to help create that feeling
even when it isn't happening.
that's basically the ballpark I'm tending to think in anyhow.
...you know, it's almost like "work" to do this stuff "correctly", so i think that really turns a lot of people off...(including me sometimes )
but on the other hand, some people do the tests and can get a null, but say "oh they null, end of story"...really, though?
i think you must also go to the other extreme and see how bad you can break the null...with minimum "effort"...
i'm going to shoot for artifacts around -90dB and we can see how that sounds...
I might have added some more info while you wrote that, so take another look.
developers will help you, but they won't want to be seen to be part of undermining the market perception of a DAW. also, anyone who uses the DAW proffesionally is hardly going to want to point to potential problems either.. so I'm afraid it will be a little of a lonely persuit. because on the other side, what you are seeing is people who secretly want their DAW to be better. so they will be only too glad if someone shows problems in a specific DAW they don't use.
I have no horse in this Race, I want the DAW I know to be better. I actually want anyones DAW to be better in fact. imo, if you don't want that your not worth talking to.
in any case, my current wheapon of choice is Renoise. but it's a very different kind of program anyhow. I will always want to use Logic for somethings. especially the Midi Environment system. but when I do Audio tasks in it, I certainly don't want any failures in performance. epsecially the listening condition.
does Reaper truncate when rendering a 32 bit mix to a 24 bit file (dither option off)?
(i see it does not for these gain changes)
in that test i did a few posts above (#27), there is no DC in the 24bit Reaper files...but there is in the Logic files.
if Reaper is truncating, it does it differently than Logic...?
confused now...i thought you had two options going from 32 bit mix > 24 bit render/bounce...truncate or dither...
i assumed all truncation was the same, i have no idea really...
Read my post again.
Reaper is rounding, Logic is truncating.
"rounding" is rounding to the nearest number
1.6 -> 2
1.4 -> 1
-1.4 -> -1
-1.6 -> -2
"truncating" simply cuts the number off at the requisite number of digits, because of the use of two's complement arithmetic, the result is this...
1.6 -> 1
1.4 -> 1
-1.4 -> -2
-1.6 -> -2
Truncation is actually the default operation when you cast a float to integer in C.
Dither is the adding of noise before you perform a truncation or round (you can use either, if you use truncation you give the dither noise a dc offset to compensate).
ok...i didn't know that's what Reaper did as opposed to truncation when rendering a file, i thought it was just for the gain changes...thanks for clarifying
i really don't have a clue about the inner workings here, but i'm trying...
i am just barely understanding your 2nd post in this thread now so i'm catching up (slowly)...
so I guess the reason why the noise floor is moving around in response to different gains in Logic is maybe due to DC offset. maybe that indicates that as the gain is lowered you get more significant truncation amount (and or) more DC offset to compensate.
if I'm interpreting this right that is.
so maybe reaper is not giving a DC offset in the condition you have it set up for. Logic doesn't I think give you a choice. so it might well be dithering and DC offsetting by design for this operation.
People tend to suggest that Logic works in 32bit float, so it makes me wonder why you get these dynamic low frequency modulation in some of these EQ tests you made. can they be stopped ? are they normal ? do they change as a function of lowering gain ?
are there circumstances where using low or high frequency shelving might help in certain conditions ? etc
I mean in normal 24bit operation here, not importing a 32bit file. I'd probably use RX for converting from 32 to 24.
post 17 says. (i'm not sure if this is true as no one seems to answer him.)
Hold on: the only time anyone needs dither is from going from 24 bits of depth to 16 bits of depth. Going from 32 bits to 24 bits does not need dither, and no one who runs any kind of mastering studio wouldn't be ignorant of that.
maybe make the same file test but at -6dB or -6.02 if possible. just to avoid and overs on import.
then switch off dither in reaper.
I don't understand how you get a 0Hz fluctuation at -192 dB on a 24bit file.
I'm going to have to switch OS and I have a half constructed post.
so I'll post it so it's not lost.
i play the 24 bit file, usually with Reaper, but it plays @ 32 bit
it's routed through SoundFlower to SignalScope...(both operating @ 32 bit)
(this is why i said i think i can refine my method a little more... this may not be "right"...i don't know for sure)
i have tried this a few different ways, and this seems to work fine for comparison purposes...
edit: i can confirm these measurements somewhat with Span in Logic or Reaper, but like i said before, the numbers on Span's graph aren't correct...i think they're like 9 dB off or something...but you usually see the DC if there is any at a greater level than the noise floor...
also...when looking at the null files in RX, you can see the residual is offset...so i know there's DC by using a few different analysis methods, but i don't have an "exact" figure really...close enough i think
edit: also, consider that a 24 bit file has -144.5 dB rms, but each individual component that makes up the dither is much less...hence they add up to the total peak/rms values...there are individual peaks from -190dB > -200dB in the dither...and they "fluctuate"
so I guess the reason why the noise floor is moving around in response to different gains in Logic is maybe due to DC offset. maybe that indicates that as the gain is lowered you get more significant truncation amount (and or) more DC offset to compensate.
if I'm interpreting this right that is.
Not quite.
DC offset isn't there to compensate for anything, it's simply a result of the fact that all the values are decreased when they are converted to integer (hint, average the values I gave in my previous post, the floats average to 0, as do the rounded ints, the truncated ints however don't)
The varying amounts of dc offset stinky is seeing are really pot luck, basically your worst case for a single conversion on a stream is that every sample is one step lower in the truncated version than in the rounded version, how much they differ depends on the content.
so maybe reaper is not giving a DC offset in the condition you have it set up for. Logic doesn't I think give you a choice. so it might well be dithering and DC offsetting by design for this operation.
post 17 says. (i'm not sure if this is true as no one seems to answer him.)
Hold on: the only time anyone needs dither is from going from 24 bits of depth to 16 bits of depth. Going from 32 bits to 24 bits does not need dither, and no one who runs any kind of mastering studio wouldn't be ignorant of that.
It's not correct, the conversion to 24 bits should strictly speaking be dithered. I wouldn't expect the difference to be audible in most cases, but it should be dithered for mathematical correctness.
Quote:
maybe make the same file test but at -6dB or -6.02 if possible. just to avoid and overs on import.
then switch off dither in reaper.
Reaper isn't dithereing the conversions that stinky posted.
maybe make the same file test but at -6dB or -6.02 if possible. just to avoid and overs on import.
did you mean for the 997 Hz file...?
i tried with a 997 Hz sine @ -6.021 dB (32 bit)
after Logic bounce i get:
997 Hz = -6.021 dB
0 Hz = -146.4 dB
(Reaper file reads -inf for 0 Hz)
for the difference file i get:
-138.5 dB pk / -141.5 dB rms
0 Hz = -146.4 dB
attached the difference file
edit: what i don't understand...i check in Wave Editor and it says DC offset is 0.000 %, i check with SoX it says DC is 0.00000...but you can clearly see there is DC when looking at the difference file or using some analyzers...
(edit: maybe these apps have accuracy problems with such low levels...?)
so then i start to wonder is this < 1 Hz but > 0 Hz frequency going on...?
i can get .1 Hz resolution on my analyzer and it still shows it as 0 Hz...
the way the EQ would make the artifacts dance in that test i did makes me think LFO...? (i know there's aliasing, etc, but it looks too rhythmic...it pumps, it doesn't just drift back and forth...)
did you mean for the 997 Hz file...?
i tried with a 997 Hz sine @ -6.021 dB
after Logic bounce i get:
997 Hz = -6.021 dB
DC = -146.4 dB
(Reaper file reads -inf for DC)
for the difference file i get:
-138.5 dB pk / -141.5 dB rms
DC = -146.4 dB
attached the difference file
edit: what i don't understand...i check in Wave Editor and it says DC offset is 0.000 %, i check with SoX it says DC is 0.00000...but you can clearly see there is DC when looking at the difference file or using some analyzers...
so then i start to wonder is this < 1 Hz but > 0 Hz frequency going on...?
i can get .1 Hz resolution on my analyzer and it still shows it as 0 Hz...
the way the EQ would make the artifacts dance in that test i did makes me think LFO...?
well I don't think I know enough about wave theory really but I'll take a probably ill informed poke at what kinds of things I think might be going on.
iZotope RX is handy because you can view any waveform as a digital representation or in the form it will come out of your DAC. but in either case you can zoom right in and see every sample. if you view it in digital form you can see that the dot handlers for changing the height of each sample is in the middle. in the true analog post DAC representation you don't see that but what you do see is how moving one single handle can have an impact on the spectral energies and shapes of the trajectory of the waveform, both before and after where you are making the edit. so the impact of a change is dependent on a whole set of complex interactions of the aspects of the waveform in general.
it's a little like having a guitar string and taking a really fine tipped tool and impeding or amplifying that one tiny point in the string. it can have impacts anywhere in the wave. when jon says it's (pot luck) I interpret that as meaning that what new properties might appear in the waveshape are sort of unpredictable.
so in one case (depending on the dithering or truncation or rounding choices in the process) you might get more low frequency energy in one process, using a certain frequency of oscillation and less using another process. e.g. truncation or rounding .. each one of those processes alters the waveform in some way. it warps the waveform slightly.. also sometimes referred to as waveform distortion.
I'm guessing that if you use a continuous tone it might build up extra oscillation depending on the frequency and how it interacts with the process of truncation or rounding. I'm guessing these would make a pure waveform less pure or slightly warped. those should (as far as I can understand it) produce new harmonics. I think this is why people tend to sometimes use a single sample impulse instead.
then I guess at the top end, you have the wall of the sampling frequency which can make the energy hit the wall and bounce back down the frequency bands. at the bottom end I guess you must have something equivalent to DC. given that it must always be a representation of some positive electrical force.
I'm certain there's far more understanding about it than my meager grasp.
but those are the terms in which I tend to think about it in any case .
well I just took your 997Hz_0dBFS_logic.wav and looked at it in a few tools.
I think I can see this low frequency information and I do think there might be some modulation going on there. stereo is probably a bad idea, especially if Logics pan law isn't set to zero, you might get some mid side beating. so just in case, mono is best.
one thing I did was match EQ it and then removed most of the tone on the inverse of the match. which Match EQ can do pretty well. then boosted it by 128dB with 4 Gains @ +24 each.
the low frequency hump from 16Hz downwards or whatever, isn't that audible even then. you seem to get accumulated noise which seems to be centered around the fundamental of the tone. so no surprises there I guess.
but what did show up are 2 pronounced clicks at the start and the end.
they conform to the starts and ends of the fade in and fade out I put on your file. you'd have to work hard to make anything in this signal interfere with anything significantly.
however, if you had some lower frequency fundamental which caused more pronounced results, you maybe wouldn't have to work so hard to make something crop up. The excersise did help me find ways to use NewgenAudio visualizers realtime spectral system better though. I could pick up some of the low frequency banding at low levels which I could see in other applications.. so that's a helpfull + for that plug-in.
don't take any notice of the db scales in the upper block.
they change when I alter the FFT window size. but that upper block tilts in time to the bands you can see in the lower clock real time spectrum analyzer.
as you change the FFT size you get different modulation speeds because of the speed of the Hz in those particular frequency bands I would presume. and so you also see wider bands in concert with slower modulations in the tilting speed of the plot in the upper window.
but it sees to conform to the pic 2 graph you have in Span.
so I think that setting in Span is not too bad.
the sharp tip on the lower image is a fade in on your fundamental and the distinct line is the energy distribution of the tone. the surrounding purple is energy much lower. could be around -120 / 130. possibly lower. probably is.
i exported 7 individual tracks from Ultrabeat* (32bit), imported them back into Logic, then bounced them out.
i then imported the 7 source tracks into Reaper and bounced them out. (24bit, no dither)
these were stereo files but nothing was panned and no gain adjustments were made. (i always have the pan laws set to 0, also...)
this is the residual (avg.) in Span...(zoom) (Logic & Reaper difference)
this was a "full spectrum" kit and had a simple bass line & saw type lead...
meaning there was plenty going on from about 40 Hz > 20 kHz, but most of what is left here is under 200 Hz...
so even with a "real world" type scenario, there's DC...and a lot more...low end junk... :(
this is just for a few tracks...do 20 or 50 like a lot of people do (+gain changes, automation, etc) and i can see some problems...(i mean hear some problems...)
sooner or later these numbers will add up...it's simple maths
*actually, 5 tracks from ultrabeat, the bass and lead were from es1
sooner or later these numbers will add up...it's simple maths
All processing deteriorates the signal, the more you do it, the more it adds up...
Now compare the numbers you're looking at to what you'd see in a single analogue stage.
If you want to avoid issues with truncating to fixed point, just don't do it, use a 32 bit project, you can convert at the end, after any mastering, with dither (and noise shaping if you like).
Something else to bear in mind, the Discrete Fourier Transform doesn't actually work quite as you might expect on anything other than repeating waves with a cycle time that matches the window time of the transfom.
To improve matters you can use various windowing functions, but they're all a compromise. So when it comes to finding out what's going on, your spectral display is not quite the razor sharp tool you may think it is.
Anyway, what this adds up to is that a simple dc offset will cause a hump in the bass frequencies on the spectral readout, but not in the actual audio.
yep jon.. I was switching between various window sizes and I checked it in RX and Nugen and another academic tool.. and a couple of tools like span. I just wanted to know that the information roughly conformed with each other. but yes, spectral tools can be misleading and over alarming because of the windowing and the color intensities.
do 20 or 50 like a lot of people do (+gain changes, automation, etc) and i can see some problems...(i mean hear some problems...)
sooner or later these numbers will add up...it's simple maths
*actually, 5 tracks from ultrabeat, the bass and lead were from es1
you mean you (can) hear some problems or you think you'll be able to ?
a lot of soft synths are really quite full range. you can get into a tight corner with them real quick. some of the more interesting synth sounds I find caused by the pulse width being turned up quite high and it being slightly modulated sometimes against another pulse width modulated waveform. till they thin each out a lot but pull against each other slightly. they sound like they have very little low end. then sometimes you can tag on a sub oscillator to thicken the low end, or you can use a very slight chorus within a limited low set of frequencies and small depth LFO. it sort of widens and re-synthesizes a new low end but with some stereo phase motion. it's also a handy way of calving out a proper space for the sound. with control over the low end. which is basically a chorus. but yeah ES1 can be pretty full on.
Ultrabeat I've never been sure about, but the quality of the samples you use can help a lot in any sample based unit. Ultrabeat is powerful and extremely useful but I've never been sure if I like the envelopes. if samples have lackluster sonic content and frequencies which are going to be a problem then I've found you can spend a lot of time dealing with sound problems, which you could use to find excellent samples instead.
point being, it might not just be a problem of working exporting 32bit and truncating to 24bit, but also properties in the sounds themselves which make it even more problematic.
but it all goes to show, how easy it is to get low frequency content build up. once you get any of that from whatever source, it's not going be easy to fix it just because we have powerful EQ tools. best policy imo is to not get the problem in the process or at the sound source in the first place.
I mean I doubt that you can just add a low frequency shelve or cut and take out that low down, low level energy in a busy mix once you have it. you might be able to in RX though but it won't be fun at all even then. a good reason to get the best signal sources, sounds and samples you can for the job your doing.
If you want to avoid issues with truncating to fixed point, just don't do it, use a 32 bit project, you can convert at the end, after any mastering, with dither (and noise shaping if you like).
truncation is not up to me (i would turn it off if i could), and it seems everything is truncated in Logic...(that's how it gets it's "sound"! )
seriously though, i don't think there is a way around this....that's the problem i see...it seems to be the most "destructive" DAW i have used...
i ditched it months ago when i started hearing problems...
the automation was the most obvious for me...first time i really used it for a project i was like "WTF?"...why is my track distorting?"
then when i found out why the track was distorting, and started looking into that, a bunch of other BS popped up in the process...and some more...and more...etc..."to infinity and beyond"
i don't have any technical background, but if you ask me, i'd say this one is "broken"...
Quote:
Originally Posted by Jon Hodgson
Now compare the numbers you're looking at to what you'd see in a single analogue stage.
the main reason i went ITB was to get away from the noise of analog...i thought that was one of the major benefits of digital audio...i guess not...
"ok, back to tape, boys!"
(ahhh...i have fun... )
edit: so i now have about -124dB of "noise" on my drum buss...i can't hear it, but my compressor can...and now it's part of the signal that gets processed...so more artifacts are generated, and so on down the line...
so, i can't hear 0.25 Hz, but (if level is high enough) i can hear what that does to audio it is mixed with when feeding a compressor, for example...
i've found IMD and amplitude modulation to be bigger problems than aliasing...
truncation is not up to me (i would turn it off if i could), and it seems everything is truncated in Logic...(that's how it gets it's "sound"! )
Stuff is being truncated because it's being saved at 24 bits, save it at 32 bit float and it doesn't need any conversion.
Quote:
seriously though, i don't think there is a way around this....that's the problem i see...it seems to be the most "destructive" DAW i have used...
What you've demonstrated here is hardly "destructive", though admitedly in their place I would do things a little differently.
1) The artifacts are very low level
2) Remove the DC offset before you do your spectral analysis, you can't hear it and it screws up the curve
3) Your source material is very clean , which means that any truncation and rounding tends to be signal correlated, the more you have going on (any acoustic recording would have broadband noise) the more things should tend to even out.
I'm loving your research, just be wary of a tendency to jump to conclusions.
Quote:
i ditched it months ago when i started hearing problems...
the automation was the most obvious for me...first time i really used it for a project i was like "WTF?"...why is my track distorting?"
I agree the automation seems to be rather more stepped that it should
Quote:
then when i found out why the track was distorting, and started looking into that, a bunch of other BS popped up in the process...and some more...and more...etc..."to infinity and beyond"
i don't have any technical background, but if you ask me, i'd say this one is "broken"...
And yet it is one of the most popular DAWs in the world, used by a great many successful professionals.
Personally I'm not fond of it, and don't get me started on the hassles various versions have given me as a plugin developer I can't remember if anything I've encountered can be clearly defined as a bug, but the developers have made some choices over the years, sometimes very odd ones, which have caused me real hassle, though they broke my plugin, they didn't mess with the audio after it came out.
If you let me have the files you were using, I may be able to give you some more insight into what is going on.
the main reason i went ITB was to get away from the noise of analog...i thought that was one of the major benefits of digital audio...i guess not...
"ok, back to tape, boys!"
(ahhh...i have fun... )
But you have got away from the noise of analogue.
No system has NO noise, it's a mathematical impossibiliy, but as I said, compare what you're looking at there to the noise in ONE stage of analogue, there is no comparison, put that signal through an amplifier so you can hear it and the noise from the amp will swamp any error, if you could hear the error in the first place since it's at the limit of audibility (depending on how loud you set your output of course, but I'm making the assumption that 0dBfs isn't set above your pain threshold).
@ Jon, glad you enjoy the show...stick around, i think it gets better...
thanks for all the help and input, both Jon and Muser, i appreciate your time and knowledge. you guys are a great help to me.
as long as Valis doesn't pop in here, i'll be all set...that dude blows my ****ing mind...i need a vacation after reading his posts... (he's not of this planet...)
anyway, i will post some more files today of some other tests i have been doing...
this was testing for the artifacts of a simple gain change on the channel strip/fader.
a value of -12dB was entered on the fader via text, and the audio was bounced to a 24 bit file (without dither).
i first used a 32 bit float source file, and then dithered it to 24 bit (in a different host than Logic) and then used that as a source.
these files have the "typical" residual i have been getting for similar tests, but there is something that strikes me as odd for this one.
what...? i don't quite know...
* i forgot to here, but i'll use mono from now on per Muser's suggestion...makes sense...
edit: here's a spectral view (linear scale) showing (1) the two processed files and (2) the difference file...
i realize the limitations of FFT analysis but this is just to show that it does detect something at 0 Hz/DC at higher levels than the noise floor for this test...
this shows up on Span as well...and checking with an oscilloscope you can see the residual's waveform is mostly (if not all) to one side...(polarity is the term...?)
this was testing for the artifacts of a simple gain change on the channel strip/fader.
a value of -12dB was entered on the fader via text, and the audio was bounced to a 24 bit file (without dither).
i first used a 32 bit float source file, and then dithered it to 24 bit (in a different host than Logic) and then used that as a source.
these files do not null, and they have the "typical" residual i have been getting for similar tests, but there is something that strikes me as odd for this one.
what...? i don't quite know...
* i forgot to here, but i'll use mono from now on per Muser's suggestion...makes sense...
Question...
why do you keep doing stuff undithered when you're using 24 bit fixed point output files?
The correct signal path is one that uses dithering when going to a lower fixed point resolution (including from 32 bit float to 24 fixed), if you don't dither then you get artifacts... small ones in the case of a 24 bit destination, it's true, but it's a given, switching it off is in effect breaking the processing yourself.
these files do not null, and they have the "typical" residual i have been getting for similar tests,
You're using different sources (one a dithered 24 bit fixed, and one a float), so why would you even think the results of processing them might null to infinity?
Anyway, if you normalize your residual, and listen to it, you have mostly noise, which is ok, but there is something periodic in there, which I'll look into more.
You're using different sources (one a dithered 24 bit fixed, and one a float), so why would you even think the results of processing them might null to infinity?
oh, i wouldn't think that...
i was just saying that i was getting the expected result, which is a non-null...(stating the obvious i guess...)
i'm not a very good writer or explainer...i'm working on this though...
i edited that out...
oh, i wouldn't think that...
i was just saying that i was getting the expected result, which is a non-null...(stating the obvious i guess...)
i'm not a very good writer or explainer...i'm working on this though...
You're actually using the wrong reference in your diffs if you want to work out what the signal processing is doing, because you're adding two different lots of artifacts together (and cancelling some out).
The most correct reference would be your original 32 bit float file, reduced by 12 dB, and output to 32 bit float. You then do any nulls with that, in 32 bit format (so you convert 24 bit fixed to float first).
That way you'll get a residual that shows the artifacts caused by theparticular chain of processing your looking at the output of.
Also, in doing a 12dB reduction and outputing to 24 bit you've effectively killed any dither that was there.
You're actually using the wrong reference in your diffs if you want to work out what the signal processing is doing, because you're adding two different lots of artifacts together (and cancelling some out).
The most correct reference would be your original 32 bit float file, reduced by 12 dB, and output to 32 bit float. You then do any nulls with that, in 32 bit format (so you convert 24 bit fixed to float first).
That way you'll get a residual that shows the artifacts caused by theparticular chain of processing your looking at the output of.
Also, in doing a 12dB reduction and outputing to 24 bit you've effectively killed any dither that was there.
ok...i will try this as well (i think i have done some like that but i could't decide the best method to find what i was looking for...)
i should start with determining the effects of a gain change by itself, with no other variables...
my original intention was to find the difference between a gain change made on a 24 bit file and a gain change made on a 32 bit float file that already has truncation artifacts from import...
i will rethink my strategies here...