The No.1 Website for Pro Audio
 Search This Thread  Search This Forum  Search Reviews  Search Gear Database  Search Gear for sale  Search Gearslutz Go Advanced
Good dither practices, what are yours? Dynamics Plugins
Old 27th January 2017
  #211
Lives for gear
 
Arksun's Avatar
Quote:
Originally Posted by chrisj View Post
The plugins do just that. CoreAudio has you do this:
const Float32 *inSourceP, // The audio sample input buffer.
Float32 *inDestP, // The audio sample output buffer.
UInt32 inSamplesToProcess, // The number of samples in the input buffer.
UInt32 inNumChannels, // The number of input channels. This is always equal to 1
// because there is always one kernel object instantiated
// per channel of audio.

VST offers a 'doubleReplacing' mode where you can run a 64-bit buss. CoreAudio doesn't do that.
Oops, I stand corrected regarding CoreAudio, assumed it was just the API to the interface and not the plugins themselves, thanks!

Quote:
Originally Posted by chrisj View Post
I'm going to respectfully contradict you completely regarding 32-bit float not needing dither, and I'm not suggesting, I'm stating it loud and clear.
Are you sure? because if anything you seem to be agreeing with me when you write this:


Quote:
Originally Posted by chrisj View Post
32 bit float will generate truncation artifacts UP TO about half (a quarter?) the amplitude of 24 bit fixed point, at sample amplitudes using the highest loudnesses before clipping. As amplitudes decrease, the exponent kicks in, and the truncation artifacts get progressively quieter: they're always a factor of how loud that sample is, so they quickly drop down to insignificance, but it's surprisingly close to 24 bit fixed at the loudest samples.
Exactly, at 24-bit the truncation is already down to much lower than DA noisefloor , with 32-bit float its much lower still and with lower amplitude signals the distortion is again way lower. This is how most people work producing a track with lower level signals. It becomes insignificant. If 'technical correctness' was important to that low a level, no-one would ever use plugins at all!


Quote:
Originally Posted by chrisj View Post
Amusingly, if you count clipped samples, you can get truncation artifacts WAY louder than even 16 bit truncation. If you take a sample that's sufficiently above clipping, and don't scale it, the truncation could be louder than the entire audio range: equivalent to one bit audio. Of course, once you scale it all down again then your artifacts are scaled down too, and become quieter than 24 bit fixed again
Except the vast majority of producers dont work in their DAW with the individual channels all massively going into the red, so its a mute point.

Quote:
Originally Posted by chrisj View Post
I do think you have to dither 24 bit correctly if you intend to pass muster with EVERY possible listener. People hear in very different ways, and some have full-tilt-bozo amazing playback systems and a willingness to conduct extended listening. We don't see either of those things in typical blind testing scenarios: in fact blind testing outright denies extended listening as a matter of course.
Yeah I think we'll just have to agree to disagree on that one, the distortion is soo ridiculously low below not only noisefloor of the converter but especially ambient noise of mic recordings of instruments that I seriously doubt even a super healthy 30 year old listening in the best mastering room on the planet could pick out the mix that was exported to 24-bit without dither over the one that was.

If there was ever an opportunity to test this in person and the person could reliably pick out the 24bit dithered version each time then I'd happily change my mind. Sadly this can't be done over the internet of course as there's no way to check the person is only listening and not just looking at frequency analysis plot and picking the one without the super low distortion artifacts.
Old 27th January 2017
  #212
Motown legend
 
Bob Olhsson's Avatar
 

Quote:
Originally Posted by chrisj;
I do think you have to dither 24 bit correctly if you intend to pass muster with EVERY possible listener. People hear in very different ways, and some have full-tilt-bozo amazing playback systems and a willingness to conduct extended listening. We don't see either of those things in typical blind testing scenarios: in fact blind testing outright denies extended listening as a matter of course.
REAL blind testing doesn't deny extended listening, just audio hobbyist blind listening tests. This is why they generally produce random results.
Old 28th January 2017
  #213
Gear Maniac
 
Yuri Korzunov's Avatar
 

Quote:
Originally Posted by Bob Olhsson View Post
REAL blind testing doesn't deny extended listening, just audio hobbyist blind listening tests. This is why they generally produce random results.
Statistical tests (including blind ear test) begins minimal from hundred tests for proper results. It is not for home.
Old 28th January 2017
  #214
Motown legend
 
Bob Olhsson's Avatar
 

Quote:
Originally Posted by Yuri Korzunov View Post
Statistical tests (including blind ear test) begins minimal from hundred tests for proper results. It is not for home.
Indeed but that's expensive!

In most cases hobbyist testing has been used to "prove" cheap designs are already "perfect." In reality our hearing "depth of field" is so narrow that we need to stumble across problems. Once we've learned an artifact, we'll notice it every time. It's interesting that people having hearing damage can more easily spot problems because their missing frequency bands can't mask as well as those of us who have better hearing. This is probably a lot of why taking a conservative approach to engineering and signal processing often works out best.
Old 28th January 2017
  #215
Gear Maniac
 
Yuri Korzunov's Avatar
 

Quote:
Originally Posted by Bob Olhsson View Post
It's interesting that people having hearing damage can more easily spot problems because their missing frequency bands can't mask as well as those of us who have better hearing.
It is interesting, I don't known about the phenomenon before.

In the ear tests may be many details.

As example, in one test liteners sat at several rows. Different points of sound field for each listener may cause different results. Even for absolutelly identical ears.
Old 28th January 2017
  #216
Motown legend
 
Bob Olhsson's Avatar
 

Quote:
Originally Posted by Yuri Korzunov View Post
It is interesting, I don't known about the phenomenon before.

In the ear tests may be many details.

As example, in one test liteners sat at several rows. Different points of sound field for each listener may cause different results. Even for absolutelly identical ears.
Jim Johnston told me that after I told him about a guitar shredder client who had spotted a bug in the new version of the dither I was using for his master. I ran some tests and sure enough, there it was.

If you are an IEEE member, you can read Jim's papers along with the ones in German by his former intern who developed MP3. I'm told they go deep into the nuts and bolts of the listening tests that turned out to be required in order to develop lossy audio encoding. I've never done this since I don't speak German and it's pretty expensive for just an observer like me.
Old 28th January 2017
  #217
Lives for gear
 

Quote:
Originally Posted by Bob Olhsson View Post
Jim Johnston told me that after I told him about a guitar shredder client who had spotted a bug in the new version of the dither I was using for his master. I ran some tests and sure enough, there it was.

If you are an IEEE member, you can read Jim's papers along with the ones in German by his former intern who developed MP3. I'm told they go deep into the nuts and bolts of the listening tests that turned out to be required in order to develop lossy audio encoding. I've never done this since I don't speak German and it's pretty expensive for just an observer like me.
do you attribute this to the guitar 'shredder' having hearing damage, or to the possibility that players might use their ears differently than non-players?
Old 28th January 2017
  #218
Motown legend
 
Bob Olhsson's Avatar
 

He absolutely has hearing damage. He thinks it's mostly from cymbals right next to his ears. That said, players tend to get overly hung up in things like pitch. Like I said above, we can only study little chunks of the audio. If something changes, we often know something changed but it's a real treasure hunt to find exactly what changed. Then you add in the complication of expectation bias and it's a miracle audio ever improves!
Old 28th January 2017
  #219
Airwindows
 
chrisj's Avatar
Quote:
Originally Posted by Bob Olhsson View Post
He absolutely has hearing damage. He thinks it's mostly from cymbals right next to his ears. That said, players tend to get overly hung up in things like pitch. Like I said above, we can only study little chunks of the audio. If something changes, we often know something changed but it's a real treasure hunt to find exactly what changed. Then you add in the complication of expectation bias and it's a miracle audio ever improves!
It improves when we trust that there are golden eared people who can hear whatever we do… and when we commit to doing no harm, and also doing the best we can

Granted, there's a limit to how far to take that. But still.
Old 29th January 2017
  #220
Motown legend
 
Bob Olhsson's Avatar
 

Quote:
Originally Posted by chrisj View Post
It improves when we trust that there are golden eared people who can hear whatever we do… and when we commit to doing no harm, and also doing the best we can

Granted, there's a limit to how far to take that. But still.
I certainly don't have as "golden ears" as my guitarist friend did! I have a particular set of experiences combined with having been a fly on the wall in the '80s when Jim Johnston was explaining all of this stuff to us in his rec.audio newsgroup. Then the joint got overrun by AOL, JJ's lab at AT&T closed and he disappeared into the non-disclosure caverns of Microsoft for a decade. I only saw him at a few AES conventions.

We now like to call him Darth Fader because he worked for both the "evil phone company" and the "evil Microsoft."
Old 29th January 2017
  #221
Airwindows
 
chrisj's Avatar
Yeah… one of the proudest moments I can remember, is getting into a 'dither and sample rate' argument not so long ago in which JJ was present, and having him be more or less on the same page as me. Mind you, I'm happy to entertain wilder notions too, but that was a good day.

My own 'golden eared guitarist' experience was in fact with Mixerman. (for a while there he was enthusiastic about maybe branding some of my stuff Mixerman-brand and splitting the take: he's got his favorites, NOT always the recentest versions of the plugs which is a darn good wake-up call for a dev)

He was using some interface, and there was a noise that was driving him insane and the company was stonewalling him, so he turned to me and provided the 'horribly ruined' mixes as evidence.

Sounded absolutely fine to me, no matter what I did. Great mixes, too.

I picked some lulls in the music, cranked up the sound, still couldn't hear it, and used the old program 'Amadeus' by Martin Hairer to do a sonogram of the audio. And there it was, plain as day: an obvious artifact at 11.025K exactly, very subtle but if you saw it depicted as a spectrum analysis over time there was no mistaking the little artifact making a faint, perceptible line. It proved conclusively that something was happening, and I know from some of Mixerman's preferences in plugins that he has bionic hearing around 10K (I had a compressor he liked, turns out it had great ability to not generate issues around 10K: the original Pressure, now free VST)

I still couldn't hear the problem, even over stripped Sennheiser HD600 headphones driven directly by a Lavry Black. But then I just have silver or possibly bronze ears. Not golden

I care about doing stuff right for people who can hear a lot better than me. The variation is amazing in people, it really is. And to my mind it's also a conclusive repudiation of statistical double blind tests as the only path to truth. Because I think, just possibly, Mixerman would not have been able to pass an ABX with high confidence, over that tiny 11.025K artifact, and this is important to consider.

It was extended listening that tipped him off, something niggled at him, and then he couldn't unhear it and it got worse and worse until he turned to me for some kind of help, thinking it'd be just as obvious to me. I never could hear it, even fugitively. I doubt he'd have been able to pick it out 10 out of 10, and demonstrate its presence with statistical confidence.

But that had nothing to do with it. The artifact was there. I measured it with a computer and metering of an unusual sort, incontrovertibly. And it was exactly what he'd complained of, whether or not he could pick it out every time. Sometimes it's not a matter of opinion.
Old 29th January 2017
  #222
Motown legend
 
Bob Olhsson's Avatar
 

Once you learn an artifact it's hell. People forget that Edison's cylinder phonograph actually passed blind tests.

In my case, every now and then I hear a grainy high-end and loss of space. When I call the mixer, it invariably was bounced down without 24 bit dither. I've never once been wrong in almost 30 years. Now I have no doubt I've not heard that problem with a lot of truncated 24 bit mixes but re-bouncing with dither has always solved the problem.
Old 29th January 2017
  #223
Lives for gear
 
Tommy-boy's Avatar
 

Quote:
Originally Posted by Deleted User View Post
Reading this is making my head spin. Many well articulated and differing points of view.

Can someone answer these questions for me?

I am using Cubase. Currently, the project setup is configured to create 24-bit files. I can easily reset it to create 32-bit files.

As we know, it works (internally) at 32-bit FP.

Since my 2-buss goes through two virtual outputs (via my UAD Apollo) into Wavelab, which is creating a 32-bit file, should I:
1/ need to dither the output of Cubase
2/ change to 32-bit files, or
3/ not worry about dithering until I go to 16-bit in the master?

There is no analog anywhere in this chain, except for the A/D (going in to Cubase): no hardware inserts or processing. It's completely ITB.

Final question: is there an advantage to letting Cubase just create a 32-bit output file, rather than playing the 2-buss feed into Wavelab in realtime?
Id like to know the answers to this as well.

Tom
Old 29th January 2017
  #224
Deleted User
Guest
Quote:
Originally Posted by Tommy-boy View Post
Id like to know the answers to this as well.

Tom
Reading through this thread, particularly Bob Olhsson's posts, I have concluded that my best option is to dither at the last point in each of my groups.

Since my 2-buss feeds Wavelab internally, I'm less sure about dithering there, but I do have it in place.

When I bring them in and out of the chain, I do hear a positive difference with them in. I can say that placing the plug on the monitoring output yields very audible results.

I had hoped someone would have responded to my original post. In the absence of that, I have done my best to make some sense of it and come up with a conservative application based on what I understand and my ears tell me.

Of course, I'm probably all wet.

I think it pays to experiment and listen. Your context may differ substantially from mine.

Last edited by Deleted User; 29th January 2017 at 11:17 PM..
Old 30th January 2017
  #225
Gear Addict
 
Night Stalker's Avatar
 

Excellent thread. Thanks for starting it Karloff70.
Every time I have a grasp of the info provided, there is a new post that makes me think twice hence my question below that I didn't want to post initially.

My scenario:
Apogee symphony mkii
Dangerous 2buss+
Logic
Various outboard comps and eqs
All the goody plugs.
Most projects using 48k 24bit but that could change to a higher sample rate in some projects.

Q:
1. Some tracks will be bounced internally with plugins to commit and save CPU.
Some tracks will be sent to outboard and printed with outboard gear back into logic.
The final mix process will be summed with the dangerous 2buss+ with selected tracks using more outboard and plugins. Finally printed back into logic as the final 2trk master. (Pre mastering).

So:
1. Is dither applied to tracks when bouncing with plugins even if the fader is unchanged. The plugins may alter the gain structure slightly.
2. Same q for tracks that are printed back into daw with outboard.
3. What about the 16 outs summed out of the apogee feeding the dangerous final 2trk capture mix. Should there be dither applied to all the 16 stereo/mono outs.
The project will be using the original sample rate and bit depth when capturing the 2trk.


Should the answer be yes to all of the above?

Thanks to you all.
Old 30th January 2017
  #226
Airwindows
 
chrisj's Avatar
Outs get dither unless they are unaltered captures, played back at unity gain with only nonlinear editing (which is always a possibility with outboard mixing!)

Bouncing with plugins, it depends whether your 'freeze' or bounce uses 24 bit files. If you're making 24 bit fixed point files, and you processed the audio (never mind the fader) then it gets dither.

You don't dither coming in, you dither going out
Old 30th January 2017
  #227
Motown legend
 
Bob Olhsson's Avatar
 

Quote:
Originally Posted by chrisj View Post
Outs get dither unless they are unaltered captures, played back at unity gain with only nonlinear editing (which is always a possibility with outboard mixing!)

Bouncing with plugins, it depends whether your 'freeze' or bounce uses 24 bit files. If you're making 24 bit fixed point files, and you processed the audio (never mind the fader) then it gets dither.

You don't dither coming in, you dither going out
Very well put! Modern A to D converters actually dither out.
Old 30th January 2017
  #228
Airwindows
 
chrisj's Avatar
In, you mean? Like 'delta-sigma, capture at a superhigh rate, decimate down to what's desired and dither as part of that Analog to Digital process'?

By the time YOU see it, you can't dither it, but the converter certainly could as part of its processing
Old 30th January 2017
  #229
Motown legend
 
Bob Olhsson's Avatar
 

Delta Sigma or conventional. We are always talking about storage/streaming sample rates and not actual sampling or playback rates under the hood in the converters which are generally at least 4x higher.
Old 31st January 2017
  #230
Gear Addict
 
Night Stalker's Avatar
 

[QUOTE=chrisj;12413546]Outs get dither unless they are unaltered captures, played back at unity gain with only nonlinear editing (which is always a possibility with outboard mixing!)

thanks Chrisj for the reply.
Old 31st January 2017
  #231
Gear Head
 

Quote:
Originally Posted by Audiop View Post
Only with the first two instances of added noise you get +3dB, as explained earlier. After that the noise gain decreases significantly for each "pass".

Also it's a bit simpified (possibly erroneous) I think to say that truncation distortion increase with 6dB for every instance of truncation.
hi all,
I think a couple of things are being mixed up also. Every bit that is truncated reduces the SNR by about 6 dB. The noise added by dither depends on the specific dither, but the typical TPDF dither adds about 4.5 dB of noise. Of course, this is on top of the decrease in SNR added by reducing the number of bits. In other words, if a signal is reduced by 1 bit using only truncation, the decrease in SNR is 6 dB. If the signal is reduced by 1 bit using dither then truncation, the decrease in SNR is 6+4.5 dB, or about 10.5dB. As mentioned, we take the hit on SNR because it may sound better.
Old 31st January 2017
  #232
Lives for gear
 

Not sure I follow you but it's true that adding one bit to an existing word means an increase in dynamic range of 6.02dB. However going in the other direction.. reducing level can obviously be done in much smaller steps by changing the state of the less significant bits.

Let's say you have a 16bit dithered file with a 0dBFS sine and reduce that level 0.5dB and add one more round of dither, then you only increase noise by approx. 3dB + reduced level of 0.5dB which means a reduction of SNR of 3.5dB.

Hope I got that right.
Old 31st January 2017
  #233
Motown legend
 
Bob Olhsson's Avatar
 

The dither prevents the loss from truncation and I understand that loss from truncation distortion can be as much as 10 dB.. It is not merely masking the distortion.
Old 1st February 2017
  #234
Gear Maniac
 
Yuri Korzunov's Avatar
 

Quote:
Originally Posted by Bob Olhsson View Post
The dither prevents the loss from truncation and I understand that loss from truncation distortion can be as much as 10 dB.. It is not merely masking the distortion.
Yes. As rule, dithering must decrease peak distortions level. But add total energy of nosie+distortions.
Old 1st February 2017
  #235
Gear Head
 

Quote:
Originally Posted by Audiop View Post
Not sure I follow you but it's true that adding one bit to an existing word means an increase in dynamic range of 6.02dB. However going in the other direction.. reducing level can obviously be done in much smaller steps by changing the state of the less significant bits.

Let's say you have a 16bit dithered file with a 0dBFS sine and reduce that level 0.5dB and add one more round of dither, then you only increase noise by approx. 3dB + reduced level of 0.5dB which means a reduction of SNR of 3.5dB.

Hope I got that right.
hi Audiop,
I was actually trying to agree with you, but the other post did not get quoted when I pressed quote.

I was talking about word length reduction, but the effect of re-dithering a signal is closer to what is being discussed here. I really like your example, not to complicated, but real enough to be useful. If I understand correctly, your example is -- take a 16bit dithered file with a sine wave, reduce it by 0.5dB using a greater number of bits to do the calculation, adding dither and finally truncating back to 16 bits.

How much noise is added by the re-dithering depends on the noise used and if it is correlated to the previous dither. Typical TPDF dither is made by adding uncorrelated uniformly distributed white noise. Specifically, two uncorrelated uniformly distributed signals are added to make TPDF. In the case of re-dithering with another round of TPDF dither, it will be another two uncorrelated uniform signals. We can also look at this as having four uncorrelated uniform signals added.

When two deterministic signals are added, the amplitude can be double, or a 6dB increase. When adding uncorrelated random signals, the increase in noise is less than 6db. Specifically, if the uncorrelated uniform white noise signals are all the same amplitude, adding one will add 3.01 db of noise, adding two will add 4.77db of noise (I wrote about 4.5 before), adding three would be 6.02 dB more noise and adding four would be 6.99dB more noise. In your example above, it is a little more complicated because the amplitude of the original dither is also reduced by 0.5dB when the signal is reduced by that amount. I calculate the total added noise would be 6.89dB in this example.

In other words, re dithering does add more noise, but it will be progressively less as more dither is added, and probably will not be an issue if the signals are 24 bit.
Old 1st February 2017
  #236
Lives for gear
 

Quote:
Originally Posted by Yuri Korzunov View Post
Yes. As rule, dithering must decrease peak distortions level. But add total energy of nosie+distortions.
Did you analyse (or simulate) the distortion residuals on a properly dithered truncation?

I never measured with large enough FFT number to se any spectral components jump up from the noise floor.

My point is that dithering is generally considered to completely remove distortion, not only lowering the level. I don't know myself.

But of course total power of "error signal" is greater, but since it's random (ie noise) and more or less below threshold of hearing, we are ok with that.
Old 2nd February 2017
  #237
Gear Maniac
 
Yuri Korzunov's Avatar
 

Quote:
Originally Posted by Audiop View Post
Did you analyse (or simulate) the distortion residuals on a properly dithered truncation?

I never measured with large enough FFT number to se any spectral components jump up from the noise floor.

My point is that dithering is generally considered to completely remove distortion, not only lowering the level. I don't know myself.

But of course total power of "error signal" is greater, but since it's random (ie noise) and more or less below threshold of hearing, we are ok with that.
I developed own dithering algorithm and I passed thru the analysis stage.

The distortions looks like "sticks" at spectrum.

When dithering is applied, energy of the "stick" is "smoothed" by frequency.

"Stick" energy is distributed in neighbour frequency positions. In the neighbour positions energy is increased.

In the "stick" position energy is decreased, because it gone to the neighbour positions.

Also energy of dithering noise is added to source noise energy.

Final picture looks like middle level is increased, but the "sticks" dissapeared.


FFT analysis is sophisticate thing that have several input parameters:
1. Lenght,
2. Window,
3. Overlaping,
4. Step,
5. Accumulation time,
etc.

Combination of these interdependent parameters give different resolution by time and frequency. There is not universal settings for all cases.

Also result depend on input frequency position relatively borders of FFT frequency points.
Old 2nd February 2017
  #238
Lives for gear
 

Thanks for response Yuri.

I am familiar with the fourier transform and its use.

My point is that if the "sticks" ie. discrete spectral distortion components can not be found after dither, it's best viewed as they ar gone, not reduced or spread to other bins in the FFT.

In my thinking, in order to say that we still have distortion after proper dithering and truncation, we need to be able to measure those distortion components.

If we can not measure those I think it makes sense to say that the distortion is gone (not only masked or burried in the noise).

The number of FFT points and sample rates I have access to does not allow me to dig deep enough in the noise floor in the FFT in order to see any "sticks" or discrete spectral components.

With a huge number of FFT points the noise in each bin can be lowered and as such, potentially expose any distortion hiding deep in the noise.. if there are any.


Hope that is more clear. :-)
Old 2nd February 2017
  #239
Lives for gear
 
Deckdaddy's Avatar
I'm still unsure how noise/distortion below what my DAC is able to output in dynamic range to my console/outboard should matter? If it's below the treshold it is not there in the signal at all? Different when summing/bouncing internally from the DAW as it could be brought up in mastering as it's still there down low in the file?
Old 2nd February 2017
  #240
Airwindows
 
chrisj's Avatar
Quote:
Originally Posted by Deckdaddy View Post
I'm still unsure how noise/distortion below what my DAC is able to output in dynamic range to my console/outboard should matter? If it's below the treshold it is not there in the signal at all? Different when summing/bouncing internally from the DAW as it could be brought up in mastering as it's still there down low in the file?
You might as well ask, 'I'm unsure how other tracks below the level of my crash cymbal should be in the mix. It's like a kind of noise, so can't I just leave the other tracks out if I'm riding on the crash cymbal hard enough?'

And the answer is 'NO if they are guitars you can't leave them out!'

I jest, but what gives you the idea a noise floor matters to sonics at all? There's lots of classic signal processing gear that's noisy. It's just another sound there in the mix. Might mask stuff but doesn't stop you from hearing. Don't let abstract conception tell you how to do a sensory perception :D

Mostly people who talk about dynamic range are trying to say something doesn't matter. This is an opinion driven by typically a whole bunch of abstract reasoning and generalization, but I'm fine with it so long as it's not further generalized to say 'this is not allowed to matter to you'

I've already talked in this thread about how a guy began to notice a fugitive sonic problem (I guarantee he didn't pick it out right away, nor did he tell me he did), got aware of it and began to get driven nuts by the problem, and then I proved with measurement that it was there even though I still couldn't hear it myself.

When people tell you 'these things can still matter', it could be true.
Topic:
Post Reply

Welcome to the Gearslutz Pro Audio Community!

Registration benefits include:
  • The ability to reply to and create new discussions
  • Access to members-only giveaways & competitions
  • Interact with VIP industry experts in our guest Q&As
  • Access to members-only sub forum discussions
  • Access to members-only Chat Room
  • Get INSTANT ACCESS to the world's best private pro audio Classifieds for only USD $20/year
  • Promote your eBay auctions and Reverb.com listings for free
  • Remove this message!
You need an account to post a reply. Create a username and password below and an account will be created and your post entered.


 
 
Slide to join now Processing…
Thread Tools
Search this Thread
Search this Thread:

Advanced Search
Forum Jump
Forum Jump