1. Limited time only! Sign up for a free 30min personal tutor trial with Chegg Tutors
    Dismiss Notice
Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

I Modal frequencies of a vibrating circular membrane? (DRUM)

  1. May 22, 2017 #1
    I am in the process of trying to develop a modal drum synth. I have the following graphics as references for the frequencies of some of the first modes relative to the fundamental:



    This is a good start. But I want to be able to model more modes than just that.

    What is the formula required to calculate any mode as a multiplier of "f1" like above?

    Eg. If I am wondering what the (7,1) mode is, how would I calculate that?

    This article gets into it from what I can tell, but it's way over my head mathematically:

    Ideally I'd like a formula I can punch (2,1) into and get 2.14 (for example).

    Any help? Very appreciated if so.

  2. jcsd
  3. May 22, 2017 #2
    Here is the excerpt from that Physics 400 level course that I think summarizes the equations that are needed:


    I never went past first year physics (biology & medicine guy) so I don't understand how to use these.

    Any help?

    If anyone has any medical questions I'm happy to answer those in return. :biggrin:
  4. May 22, 2017 #3
    Your issue is how to compute ##x_{mn}##, which is the n-th zero of the m-th order Bessel function. There is no simple formula to do this, however there are many resources that will do the dirty work for you. A Bessel function of the first kind, ##J_m\left (x\right )##, looks kind of like a periodic function but whose y values cross the x axis at non-periodic x values. You don't need to know all about Bessel functions to solve your problem. There are online calculators that input m-n and spit back ##x_{mn}##. Google "zeros of Bessel functions".
    If you know how to program c++, the boost library has a function that does this as well.
  5. May 22, 2017 #4
    Wow. This is way harder to do than I thought it would be. Okay. Thanks.

    So I've looked into what you're describing a bit, and I can find three approaches to getting it done (none of which I actually understand o_O?:)). I can't code anything except HTML lol.

    (If you're wondering how I'm building a drum synth without knowing how to code, it's because I'm doing it in Reaktor which doesn't require coding so much as linking modules in a logical fashion to get the signal you want.)

    Anyway, here is what I've found:

    1) Calculators
    I found two Bessel calculators:

    The Casio one says it's for calculating zeros, but I don't know what to put in there to get what I want (or if it can give me what I want).

    2) C++ with Boost
    As you suggested, Fred, I found this page which seems to summarize a lot about Bessel functions and C+:

    Is there a simple bit of code of command I could just plug in to get what I want?

    3) Python with MPMath
    I found this seemingly simple technique using "MPMath" for Python:

    He gives the following example of its utility:

    >>> besseljzero(1,100)

    Is that what I want? Or would it get me what I want?

    Which of those would likely be the easiest way to get what I want? Thanks again. Any further help would be appreciated. I feel like a toddler.
  6. May 22, 2017 #5
    I think the easiest implementation for you is to go with the Casio calculator. In order to work that calculator enter m in the box that says "order ##\nu##" and n in the box that says "ordinal number s", then press the "execute" button. Divide your answer by 2.4. Give it a go and compare with the ##f_{mn}## you already have.
    Edit: The answer is by the red dot.
    Last edited: May 22, 2017
  7. May 22, 2017 #6

    Well that is super easy. You just made my day Fred. That was a million times simpler than I was preparing for.

    Thanks. Have a good one. :smile:
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook

Have something to add?
Draft saved Draft deleted