Radiation detectors are typically instrumented with low noise preamplifiers that generate voltage pulses in response to energy deposits from particles (x-rays, gamma-rays, neutrons, protons, muons, etc.). This preamplifier signal must be further processed in order to improve the signal to noise ratio, and then subsequently estimate various properties of the pulse such as the pulse amplitude, timing, and shape. Historically, this “pulse processing” was carried out with complex, purpose-built analog electronics. With the advent of digital computing and fast analog to digital converters, this type of processing can be carried out in the digital domain.There are a number of commercial products that perform “hardware” digital pulse processing. The common element among these offerings is that the pulse processing algorithms are implemented in hardware (typically an FPGA or high performance DSP chip). However this hardware approach is expensive, and it's hard to tailor for a specific detector and application.To address these issues, researchers at UC Berkeley developed a solution that performs the pulse processing in software on a general purpose computer, using digital signal processing techniques. The only required hardware is a general purpose, high speed analog to digital converter that's capable of streaming the digitized detector preamplifier signal into computer memory without gaps. The Berkeley approach is agnostic to the hardware, and is implemented in such a way as to accommodate various hardware front-ends. For example, a Berkeley implementation uses the PicoScope 3000 and 5000 series USB3 oscilloscopes as the hardware front-end. That setup has been used to process the signal from a number of semiconductor and scintillator detectors, with results that are comparable to analog and hardware digital pulse processors.In comparison to current hardware solutions, this new software solution is much less expensive, and much more easily configurable. More specifically, the properties of the digital pulse shaping filter, trigger criteria, methods for estimating the pulse parameters, and formatting/filtering of the output data can be adjusted and tuned by writing simple C/C++ code.