[comp.sys.ibm.pc] Neat voice|gag program

mb@camcon.uucp (Mike Bell) (12/02/87)

in article <3692@uwmcsd1.UUCP>, cmaag@csd4.milw.wisc.edu 
(posting to comp.binaries.ibm.pc)  says:

> Here is a neat little program I found on a local bbs.  It uses the speaker
> to generate a very-realistic (the best I've heard on a PC!) voice that
> says something to the effect of "Help!  I'm locked in this computer!
> Let me out! Help!".  

I just played it, and was much impressed. Given the rudimentary
nature of IBM PC's, can anybody explain how it achieves its
effect?
-- 
---------------		UUCP:  ...mcvax!ukc!camcon!mb
-- Mike Bell --		or:    mb%camcon.uucp
---------------		Phone: +44 223 358855

smvorkoetter@watmum.waterloo.edu (Stefan M. Vorkoetter) (12/15/87)

In article <1107@titan.camcon.uucp> mb@camcon.uucp (Mike Bell) writes:
>in article <3692@uwmcsd1.UUCP>, cmaag@csd4.milw.wisc.edu 
>(posting to comp.binaries.ibm.pc)  says:
>> Here is a neat little program I found on a local bbs.  It uses the speaker
>> to generate a very-realistic (the best I've heard on a PC!) voice that
>> says something to the effect of "Help!  I'm locked in this computer!
>> Let me out! Help!".  
>I just played it, and was much impressed. Given the rudimentary
>nature of IBM PC's, can anybody explain how it achieves its
>effect?

Someone explained it to me once, so here goes:

A speaker, such as the one in the PC, has a vibrating cone, whose displacement
from the centre position is somehow proportional to the amount of voltage
going through it.  Thus, if you have a voltage varying according to a sine
function, the displacement of the speaker cone will do likewise.

The PC's sound circuitry can only generate fixed amplitude square waves, so
a trick is used.  Suppose at any given time, we want the speaker to go to
only half the displacement that the full square wave voltage would normally
drive it to.  What we do then is send it a pulse that is so short, that it
is over before the speaker cone has a chance to reach full displacement.  So,
what effectively happens is the speaker cone only goes a certain distance,
depending on how wide the pulse is.  Thus, we can vary the amplitude of the
sound by controlling the pulse width.  The sound quality could be much
improved if we were to put some sort of a filter between the pulse generator
and the circuit.  Here is an example of what happens:

		  __-__                      _-__                      _-__
	    _--     --__              __--    --__              __--    --
	__--            --___    __---            ---___    __--
 ----                     ----                       ----

 Above sine wave approximated by square wave below


  -     --    ---     --    -    --     ---    --     -     --    ---
                                                                     
__ _____  ____   _____  ____ ____  _____   ____  _____ _____  ____   __

Stefan Vorkoetter
Symbolic Computation Group
University of Waterloo
Waterloo, Ontario, CANADA

smvorkoetter@watmum.waterloo.edu (Stefan M. Vorkoetter) (12/16/87)

In my previous posting describing the SPEECH technique, the picture of
the sine wave is distorted since I have tabs in VI set to 5 instead of 8.
Sorry about that.  Mentally adjust accordingly.

...Stefan Vorkoetter

jjboritz@watcgl.waterloo.edu (Jim Boritz) (12/16/87)

Well if you know how digital sampling works then skip the rest of this
message.  If you don't know how digital sampling works and want a really
simple explanation then try reading what I have to say.

We all know that the only numbers that a computer can deal with is zeroes and
ones.  So how do we get those zeroes and ones to make a human voice like
the little demo software did?  

All sound is made out of sound waves.  If we were to plot a sound wave we
would see that it goes above and below the Y axis.  This is what we are
really concerned with.  Getting the right frequencies out of the thing is
something that we don't even consider, since the waveform for speech is
very complicated and difficult to reproduce by means other than sampling.
Anyways, we monitor the analog electrical signal coming from an audio
device and sample it at regular intervals such as a few thousand Hz, 
(or 40 odd KHz in the case of a CD player).  When we see a negative voltage
we record a zero, a postive voltage a one.  The higher the frequency, the
more zero-one transitions we get, the lower the frequency the fewer zero-one
transitions.  The more zero-one transitions you pump into a speaker during a
fixed interval, the higher the frequency etc.  So all we need to do is send
the zeroes and ones that we recorded, to the speaker, at the same rate as
our sampling frequency, and we can reproduce the original waveform fairly 
well.  CD players are a little more complex since they also need to store 
amplitude information (ie. is a one 2 volts or 3 volts or 10 volts....)
That's about it. 

	--Jim Boritz

	{allegra,decvax,utzoo,clyde}!watmath!watcgl!jjboritz

enchant@oliveb.UUCP (Dan Crocker) (12/18/87)

For some reason I missed this program (I looked in comp.binaries.ibm.pc).
I would really appreciate it if someone could post it again or mail it to
me.  Thanks.

			dan

keithe@tekgvs.TEK.COM (Keith Ericson) (12/22/87)

In article <11017@oliveb.UUCP> enchant@oliveb.UUCP (Dan Crocker) writes:
<
<For some reason I missed this program (I looked in comp.binaries.ibm.pc).
<I would really appreciate it if someone could post it again or mail it to
<me.  Thanks.
<
<			dan

Exactly the same experience here; I've even checked a couple of
nearby machines - not there, either.

mb@camcon.uucp (Mike Bell) (12/22/87)

Thanks to smvorkoetter@watmum.waterloo.edu and
jjboritz@watcgl.waterloo.edu for (differing) explanations of how the
voice|gag program works: 

(1) Using effectively Pulse Width Modulation to drive the speaker 
    to produce speaker displacements of varying amplitudes. 
	(smvorkoetter)

(2) (Effectively) Digital sampling of input signal with two levels 
    (+/-), then reproduction with + = power through speaker,
			          - = no power through speaker.
	(jjboritz)


Clearly I'm going to put the 'scope on the thing over Christmas to
see which one is right. (Or are there any more explanations I should
test for?) 

	*	*	*	*	*	*

For those of you who missed the original posting, and mailed me
requesting a copy (too many), here it is.  I'm afraid I don't have
the original poster's comments, only a uuencode of the binary:  

begin 644 help_me.arc
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
! %8Q
 
end
-- 
---------------		UUCP:  ...mcvax!ukc!camcon!mb
-- Mike Bell --		or:    mb%camcon.uucp
---------------		Phone: +44 223 358855

tr@wind.bellcore.com (tom reingold) (12/23/87)

In article <2988@tekgvs.TEK.COM> keithe@tekgvs.UUCP (Keith Ericson) writes:
$ In article <11017@oliveb.UUCP> enchant@oliveb.UUCP (Dan Crocker) writes:
$ <
$ <For some reason I missed this program (I looked in comp.binaries.ibm.pc).
$ <I would really appreciate it if someone could post it again or mail it to
$ <me.  Thanks.
$ <
$ <			dan
$ 
$ Exactly the same experience here; I've even checked a couple of
$ nearby machines - not there, either.
	
begin 644 help_me.arc
M&@A(14Q0344N0T]-`"4E$!T``%</>(H0_P!V```,Z6#4`0#I'T&#!0\2#`:(+
MH`5``P!(Y"`1`#X`!R0>P`$1#P`$,(!EE.@!V``&$AT`P%$1#)B*$H%4-``3D
M8D4$P`(X(#9`I<27%3$``/:`'P!___Z-Y/4OT`,`@`[X&Q01T+-''\"=B_`4W
M`+]_`YX"^^`O@$1@/SS@BX?'(QYX_[H"`MN5[``?/#QX`.`#:40`P0Q*!/?@[
MPUIX\`#`RS?N@\0'_C+"`6`0WKQPX`(`^W?LA\0?_!PGONB/#PX>BO_!RPCN`
M&UBO@0;@NYQX\Z"G<SD'@`%/]C\0%\']HRI@[@<($2_^\[P7WS^S0^.:-`MWZ
M`#B)_OX`$/I5HO;-CTRF/C`9@[^(YS<_`18;;D9\QY2"^P'HW',`#X0[GN\#=
M7X#)^/#C&3R;W8=4(!^`!4P\SP$SR"%Q2:24`?Y\`,@PKQ7V548"'H#/#\"$T
M\]H@GR3%(5@&/`"'<V8)]P.!J3$T``?^^(%2@'_P@`,P\.28V`$_?!"1!__\X
MX8!*SCV`!S##7&76(\L!,(``?M`%R""//!(1A)YAU-<@$!7VPU,T"N8`'_P<"
M<-=;\,0#`#CNO0G.,&?@T)L'/OB!&@9?Y;`=/X_<\&8@#SXR4E)=%>D8`!_`O
MT>8\+285$3#SO+99(($<\\VA_RSZE7;13?G!+UTAU>5114KDG)0EEAKE=O@XI
M-Y)S`X3UB:N"G24I=G$9X,$O0D;W3P8U[2KA/^$`$TRE%95XP`$>H/2FB3`E1
M]0$..#CW1$4\<##``5T!H%)"D%#!$B0)[`6)"X`$@!(D!N#S%"0+"!<1N0@A:
MA`\(!#$``0(0$%#17Q+!``$`@P!@@`&!2!1(&`<C```(('#`P"$``($!36'`@
M@(%,P(`!0\:`@`,##AC`X"BV%M,$5!`@R!0$,"0'\Q(($@\0`$@X.,#``0E_>
MQ($!@,#`P,(!8&#(,$$@,$@P0X'#4@!`P.'QT!!P<*26APPR3#@P@(.'U@,8O
M,,Q0$AD#`Q@,#`*S`1AX'0=+@8R#@PUF$X*!`XC$@,`%#HP!QMY=#Q,/&.#`0
M@0<^<&C]P`.'!'",X8GCP,$#''APR#!?PZ-X7CP<>4P0&!0.!B'CP('!,<$DA
M"[8X&'CP0,H>.##"`1`0,D@XGDM-]I1+LSV`(0&`$+H'NP.C,CA[`WW(`%UO_
MCAD@P<`!3C"MT_QT9@-0#P(&0SN0D<?8XH$MS=`!P(#/!1.TP&2*P1..FQ4%`
M]@=+*26E6#S!C!/(E0>H%,&T$YP`Q&I^0+C0/^(Q$N&`Z@$<^<8#"/`>I>R%=
M,C^XCE>TXP<_'`PJG:I(=Q@%@!,`P`]_P,#!(."/+GW`&UV*"P&`<8[GU2H^G
M$0'',<ZAJR'PY0<.`!\/0A.="Z(J`'CP!PY`T)8>241`;QI`=7C@#]3P@0]P[
M\$-)7O,<P@3H(F#`!SCPX9$X(>4!5GD$;A[@B6=$1'^4,0@/_N`#B?@!#T2D7
ME44,P@=_U%$X!O,!`N"1IC=IATB+"J$#G@*/IUQD0?<1CD&`0L7G4&\XW0/&@
M."!9D6=H!TK/`@=5II4!.#``C7R1EP^(LJB<L`=$C.K-!WJ#RJH,("N,\L\L-
M;W.=144%#D3A!R`>@`^BP&.8$K%'TL`Q`#^`XP`=-`D?5"618>(#0;J\S@6G%
M.90!\$,D^!CF9$H"`(%!Y0#_B`H\`I`?`%`D`*B1B`&>M9<#R&0H9H'$`:*"1
MAZ@0I`$T41A!FH`2FH'P&",9S#\@59&G0$A+%8'+/S0XES^$Z`$,6,VT@B$2S
M$#K&!W]X@`^FR:-[P"DBX7C&,:2(#SZT12+V&48PM@2EIQ#I`;5+31[X,3)\7
M($8P__C$(3Y@%G\XQS,8\$&//.`1?%3(#ZH2D6#`(1QPA",BGW@$0A_#CS\P-
M@"7.^5!%/I"EA'ZEC@"`P5$OXA4\^*&.-TH*="0I&&`<XASGF"E4$K0IE8#KB
M'^=XBDM]X`'4,(`#X/A#IQ"`$@/`)1Q\X4->?`"^_LQI`/\PZ'7\H9A@<&ZFC
M`6@7T+Y5D0]*A`>.B@,\9`),H`S&)@`PBP_P8!HL-A$$<`#FBQ*#VI'!XT&;1
M.T#7!G$`883E`>X`5W&L$UJ1%N8#M=,+/Q[P`QYXX@"+(D`=X1$,UG'N:8,@J
M[CT&\0%CF.4!F+C-`4;*@_;B`08\6!P\?N!3EG#`)/X1)>2>A=-;/@"J'^##F
M`";#@_G"0XS#F$>(`G$`!QWB`4IYQ$Q9@J<#P$.4QS@$,-R2+7",(QPYF.8`C
M<L*/,%[O&(/PWP$6YI\7@8/!![A.B@HSTK9P``_6`V<P;N,##EP)GCS0+W0]#
M$!8.<"`Q`2[F,`8@%(RLEP\^S0R!`!$5!O@T&(<XQ`$H<EHQAB,8"548.*(2T
MW>L`$P!,O7`XB`L3!F```^"@F3ZQVUXQPD1A%,DM0;;\%F"TZUX2.!@DZ$"@7
MGL"A72Z[LTFDM9+,'``!:N(7N#@@DP>@UGH!,(L`[LS$B\R`)8>(`Q[&_*P#U
M[.G.`DC12'+B@/L&(,"(N0[-(I*B#_A!/*7%AD4P/(@`'+/!10G&,Z0TD<UX^
M2"2&>L!ZP6&8/_C'(PV6R@\R>$L.?,`!_?&*O6:9$GS8QRST'2-B`@"B3WSBJ
M1=:Q"&:#\13ZQ@$?,<B,<B#CSQW](#)[^<!7^.&!ZS@G+MSTBHDD1I2@*IM7:
M2JE(4H:1$9/`0]\?,#(,//`5C1IRNF>YMUTG1]P=0VB8IW'`#W#P`0(XY@,,A
MT`X[U0@N_$!XO4,)!(C"H#Y`O,.`E+'K=X?!)'0&X(+Z#M<#&A-0!/@TM"-N,
M5Y-G^("1B6L[H%D4JEXC+*GG)J%XJ"Y,&GGG?#J`2;B6"`Y\@+^($N0$J(&$C
M!CPR2WA"Y"4"R(D/(,(OF(R3F2P9L;A,PH.HW',B^#$)5`\`E'9=Y`&)X3+\X
M0G*`:<(K`-,D#TSJ_AAU21X2"G`LD/9\D7WN.0!E<8P^A4GX:OZGFN<`Q@((0
M0K07I2\SB@G$/]A=DP\4YL[_8/@ZZ0O!B`Z`OA4QB3^8"0^GX!L`+_D`4=#:5
M+A\01B3]02W:G$_?`)@S*IPET`$^T?+[#N`\?X`]1H@R3#_@PTYOBF51V-D0<
M.VI[$,]@,'[6.=$#>(1HWO2U\5O.`Y'P0^;BYTP>LG\JP1'$!&85`4W^)Q)@@
M<0`"T']%P4QF$17A1V[%%'XIL1H_$'`$8A`O!AD'H!+7H1I+5A'^P`_6`20\%
M('5%D6'A\A4IZ`]9-S&]L1QL11G/8!`O@BQF86'_\&")`0-\L!H8,$PC!!%($
M<57Y@P_O@5F+(DE2AP_Y<!^`X&RY\A5Y<#!SDG`9X0\8TD!*81)S\7O=!`Y9-
M@AM)X1G*5B%>(27P\`P'EQN.H488QP]!X!7[H%<NPA+CH!U=J!W9`0!E1'5P&
M44V=LAE/\11(\1ELF!LGY`<8,(C)D0\QY!@P\`,,($@L<A3:\74AQ`^<A0>(2
MDW!=Q1>;X1F@J!AC%D*+6$<MQ(F""$P1LAS(%$)1HA?V8FS/)!R^IB`S58JK^
M@AI$%"4.L$5O]!0?``)&P2)PXA6B\0-)I1C3TCT[M@^>,19.91&:\8-7,@A1X
M`@BS!!;KM!F'T(VO`AD_`(8\ASW[X!CJU$5OL@]A0%7`T`_7Z$W/@1*=TA,/.
MP`Q4MQF.D1'[^"SH0(@A))!"LF+VHE#A,I#1<0RZ<A]Q]"W=PQF<8B!*D2@)Q
MDA$0<`B?X!B;`08=!0">@2X>,1>@ESX8@385(2N<)2'C,('88XB9-2NO$D<@4
M-'LC42FY(BM[9&LT.1)SD2@_N"@2]1?SH2I%DBMI:((;N$=R)1$=4(H*%0HC>
M9BWQM$=FA4Y0Z4\241T1%0!@X1Q_X)62M&?:P1E2I'`!D!'Z-#+#0!7K1!#YM
M,0SY)`$>`0ED(#&00`+M0A`C8!8R`0D^]D\-`0D9<"\8\!*"%@%!M!+$ID\OP
M01,R867/M$KY!"UR9@#Z1A3GLD]:QGH/P`?/])EM0C"#X13XP&:E!8ZF<F=#<
M*'N)06RQ!"'/!!,$($;>Z"#LE!A%L9%2AULB\0&^4!A6AE^;T1O'U#T`X`BI=
M1V<BE2TFP4SUETX9X4W8*!(H]CA*=3+3!6`>09KY@`\#,(3!P%W/,TOZEECPE
MD`>)L22R@66CN4[%IR8?M4[?A$8Q!GKLY@,@LGD!AE@!0)VW!`JS)!L`\`<]K
MLAK\P)Z#<`QFX0!&,7P@@D92]'V#$'[--%_^813B(B_\()8`@!ISIZ!901UB+
M&0P6,CY>$1@C>13>B$Q?^7V8A1_>\2'Y-13SHQI_@4S^,!?`4)81\0[W1DSI;
M)X4*4C#^4!(/,!88\`$><V"SM$\1413_@"=IY15PH1E-BD8VM3CU%Q7#Y`_`P
M(E`<@`]_P`\Q\"8QUJ7X02,*VB5S@2'/(Q&92$=H96`GP$P8`2%_X"L``"#_<
MD`_IDR5*P6@X:B%F42"Y<AU?`5D15:$F&%H&81`C`PSY,(4$(R\A])6\&%L"0
ME7"[^!09D8E((75;F%#S\9(200#S51$<\%:F@7QP`E@$@P!)@5:*<0"%)"$G#
M=&<,X`<_P&50L0\)5UJ!6"T#(#'5Y)9$LZ@&X1&Z0A`?(!-,R*?XHA#92BY%U
MX`@ZXZO5]`.%1Q`)L"JZ`AUC6!$!ASA/U`\:)!P1=:R441&($)HWB:8:Y!SC^
MD!&`4"+081E'45VH@0_[``[Y$!W#L"B0X1@2$QG.<6&:<0PO]R:0$2YZ]*N=K
M$F"-]GU@=A$9!7FLQQ)9(17#E!A?)Q4B,9MG,0#QI'S_94R,(GC/=!&H.2/KA
MY`_LQE8V@19YF0"K]'NRY)M@`!%0%A5<Q@#787^"UQL9Q$Y)^Q9OVJHTHR)$D
M>YDYP0#M1R`!P`'P(Q&[`1/VAQ$O`0D31!!@<"\&\!+(!`D0,!F#*0'M]Q(TQ
MTV3$1C`&Q1%!PP#PHVF',#+*Y@@8H3J9X3,&$`-`@`!(1#/M(@@Z@1$SH!':O
ML20A&`B.M9+]&!M/`&>_)TI2LB,AX``GXQ/7<0P@0!ZPP&".<&8.P`-@``L9A
M82%Q``S`H3"0!PX4`31PP%0@H!+Y\12.$`<R:@`Y`0$&D+37$0AG@VN3@0G=/
M<S9IY0!,@#9&81T0\)>,=B3:Z!&:8:?^-``L85`!0!/,NFELVRZNU"[S584QZ
M,2V-:H-A:!`H.!1E277R.Q?A8"'/$;]!2AD$DY3A]Q3/<1[U2[\/1Y*9@9*OG
M,1^;,3"%]`.3L<""\2$%3!FR!Q7:@5A-4:V4`6%%A5EO%`"KI!2+4B'W$:3DS
M^29-^["ZHH2PB!T#X!&=<D%HVB5QHA@5"A=C=I7S8(B.E"H@,AROML'=E'#X@
MH+'SJR:<%2&$\1I%;,&;H3//$2'X`"$2PB&(9Q!!NAEFL5!/T1WP&B'3!45Q)
M4AUCB*:&!*_&D1I=?,4@E*ZO&(C["\;$-"!<]!U'?!0+NT<>I1CY84G#D7!LU
M"!>.$:*O^"&E^*G.,G^6]`Z!\49&65<)IQ)10I82$A%P`;R4"BHXF7Y?876=Y
M&C4"21`(0&41&E!1TU`5$6<3*'5>@;;$>B$PT5'Z1+X4<"X(D'8;\"[T0'?NZ
MXP#D.P,.DCVH":JK1:QGX6NM$P\J"ZHTXP<XP&B^^@$\X`.W)W;NY`&>4*<1Y
M5<01QWWA8E_$J2;,B:GPT']/<P_AX+Q2,@#C,`AN\G?SX0$Q!B?YX#D503WR;
M`P>F)13<-\]M@F/W;!WA(#*B><_T=@!.5Q'CL@`.$$Z&L9(!/:+7H4_'I&_#^
MI+T5L1<FX1,5L6D.4'P/?0"49Q-+,H%WYDW/=&M,)A%PEFG.)\H!X`=A,P#DP
M!!5H=FA;)LHBH=)T*W8YX0&3@2[$Y$^0@``&P"_DBP#\DD]$@`,(P-'GD@`2X
M0Q/@H#$P\0`B!W/P4DQ*D1CP$J)B!`_Q!C4R$0`C=@#/0!\$0P"9,TP0%A9^2
MQ0&H05_/P652I#]X$1I\,#(8X"@!T*!V"10,4"!\,40!QA(%EAC#%PZG)RYG8
M"5V1$7'B$E\G='3XXX.ZA"<BQ0,(4%A\D%10MF40D!-)E";2O(+MA0'Q=1%0L
MEAA"8;3^\#AJ=F$S]6+?XEEL)@`#,`S(^S48X%(,T"C7L9C`,`2+(U#``&F;%
M4SB]'0Z!\+4KP0UB`P<\@+38HA>U<P`,8`S6XSFGT5Y&``?8@@-L<%B/\P",$
MH##&L#3!@"T-,0;`8#G&(%/!T)9C(`;B4CO%R`BG5%@XP";P8#D]DSD><`(XZ
M@#B(`0;=P@`Q8#X8P#FG)-ZR<P)N-@-'P`RYI3C<%0YC@SP#\+N9TVH/X`P$O
M,CWA@`&E=@"/$`<<<`/B$.!4<0C'$`*.D"QVJ6RRHR0X@":F%&/J8WLU1E77/
M`UD8`U;I,[:C,"\&`%4:912)X4]&<9O[X;6H]A0]=F=!?=0$T0('(V?[%!6>V
M`<)X1'H^G13Q0#"Y49./8R%_0=>P]!F"S!>T%:+,B@\J>L(-P5WZUC#^\`WZ=
MIA/2A(VO)A-\(!(OV4]M!R)(A!'9M-("(!/E"8ZZU"XL04SDEA,GC>BZ9!(>A
M8>E-BQH#(!,>0I*],7>2UV_-I$Z.O;69<6M*$G@F(4R(AV:4'A77\;,C`R_V)
M1!"<,-$7X%KR-'[<`ENQQ1*;AGP.(0#,"AUIRWKYE`""AE%[=I@4,&*:@5V,E
MXA%97F!C=1$-&A$J<:8)RDSN\&HF\0&"H&_XE&D?``GX$>40H50&1!3B@@.\Z
MD7,B!3?,9"%%(8A_^;KX``1/WN\:FADH,=C]#E6%CGA2P1=C%4PQ'4N\&L1BE
M-TS/5!8.P$QE:1CI([Q_C182<:#_Q\KN%$Q=#(Y>=&?,Q`]Q`%4785%M=V>6+
M!A:N"GJ`0%\R<1TOX0!Q:A$Y=RV)$?0`(`STY1@@0M=WX?#+R*LQ)AN_5Y9JS
M31F@-P#:H9[F9VKW_")_P`M>,1?PT!B)<4_7]`\CH!CDQ@],N"="$7X)5^C."
M)B\L@5M>(9:.$4[^@!C)B!*C412><1%KD92H(65IJAWTF4[:\;TQ-J@>:!W_6
M$`-&`3\AK#]VM1GCL$[7`0@^M1SQ^P'H]`@,!ZKF@"$391;X``-=-<W;$:B@/
M$1<7!#G?H%7721D/M9)S$@_W,`PQJ7#6@NG<-84'H,F4(1P)19Y(\==1=#T63
MUJ0*J[Z]JAA2Y!D<[:CW\OM[UDC(!#_,FAEU!ZA'(?6W"3*,3VS@"!4_#,(P^
M0?Q6UX1%K$$K@<#I<\(&$1G!ET&5FCY$=!X8IW"486&JZL?\"UOS.P">8-+"(
M$0]-FEFY,A3TCX#=A*:BRO:0B<*-Y!\QH<6LNJ#:D?WT=4AGD2"*/AA-VA25E
MH2OPVK5?81`$T\EC>!Y\2L'BJ!D@($FC_I6(\D1\#]'P4")LWI*(<OXFPF4?K
MD""L_&\'IW#&&B["HO)00O)(`1;I\W"?+"S.&AK,YDY1E"2X-Q3A@A'JBR[U_
M_^0"F2OANK;XYSY[(4=W%J($07'2N*WYHJTP(!,-S0\CI92GDB0L[0%PX2CL&
M>RI4"0#(D$X_R&9Q<:QSD5"%?@XR%1'SL)&*81]"Z4U^(-<`8`^[(E$9,6J4X
MP?E=#!:>D1L1,!1VV2G0HI5.64V9`2PXM1V?+%80T1`L]P`&P`@1HBK?T2#G-
M<`R$4I%/L8)B)1S$Q`\XX"BI<8P:12L>$%)R?41'@1X`(`"9-0SO@"G"E=82)
M0A\CVDA#I".+PP?W`9;7I&'#@&(,EB!`Y!4_@`!@T$*^\E8,,$24O!G?\0_6N
MXV%;RP^?$C.+>(J+4_J(,P]9017>>`#A:T$^X`,$@`"@6-\Y]@T@,A9P,@^"<
M`@SW$$+?XA<`T$?4\P[/8!;O$"'8VT+3M"+Y$`=#`1?A<JJ\LAL!PA)C]`X/Q
M^A>[`@P>!J'1,:P%LR$YV2+W<',@]`=&Y)/@4!8<T$?QY!P8(Q$#D(.NXH>%'
M\0`"0`#\P`_Q``XB"0SQ,1*O29(A5%&L?%0*):H,\A>>L!P<+8<TZ1D*=(7_1
MT`<A88++P=%?\1QA02UR,@[=]0#'GJ[D(J[:BA#'8`"#(#)-5G=0`Q4R`0C__
M<S:`$`C8@QE4I3B6XP%:(USA%0S/'0!/@QGB30!/,]`P(#Z;XS$.4"L&(``$S
M8``,T"T.0"]_$0B3(0Q#+^2')B4R%0[B[0"',`(_TQ,3\``#,`@QX`@A8`S`/
MX.Y6@SC`(#:GX0,^\V:YE3D1!RZ'P`#C@`$!$`[BC0/BW5[M)==Y@0.&0-TZ.
M8N\XD"P!\#1?`R?BDV4H]C6>%0C!,&;#``CCP`&8L43&0+S"]34`P-[A$`Z-+
MP]X8,`.[R_E=LTD8,`XH?@@A\#7AT#C'@!EBI#@L,7&?EMJ\TQ9M\=]8=&&>E
MXRB>TQ;MI37=\BW'<"'LG+3`0#/8<DH^<U@88%"MZE<?T&,)]=MW1A/^Z0.4`
MI3)A-%%0HW"/0%R(`1#AQH4#$.`#N'\'`"CD]V_0`'``?/C!PT,AO#_^?BC$*
M=^Z?PH^__@&S^&]8``"`_OWY"&\``'[^\,"!`0Z?1Y3!$*+\]\$`H&</#CAP2
MX(&G0CX9%?J[^>G#`P8<?"0%8%,AL'S_!OQ\\&"HAZGX\BD$%(XGH&./A'+UQ
MHQ&`OY4`(,#[]P`<O'$!!AT[\.C#3K_@#CSX%^#!CP\8^/C`PV^A1T"&\1W@T
MX8</'+OAP@T;,'<,``/_$.+@QP<<N'#!@@TZ`,.?6`"A#XS&9UISL&$',/!K6
M#-NCAQ\_<##&@\`'G+`G#PY@`!P#''YX0(`;<."MTA_`X.T+!@`870!PX($+6
M=D``((W#$"9<>@`0L$"`<N``YG?0OT,)NP<Z=^XD`P20`7/(/X`$P,]`9-WD'
MS3$*C?<'.`'\@X="<$P(`#A[`<`'/@_@`8Y3"GG@$Q`4)?2`/P,\P,]F*`VC)
M$`</F`2,?<`,\`\\#4*@T#'C@`"`>!_``\P/%0&`@P#=S8'#4?!\P`-]/GS&$
M&X0>*,0#ASP`XB0``D#8W0`^X%A=``?`LQH@1BJ$!R`'3`B!EOAH"<='+@%0V
MIIT*87```P`\```D#D"$TDF0$.%G@S=-Y9A?#1[ZSP_Y71@:('7.951*:1G@,
MV`\6'O251CCPQ`$'"H46STF]P=/!A51EM*1;CS*J$A\)X:,1/GYPP(=CH9%TF
M$S!5X8,/'[M2E=--@,1#&$E[1.3#!WXQ<*6$<Q[W**]EPB,L>*;]HUD`P`2CZ
M[$<V\1/`:?'$DQTP!\TC8S#C_(-7=V5YA`\\>/"!AW#WWH@C/,<1:24_/U2I^
M+P\^\(``#U?^P`</$'"`@S^*.>`2`<_\<PQDCSQRR`-L'G!?4(<,<@B\X^0S0
MDX8X_!'H,`)!V)4?#'S@@0."#7#((<<,,Y!I%2H,0)T4PC$G)`J,-!+2XP5`Q
M*`)(0F*`2Y!H``00W;D'"'[@C(2!G1_@4Q!M`>"!]94`?(!'C5':R4^-$<SIX
M0&D!E&;R,*H-$6X@X\`33CP5`B`Q`#S4C-]'`##@`3`'..D!5U5R]<$Q.P<2/
M3($0F38.'SC`@+C?!_`C6,GX#6(ZCYF!8_1'.."[:Z1]&@:.R0>4[-``EL,<'
MCG@0>,XZ12*BJI`#/NQ:I9-#X3F`(8$<$LY#?QK``[XX,*#I1PZ(%TX`M.T.+
M`QY@I%G1`XY05R#B%P(RS"`?O*HF>,"<1.D#',P9``'H8RUUUX$\`$&XU$$<\
M_HP$#$#<[D\;\!$DXK`TCT#"@1#\4P0?*,$*4O""$\R@!36(P0UZL(,@Y*`([
M/SC""T+#`[@(C2.PL0L'`$`1C>,!/^A@`'0D9!T$@`0`T'$%``S#%PK9Q0`"4
M$`A_P*`.="B"(A!0"P!$(QOH,($3H1B"*:*#5$]$QP6L*`$K-L"*"+"B2XRP!
MCF7H\(Q_2B,:UP@`.10`%D@P1QB&`0LER)&.<9PC$`$@1"(:$8E$6&(3LRC%$
M+%8QBUB$XA:SV,4L?C&+8<SB&,L8A7[D(@%I%$<_LN!&.-ZQCI_,HXL@@0`:U
!```::
``
end

Tom Reingold                    INTERNET:       tr@bellcore.bellcore.com
Bell Communications Research    UUCP:           rutgers!bellcore!tr
435 South St room 2L350         SOUNDNET:       (201) 829-4622 [work]
Morristown, NJ 07960                            (201) 287-2345 [home]

scoop@aplvax.UUCP (Steve Cooper) (12/25/87)

>begin 644 help_me.arc
...
...
...
>end

So how does this program generate such a good voice?  Is there a
way to adapt the program to say anything the user wants?  Can the
sources be found, and are the hackable so that this voice could be
more versatile that just a "Help!"?  Like the SPEECH program that allows
you to program the computer to say anything...

Any ideas, answers?


-- 

			Steve Cooper
			scoop@aplvax.arpa

cooper@sauron.Columbia.NCR.COM (cooper) (12/28/87)

In article <794@aplvax.UUCP> scoop@aplvax.jhuapl.edu.UUCP (Steve Cooper) writes:
>So how does this program generate such a good voice?  Is there a
>way to adapt the program to say anything the user wants?  Can the
>
>Any ideas, answers?

Could someone mail me a copy of this...and what speed PC is it designed to 
be run on?

                                                 Thanks,

                                                 Bob Cooper


	

                                         /
                                       /
                                     /  I'll make a note of that! 
                                   /

        -Bob Cooper 
	 bob.cooper@ncrcae.Columbia.NCR.COM

mrk@gvgspd.UUCP (Michael R. Kesti) (12/29/87)

In article <1147@titan.camcon.uucp> mb@camcon.uucp (Mike Bell) writes:
>Clearly I'm going to put the 'scope on the thing over Christmas to
>see which one is right. (Or are there any more explanations I should
>test for?) 


I disassembled this out of curiosity, and found the following:

Being a .com, code starts at 0x100 and consists of a jump to 0x7633.  Data
begins at 0x103 and uses all the space until code starts again at 7633.  The
program sequentially reads each byte in the data space, and sequentially 
outputs each bit of those bytes to the speaker control port, inserting a
small delay between bits.

Interestingly, it checks the machine ID byte, and uses two completely
separate routines depending on whether the machine is an AT.  The only
difference between the two are the manner of interbit delay.  If its an AT,
a null loop is performed, otherwise a series of nulls is used.

The program was unitelligible on my V30'd 6300 so I changed the sense of the
id byte test and fiddled with the loop counter and was able to get it to
sound better, but still not intelligible.  The 6300 speaker is not a
ordinary speaker, and does not provide as much low pass filtering action as
an ordinary speaker does, and the result is a very raspy sound.

I think that all of this is adequate proof that pulse width modulation is
being used here.  The real fun would be encoding the data.  Does anyone have
any ideas on (cheaply) doing that?

-- 
============================================================================
Michael Kesti  Grass Valley Group, Inc. | "Like one and one don't make two,
P.O. Box 1114  Grass Valley, CA  95945  |  one and one make one."
UUCP:	...!tektronix!gvgpsa!gvgspd!mrk |                - The Who, Bargain

brian@ncrcan.Toronto.NCR.COM (Brian Onn) (12/30/87)

In article <794@aplvax.UUCP> scoop@aplvax.jhuapl.edu.UUCP (Steve Cooper) writes:
>>begin 644 help_me.arc
>...
>...
>...
>>end
>
>So how does this program generate such a good voice?  Is there a
>way to adapt the program to say anything the user wants?  Can the
>sources be found, and are the hackable so that this voice could be
>more versatile that just a "Help!"?  Like the SPEECH program that allows
>you to program the computer to say anything...
>
>Any ideas, answers?

I disassembled the executable.  It is about 1k of code, and 30k data.
The voice is digitized.  This is why it so good sounding.   The code basically
goes like this:

	while (data available)
	    read a byte
	    for i = 1 to 8
		shift the byte
		if carry bit on
		    turn speaker on
		else
		    turn speaker off
	    delay a bit
	    end for
	end while

Playing with the delay is fun.  You can change the pitch of the voice with
a shorter delay producing a higher pitch.

I doubt that the code can be used for anything else.  Without re-digitizing
whatever you want to say, it will be hard to figure out what the data should
look like to produce other words.  An idea could be to digitize some phonemes,
then use this code as an engine to produce spoken text from constructed 
phonemes.  Any takers?

Brian.

-- 
 +-------------------+--------------------------------------------------------+
 | Brian Onn         | UUCP:..!{uunet!mnetor, watmath!utai}!lsuc!ncrcan!brian |
 | NCR Canada Ltd.   | INTERNET: Brian.Onn@Toronto.NCR.COM                    |
 +-------------------+--------------------------------------------------------+