Using an Arduino with two pins, one pin is the positive motor direction and the second pin is the negative motor direction.
Each pin/signal first go through a Voltage Buffer (op amp); then it goes into a difference op amp. The top signal has the motor drive in the positive direction; while the bottom signal will drive the motor in the negative direction. Vout = (Va - Vb).
After the difference op amp, the signal (either positive or negative) goes through a class B amplifier. If the signal is positive, it will turn on the NPN. If the signal is negative, it will turn on the PNP. This will then drive the motor both directions.