In The Drowsy Chaperone the MAN IN THE CHAIR goes out of his way to explain to the audience, "Yes, records" before he puts one on the phonograph. Oddly, though, he doesn't mention that he is using a dial telephone, and an answering machine with those little tape cassettes.
I am living in future shock once again. When I started in theater sound phones were common and easy to find. Not any more!
Today I got the QLab-controlled phone working. But I haven't decided if I really want to trust that particular Heath Robinson for the run of a show. The original reason for the contraption was that the Stage Manager was going to be running sound cues, and I didn't want her hammering at the button of a Tele-Q in the middle of a cue sequence. Thus a system that will start the phone ringing as a loop with one push of the GO button, and stop the loop with a second push (which also cues up the answering machine sound).
I was also hoping to save having to run a wire for the 90 VAC ring signal; going with electronic control would mean I could send data backstage instead, through the existing snake.
But things change in tech. The Stage Manager is no longer running sound cues, and whilst cleaning up the old wiring I threw a chunk of recycled garbage cable up anyhow. So I already have a button and I've been using it in rehearsal and, really, it works fine as is. The only reason to continue with the electronics is to prove I could do it.
Start in QLab. With the MIDI license, QLab will create and send a MIDI event. I picked, arbitrarily, note #64, with noteOn for a ring and noteOff for silence. A GOTO cue (another one of the special cues unlocked with a QLab license) sends the pointer back to the first cue again, and pre-delay on the various cues sets the ring cadence.
(The Bell standard is 2 seconds on, 4 seconds off, but I'm using a faster and more theatrical 1.5/3).
It took a bit of experimenting, but the way to end the loop turned out to be putting them all in a group cue, ticking "go to next cue" in the group cue settings, checking the "continue" box in each of the MIDI cues and the GOTO cue. Then, I dropped the entire group cue on a RESET cue, which turns off the GOTO and exits the loop. Which auto-follows (the "continue" check-box ticked) to a second noteOff MIDI cue; this way, no matter where I am in the loop, hitting the "Phone STOP" cue will turn off the bell.
Had things gone according to plan, the Stage Manager would have been using this pair of cues to control a sound effect while I finished wiring the actual phone up.
Anyhow. QLab does something non-standard in MIDI and it doesn't always show up as a MIDI source to other applications. I'd had this problem before. So instead it is patched into the handy freeware MIDIPipe. This creates a new virtual MIDI source called "MIDIPipe Output 1."
The next application in the string is a clickable (Java virtual machine) application written in Processing. Using the MIDIBus library, it detects the MIDI note events sent from QLab. Then it writes a "p" or a "o" to a selected serial port, depending on whether it saw a noteOn or noteOff.
It is pretty much a garbage ap at the moment. I hacked it up from the Wiz software, stripping out the XBee signaling and pasting in basic MIDI functionality from a MIDI Bus example program. It has at present no way to select ports other than re-compiling. Heck, it doesn't even NAME the ports it is using.
The older generation of Arduinos use an FTDI chip to show up as a virtual serial port over USB. This is what I'm using here. There is an Arduino on the other end of a USB cable, and when it sees a "p" or "o" at the serial port it sets the output level of two pins.
One pin holds an LED and is there as a blinkenlight. The other is running a 5v relay via the venerable TIP120 power darlington. The only other components are a resistor on the input of the TIP120, and a diode backwards across the coil of the relay (to protect the rest of the circuitry from the field-collape induced surge.)
And, finally, the relay closes the connection to the steady 90 VAC at 20 Hz from a industrial-strength piece of rack mount gear I happen to have lying around. If I had to generate the entire ring signal from scratch this would all look rather different. As it is, all I have to do is switch an existing voltage.
And at that point the actual dial phone on the stage rings, just as if it was forty years ago and still in ordinary use.
An annoyance I'd expected but hoped to avoid; QLab breaks the "Reset" cue every time the program is closed and re-opened. Next performance, all the "Reset"s were still listed and looked normal, but none of them worked. I had to delete the old ones and write new ones. For every single phone cue. And it looks like I have to do this each and every performance. That is going to get old fast.