Sigh. In the halcyon days of The Analog i spent my youth implementing op amp based PID controllers for heavy industry. You really need only a single op amp, a few caps and resistors and there is your PID controller. Nowadays everyone uses MCUs for that, and why not.

A true analog PID controller takes a setpoint voltage, process feedback voltage, and produces the command signal as a voltage. If you drive a motor a more desirable output may be a pwmn signal or similar, but strictly that is not part of the PID controller. The command signal is the proportional-integral-derivative of the setpoint and actual value difference. Hence PID.

The key challenge is not at all in implementing the controller, practically anyone can cobble together the circuit or the source code. The trick is in correctly tuning the controller. There is no real shortcut, you need to know at least the bare rudiments of control theory to be able to accomplish anything by design as opposed to chance. This is where the math bogeyman enters. Ideally, you would characterize the "plant" i.e. your system that needs controlling. The full expression of said characterization would be to write the plant transfer function from which you can then extract the poles and zeros and position them in s-coordinate plane for examination. Or if you do the PID using a discrete time system such as a MCU, you would need to perform the z transform to extract the discrete time response of the system.

In practice you really need to be an actual trained control engineer to be able to do this consistently. I wrote above that there is no real shortcut and that is true in a sense, but you don't have to tune a PID the hard way every time. You will get a long way by just doing a rudimentary frequency response analysis, and actually your buzzer will function as one. The first task is to get an idea of the resonant frequency of the plant+controller loop. Most anything you will encounter will count as a LTI or Linear Time-Invariant system, or as close as makes no difference. That means that the internal signal transport delays in the system are more or less constant and that in turn means that the resonant frequency will stay more or less in one place regardless how you fiddle the system (provided you do not change the loop topology in a significant way). So, after finding out that your dandy control system is actually a poor man's oscillator, the next task is to find the frequency of oscillation. Once you have an idea about that, check that your controller time constants (the derivation and integration times) are roughly in the same ballpark. Once there you know that you can position transfer function poles and zeros somewhere around the resonant frequency.

There are different methods of tuning a PID controller. Many of those start by first finding the maximum proportional gain that the system tolerates and then tuning the integral and derivative terms. It is important to understand that the function of the integral term is to provide "infinite" DC gain, thus removing any static operating point offset remaining after the P term is done. The derivative term in turn gives an enhanced control response to rapid variations in either setpoint or actual value. Both should be set to 0 when tuning the proportional term.

After this it gets more complicated - hopefully the Interweb has something to say about it.

Like i wrote, i have played with those things all my life so ask away if there are details you want to clarify.