Friday, 27 September 2013

Intern Opportunity

BitPerfect is looking to take on an Intern to work on one of our upcoming projects. We need somebody who can conceptualize and design user interfaces both on the Mac and on the iPad.  Programming expertise is not a requirement. The chosen candidate can work remotely from wherever they are located in the world.

Anybody interested is requested to e-mail me directly.

BitPerfect v1.0.8 Released!

BitPerfect version 1.0.8 is now available on Apple's Macintosh App Store.  It is a free upgrade for all existing BitPerfect users.  Version 1.0.8 is a maintenance release.

Version 1.0.8 fixes the looping/skipping problem that has been plaguing certain users with iTunes 11.x.


It is ready to support the new OS/X 10.9 (Mavericks) which is expected to be announced soon.

Wednesday, 25 September 2013

Not coming out

It was twenty years ago today … actually, no, it was thirty-nine years ago.    I visited my friend Paul Leech at his parents house.  We were both 19 at the time.  He invited me up to his bedroom and introduced me to something that had an instant impact, and has been an important part of my life ever since.  No, we're not coming out - that would be as much of a shock to his wife as it would be to mine!

You see, Paul kept a primitive old gramophone in his bedroom.  That way his parents did not have to listen to his records.  Paul had just bought two new LPs, and was anxious to play them for me.  I am mighty glad he did.

First up was Eric Clapton's 461 Ocean Boulevard.  In 1974, Clapton was emerging not only from a period of heroin addiction, but this album was also to mark his emergence as a solo artist.  Despite the immediate and lasting impression it made on a pair of 19 year olds, 461 was not well received by the critics of the day.  Most expressed disappointment at some level, but in general one senses that they were not ready to accept Clapton's new songwriting-based aesthetic and a more textured and phrasing based guitar style, perhaps expecting an offering more in line with his guitar hero reputation.  One of its interesting aspects is that it is mainly an album of cover versions, Clapton contributing only three tracks.  His fellow musicians were a mostly unremarkable crew, although bassist Carl Radle did appear with him in Derek and the Dominos.  Today, 461 Ocean Boulevard is more broadly accepted as a masterpiece. 

Those in search of a definitive digital version need to search out the Japanese SHM-SACD remastered version.  But you'll need (i) an SACD player, and (ii) somewhere between $60 and $80 burning a hole in your pocket.  The SHM-SACD is finely textured, dynamic, and beautifully captures Carl Radle's deepest and tastiest bass lines and Jamie Oldaker's precise, yet pounding drums.

By contrast, Supertramp's Crime of the Century is a Proggy classic, cut from the same cloth as Dark Side of the Moon.  Supertramp had been a pretty unremarkable band up until that time, with a changing line-up.  Although Breakfast in America has proven their most commercially successful album, Crime of the Century is their true Magnum Opus.  Although not constructed as a concept album, it plays that way with themes of loneliness, uncertainty, and mental instability.  It gives a good impression of being a cohesive story about the life of a young outcast.  Like the aforementioned DSOTM, Crime demands to be played at ear-splitting volume, under the influence of whatever it takes to chill you out.  Supertramp was already splitting apart at the seams when Crime was being recorded, and to this writer's ears, they came close to, but never managed to scale, the same creative peaks again.  They still tour, and are a great band to go see.

Unlike 461 Ocean Boulevard, no native high-resolution digital remaster of Crime of the Century has ever been released.  None of the CD releases are worth searching out, and your best bet is to seek out a good quality vinyl rip ('needle drop') from the nether regions of the internet.  Unless, of course, you have the wherewithal to track down and play the "Speakers Corner" 180g audiophile-grade LP.

So there you have it. Two albums which have remained near the top of my all-time favourites list for my entire adult life.  Thanks, Paul!

Friday, 20 September 2013

Dither - some Hard Data.

Some of you are apparently quite skeptical about the claims I made regarding dither - even regarding the most basic claims.  This skepticism, it seems to me, is borne mostly out of some false assumptions.  So I think this post might be useful in clearing those up. 

I have posted below (sorry, but I cannot find a way to intersperse them throughout the text) some graphs I have prepared showing a selection of Fourier Transforms I put together.  What I did was to produce some WAV files containing a 0dB pure tone at a frequency of 344Hz, and added various levels of dither.  The files are all 16-bit, 44.1kHz, standard CD resolution.  The choice of frequency is very important, and I will come back to that later.  The important point is that it was chosen to enable me to illustrate the point I am going to make with the most clarity, and not to mislead.

Skip this paragraph if technical disclosure details bore you.  At BitPerfect we have developed our own audio analyzer, which has unusually high resolution.  Unfortunately, this analyzer is not available to you, so you cannot use it to confirm my results.  Also, its graphical output is somewhat utilitarian to say the least, and does not lend itself to illustrating nice on-line posts.  The FFTs I am showing were instead created using Audacity, which is a free program you can download yourself if you are interested.  For those who want to do just that, the FFTs were done with 16,384 samples using a Blackman-Harris window function (number of terms not specified), and exported to text files for graphing in MS Excel.

The first graph is labelled "Undithered".  This, as its name suggests, is a pure tone with no dithering applied.  I want to draw your attention to two features.

First, the background noise level is down at something like -180dB.  Many of you will be wondering how a 16-bit audio file can have a background noise level so low that it would take 30-bits to encode it.  Good question.  The answer is that the file itself contains no information whatsoever at those frequencies.  The correct value for background noise level would actually be minus infinity.  What you are seeing instead is the fact that the mathematics of the FFT are done by a computer whose calculations are performed using numbers with finite precision.  The thousands of calculations that go into producing every result each carry forward a tiny rounding error which ends up being the result you see.  The background noise represents the mathematical limit of Audacity's FFT algorithm.  By comparison, BitPerfect's own analyzer has a background noise level which is 100dB lower!

Second, there are a whole bunch of spikes starting at about 1kHz, and stretching out up to 22.05kHz.  This, you might think, is not unusual.  These are the harmonics of the 344Hz base tone (the 2nd harmonic, and one or two others, are missing), and represent the harmonic distortion spectrum of the QE (Quantization Error).  It is interesting to note that the QE here comprises 100% harmonic components and no measurable un-correlated noise.  The QE can therefore be seen to be entirely a distortion-based problem.  The highest peaks are at -100dB, and most of the rest are between -100dB and -120dB.  The point has previously been made that Harmonic Distortion is more objectionable to the human ear than Noise, so I won't belabour that one.  However, this graph also lays bare the falsehood that 16-bit data encodes nothing below the -96dB level of 16-bit resolution.  For sure it cannot encode a SIGNAL at those low levels, but it certainly can encode the unwanted consequences of quantizing at the 16-bit level.

Time to expand on the carefully chosen frequency, 344Hz.  The period of a 344Hz oscillation is an integer number of samples at 44.1kHz.  128 samples to be exact.  This is chosen precisely because at such frequencies the QE does indeed totally comprise harmonic distortion.  As we move away from these frequencies it becomes more of a mix of distortion-like components plus true noise.  I could likewise choose specific frequencies which have the property that the QE comprises 100% noise and no distortion-like components.  But I have chosen a frequency that best illustrates my point, and you need to be aware that not all frequencies behave the same way.

In a moment, I will ask you to take a look at the second graph, entitled "LSB dither".  This is the exact same data, but this time with a dither signal added.  This dither is TPDF dither, with a peak-to-peak amplitude of one LSB (Least Significant Bit).  The LSB is the separation between individual quantization steps.  In other words, the magnitude of the dither is ±0.5 of one LSB, which means it is pretty much of the same magnitude as the QE itself.  Before you look at the graph, I would challenge you to ask yourself what you expect to see.  What do think it will do to the background noise level?  And what do you think it will do to the QE distortion peaks?  OK, time to take a look.

The first obvious thing is that the background noise has increased to about -125dB.  This is real now, and is no longer an artefact of the FFT algorithm.  The thoughtful ones among you will immediately ask why the noise floor is not nearer to -96dB.  After, this is roughly the magnitude of the dither signal we added in.  The answer is quite simple.  The Total Noise Power that we added may well be closer to 96dB, but that noise is spread out over all of the possible frequencies (0 - 22.05kHz).  The portion of the total dither noise found in each of the frequency bins is correspondingly lower.  Hence the -125dB noise floor.

The next thing that you will notice is that the QE distortion peaks are still visible.  This shows that this amount of dither is not enough to entirely eliminate the distortion components.  However, if you look very closely, you will see that the magnitude of the distortion peaks has gone down by a decent 10-20dB.  So our dithering has at least reduced the existing distortion, and not just masked it.  That's a pretty interesting result.  What is happening here is that the dither is so small that for many of the samples it fails to actually change the QE.  Therefore the total QE is a mixture of enough unchanged values to still encode a (reduced) amount of harmonic distortion, and some dithered values which encode noise.  The magnitude of the QE distortion peaks falls, and the noise floor rises.

Now we'll increase the amount of dither to ± one LSB.  Will that manage to completely eliminate the QE distortion peaks?  What do you think?  Please look at the graph labelled "2LSB dither".  Compared to the previous graph, the background noise level has gone up by about 3dB.  But this time all of the QE distortion peaks have been completely eliminated.  The highest peaks have been suppressed by over 20dB compared to the undithered result.

What happens if we increase the dither even further?  I have added further graphs to illustrate that.  Again, before you look, ask yourself what you expect to see.  These graphs are labelled "3LSB dither" and "4LSB dither".  If you predicted that the background noise level would go up, and the QE distortion peaks would remain totally suppressed, well done.  You have learned well, Grasshopper.

Finally, just to make life easier I have added two final summary graphs.  "Combo" superimposes all the curves onto one graph to make comparisons easier, and "Zoom Combo" zooms in on the area between 15kHz and 20kHz and shows perfectly how the 2LSB (
±1LSB) dither has completely suppressed the QE distortion peaks at the cost of very little additional noise.

That was a relatively simplistic analysis, but I think it gets the point across quite well.  Quantization Error can add distortion, and dithering can really show it the door.  It is all very clever stuff.  Just don't read anything more into it than I have tried to show you.  There are many more complexities lurking in the mathematical murk to trip up anyone who wants to use this type of data to make glib generalizations regarding the bigger picture.



Thursday, 19 September 2013

iTunes 11.1

Tunes 11.1 is apparently available for download, although it is still refusing to show up in my App Store updates list.  However, we have been using the pre-release beta for several weeks now and have encountered no new problems. I think BitPerfect users are safe to proceed with the update.

Signal-to-Noise Ratio and the Cocktail Party

I want to go over some potentially obvious stuff mainly because I want it to set the table for tomorrow's post.  You have all heard of the old chestnut where, if you focus clearly, it is often possible to pick out one individual conversation from among the hubbub of a noisy cocktail party.  There may be a hundred people all talking at the same volume.  Together, this forms the noise, and it sounds like we have a hundred times more Noise than the Signal which we are trying to extract from it.  Clearly, the Noise overwhelms the Signal.  Yet most of us have already performed this social experiment, so we know it is not that hard to do.  What, then, is going on here?

To understand this, we need to go back to the concept of noise.  What exactly is Noise, and what makes it different from Signal?  Basically, noise occurs whenever what we are observing appears to be random.  Consider a sequence of random numbers.  What makes them random is that we can discern no pattern or sequence within them, regardless of the level of analytical sophistication, whether real or hypothetical, that we can bring to bear upon them.  If any such pattern can be established, then the numbers are no longer random.  Actually, generating truly random numbers is an astonishingly challenging task, as any expert in cryptography will tell you.  In audio, if the signal - whether an analog signal or a digital representation thereof - is totally random, then it comprises totally noise.

Having said that, there are many different flavours of random.  For example, we can generate a sequence of random numbers that lie between 0 and 1.  Or between -10 and +10.  The other interesting thing is that we can generate random numbers where all the different numbers do not actually have the same chance of appearing.  But is that random, you ask?  Yes it is, and here is an experiment you can do yourself.  Toss two coins (we will assume this to be a truly random process).  Repeat this as often as you like and make a tally of the outcomes.  Two heads or two tails will each appear about a quarter of the time.  But the combination of a head and a tail will appear about half the time.  In audio, the equivalent is what we call Noise Colours.  The noise signal itself may be random, but its frequency content can have any distribution that we like.  For example, White Noise has equal components at all frequencies, whereas Pink Noise has fewer components the higher the frequency goes.

A signal at a certain frequency can only be separated from the noise if its magnitude is higher than the magnitude of the fraction of the noise which is at that frequency.  Lets go back to the cocktail party.  A hundred people are talking, all at the same volume.  But you are only interested your boss, who is talking to the company chairman.  You can hear him discussing his thoughts on the new Vice President, an appointment that everyone expects to be announced soon.  Your boss's voice is like one frequency component in an audio spectrum, where all the other peoples' voices represent other frequency components.  By concentrating only on your boss's frequency, you can tune out all the other frequencies and listen in on his conversation.  Provided, that is, his voice stays above the residual background noise at that frequency.  So, finally the boss leans forward, and lowering his voice, tells the chairman who the new Vice President will be.  But - dammit it all! - by lowering his voice, he has reduced it below the level of the residual background noise.  And you can no longer make out what he says.  But at least there is a lesson to take away.  When the signal drops below the overall noise level, it is still possible to recover it.  But when it drops below the level of that component of the noise which is at the frequency of the signal, then it is irretrievably lost.  If the signal is fainter than the noise, it simply means that what you are listening to is indistinguishable from being random.  Your only option is to change the way you measure the signal.

So how do we know what the level of the signal is at a particular frequency, and how do we know what the background noise is?  The mathematical tool we use to analyze the frequency content of a signal is the Fourier Transform.  It is called a Transform, because the original audio data is transformed into something that bears no immediately obvious resemblance to it, and yet contains all of the information necessary to enable it to be transformed back into the exact original data.  If you want to see what the math looks like, look it up on Wikipedia!  The Fourier Transform of an audio signal turns out to be a representation of the frequency content of the audio signal.  It is a mathematically exact representation.  If there is any frequency information that cannot be precisely extracted from the Fourier Transform, this is simply because that information does not actually exist in the original signal.  Conversely, if you see something in the Fourier Transform, then, whether you like it or not, that means it is also in the original signal.

Taking our noisy cocktail party analogy, we can see what is necessary for us to identify a signal within a noisy environment.  We have to strip everything away that we can identify as not being part of the bit of the signal we are interested in, and focus just on those aspects of the data that could actually be the signal.  Provided we limit our thinking to the frequency domain, we can think this through quite nicely.  Within the data, we will be able to identify the presence of a signal at a certain frequency, but only if the magnitude of the signal is higher than magnitude of all of the noise that is within a narrow band of frequencies surrounding the one we are looking for.  And we can use a Fourier Transform to see whether that is in fact the case.

It sounds like a whole load of stuff and nonsense, but tomorrow we'll look at a practical example.

Sunday, 15 September 2013

For Sale - Stello U3


THIS ITEM HAS NOW BEEN SOLD.  :)

 
We are selling our Stello U3 USB-to-SPDIF converter.  We bought it for our evaluation bench a little over 18 months ago.  We have been using the U3 whenever we evaluate a new DAC which supports a more limited range of sample rates over USB than over S/PDIF.  These days, there is no reason for anybody to do that any more.

The Stello U3 has proven itself to be at least the equal of anything similar we have evaluated at up to three times the price, and in conjunction with DAC hardware up to and including the Light Harmonic Da Vinci.  If you have a legacy DAC which is designed to give its best performance over a AES/EBU or Coaxial S/PDIF interface, you should be using a device such as the Stello U3.  The Stello connects to the Computer's USB output, and delivers the audio signal via your choice of AES/EBU or Coaxial S/PDIF.

Our U3 unit is in mint condition.  It only comes out of its box when needed for testing purposes.  We are offering it for sale in its original packaging for US$300, plus shipping.  (We are located in Montreal, Canada, so you can estimate shipping costs accordingly.)

If you are interested, please e-mail me.


Buy it new from here.

Read a review here.