[Kevin] has long wanted to do something musical with a vintage rotary phone and an Arduino, and has finally done so and committed the first of several experiments to HTML in a five-part series. He found a nice old British Telecom number, but it had been converted to plug and socket wiring to work on the modern system. Because of this, [Kevin] wanted to keep it completely functional as a phone. After all, it ought to work fine until 2025, when pulse dialing will no longer be supported in [Kevin]’s locality.
As you can likely understand, [Kevin] was keen to interface with the phone from the outside and leave the inside untouched. He used a sacrificial ADSL filter’s PCB to break out the socket, and added a pull-up resistor between the pin and 5 V.
Pretty quickly, [Kevin] figured out that when the phone is on the hook, it gives a constant high signal, where as the picking up the phone presents as a high signal going low, and dialing each number results in pulses of that quantity that alternate between high and low.
In part two of the series, [Kevin] really gets into decoding the pulse dialing, which is necessary for the third installment when things get musical. Here, [Kevin] adds in a MIDI module and a Roland MT-32 synth to use the dial as a MIDI note generator — each note dialed will sustain until the receiver is replaced on the hook.
Part four focuses on a MIDI patch changer. [Kevin] picks up the phone, dials a code up to three digits long, and hangs up, which this triggers the synth to change to the assigned voice. In part five, the phone becomes a random note sequencer, and each successive spin of the same digit will produce a different, randomly-chosen note. This is really just the beginning, however, so we’ll be checking back for updates. In the meantime, you can listen to the note generator and the random note sequencer demos after the break.
Wouldn’t you like to use a rotary dial all the time? Well, as long as it wasn’t an emergency?
3 thoughts on “Rotary Phone MIDI Controller Still Makes Calls”
Why don’t just use library which is available through Arduino IDE library manager?
Did you write that library?
I did take a look, but the library uses pin change interrupts (I wanted it a bit more universal), it assumes the use of internal pull-ups (I need an external pull-up to use “from the outside”), and I don’t think it had any idea about the receiver being “on hook” or “off hook” to distinguish between digit pulses or lifting the receiver, which is all the same signal “from the outside” (you can “dial” a number by manually activating the receiver switch quickly the appropriate number of times).
I can’t remember, there might have been an issue with the direction of the signal “from the outside” too…
Basically some of my uses required digits, some required pulses and some required knowledge of when the handset was on or off the phone, none of which seemed possible with those ~60 lines of code in the library.
Do let me know if I’m mistaken :)
I’ve added a note in part 2 of my post, why I didn’t use the library. I mean to include that, so thank you for reminding me!
Please be kind and respectful to help make the comments section excellent. (Comment Policy)