Regular digital audio is PCM (not [u]PWM[/u]) The Arduino doesn't have a DAC (digital-to-analog converter) so it can't directly play PCM. PWM is good enough to "dim" and LED or to control a motor, but it's NOT true analog.
With PCM, you "sample" the analog waveform (44,100 samples per second for CD audio). If you know how a speaker vibrates to generate sound, the waveform/samples represent the position of the speaker in-time. Then when you play-back, the digital-to-analog converter "connects the dots" to re-create the analog waveform. The [u]Audacity website[/u] has a nice introduction to how digital audio works.
a) to record an actual purr and play it
There is a [u]TMRpcm library[/u] that's supposed to approximate PCM pretty well and give decent sound. I've never used it.
b) to "build" the purr sound from scratch, pattern-by-pattern
It might be possible to [u]synthesize[/u] a purring sound, but you'd need to study-up on some concepts (maybe starting with [u]Fourier[/u], and then do some experimentation. it would be a LOT easier to record & loop the sound.
For b) I have no idea and I could not find anything on the net. I suppose I shall use pwm in a certain intensity (amperage?) and pattern of wave (?).
It's about Amplitude and time. The analog waveform shows you the amplitude at any/all points in time and the waveform exactly-represents the sound.
In the electrical domain, the amplitude is represents voltage. in the digital domain, the amplitude is simply a number (on an 8-bit, 16-bit, or floating-point scale, etc.). But, it's all relative... If you cut the volume in half, the voltages/amplitudes are all cut in half, but the basic "sound" is the same.
There is an amperage (current), but it doesn't come-into play until we're trying to get power out of a speaker. Power (Watts) is the product of Voltage x Current.
A constant pure-tone is a single constant-frequency sine wave. Real world sounds are of course not constant-intensity, and they contain multiple-simultaneous tones. It's these additional tones (harmonics & overtones) that make a guitar sound different from a piano when they are playing the same notes, and it's what makes two singers sound different when they are singing the same song/notes.
Most real-world sounds are mathematically complex and difficult to synthesize. Most modern "synthesizers" use sampled audio rather than attempting to build realistic sounds with an algorithm. And, it's virtually impossible (with current technology) to synthesize a singer. ...You can "fake" an entire orchestra with virtual instruments, but the singer has to be human.
P.S.
If you want to drive a speaker or headphones, you'll need an amplifier. The Arduino can put-out a "signal" but not enough current (amperage) to drive a 4 or 8 Ohm speaker. It can drive a piezo transducer, but a piezo can't put-out the low-frequencies of a purr.