A Screaming Child

Let’s find out how loud it would be if all the toddlers in China, localized to a single point, started screaming in unison.

China population: 1.3 billion
The age of toddling is roughly defined as 12-24 months
China Population, 0-4 years in age = 120 million
Assuming roughly equal distribution amongst that age bracket, that’s about 30 million toddlers.
According to this site, babies crying can reach about 115 decibels. Gah. that’s loud.

Now, let’s look at decibels.
While you can’t just add decibels together, you can use this handy equation:

10 * log((10^(a / 10)) + (10^(b / 10)))

Where (a) and (b) are two decibels that you are adding. To expand this to 30 million crying toddlers it’s best to use a program. I started with excel using a simple loop:

decibel.PNG

Sub Pop()

Dim i, limit As Integer
Dim multiplier As String

i = Cells(4, 5).Value
limit = Cells(3, 5).Value

Do
multiplier = Cells(6, 4).Value
Cells(5, 2) = multiplier
i = (i + 1)
Cells(4, 7) = i

Loop Until i = (limit + 1)

End Sub

This macro loops through the equation substituting in the current sound level and adding one baby at a time until we reach the limit set by the user. Ideally, the culmination of 30 million babies.

The problem here is that I’m not a very efficient programmer and this program runs excel’s memory dry after a mere 25,000 babies. After four times through the program, I was getting decibel levels of about 165 for 100,000 screaming toddlers. But, since we need 30 million, and I didn’t want to have to click through the program twelve hundred times, I had to call in the big guns. Enter Ryan Schenk.

Ryan Schenk took my code and re-implemented it as a ruby program. Take a look here:

unless (NUM_BABIES = ARGV.first.to_i) > 0
abort(“You need to tell me how many babies are crying\n” +
“\nUSAGE:”+
“\nruby cry_baby.rb 1234 # Where 1234 is the number of babies”)
end

SINGLE_CRY_VOLUME = 115.0
current_decibel_level = 0.0

NUM_BABIES.times do
current_decibel_level = 10.0 * Math.log10( (10.0 ** (current_decibel_level/10.0)) + (10.0 ** (SINGLE_CRY_VOLUME/10.0)))
end

puts current_decibel_level

He has 8 cpus on his computer so he can run 8 of these scripts in parallel, each computing the volume of 30m/8 babies. Ryan deems this the most efficient way to do it, one process per cpu core.

THE GRAND TOTAL:

189.771212549937 db

OH MAN.

Let’s compare our result with other sounds (source 1, source 2)

loud.PNG

You’ll note that all the toddlers in China, operating as a singularity, screaming in unison is almost as loud as a Saturn rocket.

Dang.

Fun side notes:
This analysis looks at pure decibels and as such acts as a very rough estimation. If somehow the babies were screaming in different phases there would be the possibility that the babies crying would cancel each other out resulting in zero sound.

Hmm. this makes me wonder if you could build a speaker to read the sound wave of a crying baby and immediately respond with the inverse wave canceling out the cry.

We could call it Dr. ShutUp.

10 thoughts on “A Screaming Child

  • 2/2/2010 at 3:43 pm
    Permalink

    This is excellent.

    Also, I hope you woke up today and immediately thought “Today is a good day I think to find out how loud it would be if all the toddlers in China, localized to a single point, started screaming in unison.” Even if you didn’t, I think I may choose to believe that to maximize enjoyment of this post.

    Reply
  • 2/2/2010 at 4:01 pm
    Permalink

    Also of note, the ADAAG (Americans with Disabilities Act Accessibility Guidelines) requires that audible fire alarms shall not exceed 120 dBA.

    Reply
  • 2/2/2010 at 4:27 pm
    Permalink

    “Hmm. this makes me wonder if you could build a speaker to read the sound wave of a crying baby and immediately respond with the inverse wave canceling out the cry.

    We could call it Dr. ShutUp.”

    Really easy actually, the hard part is localizing it. As in, you can’t just put a speaker next to a baby and have them face each other to cancel it out. Depending on the acoustics of the room you could hear two babies crying if they were slightly out of phase with each other from reflections at that point. Thats why bose headphones work is because the mic and the speaker are basically at the same point in space, and focused on the same point in space. The larger the area, the harder it is to cancel out the waveform.

    Reply
  • 2/2/2010 at 4:28 pm
    Permalink

    Instead of using loops, you could have just calculated 10*log( 30,000,000 * 10^(115/10) ) = 189.7712…

    Also, isn’t Dr. ShutUp the same as those noise cancelling headsets?

    Reply
  • 2/2/2010 at 5:10 pm
    Permalink

    and even easier you can use the handy properties of logs to determine that 10*log (30e6*10^(115/10)=10*log(30e6)+10*log(10^(115/10), so you know that 30 million babies are ~74dB louder than 1 baby.

    Reply
  • 2/2/2010 at 5:13 pm
    Permalink

    I’m glad that you and Tom know log (and basic math) rules. This is what I love about MikeDiDonato.com, we have experts for everything.

    Reply
  • 2/2/2010 at 5:18 pm
    Permalink

    oh man!!! Doubling up the baby cries would be a horrible by-product of my design. Perhaps we could have the speaker be part of a little mask that the baby would wear – that way the source and the cancellation would have close proximity.

    We could customize the masks so that they looked like famous Mexican Luchadores like El Hijo de Santo and Blue Demon. AND!! instead of calling it Dr. Shutup we could call it “SENOR CIERRA LA BOCA!!!”

    Genius.

    Reply
  • 2/2/2010 at 6:13 pm
    Permalink

    Your genius idea is to put something over the baby’s mouth to shut it up? You could even devise something you put IN their mouth to shut them up. That’s like, the most crazy thing I could think of!!

    Oh wait…

    Reply
  • 2/3/2010 at 3:29 pm
    Permalink

    Can I be the MikeDiDonato.com pudding and mousse expert? I love pudding!

    Reply

Leave a Reply to Jocelyn Cancel reply

Your email address will not be published. Required fields are marked *