[comp.sys.ibm.pc] vmusic87 / fixed, hopefully

bob@imsvax.UUCP (Bob Burch) (12/23/87)

from Ted Holden/ HT Enterprises


Several people asked me to repost this, and it's just as well;  the
old version couldn't handle large applications and the version I 
posted the other day occasionally hung when there was a slight miscount
of notes between voices, as in Lyle Kimball's version of Scarborough
Fair, included.  When a human musician gets slightly off count from
his group, he hears it and catches up.  Computers can't do that just
yet.  Vmusic is based on the notion, first elucidated by Steve Muenter
of RocketDyne, that if you continuously add a fixed number (frequency)
into a 16 bit register, then the frequency with which the 16'th bit of
that register will get set will be absolutely proportional to the
frequency itself.  There are just enough registers in an 80x86 device
to do this three times inside some kind of a timing loop, length of note
times tempo.  All of this leaves nothing in the way of compute power for
anything else to be happening on the pc while the two or three part music
is playing.

Vmusic, unlike Pianoman and one or two other earlier attempts, is not
faking anything;  the harmony and tone generation are real.  Kimball's
version of Scarborough Fair sounds quite good (to me at least) and it 
would be neat if other people could begin to code different pieces for
Vmusic.  This version should be able to play music for about 25 minutes
at a stretch, and it is possible that a number of classical pieces could
be coded in entirety for it.  When coding anything long, it might be best
to code a line or two at a time for all three voices, making sure that the 
total count of notes matches up for all voices at each step;  like I said,
the program can't know how to catch up by ear if they don't.

Ted Holden n


begin 644 vmusic87.arc
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
M- ^D8.;*X!L_J;@"T-!7$$,*@,'."SX&H)?N7@[^$$,.,$/NW@'_,$1!=04Q
MI  S] ]V8 #&C_#&X _N/@#_$$,*,$/_8 <(X.Z$X$#ET 7*$"0_J;@", B!
M1U]#T-!7$$,*@,'."SX(H)?NO@C^,$1!=04QI  S!#X(, !&8  L>6KN'@?^
MX.ZNX \QI  8K$/N[@(.5 Y=H P<D3G<P C:8 /$\ <*8 /%< <&T#E?0 "*
M\ PRT XR  SSH J*L SS0 JQ  (JL PJ\ SSH IFK@R^D3G<8 /$\ <$D L0
M(/#SL K+L C<8 /$4!RK<P0$H C8( /_$ L#, WKH C(  B^ PL!( W@8 ((
M$  $?U7<8 /$\ <(L#I'8 "K<P4$H +0( <?X _"H C8( /_$ L#, WKH C(
M  B^ PL!( W@8 (($ #0  R#, T X _*4 ?TH R(D3G<P C:8 /%< <*8 /$
M4!R=\P4$H C/( /M, #QH C+, ^D8.;*D""+P TV0 Q_P#F*< 0(H C8( /_
M$ L#, WKH C(  B^ PL!( W@8 *$$ #*X!N9PPV,H TV0 Q_@  V4 RGEPL0
M   Z4@"K( [Z8.;*@!B9PPV,H TV0 Q_@  V4 RGEPL0  "M< _0, (%L KB
M,)S:H R(D3G<P C:8 /$\ <(8 /%<'JY  $ T HC4 "K( [Z8.;*@!B9PPV,
MH TV0 Q_@  V4 RGEPL0  #S< IFK@P<D3G<P C:8 /$\ <(8 /%<'JY  $ 
MH",%\ HX)P[#J0W*P!&!< ]+J@#)0"%77P=*&0R+X V+< W#H /!$!N1< C>
M< C7H +!8 _8P ,H, ?H8 C!\#SO, /JP F+\ Z X R $ C/L*2 D \0( <+
MH B_I TS( V D X0L [P  CY@ !RT "*, Z*\ V*H ^*8 TR8 ^ D X(H #)
M0"'1H [1L W0P W^D QU8 ^=@ <J5 X3X T3< US\ 71H W1L W0P W^  QU
M4 7Y #B&4 Z'X V'< TJ4 X;X T;< US, &!4 ]+:@_4< _3< _2  C$(#G3
M  "#( T $ L%H #V,'2*( ^*< V*L ^*P UHSP((8 <5X _)4 ?JL X/8 _&
M  AUH)CD$ W3$ W2X _(4 ?Q$)/)/P/2 #B 8 Y_$ CEL*0S4 V HP#)0 =R
M</5T0 <"$ SH\!)VT 95  578 518)N* )3SL)5HG_PS( V#T ZV9 0&</5U
MP "*, Z*\ V*H ^*8 TR8 ]9%PL(  W8, <&( #E, '>, &&J0W1L W0P W^
MD QUP [0$ U%L /L4 ?0H A&8 #V8 R 4 <.  W9  W4$ W3$ W2</5T( #^
M@ PR8 < X/D(T 57+THQF?PS( W#</5T\ ,J$ SU@ YK8P<W4 51,#D$  6V
M.0A&% L(L /7($H[X TXIP/E( <&H +EL '>L '74 _0  W^D QTH)CD$ W3
M$ W2, ??H +EL '>L '7D _KD [#@ A&  "Q@ !-L /L4 ?D  WD$ W3$ W2
M( <+L /7($H[X TXIP/E4 _18 VVKP59P(#&  AUH #1X W00 W1, W1( WK
M4 #^  SY0 <,( /Q</6B%)/)/P/2, QRL  :) <+$)/)/P/2, P:) <1< F*
MP PRX SV$ V $ Z   C,  B X R < F-/P/7H 5Y4 !2$ W2H 7#8 _&  C2
MCPZ( 2WU, PZ$ QUX !73R$[< VBM />@',Z4 [#X#T+H UT@ .*X X+( T6
M<@_0< _24  R,0C2<%78@ N@   +( UUP "', VP8"T*8 ]U0 "&( ^P@ @+
M( UX@ #^@ P#X"K2D ?XH #M@ <#  CF\ ?#, FQ\ DJL QRX 2 D \?< =+
MX _!H C^  C.  B D \1( =**0PS( V D X0  CYD !RL !RKPCBH C6( /V
M  CI@ #1H [1@ W^D QU@ ]SP  *T YT@  %(!.#( T @ <0H #_8"'W  WW
M( T%(!.#( T @ _#D _#$),S( W#@ XYT ]RL /+T/3]( <UL S0M CSL)7H
MT _]( <IL P*D QTH +H  ?^( <?L SH8 '_L SHP /_L RU  #H4 ?_( <)
ML RU4/-M\ ]R$ #+@ O/8';74 ^XT QF%PWU\/MFMPSU< 69@PT+( U]T #W
M, WW( U$*3G28/0MH J^, <,$ L)X ([0 4"( <'< <,X ([P %ST'?&0 #^
MD QUP [^$ RP\ +^  PNL (<X (;0 4", ?UX (#P $N, %4( "#8 P$H K^
MD QU0 Z+\ Q?L +/$#C*H D[  #A4 \%  B6@ D1(01? @J&(!,0< (3T?=%
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
*T '@\/:0@  : "T.
 
end