'===========================================================================
' Subject: FM CHIP LIBRARY FUNCTIONS          Date: 10-21-97 (10:51)       
'  Author: Davey W. Taylor                    Code: QB, QBasic, PDS        
'  Origin: audio.squad@mailbox.swipnet.se   Packet: SOUND.ABC
'===========================================================================
DEFINT A-Z:DIM SHARED K,S,B&,Z&:V1 'Created by PostIt! 7.2
SUB V1:OPEN "O",1,"FMLIB.ZIP",4^6:Z&=7258:?STRING$(50,177);
U"%up()%9%%%[-%U'dfHZ%5[fB'7%%>7%%%1%%%%kf%syfxA(VS'7xrfz:rzLeI9b
U"QonW-sI)dQt<eQ0:A%ukon_.kw;g0#-\eoaYQGT[op=0Pn4jMwSwj=xOgt+bWNu
U"T2lG;&bBp)<&t<d^YBhiEkjE$2l$lZgnLRc\v<1,?f.sCs-SO,ZI=Ds9Dh8H(h&
U"fsqx<wu#^cli[]nxX^80k=C6h(T$rx0Em4^\f'cO#uWuoP;>Z>^J+V,Irx\sttr
U"NF^?Vb&&Y?RmNr%MZfnztpZ<qR:m2sxgej-G(8<HHMhK=]HRIF,^79%<*CPwbB5
U"%,hGVLR$Jq8^395r#/MSJUd1KKFmI[T>Vv12uPO]&75ZR/]Y<l.-'89Yx/TWZ;+
U"LO#Mv9_()9uM42E[M#;x?9gi8W)1iw6FIVlU[l_ahHcM*OD,QuqsN?QiX]Ej[GH
U"l*EY4mK3]GqMc&MyketPiH3=MXVegB^8pK);XXJEDr791[NR3]x:K;Ng-I7OP#3
U"IK7MK2IRX*trk<NQ(5'#$Y:CBTl2'r%j>SFJfF4<a&k:wxe<U8*r2x2SA7T:dCT
U")>=(mSiXH]Bz/:OQq;lpes43HmeC=q.(b0Aj)n),vQq[eHdnW0;a;bSMr*6oO5b
U"er%L[92X(Bj1E>N&y3udFixbsVFY?_lU9A;B*j_:t$74k\K,s/Z4/Fg9Hoh?dvs
U"tCYC%MnX=d6afDhB1NJBw6dWXbJjWbiKh&/D*M1co%+%BUBD%f_GD/*7wl;.zLJ
U"[H:uE'*[u9DEiT2N$eF<6DBA,67W?GQZjrdSApmg6aIb<L,VGhl>-QkEf*NSno9
U"ep1CaI/phV3dB_Gu%&up(%)9%%#%-%_]&fHf;8$Z)%&%%%%'%%.%%%%j.fx(V(S
U"'xr*>[bp#)V5U&.ji3+vO8#R66;HkJDH0M/6_S%52pg^]Ef)-,Iwp;<S.7&;Q*d
U"bYt\w:1<%))#0:PoFkO,6-lP\K<XhhhrR[hc'-6#u0rdtB#8URtY.j?Z[$T;jwt
U"')2SqK^R&?WjK:zMLdX\.xo#0$r]iY59bcpEgZ[7edu9-p#-6Nar1TEO.Th4<6O
U"Ag.Eucv,_gBY1d:=g=-pzpN/[7oUb1O4cw07ftyJ+-h3WO9dwC<[V)HdJAD.b&j
U"M_&Su8sS4qoEHup9<+>JCkFDg=73+OP_bkVGU\,1q2Ns.6rrF6TerI[SJSisqEL
U")K0R=kG)GLu8.%up()%9%%%[-%z&#fH>o,IWM&7%%-'%%%0%%%%oz%slqj.VS'x
U"jr^^8+o<eA6#8D5.66RuS+AU+/sr\N3#T??'Zg-.'Zg.RqAZ13+]19XI-cQbqRj
U"(Z?OB:L'i2ip99rhtb)aXqjbqLqYM8u]l4dzk_CK59D#^U:8I2)*r&b6tWs43B(
U"1;=dt?GjLcuW&T3?FkA>.h[+e'\M&+4EcCp>)2VN3MLASE<t=NppMm=_J;$nl\E
U"$o]5Q-rpDoj<VKWSYK8XZ*Q(=)&cU;+(Ftar<[S$;EES&XD'wK\fKIX\KAgdk#x
U"o.pl->?aTtcnwI\=G9>yM,IG9cs*>nsWUaZKTA[*QIM>8JwST.BHt=Y*M*d<gO(
U"PW./z6j+5pCyT5b5yAYnINP$d1?2HNCPR0T(v%;HDT+fsAhu#xj*whw%%up(%)9
U"%%#%-%W]&fHpN,<*9[&%%6%'%%/%%%%h%mnqi.VS'xar>t:&9yV9IbRRT)P%+<#
U";$5mF8?NQUaUPUW#sZU15-W.9J_1un+M[/34(DVomtCuOf80MPovRMRg\V9KW84
U"S+/ga<I'LfBfGb6XH_sh#_Q1U9M9<m>A2<RYi:blN?sdm<Zph\A2##L*om$7.2d
U"IF\5>GPlsB8vuV1HsES#1mMocTtD'LTlthPl]8HSgDKW8NeP+bu0Gf5fmK.*N2I
U"*$klHs9F-O(Yb7S,tah-+K(%F,X-+nFFAb3QqbrCQ]%zT'a]>rL'Qc95KEEwJ).
U"9[\Z-r\bKo2GT?=43JcWZ:2>SEzG]qR]BbB6(&z9n86K<4w?/-)rSIb#Ku\8jWJ
U"T5B1TP&Y[M#m>r$/[[?$agwq=#wAuSuQjA/)z<<*]BMd1NPRDn]L%Y+8G^#\#cO
U"QWq?EgL5umy;Yy+O>LSX,&J[AGK0g,6GV5[j'[.K#212az\mgP?,N<4u%p()9.%
U"%O-4%fSo1HY\S);z0%%%eG%%%0%%(%'xr%wjfi%SgfxSl>TEoSmkVc$qDC#qU52
U"n_)?Q<2k>g:=<12Ja\hL^xo2SJOis5t;$0oj,o08G1xI>ZTNVa;iZ*XCaOy,Wpy
U"'yn=/xtuhwHrl2qQlAn%d^8^/x+<rHt;p_LaXF^/.]6ntlZ+U&V9j>%6X=eTc4#
U"p1lt&_DXG[CJxqfs)<hFtk)n6:nm;;0S1AiXkbB7\-P9<ak9I&k7-()gV4eUh'#
U"S/R$LKVvALALE1gM+e[/LogUgdYW=P?o\r7FEQ1UT6N;JO+h5Gq<g3g*IXwUddt
U"LBiEQy,P1d0_ncA-EL:Rl\n%9S;IeQXW<1JpBdtg:<U,6=[q*<oeFmGp+uCoq/y
U"WinM#jdHhHaeq2v>4X<x$1U^,PiBL1*kep70I=y5*(6X7[xd1i6ft)c;f0r)>3b
U"r0$ihjUYnAB*=tv)7hN.JLu8ZcP-i*7diqzOIX/lHBtnphXkRN>RsbGbqhw<h6l
U"OQQGlV9CfTZ%SS8a.FhQ*-6#=q5b<PvH%fudqjF%c9L1\5b7EQau3RhVBF<('5,
U"coV&x<>Zo;$)LVu$;W8-k[Lf6\eeTRHgey;==B*i3BAHBSkce0=kfra]a6)<oR8
U"san<r,*YS+NQ*EdnHn/aVhf[VGX'WGLA#Bec],5UN5s,3ks[jeA>)e-WKbYpu?A
U"SNBtb,1,1Z6vcy)RR,ePP:V)2X>0;a=Q<a.cg<-'AG',3a6<NMm1r\O9=$[_FjV
U"u(J<Eo.*Vv:Nd[^Y\>]f:Ro5*6*8P[;R,a#qN:]KhULfc:PR$&lFE.uIY](VRdT
U"FktZj&.)8ft(C&Y(2Ev]Y_Y.s)UYYM$-zthHhOR,QDIU#f4cl'\[LVNgCgGBJym
U"83vo3WV6==<bLdR5B#L)ZipjT#ewH=?C[;9T=M9e^0#lELWFC0:X2Y.n_Qwqa1%
U"uc<Lq^^/<=+$g,]6t^[pWbB36UdD?qMp;]w4w:r+$i*7J]?OE<g;rJ?bjfm=3]W
U"RVY*Z4WuE=;_bUXEmzMk+jWWJMeJ<fcSc^O&URfmU:JQa^Z7X-7f#e3](Aa#'Z(
U"y1$qdt:(FcLQ[iCJA5XDcd;_B$=fj]3Cl#l?6Mg1a$#YB7Z''x<<iSM[NCBeI'D
U"Z_m%3IQBUr4E(&b&7]vDfRwgFVVi09$/IUW\D<GS(R$^5&+Q'Ncc$j>[5L?K1NV
U";kxFewnM\1fb(TPOZ9.?;GDA1^e'1BTBG?RWu#5.m976iE%K0;S#d1E[)gnmAkR
U"^gQXW8(LYYmh'EUUQe>]N,qO<Ee2f:BM84NSRtKOD'%gfOB&9UZiWNH1kj?Ev>y
U"o(a?DM+U#rA1Ujm'/6q:cZW0aUCk/Y6l(DU)*_R90,$Mx3M:+ZTa2Fe\:f>mV:h
U"%q,C6N[T-WM[cK4B-nmb)9:C[gW)V$%0?;68EbP0IP&_P0B:y)L>RXo_L8lhfs)
U"u5s9b\mB/&cZSprP18Yu0moj(v>]Au:$'VK,9%j7Frp(u])R[=;G6pdgIig4$A0
U"M*p3Aw-igM?\5Q[<S?%OGmaA<fKIB12laiyq8A'\;&/;1l_xxB?mj]+^r9>E.V5
U">A;TwrXeAqBDx:NeE2cbQE9J8-B/C,bUYiASQVacBJGE\'kU$^S&>_C-UF6/)9>
U">e>%03hHCFOGW3]C*;((ED_$W=Zu=peo7yF><?4XOQq'B6F[p1%^Q?V;hS:Y9G/
U"KMikhm5AQ-?[aOsSAi,_:9XAM]TqKB7:f2I<DGKe='D.+-Gq*[*M$3EDTI]J^c.
U"L4]Z/gGM%b.Lvp-]])kZc_xLcfLWiRlVrYaV01d(zD?c+)Yjvoq%XACxkE3kbjQ
U"UrL9]Hf_Y(\+X-MknXG[pOQVYU<QY#l.8Y'\>3NR=NK-$O&W4&Hs5v;81,nQDO(
U"nfSQhB.:jagkJ+GrAtC8ZL'0q&mIFas<goZ=xY%T;qd_kYg_ac+gOVNPPa,vPo)
U"VbThScj)$bQAA+grE[5g/o)4r2JTSVe(6^k&OkIK,c4Ug1k9-f6OVbG/w\do8jX
U"PvhShYM3P'gWL.Fzx*#19x5^'2k(t$TH#O;^B1]6ao1].9JPw+>04G<I4O_-g+c
U"oq6p.+;%NFs\HZYGb22l4xua-1\\jSIw[4A-U51g=;R/8q7$e.qdXvD&yvKl=&Y
U"bJe#tY47l>.MZ=D:^N-r>j'$lR]l6;e[L.y+OjsEjCN]T4.Uo?+Ubz\up5,mVD0
U">]UInCnteyk)PO[ijiiaBQ[[7D<U4:m3X)[9:;aBwZ\^Re'.)ZfF\YH>m3OONT>
U"X(7vZQet[(O-v0jQH^qh^s3R=_gXW*BRhZC4w'JuJ;G$f;zS*-O>_de[k&7a>V]
U"ZqZ/n=&$4ql2^R]DZouEDlL<(MIndZ59aK+VD1uA,6qk]Wk]Z1OSqT'[asD=HD6
U"smB#>1W<FXN$ttLAAs#h(QfHI(Y+PLMP'n8?y^1&F#K'l,<H90p.sbXwa)6']_c
U"oMUm:tXGi?^hVkJWaYL8GZjJo,^-*nHHunWk8E#S3MwXox[lbbHO0KwGHS&Zj7J
U":JeK=s6VBOe,q6.Ux_M)z.7uPi1B3c)g_]Fpn?Ela39NBq,c;i1VbNf))XSJ>XY
U"Ya,3A9SZ^c:r]ED$Y+<law[Pm;*E>HlfBq#Qe_xb;yR,3CObk^=,fgKZ\lKda2U
U"l]R$/Y&FBrG.mS.tqDB98v*AYrgl0ZmL/=pRXD_q)Yli:59+s4\/#C[CPS**\qI
U"v'5CZF9hqa5s;c8tb/Bu7P[UmDjb=C:-]:N10j[aFC9Y+OiX6D-CI\#rx?jZY;4
U"OPq7$wcxAI/=A,A#R8<F7K*8doQIc^yQx)>yWO<nb=X'o$]vRK.[(q1GM3boM(m
U"9roNfLAyh=>Zi;_ssCCn\hamS7t?QNoGZig_o?7CfFh/QStEDv&B>(.9C7cMUHA
U"7_IaoX/sU#E/w3X<ZH+RB#y7J/Vef)W4x5BY&sU53JEw\fG(]T)A<8pjgqoGDsK
U"5M-9Z5v_,Nn+NZ9.Z>/q[WC:4K2nA.#+X1Ul1qifl[%slv?9CTitV5&Ju\a'yU)
U"VIK,%+^6>/QIxw)K5cqD%4itJsDuDGA4kYn]M'n&EVZvtNN7&+=GBI&:PodKWaA
U"sY^+r6G$rEQMDe-PhBV4dUDpRwG:+7z_3iW0gO8AYo(,W:etgl*V4DemN.J,#e2
U"4)\Ldo4ite\9Qt9.rV#joPV45kTkRC]wA].EG7>G#49dlhNCstTZ6-TsLDX9YOA
U".XC4M2Bcf4b0W9e-/m.wQ5xgA[:Cn&iuODUrs14R[dP*n;]3(79bNjJ=J=&);-a
U"A$#CyMt9wMwyrQ%AQFvA6Fbsu__Z2f+rVsI<#7mlnCs0(Tj7GlBw*qdtfiw0Qmc
U"uSrGH9HN\')DNQ&DqWuYr0%0MvwfESkyTEUwq:mRpN::0#f^T;4ai4Dng*Zr%)u
U"Al\9UN_*;6bK'D*T:r-TJ%w>iVjfTleZov4VnVp^87cv1wJ&zpw',Tv*s[HvtZ?
U"?e>m.^FBf:x>Ue3U,;)iI+XOIeyhE:97Eqr4)3;Sh&1eEF0O.j+:-)gp>>9ew;1
U"_T.x;EcYS&47OwN#_ph[E_t'c&e=RQ\'*QS<phB<I2*wzJMmOUEcW)'.xb$%*dy
U"P7WYTcZF)Qul&$%TzS>I9uEc])G,tsHzA-xba:gDNJkJ/.3-tqv-Tx5^hW5l^)b
U"iLa6,d4wM5C67JUA9M\a99*dlFmlt=v(PxO%ppm?7O0>&+-eR7*Y/]2-YFR%*Y\
U"^;-<7/g,,5h<3+X>qdmtL1>UFS0i(/>;?4$IKR]G]:qw(Io#BkS0>FIj-Bx(u%p
U"()9.%%O-4%rSo7H-e#&kq-%(%t;%%%.%%%%krq%ngSgIfxd'<VASo+77tz3WpL[
U"1=$/5n/8e./,,RU;yR)0sN#W6bbJ%SEaVmRk<u)t:'J*ti*>a4Nfm$_:5gMvr2;
U"Lctn(8bibhuuZ8xgN7ss]Ta]r.ill\VkW80lKow1_VE0#DI'VnD+j+mUsUb[mj:
U"nFk4^=K#pOQv=;YqW/,HsmG5tB_9L=?soXG*<('-oS0H[w<KOE;\&N*qQf9-'1#
U"UNs/B'/VPW<QZCB/.:X?(Sai)[i;H3tOU0L%.8SI0F[v3^nuVJ3cvSrPDS(=PdB
U"%J.<vt#EGk:GK%&C/lU=X>(*))+HYDv[IgCSP0U+Sh_86uQHD^;U,lZI'>-g-'X
U"KPhJG=e-;.'H$fx#4b)[%^Gf#PI?o=<aL;fgSv0iTEGGq=?a9H8f^Kn1--WvCv*
U"+wQ;LYr6C8%VO,#DQ^WV^\5Q*TBBENbfNP9?p#-,_uE7M/lLZ/Us1:$-1*l_hA0
U"s1_F<6VZB1KXuIf\Q-[]]jUx]=%f'&0s0^q*HYGc=;q>*Tg*39?KEc[$'j'j)l<
U"PL8-mga<7yYMPH-dsu6Qd9M&&)Ro-5oar9N%Q*iPKrTwd,5O40%.cwYPX41;Ith
U"UKhC?5tc=5$YH\Hyco=6u6G2+C$vmSHR:2F1Q5;*ZIl8)kgW/mS%ChNbtW]dsAi
U"rUvA?i-.W6nS5[H7sb23Jq7DeM.Cyt$x;[NKH8OnaEp9fgI,57i)n4clLIv%_1w
U"h55iH(q4.KvD>z]xO8tPa)j\7_48[aRPf#2:jq^dfugs>n;rP)u[RS(?:lANJHH
U"^^J7(k&D.[tDdm6.Ww$9J[t=<s[,N^TPwRWlA;;c$JYiQ&8Y.+dfxVE</c1E:kT
U"]i/KgXh=//akPDF=YNSJ--r9U>3PRgl#PG.cON',xd/SYko*npWl,P2oHC#F6eJ
U"AXP9[z[H994qLtkk$K)='CSkBSTpp4$DRGSFfXWQ+9h&Tgl\K9Aq%RDn=G^l*Gk
U"U\-rw\nUySSIRSXEKxgzM#M-Po'.sQWK=.Xt+/+HKuU)Z&9$,g#:UTu(?>Zz^z3
U"8hAS#M\Y5WNej'j9&8fqb-j:Lia<\*q1k\oeSQ6DvZ[7zoR8+W_%F+['UoaHLIG
U".']Z][0ODoLstWJ;gz4O1Xop2E9.pYX1xG%/BZ:r0Tq7iJ9<c8AH?DI0h/s^<fT
U"K#sbU//9l]1WLL\;B3eC&nP(0/>68'nRQdXG([)lG;^qecI/NblA)Ta4RN<VDj>
U"*GC2Q'kEZ/9*?AfDd3Lz?)Ti\0*V^6Dm]QQU=cfY/fY\-^C/C_lo-K*nYRi:]<,
U"qPq:VR)A+<DOD,\FXn'-i0,,9;'J-uUNXMKFdKfc0s%c);8FUlhxu%I&bOcNYX$
U"uj*\0t*2:w49G-:.1BOuL4VfgG<csvtRc)8X]dZ/&lj*1wa$Sm#TPqHZ=3FAk8%
U"HfnEdhk_2.X95.QJ7uCm)N-8[-3gA/_A=([.Iw^%FQv<_$$+s8kje,Rj;tySs-4
U"Ynssu8Spp1ag5XnMq=Zr\20&TT2_/_OYaWf)m]CW]Zmm*t+mV_Y-HS:e^[)rsQ&
U"Aon?Z-+L]bhr-])?ncjV\/L-*7Vh^y3Lc^tI%\9'4&/Q;d//T;K>Dp9=$IgqBG>
U"W),,vU=IxbOG[&p/Pdd/Yc4?LTvtvuu'VOxIULD2e/9k-.3]8/FLT+vVVq/a_wr
U"dE'3ZO=gCYC37Lwtubs,Y8+n6dN]QB/MKW8wB=MIPI/_^ytC/P_V:'Do)'K3*_%
U"t'b1WEQNp.U2Dtqk-'3AF1?X*:=b<+s$g.i\*#.8Yjd4L(Wf;lcG+_ts$_t8*qV
U".<0D(Ul&'tpukJ=E:eIMRB])8oa[n)3Z^35[4gPv3IW3.]]Y/QV2obg?2V_+(l2
U"0+3gaZ]*T0rC*PD:2ppDEYI(HXn=/op<Eg?f_E/T\QI'(FijhI.x9*^Dsa3+2]W
U"8PY09EM<F:*5N6?V$kW0QW##lfmyp,?b3CcoNTB68tG3y\rNrKoOqFc1<5DYeym
U"zU&xvaV)SQ[WQ.6iyCa\u26U#k/#).Gb1(TqDUI7;K9_d*-0aGbCgnh8GKD<7Wh
U"&ji3Va4o4\BL:uY5h(pBLczb0LO>koQx]2=rjgQ2?GXnPj_#iVI8=s9LAxI'i,8
U"ra#aH[HjgC#L-^qUG=mVLuFIfnFYL)iugb/si0\<[DMFYv($ythU^OdKT;=8TpX
U"ztHGrXmAMz(h^dOyTCITChQ'Wt=IYZDd\Y&BXUJbP7+POow*$R/yO)R8=j5C*cs
U"JEesRB:TfGk17qt(v[K.qo\n.Jk.YOei$OA:gMPE8l9oQDXEf=i_U1$pR/EgC3A
U"k5ioC$TO'i&mtAO1Z>dO+\_kKwM3CJonQo/$<JW^$Jjh)tVC2ck4MVs%$/s9PkG
U"6Bqc:SL>U5,I&Zi)^oPe.za]E#vGdjS+%m;%qTZgBT11qUS'0UgFf\BgqRZ2Ya+
U"/HcgZK3X?]kKrv,EB>2zD7u?qpEo[/\MTy7Y;Jk$Luqvrclb.m:o,B2o5bqUN'6
U"oL(LjrLbfB?X%lLA3FpiEWBG3&iEqr5+LXiOd5H+,iuql4+/ScZN5jKtiAJi^Nl
U"giEi<qAmAS9&A_IV$5$:gsg3K$e9$l[pLRX60F_ll<8'oJ1nwjm'5.irWS,xVzX
U";Am-JSp[((uF5tJg?]h\0=EU'J8D86%<%DAdxcdlIaq]HdeD_LS^'x(up%&'9%%
U"9%%%[-%U'dfHZ%5[fB'7%%>7%%%1%%%%%%%%%%%%E%%%%%%%%%kfsy.fx(V(S'x
U"r%up&'%9%9%%%%-%,_&fHif8$Z%)&%%%%'%%%.%%%%%%%%%%%E%.%%l'%%%jf(x
U"(VS&'xru%p&'9%%9%%%%-%z'&fH>;oIWM[&%%-%'%%0%%%%%%%%%%%%E%%+%A(%
U"%%ozs%lqjV(S'xr%up&'%9%9%%%%-%,W&fHQp,<*&9&%%'6'%%%/%%%%%%%%%%%
U"E%%%%>*%%%hm%nqiV(S'xr%up&'%9%9%%%%-%*fSoHDY\S;&z0%%%eG%%%0%%%%
U"%%%%%&%E%.%%z+.%%'x%rwjf%iSgf%xup&%'9%9%%%%-4%rSo7H-e#&kq-%(%t;
U"%%%.%%%%%%%%%&%E#%%%N%7%%k%rqng%Sgfx%up*+%%%%%%+%+%%w&%%'k?%%%%
U"%
END SUB
CLOSE:IF S=113AND B&=Z&THEN?" :) Ok!"ELSE?" :( Bad!
SUB U(A$):FOR A=1TO LEN(A$):C=ASC(MID$(A$,A))-37:IF C<0THEN C=91+C*32
IF K<4THEN K=C+243ELSE?#1,CHR$(C+(K MOD 3)*86);:K=K\3:B&=B&+1
S=(S+C)AND 255:NEXT:LOCATE,1:?STRING$(B&*50\Z&,219);:END SUB
