Vibrating motor musical instruent help

I'm new to using arduino

I'm designing and building a musical instrument for a university project . one aspect involves using a vibrating motor attached to surface to generate audible frequencies. I've never used a vibrating motor but as far as I understand the revolution speed is controllable(would control frequency) and they have a constant amplitude?

I really want to have dynamic control over the volume of the sound produced. Any suggestions for a neat way of achieving this? The only solution I can think of is using a moving part to physically dampen the vibrating surface, but this would also dramatically effect timbre (I think). It also generally seems like it would be quite difficult and I have a tight time schedule. Help me please!

If you use a crank or similar to convert the rotary movement to a linear movement then you could use a servo-operated mechanism to control the leverage and hence the amplitude of the movement you're applying to the sounding surface.

If you had some kind of cushion between the motor and your vibrating surface you could press the motor against the surface for more volume?

Second idea, attach the vibrating motor to a servo arm and the servo to the vibrating surface. When the servo arm is parallel to the surface the amplitude of the vibration should be less than when the servo arm is perpendicular to the surface.

PWM :sleeping:
frequency - pitch
altitude - loudness

But i guess that the dynamic of the instrument would be inferior to the real instruments

The big problem is that vibration motors do not have a constant amplitude. Both the vibration frequency and amplitude are dependant upon the speed of the motor (and therefore the input voltage):

Vib Freq = Motor Speed (RPM) / 60

and

F = m * r * w^2

where F is the force of the motor, m is the mass of the eccentric mass, r is the eccentricity of the mass, and w is the angular velocity.

So you can't adjust the frequency without affecting the amplitude, and vice-versa. Linear Resonant Actuators separate the vibration amplitude and vibration frequency, however only work at a very specific resonant frequency. See this blog post:

http://www.precisionmicrodrives.com/tech-blog/2012/05/11/driving-lras-from-audio-signals-and-music

On the vibration motor's datasheets you can see how the amplitude and frequency adjust with the input voltage.

xvjeko:
PWM :sleeping:
frequency - pitch
altitude - loudness

The height something is at does not affect the loudness unless it is far away.
However if you meant amplitude the the amplitude of a PWM signal is always the same.

However DrOb has it right, I don't think you can do what you want.