Due to restrictions of the virtualization solution we use (VMware vSphere), which is primarily aimed for high performance server virtualization, where sound outputs are pretty useless, there’s no built in audio output on the Mac stacks.
This doesn’t cause any issue in most cases, but some projects or tools might actually require an audio output. For example QuickTime refuses to play any video when there’s no audio output of any kind.
The solution is fortunately pretty simple, you can simply add a virtual audio output device if you need it. There are a few options to do this, probably the easiest is to install soundflower, which is a tool used for manipulating / piping audio between different tools, and it installs and uses a virtual (actually two) audio output to achieve the functionality.
As the virtual audio drivers are installed as part of the soundflower installation, all you have to do is add a Script step to your workflow, any point before you’d use the audio output (can be the very first step of the workflow), with the following content:
#!/bin/bash
set -ex
brew install Caskroom/cask/soundflower
That’s all. When brew installs soundflower it’ll also install two virtual audio devices, and macOS will recognize these as normal audio output (and input) devices.
Thanks, great tip - this really helped us as we are building audio applications for iOS
Another tool that we needed to get our tests running is switchaudio-osx
brew install switchaudio-osx
This allows you to choose which soundflower input/output device you want to use as the default soundflower device seemed to be 64ch which is incompatible with our applications
Could this be why my audio playback tests fail on Bitrise? I play an audio and check to see that the current time progresses for 5 seconds, and that I consider to be a successful playback. Under Bitrise the playback tests all fail. Under Xcode testing, they all succeed. I’m looking for why testing audio playback is failing on Bitrise.