Under The Microscope

Farrago Fools

I imagine that most geek parents have used the old “talking computer” trick on their kids at some point.


You can’t argue with machine learning.

I’ve used it enough that whenever my children hear any robotic voice coming from a device, they completely ignore the voice and search the house for me instead.1

Rather than resorting to my usual April Fool’s Day joke2, I decided to up the ante a bit this year. Inspired by one mischievous user, I decided to prank my kids with Rogue Amoeba’s newest app Farrago. Ultimately, I wound up using three of our apps for this prank, a record the marketing department wants me to tell you to try and break.

The Setup

To start, I downloaded a clip from Studio Ghibli’s “The Secret World of Arrietty”. This movie is about a family of tiny people who secretly live in a house of ordinary humans, sneaking around the house and scavenging from them while they sleep.

I then used our audio editor Fission to divide the clip up into segments containing various sound effects (such as footsteps, climbing noises, etc.), as well as dialogue parts. I saved those out, so I had over a dozen different sounds.


Isolating clips in Fission.

Once I had my individual files, I loaded them into Farrago for playback. Next, I configured Airfoil to capture Farrago’s audio to Airfoil Satellite running on my phone.


Do you hear footsteps?

The Delivery

I first tried this on the girls. While saying goodnight, I secretly slipped the phone under one of their beds. Then I snuck back downstairs and began playing audio in Farrago. After a few minutes of no response, I wondered if something had gone wrong. When I went back upstairs to check, I discovered they hadn’t heard anything. Apparently, the volume was low enough that it couldn’t be heard over the noise of their fan.

Undaunted, I explained the prank to them and recruited them to help me try it out on the boys. I repeated the same setup with the phone, making sure the volume was turned up, then snuck back to the girl’s room where we started playing clips.

The boys responded immediately, searching under their bed to find the source of the “footsteps” and talking. Once they found it they ran into the girls’ room, where we were all laughing a bit too loudly to be stealthy.

Next Time

If I were to do this again next year, aside from making sure the volume was turned up on the phone, I’d come up with a way to hide the phone better. Even better would be hiding multiple devices in the same room and alternating transmitting between them.

Hopefully, this prank will last longer than the talking computer trick.


Footnotes:

  1. I’m not sure how this will affect their odds of survival in the event of a robot uprising. ↩︎

  2. Wherein I hold a dollop of ketchup in my hand and pretend to cut myself while slicing an apple at the breakfast table. This trick honestly worked for about seven years straight. ↩︎

AirPlay Volume Bug: Goto Mute

Earlier today, we shipped an update to our home audio streamer Airfoil for Mac. The just-released version 5.7.3 works around a bug introduced by Apple in tvOS 11.3. This bug is likely to affect not just Airfoil users, but anyone who sends AirPlay audio to their Apple TV, so a summary of Apple’s bug may be helpful.

In short, for Apple TV receiving audio via AirPlay, volume handling is broken on tvOS 11.3. When the sender has its volume set to zero, audio will still be heard from the Apple TV. You can try it yourself by setting the iTunes volume slider to the far left, as seen below. Send audio to an Apple TV running tvOS 11.3, and you’ll still hear audio leaking out of the AppleTV. This issue occurs with any source sending to the device, including Apple’s iTunes and iOS, as well as previous versions of our own Airfoil.


The sending volume in iTunes is at 0, but audio will still be heard.

A little background on AirPlay volume control helps explain what’s occurring. To eliminate slider latency, AirPlay audio has its volume set on the receiving end (here, that’s the Apple TV). To do this, the sender (here, iTunes) provides the volume level using a special SET_PARAMETER volume command. As a result, adjusting the volume slider in iTunes immediately changes the remote volume, with no lag.

That volume command allows a value range of 0 dB for full volume down to -30 dB for full reduction. However, a -30 dB reduction is often not enough to mute very loud audio, so there’s also a special value to force full muting. When audio should be fully muted, a sender tells the receiver to set volume to -144 dB. The receiver then knows it should not play any audio at all.

With the tvOS 11.3 update, this mute special case is now kicking in at -145 dB, instead of -144 dB. Though it’s impossible to be certain without actually seeing Apple’s source code, this is very likely to be an off-by-one bug. Specifically, it seems that a less-than-or-equal sign got changed to a less-than.

The previous code would have looked something like this:

if $volume <= -144

    mute();

While the updated code would look like this:

if $volume < -144

    mute();

This one small change leads to a very unexpected result for users. We expect Apple will correct this bug in a future tvOS update, but until they do, iTunes and iOS sending won’t properly mute audio to the Apple TV devices.

For our part, once we understood the problem, we could update Airfoil for Mac to work around it. Be sure update to Airfoil for Mac 5.7.3, which will correctly mute audio for all versions of tvOS (Airfoil for Windows users, watch for an update coming soon as well).

Licensing Rogue Amoeba’s Audio Capture Technology

Over the years, we’ve received numerous requests from other businesses looking to license our audio capturing technology. Until now, we always declined these offers, preferring to focus on improving both the technology and our own applications which use it.

Recently, however, we revisited the possibility of licensing. Our audio capture code has been continuously improved for over a decade, and it’s now incredibly reliable. This technology is used by tens of thousands of our users every day, in Airfoil, Audio Hijack, Loopback, and Piezo. We’re tremendously confident in what we’ve built.

Because of this, we’re now pleased to announce licensing opportunities for our audio capture technology, ACE.1 ACE makes it possible for Mac apps to capture audio from one or more individual processes, as well as all audio from the entire system at once. The same power which drives some of our biggest apps is now available to outside developers as well.

If you develop an application which could benefit from audio capture2, please see our new licensing page, then get in touch!


Footnotes:

  1. ACE has had multiple names over the years, starting with “Instant Hijack” and then “Instant On”. This newest name is intended to better convey the many uses of our licensable framework. ↩︎

  2. Examples include apps dedicated to screen sharing, VNC/remote access, game streaming, and more. ↩︎

We Just Can’t Shake Him

Recently, a familiar face returned to Rogue Amoeba, and not for the first time. We’re glad to announce that our old friend Lee Falin is back on the team once again.

Lee has followed a rather roundabout career path over the past decade. He first joined us in late 2008 to work as a support technician, and a couple years later transitioned into the role of part-time Windows dev. He eventually took on full-time development of Airfoil for Windows for several years. However, he also spent some doing academic research and teaching as a university professor, but soon discovered that academia was not an ideal place for teaching about software development. During that time, Lee often worked part-time here, but even when he left fully, he still wound up doing contract work for us on iOS and Android.

Now, Lee’s returning to us in a full-time role. He’ll be focusing on Mac development, while likely also assisting on work on other platforms, and we’re delighted to have him back. His varied talents are a great asset, and we can’t wait to unveil the new updates he’ll help us create.

Stream to Chromecast with the Latest Airfoil for Windows!

Today, we’re pleased to be shipping a public preview of Airfoil for Windows version 5.5. This long-awaited update makes it possible to stream any audio from Windows to the Google Chromecast as well as other Google Cast devices, like the Google Home third party Cast-enabled players! After many, many months of work1, we’re very glad to be able to provide Chromecast support in this free update for all Airfoil 5 users.

Apple HomePod Support Too

This update also includes full compatibility with Apple’s new HomePod hardware. With the newest releases of Airfoil for Windows and Airfoil for Mac, it’s easy to stream any audio from your computer to the HomePod, via AirPlay. Just open up the Airfoil for Windows 5.5 Public Preview or Airfoil for Mac 5.7, and start rocking with your new HomePod!

Why A Public Preview?

This update is working well, but we still have some kinks to work out before we’ll be fully satisfied. Folks have been waiting for this for quite some time, so rather than wait until everything is perfect, we want to offer the functionality immediately. This update has been reviewed both internally and by a large number of outside testers, and we’re confident it will work as expected for the vast majority of our users.

If you’re eager to stream audio to Chromecasts or other Google Cast devices, we encourage you to download this preview right from the Airfoil for Windows page.

Known Issues

There are several issues we’re still working on, which will impact a subset of users. The following items need not be reported:

  • Lack of sync between Chromecasts – When streaming to multiple Chromecasts, audio is not kept in sync between the devices.

  • Lack of sync between a Chromecast and other devices – When streaming to a Chromecast and an AirPlay or Bluetooth device, audio is not kept in sync between the devices.

  • Sub-optimal metadata updating – When transmitting audio from supported sources, Airfoil passes along album artwork and track metadata to devices like the Apple TV, as well as our own Airfoil Satellite. At present, this data does not always update as expected.

We’re working on these issues, so there’s no need to report them. Do let us know of other issues you come across though.

More to Come

We plan to follow this Public Preview release with additional updates to improve compatibility and functionality. For now, we encourage you to give the Airfoil for Windows 5.5 Public Preview a try, then let us know how it works for you.


Footnotes:

  1. We originally hoped to ship this in early 2017, an estimate which proved overly optimistic. Previous posts have detailed some of the delays we hit, which included an urgent and time-consuming fix for Apple TV support, as well as staffing changes. We’re definitely not happy with how long it’s taken us to get here, but we are glad to finally be providing this functionality. ↩︎

Our Software