Phonopter (beta) User Manual


Table of Contents


Intro

Latest version: 0.0.2

First things first: I know the current UI ain’t much (but it’s honest work). Something had to give so I focused on getting the core functionality working

That being said, I don’t think I’ll spend a massive effort on the pure aesthetics of the UI either, beyond making it look adequately nicer and easy to use. My efforts on this and future plug-ins will mostly focus on ensuring they’re useful and solve real needs for producers, engineers and musicians

Just setting the right expectations!


Phonopter is a plug-in that lets music producers and sound engineers blind test two tracks at a time in their DAW

While the tracks can be any two, it’s most useful when comparing two sources with very similar settings to try to decide as “objectively” as possible which one works best for the production

The reason for the comparison being “blind” is to help eliminate possible bias introduced by the user knowing which of the two versions they’re listening to at any given time

This means that Phonopter is useful in a wide array of scenarios: ear training, auditioning a new plug-in, working around ear fatigue, etc…


Ok, PSA done, moving on…


Basic Functionality

Key concepts to understand how Phonopter works:

  • You add an instance of Phonopter in each track you want to audit
  • The first instance you add is the one you use to toggle which track plays at any given time, this will be the primary
  • The secondary can’t be controlled directly but it will tell you which channel has the primary it takes orders from
  • If you add more instances they’ll be inactive. Further down I’ll show how to use those
  • When you want to start the blind A/B test, you can deactivate the channel controls, and Phonopter will choose one of the two tracks at random to enable playback from
  • You’ll still be able to switch back from one track to the other, you just won’t get any visual feedback from Phonopter about which one is playing (you should also make sure you can’t see the meters in your DAW otherwise it defeats the purpose)
  • At any point you can re-enable the channel controls and see which track was unmuted at that given time

Controls/UI

Left/Local Channel Controls (A)

This side controls the audio in the track where the instance is inserted

  1. Gain slider: it provides ±6 dB of gain to help level match the two tracks
  2. Meters: the ballistics emulate VU meters
  3. Mute: does what it says on the tin
  4. Track name: the name of the track where this instance is inserted
  5. Comments: free text box

Centre console (B)

  1. Swap Mute: if “XOR Mute” is engaged it inverts the mute states of both channels. If “XOR Mute” was off, it’ll turn it on and then, if needed, toggle the right channel to ensure one is muted and the other is playing
  2. XOR Mute: “eXclusive-OR” mute. If active, clicking the “Mute” button on one channel will automatically toggle the other side too so that there’s always one playing and one muted. If inactive, channel mute buttons only affect the side where they’re clicked
  3. Shuffle+Hide: have Phonopter randomly choose which channel will play, and disable the meters and channel controls (except the comments box). When this mode is active the button will read “Reveal” instead
    • If “XOR Mute” was off, clicking “Shuffle+Hide” will also turn it on
  4. Bypass: what a normal bypass button does, however in the beta version this is the only way to fully disable the plug-in

This is what the primary instance looks like when playback is shuffled+hidden

Meters, channel mute buttons and gain sliders become inactive, but you can still type in the comments box and use the centre console

Right/Remote Channel Controls (C)

Same idea as the left channel controls but these control the secondary instance of Phonopter, whatever channel it’s inserted on

One important thing to note is that when you type comments in the text box on the remote channel section, they are sent to the secondary instance

That means that if that secondary becomes the primary and starts controlling a different channel the text box will show the comments you added before from the previous primary


Primary/Secondary/Inactive Instances

This current beta version is based on a fairly rigid primary/secondary/inactive role workflow. This’ll be better in the future but for the time being this is how it works:

  • The earlier you add an instance, the higher its priority is to become primary
  • The non-bypassed instance you added next becomes the secondary. You now control these two tracks with the primary
  • All other instances, either bypassed or which were added later are marked “inactive”

Let’s imagine these are the inserts in your session

EQEQEQChannel Strip
CompCompCompComp
Another EQAnother EQPhonopterAnother EQ
PhonopterPhonopterTape SatPhonopter
Channel 1Channel 2Channel 3Channel 4

For simplicity, we’ll assume you inserted the Phonopter instances in the same order as the channel numbers (but in reality you can choose the order)

By default, you would use the instance on“Channel 1” to control itself plus the instance on “Channel 2”. The other two instances would be inactive

This is what you would see in each UI:

Channel 1: (notice the track name on the right side)

Channel 2:

Channels 3 and 4:

If you wanted to compare other combinations, here are some examples of how you would do it:

Channels to compareWhat to doPrimary instanceState of other instances
3 & 4Bypass 1 & 23, because it was added first1 & 2 bypassed and inactive
4 & 2Bypass 1 & 32 (again, it was added before the one in 4)1 & 3 bypassed and inactive
1 & 3Bypass 2 (bypassing 4 is not necessary)12 bypassed and inactive, 4 could be bypassed or not, it won’t participate either way because it was added after the active ones

When you bypass, this is the message you’ll see


Suggestions

There will be some graphics in the future, but here’s some ideas in the mean time:

Auditioning wet/dry options of an effect

E.g. with and without compression

If you have enough processing power, just duplicate the track, inserts and all, and bypass the effect you want to compare in one of them. Add Phonopter to one of the tracks

If you’re running low on DSP power and the effect is the last or near-last in the chain, add a pre-fader, post-inserts send to the channel. Add the effect and Phonopter to the aux and original channel

Auditioning two different effects, or settings of the same effect

Same idea, but adding both effects with the settings you want to try


Bugs

Bug IDDescriptionWorkaround
001-00Two meters always appear, regardless of whether the track is mono or stereoNone. Sit tight, I’ll get to it!
001-01When an instance changes role to secondary, the remote gain slider on the primary doesn’t reflect the correct gain settingMove the slider on the primary and the gain parameter will sync
001-03Sometimes the remote track name is not updated when roles change, the remote track name shows “Waiting for remote instance…” and inactive instances show the wrong primary and/or secondary in the information boxSometimes forcing a channel name causes an update, but not always
001-06In Logic Pro, the meters freeze when playback is stopped instead of returning to minus infinity dBNone. Still chasing it
001-07In Logic Pro, removing and readding an instance to the same channel doesn’t reset the settings and role priorityNone. Still chasing it. Just be aware this is how it behaves in LP for now

Planned Future Updates

These will be prioritised based on user feedback (besides, users may potentially request more enticing features to work on)

  • Sync with tempo and meter
  • Allow Phonopter to swap mutes without the need to click any buttons, e.g:
    • every X bars/beats or seconds
    • every time a looped section restarts
    • randomly, within a user provided range (e.g. anywhere between 2 and 4 measures)
  • Compare more than one pair of tracks a time
    • add a UI that sees all instances and allows the user to select which ones will be paired up to toggle mutes
  • A gamified version where the user has to guess which track is playing and gets feedback as they try to guess, and they get scores/feedback about how they do. Like Duolingo but without the passive-aggressive pressure

Tested Platforms

As of the latest update in this page, the following combinations of computers and DAWs have been confirmed to work as intended

ComputerDAWs
MBP M1Logic Pro 12, Ableton Live Lite 11 (VST3 and AU), Reaper 7 (VST3 and AU)
MB Air IntelGarage Band
MBP M4Logic Pro 12, Reaper 7

Contact

If you need help or have trouble using Phonopter please include the following to help me figure out what’s up, thanks!

  • Model of your computer (MBP, MB Air, etc…)
  • Processor type (Intel or Mac)
  • Mac OS version
  • DAW and version
  • Phonopter format and version you’re trying to install
  • Specific steps you followed
  • Screenshots and error messages

The first 3 you can get by clicking the Apple icon on the top left and selecting “About This Mac”

Drop me an email at

phonopter
[that "a" with the circle around it]
enigemic
{dot}
audio

Distribution List

By signing up to this mailing list you’ll only get emails about Phonopter beta testing. I might send a note when the production version launches or new I start testing new plug-ins, but those will be separate lists you’ll be able to opt-in to if you so wish



FAQ

  • Why is the current version not in AAX?
    • Money 🙂 Avid charge a license fee to allow developers to digitally sign plug-ins that Pro Tools can import. Fingers crossed this test goes well and this (and the following two questions) will change
  • Why is this version only for Mac and not Windows?
    • You’re not gonna believe this! Yeah, I only have a MacBook so I can’t build and test software that runs on PC at the moment
  • What’s up with the UI? 😬
    • While I did program for a living for the last 13 years or so, I hadn’t written any C++ (the standard programming language for audio software) since Uni, so trying to make a plug-in that both worked AND looked nice while basically re-learning C++ from the start was quite a lot more than I could handle