A release! Tony v1.0

Just a few days after my last post, I did finally manage to finish packaging the release of Tony v1.0. This followed a two-week blitz of fixing, tidying, arguing, etc., with the instigator of the Tony project, my colleague Matthias Mauch. We’re pretty happy about the results.

Tony is a program for pitch and note transcription of audio, mainly intended for precise and high-quality guided annotation of monophonic recordings—such as of unaccompanied singing. It has a fairly simple user interface, that we have put some care into designing for this specialised task.

Tony v1.0 on Linux

Tony v1.0 on Linux

Matthias (and several co-authors, but primarily he) wrote a conference paper about Tony which can tell you more about the motivation for and design of the program. If you’re interested, find that here.

Tony is free, open-source software and is available pre-compiled for Windows, OS/X, and Linux. See its project page for more.

Unreleased project pile-up

Several of the software projects I’ve been working on at the Centre for Digital Music are in need of a new release.

I ran some queries on the SoundSoftware code site, where much of my code lives, to find

  • projects I’m a member of that have seen some work (in the form of repository commits) more recently than have seen a file release, and
  • projects I’m a member of that haven’t seen a file release at all

These returned 28 and 100 projects respectively.

I feel I’ve been a bit lax.

These of course include things that aren’t releasable yet, never will be, or don’t need to be packaged up into releases for one reason or another, as well as projects I don’t actively participate in or am not responsible for making releases of. I eventually eliminated about half of the first list and 93% of the second one.

These are the ones that remained—things that could usefully be released and which I am generally responsible for releasing. Let’s see how many of these I can tidy up & release during the next few weeks:

Existing stuff that could do with a new release

New stuff that hasn’t been released yet

Some of these projects may still be marked private, in which case the links won’t work yet, but they are all planned for release so that should change eventually.

How to change your friend’s OS/X Yosemite system font to Arial

Apple made a lot of visual changes in release 10.10 (“Yosemite”) of Mac OS/X. One of the most obvious was to change the system font, as used throughout the desktop, from Lucida to Helvetica.



A lot of people love Helvetica, so presumably they were happy. Others were less satisfied, leading to a little rush of code and articles to help you switch the system font back to Lucida or to some other font that happens to appeal.

But these people are missing the point. The substitution you want to make is not to your own desktop, but to that of your most type-conscious Mac-using Helveticaphile friend. And it is to switch the system font from Helvetica to Arial.

Delightfully, you can do this without needing admin privileges—no password required, all you need is to get control of their keyboard for a couple of minutes.

Here’s how:

1. On your own machine, provided you are also using a Mac, install Yosemite System Font Patcher and its dependencies following the instructions in its README:

$ git clone https://github.com/dtinth/YosemiteSystemFontPatcher
$ brew install fontforge --with-python

2. Retrieve and patch the Arial font files so they report themselves as system fonts:

$ cd YosemiteSystemFontPatcher
$ cp '/Library/Fonts/Arial.ttf' '/Library/Fonts/Arial Bold.ttf' .
$ bin/patch 'System Font Regular' 'Arial.ttf'
$ bin/patch 'System Font Bold' 'Arial Bold.ttf'

3. The above should have created two new font files, in the current directory, called System Arial.ttf and System Arial Bold.ttf. Make these available somewhere you can easily retrieve them on your friend’s machine (shared in the cloud or whatnot).

4. On your friend’s machine, when you see the opportunity, retrieve the System Arial.ttf and System Arial Bold.ttf files and copy them into the $HOME/Library/Fonts directory. You must be logged in as your friend to do this, as it must be their home directory whose font library you are copying into.

And you’re done. The change will only take effect for apps started after the fonts have been installed, or globally from the next login—if you want to make it happen immediately, I’m afraid you’ll have to log your friend out.



Now, see how long it takes them to notice. For best effect, engage them in conversation about how clean and elegant Helvetica is, with reference to their own desktop.

More on the 2015 EU VAT changes

A couple of updates since my previous post:

  • HMRC held a Q&A session on Twitter about the 2015 VAT changes. Here’s a transcript. It clarifies a lot. (I like the terse style enforced by Twitter for these answers, but some are also usefully expanded on at the end of the transcript.)
  • The digital delivery company I currently use, SendOwl, posted an excellent explanation of how they understand the rule changes and what they’re going to do to support people affected by them. It’s particularly noteworthy that they are expecting to handle the 10-year customer data retention problem as well as identifying the right VAT rate for the customer’s location. I am provisionally impressed.

What am I going to do for my own little company?

I sell three sorts of things:

  1. Developer licences for software libraries.
  2. Mac apps, both through the Apple app store and as direct sales.
  3. Windows desktop apps. These are listed on the Windows 8 Store, but it only has a link; the sale is direct.

For developer licences, I could avoid the problem by switching (back) to manual fulfilment—emailing the licence instead of completing the transaction online. The HMRC Q&A made clear that this would be enough to avoid a transaction being classified as a digital one. These sales are infrequent enough and of high enough value to make the extra work acceptable.

The Mac apps sold through the Apple app store are unaffected: Apple is the vendor and handles the VAT.

The direct sales of apps are the problem. Those of Windows desktop apps are especially a problem, because at least the Mac ones are also available in the app store. I sell very few Windows desktop apps, far too few to justify the extra work. The rational thing would be to drop them.

I don’t think I’m going to do that though, because this isn’t a very rational business—as much as anything it’s driven by a feeling that I ought to keep in touch with how software is delivered in the real world, with a vague hope that this can make me a better and more pragmatic developer in general. Or less positively, by stubbornness and pique.

So instead I’m going to get the business VAT-registered, for all its pathetically tiny income, and play along.

Update: Moments after posting this, I found this article: Meeting with HMRC and Treasury. It says, among other things, “The details on how to join VAT-MOSS without losing your UK VAT threshold will be out next week. From the initial comments it sounds pretty sensible and workable.” So I may wait-and-see a little longer.

Another update: HMRC published their suggested workaround: it doesn’t look useful. It amounts to registering for VAT anyway, using the VAT MOSS system for EU trade, and filing quarterly UK returns as normal but with zero VAT listed. It is only available if you give your primary business as “digital services” when registering for VAT. This doesn’t seem much of a simplification—you still have to track EU vs non-EU transactions even if it’s only to remove some of them from the “VAT stream”. So, I’ve submitted my VAT registration and will, at least initially, try doing the full whack.

Small software businesses and the 2015 VAT regulations

From the start of 2015, whenever you sell software, licences, or other digital stuff online direct to a customer in the EU, you have to make a reliable record of where they live and then pay VAT at their country’s rate.

There is no threshold for minimum value or sale quantity, and it doesn’t matter where you’re based, only where the customer lives.

The requirements for record-keeping are quite strict, asking for two pieces of evidence about the location of each customer, to be held by the business for ten years.

This is a particularly nasty shock for vendors in the UK because until now the UK has had a high threshold for sales below which you don’t need to register to pay VAT at all. (Currently it is £81,000 per year.) Sole traders and “microbusinesses” in the UK generally haven’t bothered to register for VAT and, because the regulations previously calculated VAT from the country the vendor was based in, this sufficed for small UK-based vendors across the whole EU.

But now if you sell digital goods directly to other people or businesses elsewhere in the EU — directly, not through one of the major app or ebook stores, which handle VAT for you — you’ll need to register, and quickly.

This will be a problem for me because in my spare time I run a tiny, tiny company with a tiny, tiny turnover which sells consumer software (both direct and through app stores) and software library licences. I do my own accounting because it doesn’t bring in enough to pay an accountant. (Also I think everyone should know how to do double-entry and I wanted to learn it myself.) I like the idea of having something in hand, and I want to stay in touch with the mechanics of making and selling software, so I want to keep it going.

Having to register for VAT, figure out how to charge the correct amount for each individual country, and submit extra returns and payments for every little sale I make — it’s going to be a pain in the arse for me, and in fact I don’t even know how to get the necessary duplicate address records using the sales platform I use at the moment, but at least I’m not depending on getting it right for a living as a lot of small UK vendors of digital creative goods will be.

(The alternative, of denying all sales to customers elsewhere in the EU, also appears tricky to implement reliably.)

There are advantages of registering for VAT, principally that you can avoid or reclaim VAT paid on expenses for your company. But that also involves paperwork and, if your company is very small, the value lost to the paperwork might be more than that reclaimed.

As I write this, the government pages about VAT registration have fuck-all about the fact that the £81K VAT registration threshold will disappear in six weeks’ time for a lot of very small businesses. Did HMRC imagine that only big companies would be affected?

Miscellaneous links:

MIREX 2014 submissions

Last year, Luís Figueira and I experimentally submitted a batch of audio analysis methods, implemented in Vamp plugins developed over the past few years at the C4DM, to the Music Information Retrieval Evaluation Exchange (MIREX). I found the process interesting and wrote an article about the results.

I wasn’t sure whether to do a repeat submission this year—most of the plugins would be the same—but Simon Dixon persuaded me. The test datasets might change; it might be interesting to see whether results are consistent from one year to the next; and it’s always good to provide one more baseline for other submissions to compare themselves against. So I dusted off last year’s submission scripts, added the new Silvet note transcription plugin, and submitted them.

Here goes with the outcomes. There is also an overview poster published by MIREX. See last year’s article for more information about what the tasks consist of.

Multiple Fundamental Frequency Estimation and Tracking

The only category we didn’t submit to last year. This is the problem of deducing which notes are being played, and at what times, in music where more than one note happens at once. I submitted the Silvet plugin which is based on a method by Emmanouil Benetos that had performed well in MIREX in an earlier year.

The results for this category are divided into two parts, multiple fundamental frequency estimation and note tracking. I submitted a script only for the note tracking part. I would describe the performance of our plugin as “correct”, in that it was reliably mid-pack across the board, pretty good for piano transcription, and generally marginally better than the MIREX 2012 submission which inspired it.

This was a fairly popular category this year, and one submission in particular improved quite substantially on previous years’ results—it may be no coincidence that that submission’s abstract employs the phrase-of-the-moment deep learning.

Audio Onset Detection

The same two submissions as last year (OnsetsDS and QM Onset Detector) and exactly the same results—the test dataset is unchanged and the plugins are entirely deterministic. Last year I remarked that our methods are quite old and other submissions should improve on them over time, but this year’s top methods were actually no improvement on last year’s.

Audio Beat Tracking

Again the same two submissions as last year (BeatRoot and QM Tempo Tracker) and exactly the same results (1, 2, 3), behind the front-runners but still reasonably competitive. While the best-performing methods continue to advance, it’s clear that beat tracking is still not a solved problem.

Audio Key Detection

Last year we entered a plugin that wasn’t expected to do very well here, and it swept the field. This year everyone else seems to have dropped out, so our repeat submission was in fact the only entry! (It got the same results as last year.)

Audio Chord Estimation

This is interesting partly because our submission (Chordino) performed very well last year but the evaluation metric has since changed.

Sadly, there were only three submissions this year. Chordino still looks good in all three datasets (1, 2, 3) but it is now ranked second rather than first for all three. I’m a bit disappointed that the new leading submission seems to be lacking a descriptive abstract.

Categories we could have entered but didn’t

Audio Melody Extraction

Last year’s submission wasn’t really good enough to repeat.

Audio Downbeat Estimation

I overlooked this task, which was new this year. Otherwise I could have submitted the QM Bar and Beat Tracker plugin.

Audio Tempo Estimation, Structural Segmentation

These categories had an earlier submission deadline than the rest, and stupidly I missed it.