Monthly Archives: March 2026

HP8903A Audio Analyzer and python: creating a new app

I’ve been working on a way to control my HP8903A Audio Analyzer directly from my PC. This precision instrument is a fantastic tool for audio measurements — think frequency response plots, THD+N distortion analysis, and more — making it ideal for testing tape machines and other vintage audio equipment.

I also have the necessary GPIB-to-USB interface from National Instruments (NI-488.2), which handles the communication between the analyzer and the computer.

There is already excellent software available for this purpose, written by Peter Millett. You can find it on his website at http://www.pmillett.com/hp_8903_software.htm. Peter was kind enough to share his source code with me, which turned out to be invaluable during development.

However, his software had a few limitations that didn’t work for my setup:

  • It is a Windows-only application that requires a specific HP runtime environment.
  • It was written in an HP proprietary programming environment that is difficult or impossible to install on modern versions of Windows — and since it is commercial software, extending or updating it would require a financial investment.
  • I work exclusively on Linux and don’t have a Windows machine available.
  • I wanted a fully open-source solution that others could possibly freely build upon.

So, with some help from AI, I set out to rewrite the application in Python. The result closely replicates all the functionality of Peter Millett’s original software, while adding cross-platform support and a modern interface built with Qt6 and pyqtgraph, running on openSUSE Tumbleweed with Plasma 6.

The application is still technically a work in progress, but it is 95–99% complete and currently running flawlessly. Only a few small refinements remain.

Here’s a screenshot of the current interface:

The app supports four core measurement modes:

  1. Frequency Response — sweep the input frequency and plot the output level across the audio band
  2. THD+N distortion — measure total harmonic distortion plus noise at a given frequency and level
  3. Voltage — read AC/DC voltage at the analyzer’s input
  4. Power — measure output power into a specified load

Very happy with the result, and it works very nice!

DISCLAIMER: This program is tailored for my situation. Even though it is made using 100% open source components I am not sure that it is very portable and that it works in your situation. Leave a reply (link is above post) if you are interested, but I do not have high hopes that it will run outside of my environment.
But you can always have a go.

I have created a Codeberg repository here:
https://codeberg.org/pvdm/hp8903a

Next project: do the same for my Audio Precision Portable One Plus:

3 thoughts on “HP8903A Audio Analyzer and python: creating a new app

  1. Curtis H

    Hi, I would love to try out your 8903B py software. Your help file specifies very carefully py version and lib versions. I have a lot of SW experience, so I feel that I can beat it into submission.

    I have built pete millet jonokuchi headphone amp, a 2nd with boutique transformers, sangaku headphone nutube amp, his mighty midget, 26a7 preamp. Working on his engineers EL84 amp.

    Also built a tubelab TSE with 2a3 tubes.

    I have an 8903B and usb interface and would love to get measurements going on all these amps.

    Thanks, C

    Reply
    1. Philip van der Matten Post author

      Hello Curtis,

      I have created a codeberg GIT repository. I have uploaded all the files there. It works very well, but since I run a rolling distribution (openSUSE tumbleweed) The GPIB driver breaks a lot. Every time I get a new kernel, about once a week. But there is now built-in DKMS support so that the GPIB will be rebuild after each update. But check in often, it is still being ‘perfected’ so whenever there is an update, I push the new files. Also after you have ‘git cloned’ the repository, be sure to check out the README and the help files.
      You can find the git repository here:

    2. https://codeberg.org/pvdm/
    3. Reply
  2. Curtis H

    Thanks,

    If you could change my display name to “Curtis H”, that would be great.

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *