home *** CD-ROM | disk | FTP | other *** search
/ Audio 4.94 - Over 11,000 Files / audio-11000.iso / msdos / sndbords / proaudio / fm42a / fm.doc < prev    next >
Text File  |  1992-02-23  |  5KB  |  209 lines

  1. FM - 3812 Resident Driver 
  2. Substitute for "sound.com"
  3.  
  4.  
  5. Syntax
  6.  
  7.     fm 
  8.     fmmin
  9.     fmmax
  10.  
  11.  
  12. Options
  13.  
  14.     None.
  15.  
  16.  
  17. Operation 
  18.  
  19. This program is a TSR that installs into interrupt 65h and handles 
  20. the function calls as specified in the 1987 Ad Lib Synthesizer Card
  21. Programmer's Manual.
  22.  
  23. Run the program fm.com to load the driver.  The program will not load
  24. more than once unless interrupt 65h is intercepted by another program
  25. that does not have a valid signature.  
  26.  
  27. Use the fmmin.com program to use the minimum amount of memory while
  28. providing a 400-note buffer size, and without the background sound
  29. option.  Use the fmmax.com program to obtain a 2200-note buffer size,
  30. and fm.com for a 1200-note buffer size, both with the background sound
  31. option.
  32.  
  33.  
  34. Auxiliary Programs
  35.  
  36. A program can be written to load the queue and terminate before 
  37. turning the driver on.
  38.  
  39. The "mp.com" and "mm.com" programs switch the card into percussive and 
  40. melodic modes, respectively.  
  41.  
  42. The programs "qo.com" and "qf.com" turn on and off the driver.  
  43.  
  44.     If you wish to remove the TSR from memory, first run "qf" 
  45.     to turn the driver off in order to reset the clock timer to 
  46.     its normal speed;  then, release the memory.
  47.  
  48.     Disassembly of these programs will show you that they
  49.     are simply function calls to interrupt 65h.
  50.  
  51. The programs "bo.com" and "bf.com" turn on and off background sound.
  52.  
  53. The program "i65.com" simply reinitializes the driver.
  54.  
  55.  
  56. Programming Information 
  57.  
  58. Interrupt Service Functions 
  59.  
  60. F#    Definition
  61.  
  62. 0    Initialize; set volume to 100%, set pitch to 0, 
  63.         set melodic mode, set timbre for all voices
  64.         to piano, empty queues, and set tempo to 90 bpm.
  65.  
  66. 2    Set Relative Time Start;
  67.  
  68. 3    Set State; either 1, active, or 0, stopped.
  69.  
  70. 4    Get State; either 1, playing, or 0, complete or stopped.
  71.  
  72. 5    Empty queues; silence all voices, stay active.
  73.  
  74. 6    Set Mode; set melodic or percussive, set volume to 100%,
  75.         set timbre for all voices to piano, set pitch to 0.
  76.  
  77. 7    Get Mode; return 0 for melodic, 1 for percussive.
  78.  
  79. 8    Set Volume at Time.
  80.  
  81. 9    Set Tempo at Time.
  82.  
  83. 10    Set Transpose;  immediately affect all voices by specified
  84.         number of semitones.
  85.  
  86. 11    Get Transpose.
  87.  
  88. 12    Set Active Voice.
  89.  
  90. 13    Get Active Voice.
  91.  
  92. 14    Play Note with Delay; play note of pitch for length, set delay.
  93.  
  94. 15    Play Note without Delay; play note of pitch for length.
  95.  
  96. 16    Set Voice Timbre at Time.
  97.  
  98. 17    Set Pitch at Time; affect all voices.
  99.  
  100. 18    Set Ticks per Beat;  all notes should fall on multiple of 
  101.         1/TickBeat, and obey: 18.2 <= (TickBeat * Tempo / 60).
  102.  
  103. 19    Direct Note On;  play voice at pitch.
  104.  
  105. 20    Direct Note Off;  stop voice.
  106.  
  107. 21    Direct Set Timbre;  set timbre for voice.
  108.     
  109.  
  110. Development Notes
  111.  
  112. 02/23/92 - Queue entry size halved, reducing memory needs dramatically.
  113.  
  114. 01/27/92 - All known defects corrected.  
  115.  
  116. 01/23/92 - Corrected delta pitch effect.
  117.  
  118. 01/22/92 - Beta version 3.0 released.  Fully functional.  Queue size 
  119.     too small.
  120.  
  121.  
  122. 01/09/92 - A defect with the combination of the timer and music interrupt 
  123.     routines caused the computer to enter an endless loop, with 
  124.     interrupts disabled: lock-up.  Version 2.1 corrects this.
  125.  
  126. 01/07/92 - Additional functions 8000h, 8001h return pointers to internal 
  127.     data structures and the count of voices;  8002h and 8003h start
  128.     and stop background fm sounds;  8004h returns the offset to the
  129.     note-queue;  8005h single-steps the note queue.
  130.  
  131.         mov si, 8002h        ; start background sound
  132.         int 65h
  133.  
  134.         mov si, 8003h        ; stop background sound
  135.         int 65h
  136.  
  137. 12/30/91 - Only the Reset Chip and Direct Note On/Off and Set Timbre
  138.     functions are implemented.  All other functions simply return 0.
  139.     Otherwise, fully resident with proper signature placement and
  140.     checking.
  141.  
  142.     Supplied test program fmfun.exe allows manipulation of voice
  143.     parameters and pitch;  the tab key causes the program to begin
  144.     reading memory at 0:0, determining a pitch and length for each
  145.     voice.
  146.  
  147. Notes
  148.  
  149. Use the fmfun.exe program to modify the characteristics of the voice 
  150. operators internal to the driver, when experimenting with the background
  151. sound feature.
  152.  
  153.     The keystrokes accepted by the program are grouped as so:
  154.  
  155.     < >    Previous/Next Voice
  156.     [ ]    Lower/Higher Pitch, Play Note
  157.     { }    Lower/Higher Pitch, no Play
  158.  
  159.     M    Select Modulator Operator
  160.     C    Select Carrier Operator
  161.     a    Attack Rate
  162.     d    Decay Rate
  163.     l    Sustain Level
  164.     r    Release Rate
  165.     s    Sustain Sound On/Off
  166.     e    KSR Value
  167.     m    Multiply Frequency Value
  168.     v    Vibrato On/Off
  169.     b    Feedback Value
  170.     o    Output Level
  171.     k    KSL value
  172.     t    Tremolo
  173.     f    FM Toggle
  174.  
  175.     +    Increment Selected Operator Variable
  176.     -    Decrement same
  177.     
  178.     SPACE    Play Current Voice, Current Pitch
  179.  
  180.     TAB    Begin Random Play
  181.  
  182.     BS    Display Current Random Position and Time Factor
  183.     CR    Display Voice Data: Pitch, Octave, FNUM, Operator Data
  184.  
  185.     ESC    Quit Program
  186.  
  187.  
  188. Comparison with "sound.com"
  189.  
  190.     Command Line        Max Notes     Memory (K)
  191.  
  192.     fm            1217          18
  193.     sound             410          18
  194.  
  195.     fmmin             417          11
  196.     sound b1000         410          18
  197.  
  198.     fmmax            2225          26
  199.     sound b3000        1229          26
  200.  
  201. As can be seen from the above, the fm program queues almost three times
  202. as many notes as does sound.com, but uses the same amount of memory.
  203. When memory usage is of no concern, fmmax provides double the note
  204. buffer space while using the same amount of memory as "sound b3000".
  205.  
  206. Essentially, by simply using "fm.com", you obtain "sound b3000" results
  207. using only "sound b1000" memory.
  208.  
  209.