Telephone Idea - Feasibility / Advice

Hi guys, I'm interested in creating an audio art project with the Arduino and an old rotary dial phone. I have little knowledge of how Arduino works (I've learned how to use a simple light sensor with Max/MSP and blink an LED), but I am asking here as I only have a month to create something.

My current idea is to loop the sound coming in through the phone's mic and use the rotary dial as a speed/pitch controller for the audio loop playing back through the phone's output speaker, all without the aid of a nearby computer. I have no idea where to begin so I would appreciate any advice or information regarding the feasibility and needs of this project.

Thanks,

Alex

Well, the rotary dial itself will be just a number of pulses representing the number selected. So to get that number, you just count pulses. I would use an interrupt for that.

What is a bit more unclear is what effect you are expecting with the pitch control. Obviously to do this, you will need to delay the audio. This is going to be a bit disconcerting to the user, I would think. Are we talking about them speaking into the mic, then selecting a number to play it back at different pitch or are you expecting this to be real-time?

There are several voice changer ICs out there that might help. However, the closest that I see is the transpose function which will make the voice lower or higher. I don't think that is multi-level, though.

Another option would be to get a PCM encoder and decoder IC set. Put your arduino in between. You would then take a sample of a second or two of audio and spit it out to the decoder faster or slower depending on the effect you want.

Also, take a look at this:
http://elm-chan.org/works/vp/report.html

Retroplayer:
are you expecting this to be real-time?

Sorry about that, yes I would like this to be real-time. I've read that this is where it can get quite complicated.

Real-time continuous output, adjustable with the rotary wheel.

Retroplayer:
Another option would be to get a PCM encoder and decoder IC set. Put your arduino in between. You would then take a sample of a second or two of audio and spit it out to the decoder faster or slower depending on the effect you want.

Thanks, that sounds about right I'll look into it.

Note that old telephone dials only produce pulses when returning (anticlockwise) to its rest position, not when it's being dragged clockwise. This is to allow the govenor (inside the dial mechanism) to control the speed of the pulses, not the finger! Also note that dialing '0' will give 10 pulses.

Although most telephone exchanges are quite happy with rates of anywhere from 6 to 15 pulses per second (pps), the standard accepted by telephone companies is only 8 to 10 pps. Some modern digital phone exchanges, free of the mechanical inertia problems of older phone systems, will accept a pps rate as high as 20.

Besides the pps rate, the phone dialing pulses have a make/break ratio, usually described as a percentage, but sometimes as a straight ratio. The North American standard is 60/40 percent; most of Europe accepts a standard of 63/37 percent. This is the pulse measured at the phone, not at the phone exchange, where it's somewhat different, having traveled through the phone line with its distributed resistance, capacitance, and inductance. In practice, the make/break ratio does not seem to affect the performance of the phone dial when attached to a normal loop.

by using Asterisk (Opensource VOIP software), We could set up Zap Channels with rotary dial phone just like phone exchange with phone.
then use Asterisk Gateway Interface (AGI) connect with Arduino.

Sample: Arduino Forum