Local Continuous Integration Setup With Git Post-Commit Hook Script

I have lots unit tests, but I don’t have a Continuous Integration server setup, and I sometimes forget my tests are there.

I know. Bad me. I was up late last night getting some failing unit tests to pass again, after forgetting I even had unit tests. Ugh. This would have been much easier if I knew I’d broken a test when I broke it; as it was, I had to go back and try to remember what I was working on when they broke!

So, to stop that happening in the future, I fiddled around with my local repository and whipped up a script that automatically runs tests in the background, on a separate temporary cloned version of the repository.

If build or tests fail, I get a nice little Notification Center message which I can click to see a report and build log. Then I can fix it and amend the commit as necessary.

It’s a script that’s invoked by a Post-Commit git hook, and it’s run in the background using nohup so it doesn’t make me wait and mess with my workflow. It just all happens transparently in the background.

Here’s how I did it.

Read More »

Tagged , , | Comments closed

Four common mistakes in audio development

This is a discussion of four common mistakes that audio developers make, how to do better, and how to detect whether there’s a problem. It’s written primarily for developers, but should be accessible to non-developers too. I introduce Realtime Watchdog, a diagnostic tool for developers, and provide a brief survey of popular audio libraries.

Making audio apps is enormous fun — it’s rewarding, there’s huge scope for creativity, and then when you’re done, other people use it to be creative too! There aren’t many fields that are like that, and I consider myself very fortunate to be able to work in this area.

But there’s also a serious side to working with audio. As audio developers we have a responsibility to our users to, basically, not embarrass them in public. A DJ whose equipment emits an ear-piercing crunch mid set will not thank us (well, it depends on the club. Maybe they will?). Nor will a performer whose backing drum machine clicks and crunches distractingly, throwing the performance. Same goes for in private — if the user just nailed a take, only to discover that there’s a giant click in the middle of the recording, they’re going to be cursing our name.

Now we’re living in a post-Audiobus/IAA world, where our users’ setups often span multiple apps, one bad actor can mess everything up, and it’s often impossible to tell from where the problem originates.

Imagine if Loopy HD had glitched in the middle of that?

The audio engineer on The Tonight Show told me the main reason that they chose Loopy for the segment above was because he had been a Loopy user for years, and it has always been solid and reliable.

Even if there’s just a one-in-ten-thousand chance that an app will glitch during a typical session, well, that’s one glitch a day if your app sees ten thousand sessions per day, which is not uncommon. Two glitches a day if it has twenty thousand sessions a day. And I’ll bet most music apps have a higher glitch rate than that.

It can take just one glitch during a live performance for a musician to completely lose faith in their whole setup. The one thing they cannot troubleshoot in their setup is their apps, because it’s an opaque system. And so every app they’re using is indicted. They’ll stop using all of them. It’s an angry Facebook post to all of their musician friends waiting to happen; the exact opposite of what anyone reading this would want.

So, it’s this duty of care that we audio developers have that I want to focus on in this article, because our music apps have to be solid and reliable. All of the time. Read More »

Tagged , , , , | Comments closed

If you’re interested in the technical details around how music apps get made, this is an excellent talk by music technologist Greg Cerveny on creating music apps. He’s interviewed a bunch of developers (including the developers of Patterning, Fugue Machine, Elastic Drums, and me) about their process and their background, and these are the results. Worth a watch!

Tagged , , | Comments closed

Loopy just got some social skills

Still got some love for Loopy! I’ve just released Version 1.6, which (uh, finally!) adds support for the iOS share sheet, bringing support for Facebook sharing, AirDrop, Messages, Mail, Dropbox, and opening in any compatible app.

Should make it a bit easier to get your creations out of Loopy and into the world.

Now back to working on Masterpiece Edition. Will have some stuff to show off soon.


Tagged , , , , | Comments closed

The Amazing Audio Engine 2 Sample App demo

Here’s a demo of the TAAE2 sample app – full source code with The Amazing Audio Engine 2.

Tagged , , , , | Comments closed

Presenting The Amazing Audio Engine 2

Presenting The Amazing Audio Engine 2: a new audio engine for Core Audio. In this video I introduce the main concepts, and walk through creating a simple demo app that plays a loop with effects, mixed together with audio input, with recording capabilities.

Find TAAE 2 at, or on GitHub.

Tagged , , , | Comments closed

I’ve been spending some time with renowned live-looper and all round cool dude Dub Fx, talking about Loopy Masterpiece and future projects. Along the way, we made an awesome App Preview video for Loopy on the App Store. Here’s something else we shot at the same time.

Tagged , , , | Comments closed

Loopy update and the launch of Ableton Link!

Loopy’s been updated!

First of all: Reverb. Loopy now has reverb FX, which you can tweak in Settings. Think of it as a very modest little preview of things to come in Loopy Masterpiece Edition.

But the most exciting thing is that the update introduces support for Ableton Link which has launched today and – I kid you not – it’s going to change the way people make music and play together.

Ableton Link is a new technology that lets you play in time with multiple iOS apps and iOS devices, and multiple instances of Ableton Live music software over a wireless network. If you’ve used MIDI sync before, you get the general idea, but this is a totally different animal, and is simply effortless to use. The Link team have done a fantastic job.

Here’s Jakob Haq describing how it works in combination with Audiobus:

You can see the other Audiobus-compatible apps that support Link over on the Audiobus Compatible Apps Directory; subscribe to the email list there to be notified as new Link-compatible apps arrive.

As for Loopy: you can grab the update in the usual place, on the App Store. If you don’t yet own a copy, it’s 25% off right now, too. The same goes for Audiobus!

Tagged , , | Comments closed