Under The Microscope

An Audio Hijack Pro Update and Status Report

Audio Hijack Pro IconFirst up, we’ve got a small but important update to Audio Hijack Pro today, which fixes a handful of small bugs. That update is available now from the Audio Hijack Pro page, and it’s free for all current Audio Hijack Pro users of course. Get it by downloading from our site, or just select “Check for Update” in the Audio Hijack Pro menu inside the app.

With this update, we also realized that Audio Hijack Pro had just celebrated its tenth birthday. First released on March 3rd, 2003, the app remains incredibly popular, gaining thousands of new users each year. Today’s release marks the 59th release of Audio Hijack Pro, and it’s still going strong. Given the many changes over the years, it’s useful to give a quick overview on where things stand with the app.

Realtime Audio Capture

Audio Hijack Pro’s most basic functionality is its ability to capture audio coming from other applications (as well as audio devices, of course). Audio Hijack Pro has always been able to capture audio on a per-application level. This is definitely the preferred way to capture audio, as it means beeps and blips from other applications won’t ruin a recording. Just select your desired source application and click Record, and Audio Hijack Pro will capture and record that app’s audio.

Alternatively, using the System Audio source, you can capture all audio currently playing on your Mac. Recording from System Audio requires the installation of the Instant On extra, but once you’ve got that installed, you’ll be able to grab everything into one file.

Audio Hijack Pro can start capturing audio from other applications and devices right out of the box, with no installer required. It simply needs to launch the application from which you wish to capture audio (or re-launch it, if it’s already open). This same technology is used in our simplified recorder Piezo, which is sold via the Mac App Store.

Audio Hijack Pro IconFor additional functionality, the application will offer to install our Instant On extra. This extra works to improve audio capture for Audio Hijack Pro, as well as Airfoil and Nicecast, and it’s in use on tens of thousands of Macs around the world. With Instant On installed, Audio Hijack Pro can capture audio from running applications without needing to relaunch them (very handy!). Instant On also makes it possible to record System Audio, as mentioned above.

Worth mentioning, Instant On no longer uses the long-deprecated Application Enhancer (APE) framework. In order to make grabbing audio as robust as possible, we’ve developed our own dedicated audio capture system in-house, one which relies on no private system APIs.

OS Support

The current version of Audio Hijack Pro supports Mac OS X 10.6 – Mac OS X 10.8 (all the way up to the current 10.8.3, of course). We also provide Legacy versions of our software, for users on older OSes. We’re committed to keeping our software working for you even as Apple releases new updates. We strive to have support for new versions of Mac OS X as soon as humanly possible.

Future Plans

How about the future? Over Audio Hijack Pro’s dozens of releases, we’ve added great new features and functionality. However, it’s been some time since the app has had a truly major new version. As you’ve likely seen, our audio editor Fission hit version 2 last year, followed by a substantial version 2.1 released a couple months later.

The recent updates to Fission are great, but they’re also making it clear that Audio Hijack Pro should get some love as well. Fear not, as we’ve got a lot of plans for the future of Audio Hijack Pro and audio recording on the Mac. We’ve been hard at work implementing these ideas, and should have exciting Audio Hijack Pro-related news to share in the near future.

A screenshot.

More to Come

Closing

For now though, just be sure to grab the latest update right from our site and enjoy! Keep your eyes on this site, as well as our Twitter feed, for more news soon.

Piezo 1.2.2 Adds Full Retina Support

Piezo IconOur charmingly simple audio recorder Piezo has just received its first update in quite some time. This update takes care of some minutia, including correcting a very rare crash, as well as signing the application for Apple’s Developer ID program, the last of our paid apps to need this update. More importantly, however, it now offers full Retina support.

Piezo's Retina UIPiezo’s new Retina UI (scaled down slightly to fit!)

Piezo marks our second app with full Retina support, along with our audio editor Fission. While we’ve made small Retina-related improvements in our other apps, we don’t yet have full Retina support in Airfoil, Audio Hijack Pro, or Nicecast. That’s likely to come in their next major updates (versions 5, 3, and 2, respectively), which are still in the planning stages. Stay tuned though – as more machines, and more users gain Retina quality visuals, we’ll certainly want to be there!

For now, you can get version 1.2.2 from the Piezo page, or via the Mac App Store. It’s a free update, so be sure to grab it now.

Airfoil for Windows 3.4 Brings Improved Audio Capture

Airfoil for Windows IconIt’s been a few months since Airfoil for Windows last saw an update, but we’ve been hard at work on refining its underpinnings. Our audio streamer is more popular than ever, so improving things behind the scenes is definitely a worthwhile investment. Today, we’re happy to unveil Airfoil for Windows 3.4, the latest and greatest way to stream audio from Windows all around your house. To download the newest version (it’s a free update), just head over to the Airfoil for Windows page. To learn more about the technical details of this update, read on.

A Major Update to Instant On

After much effort and testing, the latest version of Airfoil for Windows now includes a major update to Instant On, the built-in component to capture audio seamlessly. When Airfoil was first unveiled, its ability to capture audio usually required the quitting and re-opening of your source app. To work around the need for that cumbersome relaunching, we created Instant On, a technology to allow Airfoil to grab audio from applications instantly. While this worked well, there are some applications that don’t produce audio at all, others that don’t produce audio you’d want to capture, and some which just don’t work properly when Instant On is running.

With our latest update, Instant On now affects only a curated whitelist of audio applications. This list contains the most common applications our customers use with Airfoil for Windows, including Foobar 2000, Spotify, Chrome, Firefox, and more. You can view and edit the Application List at any time in Airfoil’s Preferences window. Any applications on this list won’t need to be re-launched when Airfoil captures audio from them.

Instant On's Application List

Airfoil’s Instant On Whitelist

When you attempt to intercept audio from a running application that isn’t yet on the approved list, Airfoil will offer to add it to the list, so future relaunches won’t be necessary.

Of course, Instant On is still entirely optional, just as before. For the best experience, we definitely recommend activating it. To do so, just click the “Enable Instant On” checkbox in Airfoil Preferences window:

Airfoil's Preferences

With Instant On, the need for Airfoil to relaunch running applications to capture their audio vanishes, and things work as smoothly as possible. Best of all, with the new whitelist, issues that were once rare will disappear completely.

And More

This update also marks the first release where Airfoil is fully scriptable, allowing for control by other applications. For more details on scripting Airfoil, see this link. As usual, this update also includes has a handful of small improvements and fixes, and we always recommend using the latest version. So update your copy of Airfoil for Windows now!

Scripting Airfoil for Windows 3.4 (And Up)

Developers have often asked for the ability to interface with Airfoil for Windows via some kind of scripting interface. There was very limited support for this in version 2.x of Airfoil for Windows, but there was always more we wanted to do with it.

Now in Airfoil for Windows 3.4 we have full out-of-process COM scripting support, which should allow 3rd party apps in just about any language (any language that supports COM that is), to interact with and control Airfoil for Windows.

For example, suppose you wanted to get a list of all recent sources using Windows JScript:


var airfoilApp = WScript.CreateObject("RogueAmoeba.Airfoil");

var recentSources = airfoilApp.GetRecentSources();
for(var i = 0; i < recentSources.Count(); i++)
{
	var audioSource = recentSources.Item(i);
	WScript.Echo("Recent source " + i + " is " + audioSource.Name());
}

Or maybe you'd like to see if a certain application is running, and if it is, tell Airfoil for Windows to start intercepting its audio:


var airfoilApp = WScript.CreateObject("RogueAmoeba.Airfoil");

var runningSources = airfoilApp.GetRunningSources();
for(var i = 0; i < runningSources.Count(); i++)
{
	var audioSource = runningSources.Item(i);
	WScript.Echo("Running source " + i + " is " + audioSource.Name());
	
	// The Id() method returns the full path to the source, so 
	// we have to look at just the ending.
	if(endsWith(audioSource.Id().toLowerCase(),"firefox.exe"))
	{
		airfoilApp.SetCurrentSource(audioSource);
	}
}

function endsWith(str, suffix) 
{
    return str.indexOf(suffix, str.length - suffix.length) !== -1;
}

Interfacing with and controlling remote speakers is just as easy. This script enumerates the list of remote speakers that Airfoil for Windows can see, adjusts their volume, and then connects to any speaker that isn't currently connected:


var airfoilApp = WScript.CreateObject("RogueAmoeba.Airfoil");
var speakerCollection = airfoilApp.GetSpeakers();

for (var i = 0; i < speakerCollection.Count(); i++)
{
	var speaker = speakerCollection.Item(i);
	WScript.Echo("Speaker " + i + " is " + speaker.Name() + "\n");
	
	// Set the volume to half and connect if it isn't already connected
	speaker.SetVolume(0.5);
	if(!speaker.Connected())
	{
		speaker.Connect();
	}
}

Finally, you can also request to be notified of various events, including when source metadata changes:


var airfoilApp = WScript.CreateObject("RogueAmoeba.Airfoil", "AirfoilApp_");
var metadataProvider = airfoilApp.GetCurrentMetadata(); 

function AirfoilApp_OnMetadataChanged()
{
	WScript.Echo("Metadata Was Changed.");
	if(metadataProvider.ProvidesTrackMetadata())
	{
		WScript.Echo("Current track: " + metadataProvider.Title());
	}
}

There is plenty of other functionality provided by the scripting interface which isn't shown in the above examples. You can find the complete documentation of the API here:

Airfoil for Windows API Documentation and Examples

If you create a script or application to control Airfoil, be sure to let us know!

Macworld Follow-Up

As detailed last week, I had a busy opening Thursday at Macworld/iWorld. The trivia event was a blast, but you really had to be there for that one. The second panel, hosted by Lex Friedman, was packed to the gills. Unfortunately, it was not recorded for later viewing. I did have several great discussions with some of our customers after the panel wrapped up — thanks for stopping by!

The very first panel I did (“A Word from the Developers”), alongside Dan Moren, Guy English, and Rob Rhyne, did get recorded (almost all of it, anyway). You can see a short clip on “saying no” right here, and check out a link to the full talk as well. We discussed many of the challenges facing aspiring and nascent app developers, with Rob and Guy sounding intelligent and me along for the ride.

As usual, I had a great time at a very busy show, with both the expo and conference portions being well-attended and having lots to offer. I continue to recommend attending Macworld/iWorld to anyone who’s interested – the iFan pass is a particularly good deal, especially when purchased early.