A/B Audio Player

It annoyed me that there's no easy way to A/B two audio files and keep them in sync while skipping through different sections, so I rolled my own...

Select two audio files in the Finder and trigger this macro. You'll be presented with the A/B Player:

The first track will start playing right away. You can then switch between the two tracks by pressing the green button, skip backwards or forwards by 10sec using the blue buttons, and stop/start playback with the red button.

There are independent volume adjustment sliders below each player.

Keyboard controls:

Hotkey Function
ā£ Play/pause
/ A/B toggle
ā† Skip back 10sec
ā†’ Skip forward 10sec
ā†“ Reduce current player volume
ā†‘ Increase current player volume
Esc / āŒ˜ W Dismiss Prompt

Mix A-B.kmmacros (73 KB)

Macro screenshot

If, for some bizarre reason, you know someone who doesn't have Keyboard Maestro, here's a web-hosted version.


Did you plan to give us a link to it ?


Oops! Yes, that would help, wouldn't it! Edited above! :joy:

1 Like

Updated to resolve any aliases in the Finder selection and made file count/kind checks optional. This is because the the user may actually want to open the player without any files pre-loaded and then drag-and-drop some in. You can drop two files at a time or single files to each of the players.

I've also refined how auto-playback works. If two files are pre-loaded, playback begins straight away, but not if only one is loaded or if files are dropped in. This means you can open a single file in the Finder with this player, then navigate to another file elsewhere and drag that in to the second player, without playback beginning before you're ready to go. Dropping new files into the player now also resets the playback position, which makes sense from a practical point of view.

The only thing I haven't sussed is resolving aliases when they're dropped onto the player, as I don't think this can be done within HTML. Still, I'm very happy with the way this macro has neatly solved a regularly occurring problem for me!


Updated with a Dark Mode option.

Updated to fix an issue whereby audio playback might persist after the prompt had been dismissed using the escape key.

1 Like

Your tool is stunning and Iā€™m grateful for creating it.

Is there a way to close it using the command+w shortcut?

Also, can you make it not open a new instance when I trigger it with a shortcut when another instance is already open and upfront?

I find your tool really cool and Iā€™m still trying to understand how you created it. Iā€™m still learning. :v:t2:

1 Like


I had included the use of the Esc button to dismiss the prompt, but I've added āŒ˜W too.

Only one instance of the prompt will now run at a time.

1 Like

I decided to test this macro and here's my feedback and suggestions, if you think this can be more than just an A/B Mix test:

1 - At least on my end with Catalina, CMD+W doesn't close the player.
2 - Clicking the red button (top left) closes the window, but the audio keeps playing in the background
3 - When I drag and drop a file, the window keeps expanding
Original size:

After dragging the same "scream" file 5 or 6 times:

1 - If possible, having the option to check more than 2 files would be helpful in some scenarios. For example today I was testing different types of distortion and I wanted to preview their effect on a mix so I ended up with 6 files. Being able to quickly audition any of them would be a good feature. This means that the buttons would be at the top instead, because the more files you add, the higher the chances of the buttons going all the way down the screen and disappear. Even if you add a fixed height and a scroll bar is added, it's always better to add the buttons at the top for better navigation.
2 - Instead of a single button to toggle between A and B, if you add the option to add more than 2 files, then for each file it would show a button with the name of the file. That way we can quickly go from file 1 to file 5 without it going through each file in order (1>2>3>4>5). We could quickly go 1>5>1>5 etc
3 - Adding a button to go to the beginning of the file instantly would be a good addition instead of clicking the 10sec button multiple times to go the beginning
4 - Adding 2 extra buttons that go back/forward 1sec, for example, for greater control would also be a good addition. Sometimes previewing something that "just happened" is ideal instead of going back 10 seconds, which could be too much. You could also include the amount of time in the buttons like:
ā† 1 sec
ā† 10 secs
1 sec ā†’
10 secs ā†’


5 - This is more of a UI/UX tip, but I believe it gives it a more visual "consistency":
Change the color of the "toggle" button (or buttons, if you include more than 2 files) from green to yellow (or something other than green). Then when the button on the left is set to Play, make it green (that means that the user knows that clicking it will "Start" something, similar to a traffic light). When it's set to Pause, then it's Red (to "Stop" at a traffic light). It's just one of those things that helps with the navigation, making it even more intuitive, in my opinion.
I just used the default "red", "yellow", "green" as CSS colors, just as an example, instead of trying to find the hexa values:


I think those are the things that I noticed right away.
Hope it helps :slight_smile:

1 Like

Re the bugs, did you download the latest version since I updated it?

Re everything else, I'm in Spain for a week so I may have a look when I get back. Your suggestions are well considered, so thanks for taking the time.

1/2: I'm inclined to say this would sacrifice simplicity for the occasional scenario when it could be useful to compare more than two files. I personally wouldn't use it that way very often, so I'd rather make it work as nicely as possible for two files. After all, this isn't a commercial product and I'm not trying to cover edge use cases.

3/4: These are both things that occurred to me, so I might get round to adding them as long as things don't start looking cluttered.

5: I might do that but I don't think it's necessary. It's pretty obvious when audio is playing or paused.

Yes, I downloaded it today, right before replying to your post, so I believe it's the latest version.

I understand that. It was just a suggestion in case you would see yourself using it for that as well or even more than 2 mixes/masters.

You can always create a "header" that says "1 sec" and another for "10 secs" instead of adding that to each button, and then each button only contains the arrows. That way it's still obvious that each group of 2 arrows is either 1sec or 10 secs. Maybe that will help with making things less cluttered.

For the Play/Pause, you can always use icons as well instead of the words, that way you get more space by not having large buttons.

As you mentioned, this is not a commercial product, so I understand that you might not see this as "necessary". With my experience with UI/UX, I just tend to look at certain colors and immediately have some kind of "reaction", which is what users then to have as well, based on standardized approaches (red being "warning"/"stop"/etc and green being "go ahead"/"run"/"start"/etc). That's why I always like to make those adjustments, even for my own tools and even if no one will ever use them but me.
To me when I see that button, regardless of what the text is, my immediate reaction is: this is to stop and that's all it does. Even if the audio is paused/stopped, because color is prioritized in our brain, faster than text.

But again, this was just a simple tweak. Anyone using the macro can always change the color to something else. In my case I would maybe just add a neutral color like white/black.

It's a good macro for its purpose, anyway. Good job! :slight_smile:

1 Like

Does Escape work?

Yeah that works

Has proven very useful several times. Thank you!

I've been using Metric AB in plug-in form, but haven't found an equivalent for Finder. This works though!

1 Like

Yeah Metric AB is great during production, but when you get two masters and want to compare, you have to open a project. Ballache!