home *** CD-ROM | disk | FTP | other *** search
/ Beijing Paradise BBS Backup / PARADISE.ISO / software / BBSDOORW / BBSAMT44.ZIP / BBSAMT44.EXE (.txt) < prev    next >
Encoding:
David's Readme Compiler Executable  |  1995-11-03  |  71.3 KB  |  900 lines

  1. FcYY=
  2. Y4YYF
  3. 5YY_^
  4. j3YY_^
  5. H9D0}
  6.  ; A B D G H I K M O P Q R S s t u v 
  7. ,uY_^]
  8. YYG;>
  9.  A B D
  10. <Ar    ,@
  11. _^_^]
  12.  H I K M P Q
  13. yVY_^
  14.  H I Q.4
  15. YYF;v
  16. ;Dz~    
  17. 9+:+:!:
  18. 9+:8:
  19.  DYPV
  20.  H I K M P Q @
  21. DF_^]
  22. YY9|,uK
  23. ;D@ui
  24. ;DDu2
  25. H9D0~
  26. 9D<|    u
  27. .Y;D2v
  28. H9D0u
  29. YY_^]
  30. YY_^]
  31. ~-YY3
  32. ,Y)D:
  33. C+Y;F
  34. f)Y;D2wK
  35. I].97t
  36.  G H I K M O P Q R S s t u w@h
  37. hQh(gjg,h
  38. t0Nt-
  39. !r.RP
  40. !r$RP
  41. u/SQR
  42. [[XP3
  43. Turbo C++ - Copyright 1990 Borland Intl.
  44. Null pointer assignment
  45. Divide error
  46. Abnormal program termination
  47. $    ~ p 
  48. Courier
  49. Do you want to overwrite
  50. File exists
  51.  Print Settings 
  52.  - Printing -
  53.  Save as what file? 
  54. Failed saving to file!
  55.  Failed! 
  56.  PgUp/Dn: 
  57. <F10>
  58.  options
  59.  PgUp/Dn
  60.  Line %d of %d 
  61.  Search for 
  62.  Topics 
  63. ind text   <F7>
  64. find 
  65. gain  <F8>
  66. rint entry     
  67. ave entry      
  68. dit entry      
  69. Printer port :
  70. PostScript?  :
  71. Press <Space> to change values
  72. Created using
  73. David's Readme Compiler v2.1
  74. (c) 1990-93, David Harris.
  75. e-mail: david@pmail.gen.nz
  76. LPT1:
  77. LPT2:
  78. LPT3:
  79. %!PS-Adobe-2.0
  80. %%Creator:DRC v2.0
  81. %%EndComments
  82. /leftmargin { 40 } bind def
  83. /bot { 54 } bind def /top { 
  84.  } bind def
  85. /cw { 40 } bind def
  86. /xtab
  87.  {currentpoint exch dup cvi
  88.  leftmargin cvi sub cvi
  89.  cw cvi mod sub
  90.  cw add
  91.  exch moveto
  92.  } bind def
  93. /ptsize { 12 } bind def /lead { 12 } bind def
  94. /F { findfont exch scalefont setfont } bind def
  95. /newline {
  96.  currentpoint exch pop lead sub
  97.  dup bot lt {
  98.   pop showpage restore save
  99.   top
  100.   } if
  101.  leftmargin exch moveto
  102.  } bind def
  103. %%Endprolog
  104. %%BeginSetup
  105. ptsize /| F
  106. leftmargin top moveto
  107. %%EndSetup
  108. %.20s (Y/N)? 
  109. %-50.50s
  110. newline
  111. ) show newline
  112. newline
  113. showpage restore
  114. David's Readme Compiler, (c) 1992, David Harris.
  115. Readme error: no attached data.
  116.  About this Guide 
  117. MMMODE
  118.  ; < = > ? @ A B C D T U V W X Y Z [ \ ]
  119.  G O w u R S s t
  120. EAEIIOOUUYIOU
  121. (press any key to continue)
  122. Insert paper in printer then press
  123. a key (<ESC> cancels print)
  124.  Printer error 
  125. The printer on LPT%d: is
  126. confused
  127. out of paper
  128. off line
  129. Correct then press a key
  130. or hit <ESC> to cancel print
  131.  Insert Paper 
  132. <ESC>
  133.  key pressed:
  134. Please confirm cancel/quit
  135. Accept this data?  
  136.  Insufficient disk space 
  137. There is not enough space on the target
  138. disk to receive the file(s): please replace
  139. the disk with another formatted disk, then
  140. press any key to retry, or <ESC> to cancel 
  141.  .,@:;
  142. 0123456789
  143.          !!!!!                  
  144. @@@@@@@@@@@@@@@
  145. @@@@@@@
  146. @@@@@@
  147. @@@@ 
  148. (null)
  149. Data file generated by RCOM.
  150.      BBSAMT v. 4.4, copyright 1995 by Linda R. Bloom
  151. Welcome to BBSAMT43!
  152. Status line
  153. Editing the Form
  154. INTRODUCTORY NOTES
  155. Tutorial Outline
  156. Utilities
  157. Terminals
  158. Notation
  159. Music Strings
  160. Note/Rest Values
  161. Getting Started...
  162. Value Setting
  163. Method 1 - The L Command
  164. Method 2 - Individual Values
  165. Codes for ANSI-BBS Music
  166. The ANSI-BBS Coding Process
  167. Getting Started...
  168. Basic Rules
  169. Divide your code
  170. Code each string
  171. Use an editor
  172. Step-By-Step Coding
  173. STARTING POINT - Raw Code
  174. STEP 1 - Phrasing
  175. STEP 2 - Tempo
  176. STEP 3 - Control Codes
  177. Using ANSI-BBS Music
  178. Screen Attachment
  179. Getting Started...
  180. Design the Display
  181. Add the Music
  182. Using Music in Messages
  183. Getting Started...
  184. Codes for ANSI Music Messages
  185. Sample Message Code
  186. CLOSING COMMENTS
  187. Future Standards
  188. Comments
  189. Author Contact
  190. Registration
  191. Registration Benefits
  192. Registration Form
  193. This version of the BBS ANSI Music Tutorial was
  194. compiled using 
  195. David's Readme Compiler v. 2.1
  196. Press <
  197. > to begin.
  198.                                  
  199.  for Options
  200. While you edit this form, the following keys are
  201. available for your use:
  202. Arrows:
  203.        move in the indicated direction
  204. Ctrl-Arrows:
  205.   move a word at a time
  206. PgUp/PgDn:
  207.     move a screen at a time
  208.           moves to the next field on the screen:
  209. Ctrl-Y:
  210.        delete the current line
  211. Del, Bks:
  212.      delete char right, delete char left
  213.           toggle insert mode (defaults to OFF)
  214. When you are finished, use the 
  215.  options to 
  216. rint or 
  217. the completed form.
  218.      
  219. INTRODUCTORY NOTES
  220.      
  221. Tutorial Outline
  222.      
  223. Utilities
  224.      
  225. Terminals
  226.      
  227.      
  228. Notation
  229.      
  230. Music Strings
  231.      
  232. Note/Rest Values
  233.      
  234. Getting Started...
  235.      
  236. Value Setting
  237.      
  238.        
  239. Method 1 - The L Command
  240.      
  241.        
  242. Method 2 - Individual Values
  243.      
  244. Codes for ANSI-BBS Music
  245.      
  246.      
  247. The ANSI-BBS Coding Process
  248.      
  249. Getting Started...
  250.      
  251. Basic Rules
  252.      
  253.        
  254. Divide your code
  255.      
  256.        
  257. Code each string
  258.      
  259.        
  260. Use an editor
  261.      
  262.      
  263. Step-by-Step Coding
  264.      
  265. STARTING POINT - Raw Code
  266.      
  267. STEP 1 - Phrasing
  268.      
  269. STEP 2 - Tempo
  270.      
  271. STEP 3 - Control Codes
  272.      
  273.      
  274. Using ANSI-BBS Music
  275.      
  276. Screen Attachment
  277.      
  278. Getting Started...
  279.      
  280. Design the Display
  281.      
  282. Add the Music
  283.      
  284. Using Music in Messages
  285.      
  286.        
  287. Getting Started...
  288.      
  289.        
  290. Codes for ANSI Music Messages
  291.      
  292.        
  293. Sample Message Code
  294.      
  295.      
  296. CLOSING COMMENTS
  297.          
  298. Future Standards
  299.          
  300. Comments
  301.          
  302. Author Contact
  303.          
  304. Registration
  305.              
  306. Registration Benefits
  307.              
  308. Registration Form
  309. Before undertaking this tutorial, you will need to obtain a means of
  310. playing ANSI music on your local terminal.  This will require a
  311. special utility designed for the purpose; among these are 
  312. ANSIALL
  313. driver that replaces ANSI.SYS and adds music capability, and 
  314. A_TYPE
  315. a replacement for the TYPE command that adds music capability to
  316. screen display.  If you are unable to find such a utility locally,
  317. these are available on the author's BBS.
  318. An ANSI editor, such as 
  319. TheDraw
  320. , and an ASCII text editor, such as
  321. , are also required to produce a finished product.
  322. The finest computer music processor available today is a program
  323. called 
  324. Melody Master
  325. .  This is the only music processing program
  326. presently available that is capable of producing properly coded,
  327. ready-to-display ANSI-BBS music strings.  The program is in version
  328. 2.5 as of this writing, and is available for download on many national
  329. BBS systems as 
  330. MELODY25.xxx
  331. . Again, if you are unable to find it
  332. locally, it is available on the author's BBS, or by mail with regis-
  333. tration of this tutorial (separate registration required for continued
  334. use).
  335. You may be familiar with an ANSI music screen system named 
  336. ANSIPLAY
  337. While it is an excellent program for composing music screens for
  338. local viewing, it is 
  339. @ suitable for producing music for BBS or
  340. message use.  It includes codes and capabilities in its music
  341. strings that are specific to the 
  342. ANSIPLAY
  343.  program, and will cause
  344. undesirable effects if used for BBS or message music strings.
  345. Be aware that there are only a limited number of terminal programs
  346. that support ANSI music, and the only way a caller will hear the
  347. music is by using one of these programs.  At the present time, the
  348. following shareware DOS terminals support ANSI music (version numbers
  349. are current as of this writing):
  350.                     
  351. QModem Test Drive v. 4.60
  352.                     
  353. Telemate v.4.20
  354.                     
  355. CI Link v. 3.5b
  356.                     
  357. Slick Terminal v. 6.5a
  358.                     
  359. SMT v. 1.1
  360.                     
  361. QCom v. 3.20d
  362.                     
  363. BananaCom v2.0a
  364. It is suggested that you keep these programs on-line and available
  365. for your callers to download if you plan on adding ANSI music to
  366. your BBS system. It's also a good idea to post a bulletin or news
  367. item for your callers explaining the necessity of using a
  368. music-capable terminal program in order to receive the music.
  369. Music strings are written in the same format as the BASIC 
  370. statement.  Codes that are accepted and properly interpreted by
  371. terminal programs:
  372. Sharp
  373. >(repeat from | as required)
  374.        Sets tempo; 
  375.  represents a number between 
  376.  and 
  377.            Default tempo is 
  378.          Sets octave; 
  379.  represents the octave number.  Default
  380.            octave is 
  381.  through
  382.           Note; standard notation.
  383.           Pause; represents a rest.
  384.   or 
  385.     Sharps a note; insert after the note you wish to sharp.
  386.           Flats a note; insert after the note you wish to flat.
  387.         Length; sets value of multiple notes/rests, may be dotted
  388.            Default length is 
  389.  (see 
  390. Value Setting
  391. @Codes that are not universally accepted, and that may cause
  392. problems for callers, are listed below.  
  393. It is strongly recommended
  394. that these codes be avoided when writing music for BBS or message
  395.  and 
  396.     Octave changes; used in place of the 
  397.  command.
  398. Notes and rests are coded the same way.  The only difference is that
  399. a note is is represented by its 
  400. letter name
  401. , while a rest is rep-
  402. resented by the letter 
  403. .  Values are represented by the 
  404. denominator
  405. of their fractional names.  
  406. Any value may be dotted; a dot adds one-half the value of the note/rest.
  407. For example, if a quarter note is worth one beat, a dotted quarter note
  408. is worth one and one-half beats.
  409.           Whole note/rest        =   
  410.           Half note/rest         =   
  411.           Quarter note/rest      =   
  412.           Eighth note/rest       =   
  413.           Sixteenth note/rest    =  
  414.           Thirtysecond note/rest =  
  415.           Sixtyfourth note/rest  =  
  416. Values may be set in either of two different ways, depending on the
  417. complexity of the music and the desired quality of the final result.
  418.  option described under "Music Strings" sets the value for all
  419. following notes/rests until another value is specified.  Individual
  420. notes/rests with differing values may be inserted in the string by
  421. inserting the value directly after the note/rest.  After that
  422. note/rest plays, the default value will return to the last preceding
  423.  command.  For example, this is the first line of 
  424. Mary Had A Little
  425. , written using the 
  426.  command:
  427.           
  428. EDCDEEE
  429.  sets the normal note value as a quarter note.  Three half notes
  430. are in this line of music; therefore, three of the notes are
  431. followed by the half note value of 
  432. .  The rest of the note values
  433. default to the quarter note set by the 
  434.  command at the start of the
  435. string.
  436. This method is good for "quick and dirty" coding of short, simple
  437. pieces of music that are hand-coded using a text editor.  It is not
  438. the preferred method for more complex music, because it makes
  439. identification and debugging of individual notes/rests more 
  440. difficult, and allows for greater error in transcription.  Because
  441. of those drawbacks, it is NOT recommended that the 
  442.  command be
  443. habitually used in writing ANSI-BBS music.
  444. In this method, the value of each individual note/rest is inserted
  445. immediately following the note/rest itself.  Repeating our example
  446. Mary Had A Little Lamb
  447. , using the individual value method:
  448.            E
  449. This method requires more string space, but it also allows for quick
  450. identification of an individual note/rest, making error location and
  451. correction much easier, and directly translates the "staff/note"
  452. pattern of music transcription into a code form.  This makes it much
  453. better for writing and debugging complex music.  An added benefit of
  454. this method for serious students of music is that the mimicry and
  455. reinforcement of good transcription habits will carry over into
  456. pen-and-ink transcription as well.
  457. As an example of more complex music code, here is the first line of
  458. Hail To The Chief
  459.          O2G8A16.B32O3C8O2B16.A32G16.A32G16.E32D8C8
  460. The line contains 3 octave changes and 10 note value changes.
  461. Examining this string should make the drawbacks of habitual 
  462. command use obvious!
  463. These codes are the building blocks that create effective and
  464. properly written ANSI-BBS music.  This coding "style" is designed to
  465. blend easily with the graphics codes which are already familiar to
  466. SysOps, making the process of adding music to graphics as painless
  467. as possible.  In addition, these codes are recognized by just about
  468. any music-supporting terminal program, providing musical enjoyment
  469. to the most callers with the least potential incompatibility.
  470.       Reset code - Clear all previous values; "fresh start".
  471.           Used at the beginning and end of each string of music.
  472. [nn;ccH
  473.   Cursor location code - Move the cursor to the designated
  474.           location on the screen and leave it there.  
  475.  represents
  476.           a line number between 1 and 25, 
  477.  represents a column
  478.           number between 1 and 80.
  479.           Examples:  
  480. [25;1H
  481.  moves the cursor to the bottom left
  482.           corner of the screen; 
  483. [1;80H
  484.  to the top right corner.
  485.       Invisibility code - Renders the following string
  486.           invisible; none of the code in the string will appear on
  487.           the screen.
  488.        Music code - Begin music string; code in the following
  489.           string will be interpreted and played as music (also 
  490.           see 
  491. Future Standards
  492.  section and included 
  493. BANSI002.DOC
  494.          End music code - Closes the playable portion of a music
  495.           string
  496. (The left arrow is 
  497. ASCII 27
  498. .  The double sixteenth note is 
  499. ASCII 14
  500. @Codes that are not universally accepted, and that may cause
  501. problems for callers, are listed below.  
  502. It is strongly recommended
  503. that these codes be avoided when writing music for BBS or message
  504.       Music Foreground/Music Background; used in ANSIPLAY and
  505.            some other specialty music systems.
  506. >   Style code <Normal/Legato/Staccato>; sets the style of
  507.            the string.
  508. The first line of 
  509. Mary Had a Little Lamb
  510.  coded for use in a BBS
  511. system screen would look like this:
  512. [23;1H
  513.  T90O2E4D4C4D4E4E4E2D4D4D2E4G4G2 
  514. A completed piece of ANSI-BBS music will consist of one or more
  515. strings of code, each 80 characters or less in length.  It will
  516. begin with the reset code, followed by the cursor location code, the
  517. invisibility code, the music code, and tempo/octave/note/rest/value
  518. codes, and end with the double sixteenth note character (ASCII 14),
  519. followed by the reset code.
  520. Final assembly of ANSI-BBS music is always done using an ASCII text
  521. editor.  There are three basic rules to follow in assembling the
  522. final product:
  523. 1) Divide your music code into logical sections that can be
  524. coded as individual strings.
  525.   For example, divide a song
  526.    into phrases or "lines", and make each phrase or "line" a
  527.    separate string of code.
  528. There are a number of reasons for this.  First, it makes error
  529. location and correction much easier.  Second, it helps to keep
  530. strings at a proper length.  Third, it enables you to split a song
  531. into portions and use it in creative ways, such as playing the first
  532. part when a caller enters a door, and the final part when he exits
  533. the door.  Last, it enables you to use only a portion of a longer
  534. piece of music, while still retaining the integrity of and access to
  535. the entire song.
  536. 2) Code each string as though it were a complete piece of
  537. music.
  538. This means that each string should follow the coding pattern given
  539. above; i.e., if any string is played individually, it will reset,
  540. locate the cursor, set invisibility, set tempo, and reset at the
  541. end.  This will prevent any unwanted effects from creeping in due to
  542. typographical errors.  It also makes error location and correction
  543. much easier, as each string can be examined and corrected
  544. individually without affecting the final product.
  545. 3) Always perform the first two steps using an ASCII text editor
  546.    even if you use a music coding program such as 
  547. Music Maker
  548. Such programs are an excellent aid, but they DO NOT produce
  549. completed, ready-for-use ANSI music!  The single notable exception
  550. Melody Master
  551. , which will produce ready-to-run music strings 
  552. for BBS system use.  If you wish to be able to "subdivide" the song, 
  553. however, you will still need to use an ASCII editor to rearrange 
  554. the notes into suitable phrase divisions.
  555. To quote the old adage, "anything worth doing is worth doing well".
  556. No SysOp would be satisfied with running half a BBS program; why
  557. even think of settling for half-written music?  Poorly coded music
  558. does not make a positive impression on anyone, and may actually
  559. detract from a system rather than add to it.  In other words, either
  560. use properly coded music, or don't use it at all!
  561. We will use the song 
  562. Dixie
  563.  as an example to demonstrate the
  564. finishing process.  A sample of this song at each stage is included
  565. in this archive under the filenames shown in the "After completing
  566. this step" line of each section.  It is strongly suggested that you
  567. play these samples as you proceed through the description, to
  568. familiarize yourself with the effects of each step in the completion
  569. process.
  570. NOTE  - If the song is hand-coded, all of the following steps can be
  571. performed in the process of coding.  The code should be frequently
  572. saved and tested for accuracy.
  573. Here is the song in raw code, as produced by a program such as 
  574. Music Maker
  575. NRAW.BBS
  576. [M T60O3C32O2A32F16F16F32G32A32A+32O3C16C16C16O2A16O3D16D16D16.C32D16. 
  577. [M C32D32E32F32G32A8.F32C32F8.C32O2A32O3C8.O2G32A32F8.O3C32O2A32F16F16 
  578. [M F32G32A32A+32O3C16C16C16O2A16O3D16D16D16.C32D16.C32D32E32F32G32A8. 
  579. [M F32C32F8.C32O2A32O3C8.O2G32A32F8.O3C32C32F16A16G16F16D16F8D16G8.D16 
  580. [M G8.C16F16A16G16F16D16E16F16.D32C16O2A16O3F16.O2A32A16G8O2A16F8.A16G8. 
  581. [M O3D16C16O2A16O3F16.A32G16F8O2A16F8.A16G8.O3D16C16O2A16O3F16.A32G16F8 
  582. The first step is to divide the code into phrases/"lines"
  583. of no more than 55 characters each.  This particular song has
  584. familiar lyrics, which makes the division easy:
  585. T60     O3C32 O2A32 F16  F16 F32G32 A32 A32+ O3C16 C16 C16 O2A16
  586. \Line
  587. (tempo)
  588.  Oh,   I     wish I   was    in  the  land  of  cot-ton, 
  589.          O3D16 D16   D16.  C32 D16. C32 D32 E32 
  590. \Line
  591.          Old   times there are not  for-got-ten,
  592. and so on.  As you divide the lines, be sure to add the octave code
  593. to the beginning of any lines that do not already begin with it!
  594. After completing this step, our song looks like this (
  595. NSTEP1.BBS
  596. [M T60O3C32O2A32F16F16F32G32A32A+32O3C16C16C16O2A16 
  597. D16D16D16.C32D16.C32D32E32 
  598. F32G32A8.F32C32F8.C32O2A32O3C8.O2G32A32F8. 
  599. C32O2A32F16F16F32G32A32A+32O3C16C16C16O2A16 
  600. D16D16D16.C32D16.C32D32E32 
  601. F32G32A8.F32C32F8.C32O2A32O3C8.O2G32A32F8. 
  602. C32C32F16A16G16F16D16F8D16G8.D16G8. 
  603. C16F16A16G16F16D16E16F16. 
  604. D32C16O2A16O3F16.O2A32A16G8 
  605. A16F8.A16G8.O3D16C16O2A16O3F16.A32G16F8 
  606. A16F8.A16G8.O3D16C16O2A16O3F16.A32G16F8 
  607. In order to understand how this affects your music, try this
  608. experiment.  Using your text editor, copy line 3 of 
  609. NRAW.BBS
  610. a file, and name it 
  611. JRAWTEST.BBS
  612. @.  Copy line 3 of 
  613. NSTEP1.BBS
  614. @ to a
  615. file, and name it 
  616. JTEST.BBS
  617. @.  Then play each test file, and compare
  618. the results.
  619. The next step is to add the tempo setting to the beginning of each
  620. line, and add the appropriate octave code to the beginning of any
  621. lines that do not already begin with it.  You can determine the
  622. octave code for lines that do not begin with one by reading backward
  623. through the previous line until you come to an octave code; that is
  624. the code to begin the line.
  625. After completing this step, our song looks like this (
  626. NSTEP2.BBS
  627. O3C32O2A32F16F16F32G32A32A+32O3C16C16C16O2A16 
  628. O3D16D16D16.C32D16.C32D32E32 
  629. O3F32G32A8.F32C32F8.C32O2A32O3C8.O2G32A32F8. 
  630. O3C32O2A32F16F16F32G32A32A+32O3C16C16C16O2A16 
  631. O3D16D16D16.C32D16.C32D32E32 
  632. O3F32G32A8.F32C32F8.C32O2A32O3C8.O2G32A32F8. 
  633. O3C32C32F16A16G16F16D16F8D16G8.D16G8. 
  634. O3C16F16A16G16F16D16E16F16. 
  635. O3D32C16O2A16O3F16.O2A32A16G8 
  636. O2A16F8.A16G8.O3D16C16O2A16O3F16.A32G16F8 
  637. O2A16F8.A16G8.O3D16C16O2A16O3F16.A32G16F8 
  638. In order to understand how this affects your music, try this
  639. experiment.  Using your text editor, copy the last line of 
  640. NSTEP1.BBS
  641. to a file, and name it 
  642. JTEST1.BBS
  643. @.  Copy the last line of 
  644. NSTEP2.BBS
  645. to a file, and name it 
  646. JTEST2.BBS
  647. @.  Then play each test file, and
  648. compare the results.
  649. Now we are ready for the final step, adding the control codes and
  650. making each string a complete, individual display unit.
  651. At the beginning of each string, before the 
  652. , we insert:
  653.       
  654. [23;1H
  655. At the end of each string, after the 
  656. , we add:
  657.       
  658. After completing this step, we have the finished product (
  659. NDIXIE.BBS
  660. [23;1H
  661. [M T60O3C32O2A32F16F16F32G32A32A+32O3C16C16C16O2A16 
  662. [23;1H
  663. [M T60O3D16D16D16.C32D16.C32D32E32 
  664. [23;1H
  665. [M T60O3F32G32A8.F32C32F8.C32O2A32O3C8.O2G32A32F8. 
  666. [23;1H
  667. [M T60O3C32O2A32F16F16F32G32A32A+32O3C16C16C16O2A16 
  668. [23;1H
  669. [M T60O3D16D16D16.C32D16.C32D32E32 
  670. [23;1H
  671. [M T60O3F32G32A8.F32C32F8.C32O2A32O3C8.O2G32A32F8. 
  672. [23;1H
  673. [M T60O3C32C32F16A16G16F16D16F8D16G8.D16G8. 
  674. [23;1H
  675. [M T60O3C16F16A16G16F16D16E16F16. 
  676. [23;1H
  677. [M T60O3D32C16O2A16O3F16.O2A32A16G8 
  678. [23;1H
  679. [M T60O2A16F8.A16G8.O3D16C16O2A16O3F16.A32G16F8 
  680. [23;1H
  681. [M T60O2A16F8.A16G8.O3D16C16O2A16O3F16.A32G16F8 
  682. In order to understand how this affects your music, try this
  683. experiment.  Using your text editor, copy the last two lines of
  684. NDIXIE.BBS
  685. @ to a file, and name it 
  686. JTEST3.BBS
  687. @.  Copy the last two lines
  688. NSTEP2.BBS
  689. @ to a file, and name it 
  690. JTEST4.BBS
  691. @.  Play 
  692. JTEST3.BBS
  693. @, and
  694. then 
  695. JTEST4.BBS
  696. @; observe the cursor as you do so.
  697. The most common method of using ANSI-BBS music is to attach it to a
  698. screen display.  If properly done, callers with music-capable
  699. terminals will receive and enjoy the music as an esthetic addition
  700. to the visual display, while those without music capability will
  701. never even know it is there.  This can be a bit tricky, and it will
  702. require some extra time and effort; the end result, however, is well
  703. worth the energy.
  704. The first step is to choose or design the display to which music
  705. will be added.  Ideally, the display should not involve the last two
  706. lines of the screen (24 and 25).  If necessary, you may bring up the
  707. chosen display in an ANSI editor and block-save it so that it covers
  708. lines 1 to 23 only.  This will leave line 24 free for the cursor and
  709. for any text, prompt, etc., that may follow the music when the dis-
  710. play is used within a program, and line 25 free for the status line
  711. required by many terminal programs.
  712. Once the display is chosen, sized, and saved as ANSI, bring it up
  713. in an ASCII text editor (
  714. TheDraw
  715. , or any other ANSI editor).
  716. Move the cursor to the next line after the existing code, and block
  717. copy your completed song into the file at that point.  Then re-save
  718. the combined file, using the ASCII editor, under the original
  719. filename.  The music will be invisible, and will play whenever the
  720. file is displayed.
  721. Additional planning is required when adding music to menus or other
  722. displays that are followed by a prompt.  Make sure that the cursor
  723. will be below the last line of the menu display; two lines below, if
  724. possible.  The prompt will then appear clearly, separate from the
  725. menu.
  726. Remember, it is possible to have too much of a good thing!  There is
  727. no limit to the number of music strings that can be attached to one
  728. screen, but more than a few seconds' worth can be a bit irritating.
  729. Selected strings of music, used with restraint, can add greatly to
  730. the ambience of a system.  A long concert at every change of display
  731. will not, and, indeed, may drive callers away instead.
  732. Uses for ANSI music are limited only by the imagination and
  733. creativity of the SysOp.  It may be used with menus, newsletters,
  734. announcements, in messages, in Email, and anywhere else that ANSI
  735. itself is possible.
  736. Before posting a musical message on any BBS, make certain that such
  737. messages are allowed on the system and the base in which you wish to
  738. post.  Also be aware that some BBS software automatically screens
  739. out all ANSI control codes, and may strip your music to a visible
  740. line of nonsense characters instead of playing it, or refuse the
  741. uploaded message entirely.
  742. Because most BBS message editors will not allow any high ASCII codes
  743. to be entered while typing a message, music must be posted by
  744. uploading it.  There are two ways to do this.  First (and easiest),
  745. you can compose your entire message offline using an ASCII editor,
  746. and then upload it to the system using either your terminal
  747. program's ASCII upload capability or the BBS's "upload text" option
  748. (if available).  Alternatively, you can prepare just the music
  749. itself offline, then log in, enter and sign your message, and add
  750. the music after your signature but before saving the message using
  751. either of the above-mentioned upload methods.
  752. Again, it must be emphasized that not all systems welcome ANSI music
  753. in their posts; be sure to check first!
  754. When music is to be sent as a message, rather than incorporated into
  755. a system screen, the coding scheme is a bit different.  Because BBS
  756. message systems vary so greatly in format, and because those
  757. receiving the message may or may not have ANSI and/or music
  758. capability, it is important to code the message so that it has the
  759. least possible potential for negative effects on the reader.  To
  760. accomplish this, the following codes are used:
  761. To begin the string -
  762.         Records the cursor's current column position, which will
  763.            be within the message system's acceptable "writing area"
  764.        Invisibility code
  765. Follow these two codes with your music string.
  766. To end the string -
  767.         Returns the cursor to the column position recorded at 
  768.         Returns the cursor to the beginning of the existing row
  769.        Resets screen attributes at end of song
  770. Thus, the first line of 
  771. Mary Had a Little Lamb
  772.  coded for posting as a
  773. message would look like this:
  774.            
  775. [M T90O2E4D4C4D4E4E4E2D4D4D2E4G4G2 
  776. The crucial consideration when using music in messages is the cursor
  777. location.  Bear in mind that any cursor location code will leave the
  778. cursor where you have located it when the music ends.  Anything that
  779. comes after/below that point will be overwritten by the next
  780. display. This can be quite disconcerting if the music is in a
  781. message, and causes the message text to be obliterated before it can
  782. be read!  Thus, rather than "guesstimating" the location for best
  783. results in a message, we use the 
  784.  code to keep the cursor where
  785. the message system itself has put it.
  786. In addition to allowing for the message text itself, remember that
  787. BBS message systems use a "formatted" display for viewing messages.
  788. By using the 
  789.  and 
  790.  scheme for our cursor location, we make
  791. sure that the cursor location code leaves the cursor in a place
  792. where it will not interfere with the message system's format.  Don't
  793. forget the reset code at the end of the last string.
  794. Here is our sample song coded for message use (
  795. NDIXIE.MSG
  796. [M T60O3C32O2A32F16F16F32G32A32A+32O3C16C16C16O2A16 
  797. [M T60O3D16D16D16.C32D16.C32D32E32 
  798. [M T60O3F32G32A8.F32C32F8.C32O2A32O3C8.O2G32A32F8. 
  799. [M T60O3C32O2A32F16F16F32G32A32A+32O3C16C16C16O2A16 
  800. [M T60O3D16D16D16.C32D16.C32D32E32 
  801. [M T60O3F32G32A8.F32C32F8.C32O2A32O3C8.O2G32A32F8. 
  802. [M T60O3C32C32F16A16G16F16D16F8D16G8.D16G8. 
  803. [M T60O3C16F16A16G16F16D16E16F16. 
  804. [M T60O3D32C16O2A16O3F16.O2A32A16G8 
  805. [M T60O2A16F8.A16G8.O3D16C16O2A16O3F16.A32G16F8 
  806. [M T60O2A16F8.A16G8.O3D16C16O2A16O3F16.A32G16F8 
  807. Notice that the music strings are the same; only the leading and
  808. closing codes are different.  If this message were to be captured
  809. and converted for use in an ANSI-BBS screen, only the leading and
  810. closing codes would require modification, and these changes would
  811. be very simple to make using the global pattern change function of
  812. an ASCII editor.
  813. As it now exists, ANSI music coding has conflicts with the established
  814. ANSI coding standard.  The most notable and troublesome of these is the
  815.  sequence, which by standard is supposed to represent "delete line".
  816. Paul Wheaton of Banana Programming has done a thorough study of the
  817. conflicts between the ANSI standard and ANSI music codes.  Bloomunit
  818. wishes to strongly endorse the changes he suggests in the enclosed
  819. BANSI003.DOC
  820. , and to encourage all software authors and developers to
  821. make the suggested modifications to their ANSI music-supporting communi-
  822. cations programs by 
  823. January 1, 1997
  824. The most notable of these suggestions is replacing the 
  825.  sequence for
  826. starting ANSI music with the 
  827.  sequence, which has no conflicts at all
  828. with the existing standard, and furthermore is easy to remember since it
  829. relates to the 
  830.  character (
  831. Ctrl N
  832. ) which closes a music string.
  833. With cooperation and united effort, those of us who use and support BBS
  834. ANSI music can bring about a permanent change for the better, and make
  835. it more accessible for all to enjoy.
  836. It is my sincere hope that the information given here will inspire
  837. many SysOps to add music to their systems, and to do it well.
  838. Properly used, music can add a wonderful touch to a BBS, and
  839. personalize it in ways that nothing else can.
  840. If you found this tutorial helpful, or you have any questions or
  841. comments, please feel free to contact me by modem or mail.  If you
  842. choose to register, you will be added to the mailing list for any
  843. future updates and news reports concerning ANSI-BBS music.
  844.               Allow me to leave you with this thought:
  845.       
  846. "Next to the Word of God, music is the greatest gift."
  847.                           (Martin Luther)
  848.                  I wish you the blessings of both!
  849. BY MODEM:
  850.      Bloomunit BBS for Homeschool Families
  851.               (407) 687-8712, 8n1, 24 hrs/7 days, 14.4 bps
  852.               Running Virtual BBS v. 7.02
  853.               VirtualNet:        #1 @1407000
  854.               FidoNet:           Linda Bloom @1:3609/24
  855.               FamilyNet:         Linda Bloom @8:3111/10
  856.               CompuServe/CIN:    74401,1606
  857.               Internet-Email:    bloomunit@flinet.com
  858.                        Homepage: http://www.flinet.com/~bloomunit
  859. BY MAIL:
  860.       Linda Bloom
  861.               4986 Palm Beach Canal Road
  862.               West Palm Beach, FL 33415-3101
  863. Registration of BBSAMT is only $10.00!
  864. Registered users are sent a bonus disk containing a TSR code
  865. reference for use in coding their own music, the shareware
  866. release of 
  867. Melody Master
  868. , assorted ANSI music utilities, and
  869. a collection of ready-to-use ANSI-BBS songs.
  870. : The registration fee covers registration of BBSAMT and
  871. the costs of duplication and mailing ONLY.  The programs on the
  872. bonus disk must be individually registered with their authors
  873. for continued use.
  874. Choose 
  875.  and then 
  876. dit to complete this form.
  877. BBS ANSI MUSIC TUTORIAL, version 4.4 -  REGISTRATION FORM
  878. [ ] $10.00 enclosed - Please register my existing copy of BBSAMT43
  879.                       and send me a bonus 3.5" disk containing the
  880.                       shareware release of Melody Master, ANSI music 
  881.                       utilities, and a collection of ready-to-use 
  882.                       ANSI-BBS songs. (NOTE: This amount covers 
  883.                       registration of BBSAMT43 and the costs of 
  884.                       duplication and mailing. The programs on the 
  885.                       bonus disk must be individually registered
  886.                       with their authors for continued use!)
  887. I got my copy of BBSAMT43 from: [                                  ]
  888. Name:   [                                                          ]
  889. Address:[                                                          ]
  890.         [                                                          ]
  891. City:   [               ] State:[  ] Cntry:[       ] Zip:[         ]
  892. Other mailing info:[                                               ]
  893. Comments:[                                                         ]
  894.          [                                                         ]
  895.          [                                                         ]
  896. Enclose check or money order payable to Linda R. Bloom, and send to:
  897.                              Linda R. Bloom
  898.                        4986 Palm Beach Canal Road
  899.                      West Palm Beach, FL  33415-3101
  900.