Using Open Audio Analyzer
docs/site/install.md ↗Install
pkg, Windows installer, tarball, AppImage and flatpak — which of them installs the plugin for you, and what each one will not do. The tablet builds come from a store instead.
Every release publishes five desktop downloads, a command-line binary and the DAW plugin on its own. Pick the one for your machine; there is nothing else to set up. The two tablet builds are the exception and come from a store — see iPadOS and Android for why there is nothing here to download.
Three of them install the plugin for you, behind a checkbox that starts ticked. If you use a DAW, those are the ones to take.
| Platform | Download | Plugin | Notes |
|---|---|---|---|
| macOS 14.2+ | Open.Audio.Analyzer-<version>-macos.pkg |
VST3 + AU | Universal — Apple silicon and Intel. |
| Windows 10 1809+ | Open.Audio.Analyzer-<version>-windows-x64.exe |
VST3 | |
| Linux | Open.Audio.Analyzer-<version>-linux-<arch>.tar.gz |
VST3 | Unpack and run ./install.sh. No root needed. |
| Linux | Open.Audio.Analyzer-<version>-<arch>.AppImage |
— | One file, no root, updates with AppImageUpdate. Application only. |
| Linux | Open.Audio.Analyzer-<version>-<arch>.flatpak |
— | Sandboxed, updates in place. Application only. |
| Any | oaa-cli-<platform>.tar.gz / .zip |
— | The command-line analyser. No Flutter runtime. |
| Any | oaa-plugin-<platform>.tar.gz / .zip |
— | The bare bundles, for installing by hand, and the only place the AAX is. See In a DAW. |
The AppImage and the flatpak cannot install a plugin, and that is a property of the formats rather than something left undone: an AppImage never installs anything, and a flatpak’s plugin would be built against the sandbox’s libraries while the DAW that has to load it runs on the host’s. If you want the plugin on Linux, take the tarball.
Releases are on the releases page.
The periods in those names are GitHub’s: the build calls the file
Open Audio Analyzer-<version>-… and GitHub replaces the spaces when it
publishes it, so a file you download is dot-separated and one you build
yourself is not. The AppImage is the exception and is built with the dots
already in its name, because its update file refers to it by name.
macOS
Open the pkg and follow it through. It opens on its customisation pane, with three rows:
| Row | Installs to | Default |
|---|---|---|
| Open Audio Analyzer | /Applications |
ticked, and cannot be unticked |
| VST3 plug-in | /Library/Audio/Plug-Ins/VST3 |
ticked |
| Audio Unit | /Library/Audio/Plug-Ins/Components |
ticked |
Untick either plug-in row if you do not want it. The application row is fixed because the plug-ins have nothing to talk to without it — they stream what they measure to the app over loopback, on the same machine.
The application and both plug-ins need macOS 14.2 or later, so there is no longer a version that can run one and not the others. Below it the installer declines rather than placing files that could not load.
The installer needs an administrator password, because /Library/Audio/Plug-Ins
is shared by every user and every DAW on the machine.
There is no uninstaller. macOS packages do not come with one. To remove everything:
sudo rm -rf "/Applications/Open Audio Analyzer.app" \
"/Library/Audio/Plug-Ins/VST3/Open Audio Analyzer.vst3" \
"/Library/Audio/Plug-Ins/Components/Open Audio Analyzer.component"
Your presets, skins and settings live in ~/Library/Application Support and are
left alone by that.
Open Audio Analyzer will ask for microphone permission the first time you choose a capture device. macOS treats any audio input as the microphone, including a loopback device carrying your DAW’s output. Declining it leaves Open Audio Analyzer with the test tone and silence, and the reason is shown rather than logged.
Open Audio Analyzer will ask for local network permission the first time you publish to a tablet, and it needs it to announce itself. Declining leaves the port open and the announcement blocked, so the desktop says it is publishing and no tablet ever lists it. A tablet given the address by hand still connects and works.
Open Audio Analyzer will ask for camera permission the first time you scan a pairing code, and only then — nothing else in the application uses a camera. The image is examined for a code and is never recorded, stored or sent anywhere. Declining leaves the other two ways of finding a host untouched, and the panel names the setting to change rather than showing a black rectangle.
Upgrading from 0.5.0 or earlier revokes every permission the application
holds, because 0.6.0 changed the bundle identifier from
dev.openaudioanalyzer.oaa to com.openaudioanalyzer.oaa, and macOS keys a
permission to the identifier rather than to the application. That is Local
Network, Microphone, Camera and — the one that fails without saying so
— System Audio Recording. Each old entry under System Settings → Privacy &
Security belongs to an application that no longer exists; allow the new one in
each. Nothing else about the upgrade needs anything: presets, skins and paired
hosts are keyed by name rather than by identifier and are all still there.
System audio is the one to check first, because it is the only one of the four whose refusal is silent — see below.
There is no Mac App Store build and there will not be one. The store requires the app sandbox, which would move your presets, skins and delivery targets into a private container you cannot open. Open Audio Analyzer is distributed directly, signed with a Developer ID and notarised.
System audio
There is nothing to install. Pick System Output from the source menu in the status bar — it is the first entry, and it is named after the output device it is metering, so you can see what you are listening to. Open Audio Analyzer measures what is being sent to that device without rerouting anything, so your audio keeps coming out of the speakers while it is being metered.
This is a Core Audio process tap rather than a driver, which is why there is no installer, no password prompt and no reboot.
Three things worth knowing:
-
macOS may ask for permission to record system audio the first time you choose it. If you decline, the tap delivers silence rather than an error, so the meters sit at the floor — which looks exactly like genuinely quiet audio. Apple designed the refusal to be undetectable, so there is no error for Open Audio Analyzer to show you.
If the meters sit at the floor with something obviously playing, look under System Settings → Privacy & Security → System Audio Recording. Two things put an application there that cannot use it: declining once (the prompt does not come back on its own), and upgrading from 0.5.0 or earlier, which changed the bundle identifier and left the old grant naming an application that no longer exists — so the list can show an “Open Audio Analyzer” that is switched on while the one you are running has never been asked about. Remove the stale entry, then choose System Output again to raise a fresh prompt.
-
It follows your output device when you change it, as long as the new one has the same sample rate and channel count. Swapping between two stereo devices at 48 kHz — speakers and headphones, say — just works. A device with a different format stops the tap instead, because the meters are built around one format and cannot be rebuilt mid-measurement; choose the source again to pick the new device up.
-
It captures every application at once, mixed as your output device receives it. There is no per-application selection.
macOS 14.2 is where the tapping API arrived, and it is also Open Audio Analyzer’s minimum, so there is no supported version where the entry is missing. The loopback route older versions needed — a Multi-Output Device in Audio MIDI Setup pairing your real output with BlackHole, or an interface with a loopback channel — still works and is still a perfectly good way to meter one specific path, but nothing requires it any more.
If you are metering a DAW, the plugin is better than any of these: it takes the buffer directly and brings the transport with it.
Windows
Run the .exe. On the Select Components page:
| Component | Installs to | Default |
|---|---|---|
| Open Audio Analyzer | C:\Program Files\Open Audio Analyzer |
ticked, and cannot be unticked |
| VST3 plug-in | C:\Program Files\Common Files\VST3 |
ticked |
The installer needs administrator rights for both of those, and it registers an uninstaller under Settings → Apps → Installed apps, which removes the plug-in too.
Windows will warn you before it runs. SmartScreen shows “Windows protected your PC”; click More info → Run anyway. Windows may also flag the download in your browser first. That is the current state of the installer and not a sign that something is wrong with the file — releases are not yet signed, and a certificate would not clear the warning immediately anyway, because SmartScreen goes by a reputation a download has to accumulate. Verify the file against the checksums on the release page if you want certainty.
Open Audio Analyzer asks for microphone permission on first use of a capture device, and Windows may also need it enabled under Settings → Privacy → Microphone for desktop apps.
For system audio, use a WASAPI loopback-capable device or a virtual cable such as VB-Audio Cable.
Linux
Tarball
The only Linux download that carries the plugin, and the one to take if you use a DAW.
tar -xzf Open.Audio.Analyzer-0.11.0-linux-x86_64.tar.gz
cd "Open Audio Analyzer-0.11.0-linux-x86_64"
./install.sh
It asks one question — whether to install the VST3 into ~/.vst3 as well —
and the default is yes. Nothing here needs root: the application goes to
~/.local/share, the desktop entry and icons to ~/.local/share, and every
DAW searches ~/.vst3 without being told to.
./install.sh --no-vst3 # application only, no question asked
./install.sh --vst3 # both, no question asked
sudo ./install.sh --system # /opt and /usr/lib/vst3, for every user
./install.sh --uninstall # removes what it installed
Piped or run from a script it takes the default rather than waiting for an answer that is never coming. The uninstaller is a copy of the same script, left next to what it installed.
AppImage
chmod +x Open.Audio.Analyzer-0.11.0-x86_64.AppImage
./Open.Audio.Analyzer-0.11.0-x86_64.AppImage
GTK 3 is expected from the host — every desktop Linux that can run a Flutter application already has it — and everything else travels inside the file. It is built on the oldest distribution the project supports, so it starts on newer ones as well.
An AppImage from any release after 0.16.0 carries update information, so AppImageUpdate, or a tool built on it, can replace it with the newest release and downloads only the parts that changed. 0.16.0 and earlier carry none: moving off one of those means downloading the new file once.
Flatpak
flatpak install --user Open.Audio.Analyzer-0.11.0-x86_64.flatpak
flatpak run com.openaudioanalyzer.oaa
The flatpak carries its own runtime, so it does not depend on the host’s libraries at all. It is granted audio, network and filesystem access — the manifest says why for each.
For system audio on either, PipeWire’s own loopback or pactl load-module module-null-sink gives you a monitor source Open Audio Analyzer can open.
iPadOS
The iPad build is the same application as the desktop one: the same canvas of meter modules, the same engine compiled in behind them, the same painters drawing them. It measures an input on the iPad itself, and it can draw another machine’s meters over the local network instead — Remote display covers how the two find each other. Neither is a cut-down version of the other.
It needs iPadOS 15 or later, which costs no device: iPadOS 13, 14 and 15 run on the same iPads — every model back to the Air 2 and the mini 4 — so if yours could run it before, it can still run it after updating.
The quickest of the three ways is the camera: on the desktop, the code button beside PUBLISH in the menu bar; on the iPad, Scan a QR code. iPadOS asks for camera permission the first time, and refusing it leaves the host list and the typed address exactly as they were.
It is free on the App Store, and there is no IPA on the releases page — which is not an oversight. An App Store signature provisions no devices, so an IPA you downloaded could not be installed on your iPad by you or by anybody else; there is no file here that would do you any good.
The store carries the build that has cleared review, and that is not always the version the desktop downloads are on. TestFlight is where a tagged release lands first — every one of them uploads a build, before Apple has looked at it — so ask on the repository if you want the newest one ahead of the store. Or build it yourself, which needs a Mac with Xcode and no credentials beyond a free Apple ID:
flutter run -d <your ipad> # `flutter devices` names it
A USB cable works as well as the network. Open Open Audio Analyzer on the
iPad and plug it into a desktop that is publishing; the iPad shows the desktop
under Over USB in ATTACH. Nothing is switched on on either side: the desktop
reaches the iPad through the same Apple service Finder syncs it with, which
macOS has built in, Linux has as usbmuxd (packaged by most distributions),
and Windows has with iTunes or the Apple Devices app. Accept Trust This
Computer on the iPad the first time. The application has to be open on the
iPad for the desktop to find it.
Android
The Android build is the same application as the desktop one — the same canvas, the same modules, the same engine compiled into it. It measures an input on the tablet itself, and it can draw another machine’s meters over the local network instead; Remote display covers how the two find each other. Neither is a cut-down version of the other.
Before 0.12.1 there was no live input on Android, because the manifest declared no
RECORD_AUDIOand Android will not open a microphone without it. Everything above it worked, which is why the platform was described here as a display rather than an analyser — it looked like a design and it was an omission.
It is distributed through Google Play, and there is no .apk on the
releases page. What a tagged release builds is an .aab, a publishing format
rather than an installable file: Play generates the download from it per device
and signs it with a key Google holds. There is nothing here you could install.
Play offers it to tablets only. It asks for a shortest screen edge of 600dp, which a 7-inch tablet is above and a handset is not, so a phone does not find the app in the store at all; an unfolded foldable is over the line and eligible. The canvas is a grid of meter modules with a scale down each side, and there is no phone-sized arrangement of that worth reading. Nothing about how the application behaves changes either way.
Every tagged release uploads a build to Play, and it is a closed test. That has two consequences worth knowing before you try to install it.
The listing is not public.
play.google.com/store/apps/details?id=com.openaudioanalyzer.oaa is not
findable by search and does not resolve for an account that is not testing it.
The opt-in link is not an invitation. A closed test grants access by list: Play only lets an account opt in if that account is already on the track’s tester list — an email list or a Google Group the developer has added. Opting in is the second step, never the first, so the link below does nothing on its own for an account nobody has added yet.
So it is two steps, in this order:
-
Ask to be added — open an issue on the repository with the Google account address you use on the tablet. It has to be that account: Play matches the tester list against the account signed in to the Play Store, not against whoever opened the link.
-
Opt in, once you have been added. Play gives the test two links and they are not interchangeable — use the one that matches what you are reading this on:
Where you are Link A browser, on any machine Opt in on the web The Android tablet itself Open it in the Play Store The Google Play badge on the front page leads to the same instructions, which is where to send anybody who asks how to get in.
Changes to a tester list can take a few hours to reach the store, so if the listing still refuses you immediately after being added, that is why.
Building it yourself needs the Android SDK and no credentials at all, and the
filter above does not apply — it is the store’s, so flutter run puts the build
on whatever device you name:
flutter run -d <your device> # `flutter devices` names it
Three permissions it asks for, and one it does not. The microphone is the
input it measures, asked for when you first choose one rather than at launch —
so a tablet that only ever mirrors another machine is never asked, and refusing
leaves whatever was playing alone. The camera is for the QR scanner in the
host picker, asked for the first time you open it; refusing leaves the host list
and the typed address exactly as they were. Multicast is an install-time
permission with no dialog, and it is what lets the tablet see a desktop
publishing on the network. NEARBY_WIFI_DEVICES is deliberately not declared:
it covers scanning and managing networks, which this application never does.
A USB cable works as well as the network, and is the thing to try when the Wi-Fi is slow. On a Mac or a Linux desktop it needs nothing switched on: while PUBLISH is on, plug the tablet in, and Android asks whether to open Open Audio Analyzer for the USB accessory — say yes, tick always if you like, and the tablet shows the desktop under Over USB in ATTACH, with Settings › Publish naming the tablet. While the cable is in, the tablet is the desktop’s accessory rather than a drive, so its files are not offered to the desktop until it is unplugged. A device is asked once each time it is plugged in.
On Windows, or with USB debugging already on, the other route still works: with
USB debugging switched on under the tablet’s Developer options and the Android
SDK’s platform tools — adb — on the desktop, in the SDK’s usual place or on
ANDROID_HOME, the desktop forwards its display port down the cable. USB
tethering works too and needs neither: a desktop found over it is listed in the
same place. Nothing new is asked for by any of them — the cable reaches the
same port the network does.
In a DAW
The plugin is a VST3 and an Audio Unit that draw nothing. They measure
the buffer your DAW gives them and stream it to the desktop application, which
displays it — so the app has to be running, and the plugin finds it by itself on
127.0.0.1:47822 whichever of the two you start first.
It has been tested in Ableton Live, Logic Pro, Cubase, FL Studio and Studio One — Logic through the Audio Unit, the others through the VST3 — and it accepts any track or bus from mono to 7.1.
There is an AAX for Pro Tools as well, in the oaa-plugin-<platform>
archive and in none of the installers. It is not yet signed for Pro Tools —
see below.
The installers above do this for you — the macOS pkg, the Windows .exe
and the Linux tarball each carry the plugin and put it where your DAW looks, so
everything in this section is the manual route. Take it if you are installing
the plugin on a machine that already has the application, or if you deliberately
took the AppImage or the flatpak.
oaa-plugin-<platform> is an archive, not an installer. Copy the bundle — the
.vst3, .component or .aaxplugin itself, not the directory holding it —
into the folder your DAW scans. On a machine that has never had a plugin
installed, that folder does not exist yet:
| Platform | VST3 | Audio Unit | AAX |
|---|---|---|---|
| macOS | ~/Library/Audio/Plug-Ins/VST3 |
~/Library/Audio/Plug-Ins/Components |
/Library/Application Support/Avid/Audio/Plug-Ins |
| Windows | %CommonProgramFiles%\VST3 |
— | %CommonProgramFiles%\Avid\Audio\Plug-Ins |
| Linux | ~/.vst3 |
— | — |
Pro Tools has no per-user plugin folder, which is why the AAX column names a machine-wide path on both platforms.
The installers use the machine-wide equivalents of those — /Library/Audio/…
on macOS, C:\Program Files\Common Files\VST3 on Windows — which every DAW
scans as well. The per-user paths above are what you can write without a
password.
# macOS
mkdir -p ~/Library/Audio/Plug-Ins/VST3 ~/Library/Audio/Plug-Ins/Components
cp -R "VST3/Open Audio Analyzer.vst3" ~/Library/Audio/Plug-Ins/VST3/
cp -R "AU/Open Audio Analyzer.component" ~/Library/Audio/Plug-Ins/Components/
xattr -dr com.apple.quarantine \
~/Library/Audio/Plug-Ins/VST3/"Open Audio Analyzer.vst3" \
~/Library/Audio/Plug-Ins/Components/"Open Audio Analyzer.component"
The xattr line is not optional on macOS. Your browser marks every file it
downloads, the mark survives being unpacked, and Gatekeeper then refuses to
load the bundle. What the refusal looks like depends on which macOS you are on,
and neither version of it names the real problem:
- macOS 15 and later put up a modal — “Apple could not verify ‘Open Audio
Analyzer.vst3’ is free of malware that may harm your Mac”, or on some
versions “will damage your computer. You should move it to the Trash” —
and there is nothing in System Settings to override it with. The “Open
Anyway” button under Privacy & Security is only ever populated for a blocked
launch. A plugin is loaded into your DAW, which is a library load, so no
button ever appears and the dialog’s only other choice is Move to Trash. The
xattrline is the only way past it. - Earlier versions fail silently instead. The plugin is simply absent from the DAW’s browser with nothing logged and no message anywhere, which is indistinguishable from having copied it to the wrong folder.
A plugin you built yourself has no flag to remove. A downloaded one needs
either the line above or a notarised bundle — a Developer ID signature alone
does not clear the flag, which is the part that surprises people. Whether a
given release is notarised depends on whether the signing credentials were
present when it was built, and xattr works either way.
None of this applies to the pkg. Files placed by an installer are not quarantined, so a plugin installed that way carries no flag to remove — which is the second reason the pkg exists.
The AAX and Pro Tools
The AAX bundle is built and is not signed, and a released Pro Tools will not
load it. This is not the quarantine flag above and xattr does not help.
An AAX plugin needs a signature from PACE’s wraptool, made against an Avid
developer account that holds a signing certificate. That is a separate thing
from the code signature every bundle in this archive already carries, and Open
Audio Analyzer does not have the certificate yet. Without it the plugin loads in
a Developer build of Pro Tools and in Avid’s own developer tools, and
nowhere else.
Pro Tools does not explain the refusal. The plugin is simply not in the insert menu — the same thing you would see if you had copied it to the wrong folder, or not copied it at all.
That is why it is in the archive and not in any installer: a ticked checkbox that installs something no DAW will show you is worse than no checkbox. When the certificate exists, the AAX will be installed the way the VST3 and the Audio Unit already are, and this section will say so.
Ableton Live also has to be told to look there — Preferences → Plug-Ins → Use VST3 Plug-In System Folders. It then appears under Open Audio Analyzer. Live rescans on launch; a plugin copied in while it is open needs a restart.
Insert it on a track, a bus or the master. Its own window is a status panel and
nothing else — the meters are in the app, and the panel says so. What it shows
is a diagram of the three places the path can break: the host’s audio, the
host’s playhead, and the socket to the app. Each run is lit when something is
travelling down it and dark when nothing is, and the socket’s dashes move while
frames are being sent, so a link that has quietly stopped does not look like one
that is working. Under it, the sample rate and channel count the host is giving
it, how long it has been measuring, the integrated loudness, and one line naming
whatever is wrong. Several inserts can be connected at once, and each is a row in
the app’s source picker — DAW plugin — Logic Pro, beside the test tone and the
machine’s own inputs. The first one to connect selects itself, because inserting
it is the act of choosing it; after that the source is whatever you last chose,
so a plugin left in a session no longer stands between you and your interface.
Choosing a DAW releases the capture device, and the selection is remembered
between launches.
The host’s transport comes across with the audio, so the app’s status bar reads back the DAW’s position, tempo and time signature, and relays them to an attached tablet.
The command-line analyser
oaa needs no Flutter runtime and nothing installed. It is an archive of two
files — the executable and the engine as a shared library beside it — and the
executable finds the library by its own location, so keep them together and
link to the executable rather than copying it out:
tar -xzf oaa-cli-Linux.tar.gz -C ~/.local/opt/oaa
sudo ln -s ~/.local/opt/oaa/bin/oaa /usr/local/bin/oaa
It is the same measurement code the application runs. See Analysing files.
Where Open Audio Analyzer keeps your configuration
Settings, presets, delivery targets and skins are plain JSON, one file each, in a directory you can read, edit, copy between machines and put in a repository:
| Platform | Directory |
|---|---|
| macOS | ~/Library/Application Support/Open Audio Analyzer |
| Windows | %APPDATA%\Open Audio Analyzer |
| Linux | $XDG_CONFIG_HOME/oaa, or ~/.config/oaa |
| iPadOS | Library/Application Support/Open Audio Analyzer inside the app’s own container |
| Android | oaa inside the app’s own files directory |
The two tablets are the exception to “a directory you can read”: both systems
give an app a private directory, so the files are on the device but not
reachable from a file manager or from a desktop. Settings → Session prints the
path. Android’s comes from getFilesDir(), because nothing in an Android
process names a directory it is allowed to write to, and it is removed with the
app.
Two overrides, in order of precedence:
oaa --config-dir /path/to/config # or the application, via --config-dir
export OAA_CONFIG_DIR=/path/to/config
The flag wins over the variable, and the variable wins over the convention. On
macOS the flag is the one that works for a .app: passing an environment
variable means launching the binary inside the bundle, and a bare binary launch
changes how macOS attributes the microphone request — so the variable and
device capture cannot be used in the same run.
open -a "/Applications/Open Audio Analyzer.app" --args --config-dir=/path/to/config
Uninstalling
Open Audio Analyzer writes nothing outside the configuration directory above. Delete the application, delete that directory, and nothing of it remains.