As Mike says, this has been discussed before so you might want to search the forum.
...I've made a VU meter "lighting effect", but it doesn't read in dB and it's intentionally not calibrated because I want a good "meter effect" with quiet songs and loud songs, and with any volume control setting. (And my effect runs off the electrical audio signal so there's no microphone.)
So we don't understand why analyzing this signal needs to use a diod, condensors and resistors.
Assuming you have a "microphone board" for the Arduino, you don't need to understand the electronics.
But, you do need a preamplifier to boost the few-millivolt microphone signal to about 1V for the Arduino.
THE MOST IMPORTANT THING - Do you have an SPL meter to calibrate the one you're building? It's theoretically possible to calculate the SPL level from the voltage if you have the sensitivity spec for the microphone, and if you know the gain of the amplifier, but in practice all SPL meters are calibrated with a known sound level, and like Mike says this is going to be difficult to get "accurate" results, even with calibration.
THE BASICS - Decibels are a relative measurement calculated as dB = 20 x log(A/Aref) where A is amplitude (such as voltage). For dB SPL (sound pressure level) 0dB is approximately the quietest sound you can hear. For digital audio files 0dBFS (zero decibels full scale) is the largest value you can hold with a 16 or 24-bit integer and the dB levels are usually negative. There are various 0dB references for electrical signals (voltage or power).
For example, if 75dB SPL gives you a reading of 500 on the Arduino ADC, a reading of 250 would be 20log(250/500) = -6dB. That means with a reading of 250 you have 69dB SPL.
THE COMPLICATIONS - Sound is "waves" (as you've seen on the oscilloscope). If you "take a reading" with the Arduino you are reading at some random-unknown point along the wave anywhere between the positive & negative peaks and your readings will "look random". ([u]Here[/u] is an easy introduction to how digital audio is sampled/digitized.)
So, you have a couple of choices. You can take an average or RMS (or a moving average), or you can find the peaks. Note that the true average is zero, since the waveform is positive half the time and negative half the time, but you can take an average of the absolute values or you can simply throw-away/ignore the negative values.
I'd say the easiest thing is to find the peaks over a short period (maybe 1/10th of a second) and then take an average (or a moving average) of those peaks.
Note that the Arduino's ADC can't read negative voltage so you'll never get a negative reading. Most Arduino microphone boards will bias the output at 2.5V so that silence reads 512. You can subtract-out the bias in software.
For calibration, pink noise will best represent real world sound/noise, but you might want to start with pure tones. [u]Audacity[/u] can generate tones, white noise, or pink noise files that you can play on your computer or phone, etc.
MORE COMPLICATIONS - The human ear is more sensitive to mid-frequencies than to low & high frequencies, and the ear doesn't respond instantly to "loudness". For this reason, real SPL meters are [u]weighted[/u]. Since that's somewhat difficult (and you probably won't attempt it) your readings won't exactly-match a the real meter's readings.