Thursday, 26 November 2015

BitPerfect 3.0.1 Released

v3.0.1 is a maintenance update, and provides mostly bug fixes. As always, this update is free to all existing BitPerfect users.

Thursday, 15 October 2015

Mavericks Woes

It appears there is a fundamental problem with BitPerfect v3 if you are using OS X 10.9.5 (Mavericks), and possibly also with Mountain Lion.  It appears that Mavericks is preventing BitPerfect from communicating with iTunes (apparently iTunes thinks BitPerfect does not have the necessary permissions to communicate with it).  We do not yet know why this is happening, but have a workaround under development that we could hopefully push out quite soon if it proves to be effective.

In the meantime, if you are able to use Time Machine to revert back to v2.0.2 of BitPerfect this would be your best course of action.

Adventures with The Captain

I have been running El Capitan for quite some time now and I have never encountered a single blip, even when running the various pre-release betas (plus the final released version) of BitPerfect v3.  None of our beta testers have reported any significant issues either.  Now, I’d be either a hopeless optimist or a fool if I thought that meant there would be no issues when the released version hits our 30,000+ user base.  And so it has proved.  There are some strange things happening with El Capitan.

First of all, it is clear that “strange things” are not afflicting everybody.  Far from it.  But as I try to track these problems down I am finding that some factors are cropping up regularly.

First of all, as best as I can tell, when you install El Capitan it comes with the latest and greatest version of iTunes as a default.  So if you upgrade OS X to El Capitan, you are going to have iTunes upgraded to (as of the time of typing this) whether you want to or not.  This means that many BitPerfect users are making simultaneous changes to both OS X and iTunes, usually a harbinger of adventures to come.

Another El Capitan oddity is that when BitPerfect pops open a Finder Window, it provides that window with a title, indicating what the purpose of the window is.  Unfortunately, El Capitan does not seem to want to display that information, so those windows can be quite confusing if and when they appear.

A third aspect of El Capitan appears to be that if you have remote folders that you mount during login (such as the music folders on your NAS), there are indications that these folders are being mounted later on in the login process than they were under previous versions of OS X.  This can cause problems in cases where BitPerfect is set to launch automatically during login.  BitPerfect may attempt to read the mounted folder during its launch process, and when it finds that the folder is not mounted there can be problems.  If you think you may be encountering this type of problem, e-mail me on the BitPerfect Support line.

Anyway, depending on what versions of OS X and iTunes you were running before the upgrade, and maybe the weather too, an upgrade to El Capitan will either go smoothly for BitPerfect or will leave you with problems.  I thought, therefore, that I might post an El Cap upgrade procedure that you could consider following, that would avoid most of the issues that I am at least aware of.  Here is what to do:

  1. If you have set up BitPerfect so that it starts automatically upon login, uncheck this setting.  We don’t want it to start up automatically for the time being.
  2. Now perform the El Capitan upgrade.
  3. When you have satisfied yourself that El Capitan is installed and working properly, launch iTunes.  In particular, make sure that if you have any external folders that contain music files, these have been successfully mounted and you can navigate to them in Finder.
  4. Open the iTunes Preferences Window.  In the Advanced tab, make sure the checkbox “Share iTunes Library XML with other applications” is checked.  This is important.  While you’re there, make a note of the location of your iTunes Media Folder.  You’ll need it later.  This will normally be something like “Users/MyUserName/Music/iTunes/iTunes Media”.  Your iTunes Folder location is the bit that precedes “/iTunes Media”.  Close the Preferences window.
  5. When you have satisfied yourself that iTunes is working properly, quit it.  Don’t just click on its red button, select “Quit iTunes” from the iTunes menu bar.  This is important.  FYI, you may notice that with this version of iTunes you will often see a dialog box appear during the quit process, saying “Saving iTunes Library”.
  6. Now launch BitPerfect.  One of the mysterious Finder Windows will open without anything to tell you what it is looking for.  What it wants is for you to navigate to your iTunes Folder.  This is the folder I mentioned in step 4 above.  In the example above, that folder would be “Users/MyUserName/Music/iTunes”.  Navigate to that folder and click on “Open”.  If the finder window doesn’t appear then you are probably one of the lucky ones that wouldn’t have had a problem in the first place.
  7. Now launch iTunes.  Wait for it to fully launch.
  8. In BitPerfect’s menu bar drop-down menu select “Change Music Directory”.  BitPerfect should spend a few seconds thinking about that, and then pop up an information box telling you that your music directory has been updated.  Press OK.
  9. If required, now is the time to re-set the setting you changed in section 1.
  10. Quit both BitPerfect and iTunes.  You are now ready to go.

If, after doing all that, you still encounter problems, please e-mail me on the BitPerfect Support Line.

Saturday, 3 October 2015

BitPerfect v3 Released

BitPerfect v3 includes our new Generation-IV audio engine, plus some substantial improvements to the way we communicate with iTunes.  And we have re-instated support for Sound Check.  Additional features include:
    •    Fixed bugs which affected certain multi-channel DACs.
    •    Audio Output Device selection from the drop-down menu.
    •    Menu bar icon color now indicates the playback sample rate.
    •    Support for OS X ‘Dark Mode’.
    •    Improved automatic detection of Access Permissions.
    •    Visible confirmation of Integer Mode playback.

BitPerfect v3 is a free upgrade for all existing BitPerfect customers.

Friday, 25 September 2015


Our warmest congratulations go out to Channel Classics, one of our favourite record labels, on being recognized with Gramophone's "Label of the Year, 2015" award.  Channel Classics are making some of the best classical recordings on the market, not only in terms of absolutely impeccable audio quality, but also from the perspective of artistic merit.

Well done to Jared Sacks and his team!

Monday, 21 September 2015

Odd iTunes 12.3 Bug

Here’s something for you to consider checking out.

If you have a headless Mac Mini with no monitor attached, and you have downloaded the latest iTunes, try this. Click on the orange ‘minimize’ button at the top left. Your Mac will immediately jump to the UI Login Screen. I have reported this to Apple vie the official bug channel, but thus far no response.

Wednesday, 9 September 2015

Sound Check

iTunes has a feature called sound check, which scans all of the tracks in your music library and determines a level of volume adjustment that can be applied to each track so that they play back at a more or less comparable volume.  BitPerfect used to support sound check, but along the way iTunes changed the way in which they implemented it internally and so we dropped support for it.  Over the last few updates to iTunes, however, the sound check feature has remained pretty much stable and unchanged, so we decided maybe it is time to implement it again in BitPerfect.

Nobody is quite sure how sophisticated the algorithm is with which iTunes determines the amount of volume adjustment to be applied by sound check.  But I wouldn’t be betting my house on it being anything beyond something relatively crude.  For sure, the net effect of enabling sound check is to populate a metadata tag which shows up in the “Get Info…” dialog window under the “File” tab.  This number is basically tells you how much volume adjustment is applied to the track by iTunes in order to “normalize” is playback volume.

These numbers can be negative, in which case the track will be attenuated for playback, or positive in which case gain needs to be applied.  If the volume number is 0dB it appears that this “Volume” tag stays blank.  Of course attenuation is not a problem, but if we apply gain then we have to be aware of the possibility that the loudest parts of the track may be clipped.  Quite how this is handled in iTunes is not clear.  It is likely that iTunes uses a crude soft-clipping algorithm.  I have previously posted on what I think about that.  BitPerfect does not go in for crude anything.

The biggest problem with clipping, soft or otherwise, is the creation of aliased harmonics.  The best approach is therefore to upsample as far as you can before soft clipping so that the aliases will lie predominantly outside of the audio bandwidth and then down-sample, using the anti-aliasing filter to eliminate the aliases.  All in all a rather hefty processing loop for something that at the end of the day is still going to introduce very significant distortions.  I suppose this is something we might introduce in the future as a specialist plug-in if the demand is there.

What used to happen was that iTunes wrote the volume adjustment information into each file’s metadata.  BitPerfect could then read this value when playing back the file.  However, for some reason, iTunes made a change to that system.  Now, it only writes that information into some files and not others.  Those that get this data written to them include MP3 and AAC formats, while those that don’t include Apple Lossless.  I have no idea who it was in Apple that decided this was a GOOD IDEA.  Since Apple Lossless files represent the vast majority of files listened to by BitPerfect users, it means that we cannot support sound check using this method.  I suppose the argument is that you shouldn’t be using sound check if you’re listening to Apple Lossless music, and maybe particularly not if you are listening via BitPerfect, but that’s a little bit too Orwellian for me.

The other way to get this information is by interrogating the iTunes Library Framework, one of the many inter-process communication protocols that Apple provides, none of which work very well.  We have been down this road before with Apple.  The way it works is that when BitPerfect loads it asks iTunes for an iTunes Library Framework Object.  Sounds simple enough.  However, last time we tried this we found that on some systems when BitPerfect tries to load the Framework Object, iTunes refuses to respond.  We could never figure out what it was about a system that made iTunes behave that way.  At that time, the reason we tried using the Framework Object was to manage the Access Permissions scan to improve the scanning speed.  Consequently, since Access Permissions are a necessity, we were forced to drop that method entirely.

But now we are looking at it again as a possible way to re-introduce support for sound check.  And we’re finding that the old problem is still there.  On one of our three main test platforms we cannot get iTunes to deliver the Framework Object to BitPerfect.  On the others it is not a problem at all.  If the Framework Object is delivered to BitPerfect then it can support sound check, but if it is not then it has no way to access the sound check values.

We are wondering what to do about that in the short term.  We have a new update to BitPerfect that we want to release soon.  Do we release it with sound check support knowing that for some people - and we have no way of knowing how many - it isn’t going to work?  Or do we not release without sound check support?

I’m thinking we’ll release it with the problematic sound check support.  For those who are unaffected by the problem they will have access to the sound check function.  For those who encounter the problem the sound check function won’t work, but it would be no different to if we hadn’t included it in the first place.  Some feedback from concerned users would be welcome :)