[comp.sys.mac] Audio Phone Dialer Software

housen@ssc-vax.UUCP (Kevin Housen) (06/15/90)

A friend of mine bought a device which can be used
as a phone dialer.  It takes the audio output from the
Mac speaker jack and sends it to the phone.  However,
he needs some software (preferably a DA) to generate
appropriate dial tones.  This would be pretty easy to
write, but I wanted to check first to see if there are
any PD/shareware DAs that will do the trick.  Anyone
know of such a thing?  (BTW, his modem and LocalTalk
ports are both in use, so he cant use a modem to do 
the dialing).

Thanks -

Kevin Housen
housen@ssc-vax

oster@well.sf.ca.us (David Phillip Oster) (06/16/90)

In article <3397@ssc-vax.UUCP> housen@ssc-vax.UUCP (Kevin Housen) writes:
>he needs some software (preferably a DA) to generate
>appropriate dial tones.  This would be pretty easy to
>write, but I wanted to check first to see if there are
>any PD/shareware DAs that will do the trick.

Both hypercard and Address Book Plus (a commercial product from Power Up
Corporation, that I wrote) dial the phone by generating audio tones.
AB+ uses a d.a., but it is commerical software, not shareware or public domain.

You can just hold the reciever up to the Mac on later Macs, but my testing
shows that not all raw MacPluss have enough volume to generate all the tones
reliably enough for the phone system. Experiment.

To dial the phone, you need two simultaneous tones. Hypercard and I use
the Sound Driver's 4 voice synthesizer to produce two pairs of tones by
doubling up the voices. Apple Developer Tech Support has been saying for
some time that they want people to stop using Sound Driver and do everything
with Sound Manager. Unfortunately, at least as of System 6.0.4, 4 voice sound
was not supported by Sound manager on Macpluss.
Here are the numbers from my dialer:

typedef struct Freq2 {
	Fixed a, b;
}Freq2;

/* These are the frequencies for the touch tone phone pad.
	Source: The TV Typewriter Cookbook, Don Lancaster, p.178
	Units for the table in comments is Hertz.
	The actual table was generated by applying the formula:
	hz = 1000000 / ( 44.93 * 256  / rate )
	to the table to get a new table I can use at interrupt time.
	This table uses the same values hypercard does.
 */
static Freq2 freqs[] = {
	{ 0x000F5DDE, 0x000AD2C9},	/* { 1336, 941},	/* 0 */
	{ 0x000DE7EA, 0x00080453},	/* { 1209, 697},	/* 1 */
	{ 0x000F5DDE, 0x00080453},	/* { 1336, 697},	/* 2 */
	{ 0x0010FD06, 0x00080453},	/* { 1477, 697},	/* 3 */
	{ 0x000DE7EA, 0x0008DB46},	/* { 1209, 770},	/* 4 */
	{ 0x000F5DDE, 0x0008DB46},	/* { 1336, 770},	/* 5 */
	{ 0x0010FD06, 0x0008DB46},	/* { 1477, 770},	/* 6 */
	{ 0x000DE7EA, 0x0009CCB9},	/* { 1209, 852},	/* 7 */
	{ 0x000F5DDE, 0x0009CCB9},	/* { 1336, 852},	/* 8 */
	{ 0x0010FD06, 0x0009CCB9},	/* { 1477, 852},	/* 9 */
	{ 0x0012C9B2, 0x00080453},	/* { 1633, 697},	/* A */
	{ 0x0010FD06, 0x0008DB46},	/* { 1477, 770},	/* B */
	{ 0x0010FD06, 0x0009CCB9},	/* { 1477, 852},	/* C */
	{ 0x0010FD06, 0x000AD2C9},	/* { 1477, 941},	/* D */
	{ 0x000DE7EA, 0x000AD2C9},	/* { 1209, 941},	/* * */
	{ 0x0010FD06, 0x000AD2C9}	/* { 1477, 941},	/* # */
};
-- 
-- David Phillip Oster - Note new address. Old one has gone Bye Bye.
-- oster@well.sf.ca.us = {backbone}!well!oster