home *** CD-ROM | disk | FTP | other *** search
/ Bila Vrana / BILA_VRANA.iso / 031A / GMS100.ZIP / gms100 / manual.txt < prev    next >
Text File  |  1996-05-15  |  96KB  |  2,303 lines

  1. PLEASE NOTE: This manual was written in TeX format and has been reduced to
  2. .txt format by a conversion program. The results of this were somewhat less
  3. than optimal. I have gone through it by hand and cleaned up what I could,
  4. but you may run across something that I missed.
  5.  
  6.  
  7.  
  8. Game Music System 1.0
  9.  
  10.  
  11.       USER MANUAL
  12.  
  13. Introduction
  14.  
  15. _______________________________________________________________________________
  16.  
  17.  
  18.  
  19.     If you want to make music on your PC, there are basically five ways you can
  20. do it:
  21.  
  22.  
  23.        Use a sample tracker.  Sample trackers use digitized instruments which
  24. are algorithmically combined on-the-fly to produce music. The quality of the
  25. sound produced can be anywhere from very good to abysmal, depending upon which
  26. program is used and how much CPU power is being directed towards producing the
  27. sound. The advantage of using a sample track er is that it produces music that
  28. sounds a lot like real-world music, because the instruments it uses are
  29. (usually) digitized versions of real instruments. The disadvantage is that it
  30. takes a great deal of CPU power to play a sample module at an acceptable level
  31. of sound quality - enough to make most games slow down to a crawl.
  32.        Use an FM tracker.  This kind of program plays music through the
  33. frequency modulation generators built into the Adlib and Soundblaster cards.
  34. FM modules are much smaller than sample modules, and take a lot less CPU power
  35. to play back. Some people don't like FM music because it sounds too
  36. "electronic". Others like it, for precisely the same reason.
  37.        Burn a CD and play it back with a CD drive. This, of course, produces
  38. the best sound quality of all and takes no CPU power to speak of. But to the
  39. average shareware game author, the cost of burning CDs is prohibitive.
  40.        Use a MIDI program. Commercial companies like doing this because the
  41. MIDI format is general enough to be played back under multiple audio systems.
  42. The music can be played back under FM, or sample, or dumped to CD. MIDI
  43. wasn't designed for games, however. For non-commercial projects it may be
  44. overkill. Because they're so general, MIDI files tend to be quite big. You
  45. also have to find drivers to play the music back as FM, sample, or CD-quality.
  46. If you can, you end up with the advantages and disadvantages of those
  47. individual methods.
  48.        Use the PC's internal speaker.  The PC speaker compares favorably with
  49. many household appliances. It has a wider frequency range than the average
  50. touch-tone phone, and can be more irritating to listen to than most electric
  51. blenders. Unfortunately, the average game player is a little more
  52. discriminating than this.
  53.  
  54.  
  55.     Game Music System is the second kind of program _ an FM tracker. It's a
  56. tool for the creation of music for (shareware) games and demos. FM music is a
  57. reasonable option for many games, and in some situations it may be the only
  58. one.
  59.  
  60.  
  61.     GMS has the following advantages when compared to other FM trackers:
  62.  
  63.  
  64.   * Supports Adlib, Soundblaster, and Soundblaster Pro I and II as separate
  65. modes.
  66.   * Compose in 18-channel stereo (when in one of the Soundblaster Pro modes).
  67.   * Public domain play routine, with full source code.
  68.   * Open module and instrument formats, fully documented.
  69.   * A sane user interface.
  70.  
  71.  
  72.     It is my goal to make GMS the best and most full-featured FM tracker
  73. available for the PC.
  74.  
  75.  
  76.     If you've never used a tracker before, you should find Appendices E and F
  77. helpful. They describe how FM instruments work and how music is composed using
  78. the tracker system. The main chapters of this manual assume that you have at
  79. least a basic understanding of these concepts.
  80.  
  81. TABLE OF CONTENTS
  82.  
  83. _______________________________________________________________________________
  84.  
  85.  
  86.  
  87. 1. Setting Up GMS:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::1
  88. 2. The GMS Editing Environment::::::::::::::::::::::::::::::::::::::::::::::2
  89. 3. The Track Display::::::::::::::::::::::::::::::::::::::::::::::::::::::::::3
  90. 4. The Status Bar:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::5
  91. 5. The FILE Menu:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::6
  92. 6. The PLAY Menu::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::7
  93. 7. The SONG Menu::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::9
  94. 8. The BLOCK Menu:::::::::::::::::::::::::::::::::::::::::::::::::::::::::11
  95. 9. The INSTRUMENT Menu :::::::::::::::::::::::::::::::::::::::::::::::::14
  96. 10. The MISC Menu ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::17
  97. 11. Effect Commands :::::::::::::::::::::::::::::::::::::::::::::::::::::::::19
  98. 12. Keyboard Shortcuts:::::::::::::::::::::::::::::::::::::::::::::::::::::::21
  99. 13. Some Questions And Their Answers:::::::::::::::::::::::::::::::::::::::22
  100. 14. Registration:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::23
  101. 15. Legal Stuff::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::24
  102. 16. Acknowledgements::::::::::::::::::::::::::::::::::::::::::::::::::::::::25
  103.  
  104.  
  105.  
  106. APPENDICES
  107. A. The GMS Module Format::::::::::::::::::::::::::::::::::::::::::::::::::27
  108. B. The GMI Instrument Format:::::::::::::::::::::::::::::::::::::::::::::::30
  109. C. Playing GMS Modules: Programmer Documentation::::::::::::::::::::::::31
  110. D. External Formats :::::::::::::::::::::::::::::::::::::::::::::::::::::::::36
  111. E. How Synthetic Instruments Work:::::::::::::::::::::::::::::::::::::::::::37
  112. F. An Introduction To Tracker Composition :::::::::::::::::::::::::::::::::::39
  113.  
  114. 1.  Setting Up GMS
  115.  
  116. _______________________________________________________________________________
  117.  
  118.  
  119.  
  120.     To use GMS, you'll need the following:
  121.  
  122.  
  123.   * A 286 or better computer running MS-DOS.
  124.   * An Adlib, Soundblaster series, or 100% compatible soundcard.
  125.   * A mouse (this is optional, but makes editing much easier).
  126.  
  127.  
  128.     Upon startup, GMS looks for a configuration file called "GMS.CFG" in the
  129. current directory. (This file can be created with the Save Configuration gadget
  130. in the MISC menu.) If the file doesn't exist, GMS uses its internal defaults.
  131. Therefore, if you've created a configuration file somewhere you have to cd to
  132. that directory before running GMS.
  133.     Other than that, GMS has no particular directory structure requirements and
  134. can be placed anywhere on your hard disk you wish.
  135.     Be sure to take a look at the file ERRATA.TXT. It describes any errors in
  136. the program or documentation that were discovered after this manual was
  137. printed.
  138.  
  139.  
  140.  
  141.                                         1
  142.  
  143. 2.  The GMS Editing Environment
  144.  
  145. _______________________________________________________________________________
  146.  
  147.  
  148.  
  149.     The GMS screen is composed of four major parts: The gadget window, the menu
  150. selector window, the status bar, and the track display.
  151.     The gadget window contains the gadgets that help you edit and play the
  152. song. The gadgets that appear here can be used to cut and paste blocks, change
  153. the tempo, alter the pattern list, and more. The most important functions have
  154. keyboard equivalents. (See the Keyboard Shortcuts chapter for more
  155. information.)
  156.     The menu selector window controls which menu of gadgets appears in the
  157. gadget window. For example, when FILE is selected, only gadgets relating to
  158. file operations will appear in the gadget window. Each menu has its own
  159. chapter in this manual.
  160.     The status bar shows important information about the current song, and
  161. reports the results of some commands. The status bar is covered in Chapter 4.
  162.     The track display is where the "hands on" editing of the song takes place.
  163. When the track display is selected you can move around within the current block
  164. and add notes or effects. The track display is described further in Chapter 3.
  165.     GMS has two "metakeys" which can be used to move around the screen.  The
  166. TAB key moves the cursor between the track display, the menu selector window,
  167. and the gadget window (the status bar cannot be selected). The back prime key
  168. ( ` ) moves the cursor from one gadget to another when in the gadget window,
  169. and from one menu to another when in the menu selector window (the back prime
  170. key has no effect when the cursor is in the track display window).
  171.     You can also use a mouse, if your computer has one (this makes things MUCH 
  172. easier). The mouse is disabled by default. To enable it, move the cursor to
  173. the MISC window, select the Use Mouse option, and hit RETURN.
  174.     There are four basic kinds of gadgets that can appear in the gadget window:
  175.  
  176.  
  177.        BUTTON GADGETS perform a one-shot operation, such as "copy track".  To
  178. activate them, select them with a metakey and press RETURN or click on them
  179. with the mouse.
  180.        TOGGLE GADGETS can take on a small range of values (usually "yes" or
  181. "no"). To change the value, select them with a metakey and press RETURN or
  182. click on them with the mouse.
  183.        NUMERIC GADGETS can take on a large range of values.  (For example, the 
  184. Block Length gadget can hold a number from 1 to 256.)  To change the value,
  185. select the gadget and modify the displayed number, then press RETURN to lock it
  186. in. (If you don't press return, the gadget will revert to the old value when
  187. you unselect it.) Clicking on the gadget with the mouse will select it and move
  188. the cursor to the place you clicked at.
  189.        ALPHANUMERIC GADGETS are like numeric gadgets, but can hold letters as
  190. well as numbers. (The Filename gadget is an example of this kind of gadget.)
  191.  
  192.  
  193.     There are a few gadgets which don't fit this mold, and their operation is
  194. described when they are introduced.
  195.     You can usually use the cursor keys to move between gadgets, but when some 
  196. gadgets are selected the cursor keys do other things. (In numeric gadgets,
  197. for example, the left/right cursor keys move the cursor around within the
  198. gadget.)
  199.  
  200.  
  201.  
  202.                                         2
  203.  
  204. 3.  The Track Display
  205.  
  206. _______________________________________________________________________________
  207.  
  208.  
  209.  
  210.     The track display is where notes and effects are added to (or removed from)
  211. the song.
  212.     The track display can show one block at a time. To move about within the
  213. block, use the cursor keys. The cursor up/down keys move the cursor up or
  214. down one line. The cursor left/right keys move the cursor from one track
  215. element to another, or to the next track over.
  216.     In the middle of a typical editing session, the track display might look
  217. something like this:
  218.  
  219.  
  220.    Ln#     <03>     <04>     <05>     <06>     <07>     <08>     <09>  <10>
  221.    035    --- 0000--- 0000 --- 0137 --- 0000 --- 0000 --- 0481+--- 0000--- 0000
  222.    036    --- 0000--- 0000 --- 0137 --- 0000 --- 0000 --- 0481+--- 0000--- 0000
  223.    037    --- 0000--- 0000 C#2 12BA --- 0000 --- 0000 F-4 0482+--- 0000OFF 0000
  224.    038    --- 0000--- 0000 --- 02B9 --- 0000 --- 0000 --- 0482+--- 0000--- 0000
  225.    039    --- 0000--- 0000 --- 02BA --- 0000 --- 0000 --- 0482+--- 0000--- 0000
  226.  
  227.  
  228.     The numbers along the left side of the track display are line numbers. The 
  229. ones along the top, surrounded by angle brackets, are track numbers. If the
  230. Sound System gadget in the SONG menu is set to one of the Soundblaster Pro
  231. modes, a vertical bar will appear among the track numbers. All tracks to the
  232. left of the bar are on the stereo left, and all tracks to the right of it are
  233. on the stereo right.
  234.     Each line of each track can contain a note, an instrument number, and an
  235. unlimited number of effect commands. On line 37 of the above example, at
  236. least three of the tracks (5, 8, and 10) are being used. The remaining visible
  237. ones are empty. (In this example we can't see what's in tracks 1 and 2, if
  238. anything, or if any tracks beyond 10 are being used.)
  239.     Track 5's note position contains C#2, which means C sharp in octave 2.  The
  240.   instrument position contains 1, which means that instrument number 1 will be
  241. used to play the C sharp. The effect number is 2 (the slide down effect), and
  242. the effect data byte is BA (which will produce a rapid decrease in frequency).
  243.     Track 8's note position contains F-4, which is an F in octave 4. Unlike
  244. track 5, no instrument has been specified. When GMS processes this track, it
  245. will change the track's frequency to F-4, but will not replay the instrument.
  246. In other words, the instrument's ADSR will not be reset. The reverse
  247. (specifying an instrument, but not a note) is also allowed, and will cause
  248. the instrument to be replayed without resetting the track's frequency.
  249.     Track 8 has an effect number of 4 and a data byte of 82. Because effect
  250. number 4 is vibrato, the 82 will give the vibrato a speed of 8 (moderate)
  251. and a range of 2 (low, but usually desirable).
  252.     Notice the plus sign to the right of track 8. In GMS, a note can have an
  253. unlimited number of effect commands associated with it. But due to the
  254. limitations of the display system, only one command is visible at a time.
  255. The presence of the plus sign means that the note has at least one hidden
  256. non-zero effect. Pressing the RETURN key while the cursor is over a track
  257. will cycle through all of the note's effect commands.
  258.     Track 10 has nothing but a key-off in it. This will make the track's
  259. instrument (if one is playing) enter its decay phase.
  260.     Changing an instrument, effect number, or effect data byte is simple;
  261. move the cursor to the appropriate place and press a number or letter key.
  262. Changing the note, however, is a little less straightforward.
  263.     When the cursor is over the note slot, GMS sees the PC keyboard in a way
  264. that resembles an actual piano keyboard. Q through P and Z through M are
  265. white keys. 2 through 0 and S through J are black keys. The note that GMS
  266. puts into the note position depends upon which key you press. The octave
  267. that GMS puts next to the note depends both on which key you press and what
  268. the current edit octave is. (The current edit octave is shown in the status
  269. bar and can be changed with the left/right b racket keys.)
  270.     If a key between Q and U is pressed, the current edit octave will be
  271. used as the note's octave. Pressing a key between I and P will use the
  272. current edit octave plus one. Pressing a key between Z and M will used the
  273. current edit octave minus one. For example, if the current edit octave is 5,
  274. pressing the 3 key will result in GMS placing down D#5, pressing N will
  275. result in A-4, and pressing I will result in C-6. No note can have an octave
  276. higher than eight (or lower than one).
  277.  
  278.  
  279.                                         3
  280.                              Chapter 3: The Track Display
  281.  
  282.  
  283.     Pressing the slash ("/") key while the cursor is over the note slot will
  284. put a key-off into it. Pressing the BACKSPACE key while the cursor is over a
  285. note slot will erase whatever is already there.
  286.     A GMS module can have up to 35 different instruments. To play a note
  287. with an instrument higher than 9, place a letter from A to Z in the
  288. instrument slot. "A" plays the note with instrument 10 and "Z" plays it with
  289. instrument 35.
  290.  
  291.  
  292.  
  293.                                         4
  294.  
  295. 4.  The Status Bar
  296.  
  297. _______________________________________________________________________________
  298.  
  299.  
  300.  
  301.     The status bar is always visible and shows important information about
  302. the song.
  303.     In the middle of a typical editing session, the status bar might look
  304. like this:
  305.  
  306.  
  307.   Sequence:  02/17      Block:  04/05    Instrument:  00/03   Edit Octave:  4
  308.                        Active tracks:  1:2:3_4:5:6:7:8:9:0:1:2
  309.  
  310.  
  311.     The top line of the status bar shows the current and highest line in the
  312. play sequence, the currently- selected and highest block, the
  313. currently-selected and highest instrument, and the current edit octave.
  314.     The bottom line of the status bar usually shows a list of which tracks
  315. are active. (It is sometimes used to temporarily display messages.) Each
  316. track in the song has a number in the active-track list, but only the least
  317. significant digit is shown. For example, the song in the above example has
  318. 12 tracks - the 0, 1, and 2 at the right-hand side of the active-track list
  319. represent tracks 10, 11, and 12, respectively. Any track which is inactive
  320. will have its number dimmed out.
  321.     The active/inactive status of tracks 1-10 can be toggled by pressing the
  322. 1 through 0 keys at any time when those keys don't do something else. For
  323. example, pressing the 4 key when a button gadget is selected will toggle the
  324. status of track 4, but pressing it when a numeric gadget is selected will
  325. simply enter a 4 into the numeric gadget. The status of tracks 11-18 can be
  326. toggled at any time by holding down the ALT key and pressing the 1 through 8
  327. keys.
  328.     Any track which is inactive is not processed by the music playing
  329. routine.  No notes on that track will be played, and none of the effect
  330. commands will do anything (including "general" effects like tempo changes or
  331. position jumps). Being able to turn off tracks in this fashion is simply an
  332. editing convenience, so active track information is not saved with the song.
  333.     If the Sound System gadget in the SONG menu is set to one of the
  334. Soundblaster Pro modes, a vertical bar will appear in the active track list.
  335. All tracks to the left of the bar are on the stereo left, and those to the
  336. right of it are on the stereo right.
  337.  
  338.  
  339.  
  340.                                         5
  341.  
  342. 5.  The FILE Menu
  343.  
  344. _______________________________________________________________________________
  345.  
  346.  
  347.  
  348.     The FILE menu's gadgets are used to load and save songs and instruments.
  349.  
  350.  
  351.  
  352. Filename
  353.     The contents of this gadget are used by the Load/Save Song/Instrument
  354. gadgets, described below. The Filename gadget can hold up to 50 characters
  355. and can contain a complete pathname, including drive specification.
  356.  
  357.  
  358.  
  359. Select Filename From Directory
  360.     Selecting this gadget brings up a window containing the names of all the
  361. files and subdirectories in the current directory. Use the up/down cursor
  362. keys to scroll through the list, and press RETURN to select a filename.
  363. Selecting a subdirectory will bring up a list of all the filenames and
  364. subdirectories it contains. This gadget can be used to generate a pathname
  365. of up to 255 characters, but only the first 50 characters will be visible in
  366. the Filename gadget.
  367.  
  368.  
  369.  
  370. Load Song
  371. Save Song
  372. Load Instrument
  373. Save Instrument
  374.     All four of these gadgets use the filename specified in the Filename
  375. gadget.
  376.     The Load Song gadget loads the specified song. GMS is able to load GMS
  377. 1.0 and RAD 1.0 modules. Which type of module GMS believes the file to be
  378. can be controlled with the Song Loading gadget in the MISC menu.
  379.     The Save Song gadget saves the song in memory as a GMS module. It is
  380. suggested that you use the extension ".GMS" for GMS modules.
  381.     The Load Instrument gadget loads a GMS instrument into the currently
  382. selected instrument slot, replacing whatever instrument is already there.
  383.     The Save Instrument gadget saves the currently selected instrument in
  384. GMI instrument format. It is suggested that you use the extension ".GMI" for
  385. GMS instruments.
  386.  
  387.  
  388.  
  389.                                         6
  390.  
  391. 6.  The PLAY Menu
  392.  
  393. _______________________________________________________________________________
  394.  
  395.  
  396.  
  397.     The PLAY menu's gadgets control the overall playing of the song.
  398.  
  399.  
  400.  
  401. Play Sequence
  402.     The Play Sequence gadget controls the order in which the song's blocks are 
  403. played.
  404.     When this gadget is selected, the cursor up/down keys move the cursor up
  405. or down within the pattern list. The cursor left/right keys move the cursor
  406. between the two digits in each pattern number. The numeric keys change the
  407. number of the digit that the cursor is on top of. The INSERT key adds a new
  408. pattern number at the current cursor position, the DELETE key deletes the
  409. pattern number under the cursor, and the BACKSPACE key deletes the pattern
  410. number on the line above the cursor.
  411.     If the play sequence is changed while the song is being played, the
  412. changes will not take effect until the play routine finishes playing the
  413. current block.
  414.     While the song is playing, the music routine uses the play sequence's
  415. cursor to show which line of the sequence is currently being played. If you
  416. move the cursor up or down in the play sequence, the song will "jump" to the
  417. new position when the play routine finishes playing the current block.
  418.  
  419.  
  420.  
  421. Tempo
  422. Secondary Tempo
  423.     Both of these gadgets control the speed at which the song plays.
  424.     The setting of the Tempo gadget determines how many times a second the
  425. music playing routine is called. The higher the number in this gadget, the
  426. more rapidly the song will play. (The setting of this gadget is often
  427. referred to as the primary tempo.)
  428.     The number in the Secondary Tempo gadget is how many times the music
  429. playing routine must be called before it advances a line in the song. The
  430. lower the number in this gadget, the more rapidly the song will play.
  431.     A subtle but important effect of changing the secondary tempo is that it
  432. will make most note effects sound different.  The reason for this is that
  433. effect commands are processed every time the music playing routine is
  434. called, whether or not it advances a line. To illustrate this, imagine that
  435. you've attached the effect 102 to a note. This is a slide up with a data
  436. byte of 2. If the current secondary tempo is 6, this effect will be
  437. processed 6 times, for a total frequency increase of 12. But if the
  438. secondary tempo is 2, the effect will be processed only 2 times, increasing
  439. the track's frequency by 4.
  440.     In practical terms, this means that if you change the secondary tempo
  441. you'll usually have to go through the entire song and rethink any effects
  442. you used. Failing to do this will make the frequency slides sound mangled
  443. and the volume slides go too fast or too slow. This is a major hassle, so
  444. unless you have a good reason to change the secondary tempo I recommend you
  445. leave it at the default value of 6 and use the primary tempo to control the
  446. song's speed.
  447.  
  448.  
  449.  
  450. Play Song
  451.     This plays the song, starting from the first line of the play sequence.
  452.  
  453.  
  454.  
  455. Continue Song
  456.     This plays the song, starting from the current play sequence cursor
  457. position and track display cursor line.
  458.  
  459.  
  460.                                         7
  461.                               Chapter 6: The PLAY Menu
  462.  
  463.  
  464. Play Block
  465.     This plays the block that is shown in the track display. The play
  466. routine will play the block repeatedly until it is stopped or another
  467. playing gadget is used.
  468.  
  469.  
  470.  
  471. Continue Block
  472.     This plays the block shown in the track display, starting from the line
  473. that the track display cursor is on.
  474.  
  475.  
  476.  
  477. Stop Playing
  478.     This turns off the music playing routine and silences all channels.
  479.  
  480.  
  481.  
  482.                                         8
  483.  
  484. 7.  The SONG Menu
  485.  
  486. _______________________________________________________________________________
  487.  
  488.  
  489.  
  490.     The SONG menu is used to set parameters that are specific to the particular
  491. song in memory.
  492.  
  493.  
  494.  
  495. Sound System
  496.     This gadget toggles between the four basic sound card types that GMS
  497. supports: Adlib, Soundblaster, Soundblaster Pro I, and Soundblaster Pro II.
  498.     The Adlib sound card is based around the Yamaha OPL2 chip, which is
  499. capable of 9-channel monaural sound. When GMS is in this mode, only tracks
  500. 1-9 are played. Any tracks after 9 (if they exist) are ignored. The base
  501. address of the sound card is assumed to be 388 hex.
  502.     The Soundblaster sound card is basically an Adlib card with the ability
  503. to play digitized sound samples. GMS does not (yet) support sampled sound
  504. instruments, so the only difference between this mode and Adlib is that the
  505. Soundblaster Base Address in the MISC menu is used instead of 388 hex.
  506.     The Soundblaster Pro I sound card produces stereo sound by using two
  507. OPL2 chips - one connected to the stereo left and the other connected to the
  508. stereo right. Up to 18 notes can be played at once, but no more than 9 can
  509. be on either side. When GMS is in this mode, it uses the setting of the
  510. Stereo Left gadget to determine which tracks should be on which side. If
  511. this would cause more than 9 tracks to be on a side, the excess tracks are
  512. ignored.
  513.     The Soundblaster Pro II sound card is based around the Yamaha OPL3 chip.
  514. This chip has several advantages over its predecessor. First, the chip has
  515. 18 channels, each of which can be set to be on the right, left, or both on a
  516. channel-by-channel basis. When in this mode, the Stereo Left gadget
  517. determines which tracks are on which side. Second, each of the chip's
  518. operators has 8 waveforms - 4 more than the OPL2 chip. When Sound System is
  519. set to this mode, the Waveform gadgets in the INST menu will cycle through
  520. the extra OPL3 waveforms as well as the OPL2 ones. Finally, the OPL3 chip
  521. can be accessed much more quickly by the play routine than the OPL2 chip
  522. can. See Appendix C for more information on this.
  523.  
  524.  
  525.  
  526. Tracks
  527.     This gadget is used to set the number of tracks your song uses. All
  528. blocks in the song have the same number of tracks. When this gadget's value
  529. is changed, tracks are added to or deleted from all blocks to conform with
  530. the new setting.
  531.  
  532.  
  533.  
  534. Stereo Left
  535.     When Sound System is set to Soundblaster Pro I or II, this gadget
  536. controls which tracks are on the stereo left. All other tracks are on the
  537. stereo right. For example, if there are 8 tracks in the song and Stereo Left
  538. is set to 3, tracks 1-3 will be heard through the left speaker and tracks
  539. 4-8 will be heard through the right.
  540.     If Sound System is set to Adlib or Soundblaster, the value of this
  541. gadget is ignored.
  542.  
  543.  
  544.  
  545. Song Name
  546.     This gadget allows you to give your song a better name than the MS-DOS
  547. file system permits.  The contents of the gadget are saved as part of your
  548. song.
  549.  
  550.  
  551.  
  552. Info Page
  553.     Selecting this gadget makes a window with a cursor in it pop up. The cursor
  554. keys move the cursor around.
  555.  
  556.  
  557.                                         9
  558.                               Chapter 7: The SONG Menu
  559.  
  560.  
  561. Text can be entered into this window and edited using the INSERT, DELETE,
  562. and BACKSPACE keys. Anything you write in this window will be saved with
  563. your song. Pressing RETURN closes the window and saves its contents.
  564.  
  565.  
  566.  
  567. Deep Vibrato
  568.     This gadget affects the Apply Vibrato gadgets found in the INST menu.
  569. When this gadget is set to YES the effect of the Apply Vibrato gadgets, if
  570. they are used, will be doubled.
  571.  
  572.  
  573.  
  574. Deep Amplitude Modulation
  575.     The setting of this gadget affects the Apply Amplitude Modulation
  576. gadgets in the INST menu. If this gadget is set to YES the effect of the
  577. Apply Amplitude Modulation gadgets, if they are used, will be magnified by a
  578. factor of approximately 5.
  579.  
  580.  
  581.  
  582.                                        10
  583.  
  584. 8.  The BLOCK Menu
  585.  
  586. _______________________________________________________________________________
  587.  
  588.  
  589.  
  590.     The BLOCK menu contains gadgets that operate on blocks and tracks.
  591.  
  592.  
  593.  
  594. Current Block
  595.     This gadget cannot be selected. It shows the number of the block which is v
  596.  isible in the track display.
  597.  
  598.  
  599.  
  600. Next Block
  601.     This makes the next highest numbered block appear in the track display,
  602. unless the last block in the song is already being displayed.
  603.  
  604.  
  605.  
  606. Previous Block
  607.     This makes the next lowest numbered block appear in the track display,
  608. unless the first block in the song (block zero) is already being displayed.
  609.  
  610.  
  611.  
  612. Block Length
  613.     This gadget changes the number of lines in the current block. Lines will
  614. be added to or removed from the end of the current block to make it conform
  615. to the new setting.
  616.  
  617.  
  618.  
  619. Add Block
  620.     This gadget creates a new block and adds it to the song. The length of
  621. the new block is determined by the contents of the Default Block Lines
  622. gadget in the MISC menu. The currently selected block and all
  623. higher-numbered blocks will have their block numbers increased by one to
  624. make room for the newly-added block. The play sequence will be automatically
  625. adjusted to reflect the renumbering.
  626.  
  627.  
  628.  
  629. Delete Block
  630.     This gadget deletes the currently selected block. All higher-numbered
  631. blocks will have their numbers decreased by one to fill the empty slot. The
  632. play sequence is automatically adjusted to reflect the renumbering.
  633.  
  634.  
  635.  
  636. Cut Block
  637. Copy Block
  638. Paste Block
  639. Swap Block
  640. Cut Track
  641. Copy Track
  642. Paste Track
  643. Swap Track
  644.     All of these gadgets use an invisible region of buffer memory referred
  645. to as the clipboard. The clipboard can hold, at most, one block's worth of
  646. data. Any gadget which writes to the clipboard destroys the old data as part
  647. of the writing process.
  648.     Cut Block copies the currently selected block to the clipboard, then
  649. "blanks out" the block, removing
  650.  
  651.  
  652.                                        11
  653.                              Chapter 8: The BLOCK Menu
  654.  
  655.  
  656. all note, instrument, and effect data.
  657.     Copy Block copies the currently selected block to the clipboard without
  658. blanking it out.
  659.     Paste Block replaces the current block with the contents of the clipboard.
  660.     Swap Block swaps the contents of the current block with the contents of the
  661. clipboard.
  662.     Cut Track, Copy Track, Paste Track, and Swap Track perform the same
  663. functions as the above gadgets, but they operate on one track at a time
  664. instead of the entire block. The position of the track display's cursor
  665. determines which track is affected.
  666.     Note that the block-oriented and track-oriented gadgets both use the
  667. same clipboard. Mixing track and block operations is likely to have
  668. unpredictable effects.
  669.  
  670.  
  671.  
  672. Make Normal Slide
  673. Make Portamento Slide
  674.     These two gadgets make GMS create frequency slides. GMS will do all the
  675. necessary calculations to make the slide start and end where you want it to.
  676. Make Normal Slide makes slides that use the 1 (slide up) and 2 (slide down)
  677. commands. Make Portamento Slide makes slides that use the 3 (portamento)
  678. command.
  679.     To use these gadgets, you must first use the track display to lay down a
  680. start note at some place on the track before where you want the slide to
  681. begin, and lay down an end note on the line right after where you want the
  682. slide to end. Then, move the cursor to the line where you want the slide to
  683. start and select the appropriate gadget. For example:
  684.  
  685.  
  686.          C-4 5000                   C-4 5000                  C-4 5000
  687.          --- 0000                   --- 0000                  --- 0000
  688.          --- 0000                   --- 015E                  F#4 535E
  689.          --- 0000                   --- 015F                  --- 035F
  690.          F#4 5000                   F#4 5000                  --- 0000
  691.      Before slide command    After Make Normal Slide  After Make Port. Slide
  692.  
  693.  
  694.     In the above example, the cursor is on the third line prior to using the
  695. slide-making gadgets.
  696.     Make Normal Slide will delete any existing 1 or 2 effects between the
  697. start and end lines before it lays down the new ones, and Make Portamento
  698. Slide will do the same with any existing 3 effects. The start and end notes
  699. can be removed once the slide has been created (except in the case of a
  700. portamento slide, where the end note must be present in order to indicate
  701. the portamento destination).
  702.     In practice, using the 1 and 2 commands seems to produce better-sounding
  703. slides (though the difference is very slight). This is why I refer to 1- and
  704. 2-based slides as "normal" slides.
  705.     Note: the total frequency change resulting from a 1, 2, or 3 command
  706. depends upon both the value of the data byte and the current secondary
  707. tempo. GMS takes the current secondary tempo into account when it calculates
  708. what value to place in the data bytes of the slide commands. Therefore, you
  709. should make sure that the secondary tempo is set to whatever value is normal
  710. for your song (or that part of your song) before using the slide gadgets.
  711.  
  712.  
  713.  
  714. Make Volume Slide
  715.     This gadget is very similar to the frequency-slide-making gadgets. It
  716. creates volume slides based around the C (volume change) command.
  717.     To use this gadget, set the start volume on the line where you want the
  718. slide to start, and the end volume on the line where you want the slide to
  719. end. Then move the cursor to any line between the start and end lines and
  720. use the Make Volume Slide gadget. For example:
  721.  
  722.  
  723.                 C-4 3C10                               C-4 3C10
  724.                 --- 0000                               --- 0000
  725.  
  726.  
  727.                                        12
  728.                              Chapter 8: The BLOCK Menu
  729.  
  730.  
  731.                 --- 0000                               --- 0C18
  732.                 --- 0000                               --- 0C20
  733.                 F#4 3C29                               F#4 3C29
  734.             Before slide command                 After Make Volume Slide
  735.  
  736.  
  737.     In the above example, the cursor is on the third line prior to using the
  738. volume slide gadget.
  739.     C-command-based volume slides are most useful when the slide is spread
  740. over a large number of lines (6 or more is a good rule of thumb). If the
  741. number of lines involved is small, the D command (volume slide) usually
  742. produces a smoother and better-sounding volume change.
  743.  
  744.  
  745.  
  746.                                        13
  747.  
  748. 9.  The INST Menu
  749.  
  750. _______________________________________________________________________________
  751.  
  752.  
  753.  
  754.     The INST menu's gadgets are used to create and modify the current song's
  755. instruments.
  756.  
  757.  
  758.  
  759. Instrument #
  760.  
  761.     This gadget cannot be selected. It shows the number of the currently
  762. selected instrument.
  763.  
  764.  
  765.  
  766. Name
  767.  
  768.     You can use this gadget to give the instruments you create a name of up
  769. to 36 characters long. The name is included with the instrument when it is
  770. saved.
  771.  
  772.  
  773.  
  774. Next
  775.  
  776.     This gadget selects the next highest numbered instrument in the song,
  777. unless the highest-numbered instrument is already selected.
  778.  
  779.  
  780.  
  781. Previous
  782.  
  783.     This gadget selects the next lowest numbered instrument, unless the lowest-
  784. numbered instrument (instrument 1) is already selected.
  785.  
  786.  
  787.  
  788. Add
  789.  
  790.     Creates a new instrument. The instrument is placed into the instrument
  791. list right before the currently selected instrument. The currently selected
  792. instrument and all higher-numbered instruments are renumbered to open up a
  793. slot for the new instrument. All instrument numbers in all blocks are
  794. automatically adjusted to make the renumbering transparent.
  795.  
  796.  
  797.  
  798. Delete
  799.  
  800.     Deletes the currently selected instrument. All higher-numbered
  801. instruments are renumbered to fill the empty slot.  All instrument numbers
  802. in all blocks are automatically adjusted to make the renumbering
  803. transparent.
  804.  
  805.  
  806.     In this gadget window are two table gadgets. This is a special kind of
  807. gadget that can contain other gadgets. The table can be scrolled through by
  808. selecting it and using the cursor up/down keys. The gadgets in the table on
  809. the left affect operator 1. The gadgets in the table on the right are for
  810. operator 2.
  811.  
  812.     The following gadgets are in both tables:
  813.  
  814.  
  815.  
  816. Freq Mult
  817.  
  818.     This gadget sets the modulator frequency multiple of the operator. When
  819. set to "normal", the operator produces sound at the frequency specified when
  820. the note is played. The other settings cause the operator's frequency to be
  821. different.
  822.  
  823.  
  824.                                        14
  825.                               Chapter 9: The INST Menu
  826.  
  827.  
  828. Keyboard Scaling Rate
  829.  
  830.     If this gadget is set to YES, the note's frequency affects the speed
  831. with which the operator passes through its ADSR envelope. The higher the
  832. frequency, the more rapidly the operator moves through the ADSR phases.
  833.  
  834.  
  835.  
  836. Hold At Sustain Level
  837.  
  838.     This gadget affects what happens when the operator enters the sustain
  839. phase. If it is set to YES, the operator's volume stays at the sustain level
  840. until a key off occurs (in other words, it behaves normally). If set to NO,
  841. the sustain phase is skipped and the release phase begins immediately.
  842.  
  843.  
  844.  
  845. Apply Vibrato
  846.  
  847.     If this gadget is set to YES, the operator's frequency will "waver". The
  848. depth of the vibrato is controlled by the Deep Vibrato gadget in the Song
  849. menu. If that gadget is set to YES, the depth will be 14 cents. Otherwise,
  850. it will be 7 cents.
  851.  
  852.  
  853.  
  854. Apply Amplitude Modulation
  855.  
  856.     If this gadget is set to YES, the operator's volume will "waver". The
  857. amplitude modulation's depth is controlled by the Deep Amplitude Modulation
  858. gadget in the Song menu. If that gadget is set to YES, the depth will be 4.8
  859. decibels. If not, it will be 1 decibel.
  860.  
  861.  
  862.  
  863. Volume
  864.  
  865.     This gadget controls the operator's volume (technically speaking, its
  866. output level). The volume range is from 0 to 63, with 0 being silent and 63
  867. being maximum volume.
  868.  
  869.  
  870.  
  871. Scaling Level
  872.  
  873.     When this gadget is set to None, the operator's frequency will have no
  874. direct effect upon its volume. When on one of the other settings, a higher
  875. frequency will make the operator produce sound at a lower volume. The
  876. particular setting chosen determines how rapidly the volume decreases as
  877. frequency increases.
  878.  
  879.  
  880.  
  881. Attack
  882.  
  883.     This gadget sets the speed of the attack phase of the ADSR envelope,
  884. from 0 to 15. The higher the setting, the more rapidly the operator will
  885. reach its maximum volume.
  886.  
  887.  
  888.  
  889. Decay
  890.  
  891.     This gadget controls the speed of the decay phase of the ADSR envelope,
  892. from 0 to 15. The higher the setting, the faster the operator's volume will
  893. fall to the sustain level.
  894.  
  895.  
  896.  
  897. Sustain
  898.  
  899.     This gadget sets the sustain level, from 0 to 15. 0 is silence, 15 is
  900. maximum volume, and all of the numbers in between represent fractions of the
  901. maximum volume.
  902.  
  903.  
  904.                                        15
  905.                               Chapter 9: The INST Menu
  906.  
  907.  
  908. Release
  909.     This gadget controls the speed of the release phase of the ADSR
  910. envelope, from 0 to 15. The higher the setting, the more rapidly the
  911. operator's volume will fall from the sustain level to silence.
  912.  
  913.  
  914.  
  915. Waveform
  916.     This gadget sets the operator's waveform. When in Adlib, Soundblaster,
  917. or Soundblaster Pro I mode, 4 waveforms are available. When in Soundblaster
  918. Pro II mode, 8 waveforms are available.
  919.  
  920.  
  921.     These gadgets are in operator 1's table only:
  922.  
  923.  
  924.  
  925. Feedback Strength
  926.     If the value in this gadget is not zero, operator 1 will modulate itself
  927. with its own output. The higher the value, the more modulation will occur.
  928. The maximum feedback strength is 7.
  929.  
  930.  
  931.  
  932. Additive Synthesis
  933.     If this gadget is set to YES, the instrument will use additive
  934. synthesis. Otherwise, it will use frequency modulation.
  935.  
  936.  
  937.  
  938. Filename
  939. Select File From Dir
  940. Load
  941. Save
  942.     These gadgets are for loading and saving instruments. They function
  943. identically to their counterparts under the FILE menu.
  944.  
  945.  
  946.  
  947.                                        16
  948.  
  949. 10.  The MISC Menu
  950.  
  951. _______________________________________________________________________________
  952.  
  953.  
  954.  
  955.     The MISC menu contains gadgets whose settings are not dependent upon the
  956. particular song that is loaded.
  957.  
  958.  
  959.  
  960. Keep Sound System When Loading
  961.  
  962.     When a song is saved, GMS saves the Sound System setting from the SONG
  963. menu along with it. If this gadget is set to YES, that setting will be
  964. ignored when a song is loaded, and Sound System will remain set to whatever
  965. it was before the load occurred. If this gadget is set to NO, Sound System
  966. will be set to whatever was saved with the song.
  967.  
  968.     This option exists so that people with an older sound card (such as an
  969. Adlib) won't have to change the sound system every time they load a song
  970. written for a newer card.
  971.  
  972.  
  973.  
  974. Soundblaster Base Address
  975.  
  976.     This gadget allows you to set the base address of your Soundblaster
  977. card, in hexadecimal. This base address is used when Sound System in the
  978. SONG menu is set to Soundblaster, Soundblaster Pro I, or Soundblaster Pro
  979. II. (When Sound System is set to Adlib, a base address of 388 hex is always
  980. used.)
  981.  
  982.     Soundblaster cards are normally at 220 hex, but this is
  983. user-configurable.  Other commonly-used base addresses are 210 and 240. If
  984. you don't know what the base address of your card is, consult the
  985. documentation and/or configuration utilities that came with it.
  986.  
  987.  
  988.  
  989. Song Loading
  990.  
  991.     This gadget affects what happens when you try to load a song. When the
  992. gadget is set to Autodetect, GMS will try to determine what kind of module
  993. the song is, and call the appropriate loader routine if it can make this
  994. determination. When the gadget is set to Assume type, GMS will bypass the
  995. identification phase and try to load the module as whatever you say it is.
  996. (The loader routine still does its own double-checking, though, and may
  997. refuse to load the module.)
  998.  
  999.     The two module formats that GMS currently supports (GMS and RAD) are
  1000. both easily identifiable, so this gadget has little use at the moment. It's
  1001. mostly intended for the future.
  1002.  
  1003.  
  1004.  
  1005. Instrument Loading
  1006.  
  1007.     This gadget affects what happens when you try to load an instrument. 
  1008. When the gadget is set to Autodetect, GMS will try to figure out what kind
  1009. of instrument you're attempting to load, and call the correct loader routine
  1010. if it can. When the gadget is set to Assume type, GMS will skip the
  1011. identification phase and try to load the instrument as whatever you say it
  1012. is. (The loader routine does its own double-checking, though, and may reject
  1013. the instrument.)
  1014.  
  1015.     This gadget is intended for the future. At present, GMS supports only one
  1016. instrument type (its own).
  1017.  
  1018.  
  1019.  
  1020. Default Block Lines
  1021.  
  1022.     This gadget affects the size of blocks created with the New Block gadget
  1023. in the BLOCK menu. All blocks that are created will have the number of lines
  1024. specified in this gadget.
  1025.  
  1026.  
  1027.                                        17
  1028.                               Chapter 10: The MISC Menu
  1029.  
  1030.  
  1031. Use Mouse
  1032.     This gadget can be used to turn on and off GMS's mouse support. When it
  1033. is set to YES, the mouse can be used as an input device. When NO, the mouse
  1034. cursor will be turned off.
  1035.  
  1036.  
  1037.  
  1038. Show Interrupt
  1039.     This gadget lets you see just how long the interrupt routine that plays the
  1040. music is actually taking.
  1041.     When set to YES, the play routine will turn the screen's background red
  1042. just after it starts up and back to black right before it finishes. This
  1043. will manifest itself as a red bar moving up or down the screen. The bar can
  1044. be most easily seen when the tempo is set to about 130 (the exact value
  1045. varies from one PC system to another).
  1046.     Notice that the interrupt routine executes much more quickly when Sound
  1047. System in the SONG menu is set to Soundblaster Pro II than when it is set to
  1048. anything else. This is due to differences between the OPL2 and OPL3 chips
  1049. and is explained in more detail in Appendix C.
  1050.  
  1051.  
  1052.  
  1053. Save Configuration
  1054.     This gadget saves the contents of certain gadgets to a file called
  1055. "GMS.CFG" in the current directory. When GMS starts up, it automatically
  1056. reads this file in (if it exists) and sets those gadgets up appropriately.
  1057. The following gadgets are saved to the configuration file: Soundblaster Base
  1058. Ad dress, Sound System, Keep Sound System When Loading, Song Loading,
  1059. Instrument Loading, Default Block Lines, Use Mouse, and Show Interrupt.
  1060.  
  1061.  
  1062.  
  1063.                                        18
  1064.  
  1065. 11.  Effect Commands
  1066.  
  1067. _______________________________________________________________________________
  1068.  
  1069.  
  1070.  
  1071.     All commands consist of a one-digit effect number and a two-digit effect
  1072. byte. The meaning of the effect byte depends upon the particular effect.
  1073. This chapter lists all of the commands that can be used in GMS modules. If
  1074. an effect number not listed here is used, the play routine will simply
  1075. ignore it.
  1076.  
  1077.  
  1078.  
  1079. Slide Up (1)
  1080.     This effect raises the track's frequency by the amount specified in the
  1081. data byte. The actual audible effect of this depends upon the track's
  1082. current frequency and the amount of the slide. If you want to make a slide
  1083. from one note to another, the recommended method is to use the Make Normal
  1084. Slide gadget in the BLOCK menu. Making slides "manually" is rather tedious
  1085. and mostly done when making sound effects.
  1086.  
  1087.  
  1088.  
  1089. Slide Down (2)
  1090.     This effect lowers the track's frequency by the amount specified in the
  1091. data byte.
  1092.  
  1093.  
  1094.  
  1095. Portamento Slide (3)
  1096.     A portamento slide is similar to the basic slide up (1) and slide down
  1097. (2) commands, but puts more of the burden on the play routine.
  1098.     To make a portamento slide, you must specify a destination. You do this
  1099. by placing a note on the same line as the portamento slide command. For
  1100. example:
  1101.  
  1102.  
  1103.                                      E-5 2000
  1104.                                      --- 0000
  1105.                                      D-4 233A
  1106.                                      --- 033A
  1107.                                      --- 033A
  1108.                             Portamento slide from E-5 to D-4
  1109.  
  1110.  
  1111.     This note is not played; instead, the play routine remembers the note as
  1112. the portamento destination. Thereafter, whenever the portamento slide
  1113. command is used, the track's current frequency will be shifted towards the
  1114. portamento destination by the amount specified in the data byte. Th is is a
  1115. lot like the other slide commands, except that the play routine decides
  1116. on-the-fly whether a 1 or a 2 slide should be used.
  1117.     Once the track's current frequency reaches the portamento destination,
  1118. it will "lock" there. Any further portamento commands will have no effect
  1119. until the track's frequency is changed by some other method or the
  1120. portamento destination is changed.
  1121.  
  1122.  
  1123.  
  1124. Vibrato (4)
  1125.     The vibrato effect makes a track's frequency "waver" back and forth. The
  1126. first digit of the effect byte is the vibrato speed. The second is its
  1127. depth.
  1128.  
  1129.  
  1130.  
  1131. Change Secondary Tempo (9)
  1132.     This effect changes the song's current secondary tempo.  The change is
  1133. permanent unless altered by another 9 command. The entire data byte can be
  1134. used to specify the new secondary tempo, but in practice the second digit is
  1135. more than enough.
  1136.  
  1137.  
  1138.                                        19
  1139.                              Chapter 11: Effect Commands
  1140.  
  1141.  
  1142. Position Jump (B)
  1143.     This changes the "flow of control" within the song and makes the music
  1144. routine start playing at a different point in the play sequence. The
  1145. position jump will occur as soon as the current line is done playing; any
  1146. remaining lines in the current block will be ignored.  The data byte
  1147. indicates which position in the play sequence to jump to. If the data byte
  1148. is zero it means the first position in the list, if the data byte is five it
  1149. means the sixth position in the list, and so on.
  1150.     The position jump command is usually used to make a song that has a part
  1151. th at only plays once and another part that repeats over and over. If you
  1152. want the entire song to repeat there's usually no need to use this command,
  1153. because the play routine will start the song over anyways after it plays the
  1154. last block in the play sequence.
  1155.  
  1156.  
  1157.  
  1158. Volume Change (C)
  1159.     This command sets the volume of the track to the number contained in the
  1160. data byte. Legal values are from 0 (silent) to 63 (full volume). If a number
  1161. higher than 63 is given, the track's volume will be set to 63.
  1162.  
  1163.  
  1164.  
  1165. Volume Slide (D)
  1166.     This command smoothly slides the track's volume up or down. If the data
  1167. byte's second digit is zero, the track's volume will be increased by the
  1168. value of the first digit. If the data byte's first digit is zero, the
  1169. track's volume will be decreased by the value of the second digit.
  1170.     Only one of the data byte's digits should be nonzero. If both are nonzero, 
  1171. the effects are unpredictable.
  1172.  
  1173.  
  1174.  
  1175. Miscellaneous Command (F)
  1176.     What the F command does depends upon the value of its data byte.
  1177.  
  1178.  
  1179.  
  1180. Block End (F00)
  1181.     The Block End command means that the music routine should treat the
  1182. current line as if it was the last line in the block. As soon as the current
  1183. line is done playing, the music routine will go to the next block in the
  1184. play sequence. Any lines in the block after the Block End command will be
  1185. ignored.
  1186.     This command exists mostly for compatibility with other tracker
  1187. programs. If you want a block to end sooner than normal it's usually best
  1188. just to change its length in the BLOCK menu's Block Length gadget.
  1189.  
  1190.  
  1191.  
  1192. Change Tempo (F01-FFE)
  1193.     This command changes the song's primary tempo to the value of the data
  1194. byte. The change is permanent unless overriden by a later tempo change.
  1195.  
  1196.  
  1197.  
  1198. Stop Playing (FFF)
  1199.     This command makes the song stop playing.
  1200.  
  1201.  
  1202.  
  1203.                                        20
  1204.  
  1205. 12.  Keyboard Shortcuts
  1206.  
  1207. _______________________________________________________________________________
  1208.  
  1209.  
  1210.  
  1211.     This chapter lists all of the keys and key combinations that have
  1212. special meaning to GMS. Most of the entries below are shortcuts for
  1213. functions that can be accessed through the gadgets, but there are a few that
  1214. are functions in their own right.
  1215.     TAB - This key causes the cursor to move between the gadget window,
  1216. gadget window selector, and track display.
  1217.     ` - This key moves the cursor from one gadget or window selector to
  1218. another. It has no effect when the cursor is in the track display.
  1219.     ALT-L - Makes GMS redraw the entire screen. Useful if part of the
  1220. display has been corrupted by the mouse cursor.
  1221.     [ - Decreases the edit octave by one, if the track display is selected.
  1222.     ] - Increases the edit octave by one, if the track display is selected.
  1223.     ALT-[ - Moves the cursor to the previous line in the Play Sequence
  1224. gadget in the PLAY menu.
  1225.     ALT-] - Moves the cursor to the next line in the Play Sequence gadget in
  1226. the PLAY menu.
  1227.     ALT-semicolon - Shortcut for Previous Block in the BLOCK menu.
  1228.     ALT-apostrophe - Shortcut for Next Block in the BLOCK menu.
  1229.     ALT-period - Shortcut for Previous in the INST menu.
  1230.     ALT-slash - Shortcut for Next in the INST menu.
  1231.     ALT-P - Shortcut for Play Song in the PLAY menu.
  1232.     ALT-C - Shortcut for Continue Song in the PLAY menu.
  1233.     ALT-B - Shortcut for Play Block in the PLAY menu.
  1234.     ALT-R - Shortcut for Continue Block in the PLAY menu.
  1235.     1 through 0 - Changes the active status of tracks 1-10.
  1236.     ALT-1 through ALT-8 - Changes the active status of tracks 11-18.
  1237.     F1 - Shortcut for Cut Block in the BLOCK menu.
  1238.     F2 - Shortcut for Copy Block in the BLOCK menu.
  1239.     F3 - Shortcut for Paste Block in the BLOCK menu.
  1240.     F4 - Shortcut for Swap Block in the BLOCK menu.
  1241.     F5 - Shortcut for Cut Track in the BLOCK menu.
  1242.     F6 - Shortcut for Copy Track in the BLOCK menu.
  1243.     F7 - Shortcut for Paste Track in the BLOCK menu.
  1244.     F8 - Shortcut for Swap Track in the BLOCK menu.
  1245.     F12 - Exit program.  Quits out of GMS and returns to the MS-DOS prompt. 
  1246. There is no gadget equivalent to this key.
  1247.  
  1248.  
  1249.  
  1250.                                        21
  1251.  
  1252. 13.  Some Questions And Their Answers
  1253.  
  1254. _______________________________________________________________________________
  1255.  
  1256.  
  1257.  
  1258.     When I try to play a song in GMS the program seems to be working but no
  1259. sound comes out. What's wrong?
  1260.     Some programs leave the sound card in a strange state when they exit.
  1261. (The OPL3 driver in the Linux operating system does this.) Cycling through
  1262. all of the Sound System gadget's settings should fix the problem. If it
  1263. doesn't, try turning the computer off and on again and loading GMS before
  1264. you load anything else.
  1265.  
  1266.  
  1267.     Does GMS work under Windows (95), OS/2, or Linux DOS emulation?
  1268.     Somewhat to my surprise, it does work under Windows 3.1.  (It needs to
  1269. be run on its own screen, though, or the tempo will be messed up.) I haven't
  1270. tried it on the other operating systems.
  1271.  
  1272.  
  1273.  
  1274.                                        22
  1275.  
  1276. 14.  Registration
  1277.  
  1278. _______________________________________________________________________________
  1279.  
  1280.  
  1281.  
  1282.     Game Music System is shareware, try-before-you-buy software. It is the
  1283. result of hundreds of hours spent designing, coding, and testing. If you
  1284. find GMS useful to you, please register it. Aside from a feeling of
  1285. righteousness, registration gives you the following tangible advantages:
  1286.  
  1287.  
  1288.   * A printed copy of the documentation.
  1289.   * A version of the program without the annoying registration window.
  1290.   * Free updates, mailed on the day they are released, until the major version
  1291. number changes.
  1292.   * A signed letter of thanks.
  1293.  
  1294.  
  1295.     Registration is $30 (in U.S. funds) and should be mailed to:
  1296.  
  1297.  
  1298.     Roland Acton
  1299.     8001 Bluebird Lane
  1300.     La Palma, CA, 90623
  1301.     U.S.A.
  1302.  
  1303.  
  1304.     Internet address: malyon@netcom.com
  1305.  
  1306.  
  1307.  
  1308.                                        23
  1309.  
  1310. 15.  Legal Stuff
  1311.  
  1312. _______________________________________________________________________________
  1313.  
  1314.  
  1315.  
  1316.     The Game Music System player code, consisting of the files globals.h,
  1317. inst.cpp, inst.h, block.cpp, block.h, song.cpp, song.h, musdrv.cpp,
  1318. musdrv.h, and player.cpp, is hereby placed in the public domain. The module
  1319. and instrument formats described in Appendices A and B are also placed in
  1320. the public domain. You can use or modify these files and formats in any way
  1321. you want.
  1322.     All other parts of the Game Music System package - including, but not
  1323. limited to, the editor program and documentation - are copyrighted by Roland
  1324. Acton. These parts of the package are released as shareware. If you find
  1325. this program useful, you are legally and morally required to register it as
  1326. described in Chapter 14. Continuing to use the program without registering
  1327. it may result in pangs of guilt, loss of hair and/or appetite, and
  1328. indigestion. (Registration is a decent thing to do.)
  1329.     Companies who wish to distribute Game Music System as part of a
  1330. shareware collection may do so, provided that the package is distributed in
  1331. complete and unaltered form.
  1332.     I, Roland Acton, make no warranties of any kind with respect to this
  1333. program. No guarantees are given that this program will work as described,
  1334. or even that it will work at all. I am not responsible for loss of data,
  1335. loss of work, or loss of sleep as the result of using this program. I am to
  1336. be held blameless in the event of any earthquakes, plane crashes, nuclear
  1337. wars, or other natural or unnatural disasters that occur as a direct or
  1338. indirect result of you, me, or someone else making use of this program. In
  1339. other words, you the user take full responsibility for anything that happens
  1340. as a result of using this program. 'Nuff said.
  1341.  
  1342.  
  1343.  
  1344.                                        24
  1345.  
  1346. 16.  Acknowledgements
  1347.  
  1348. _______________________________________________________________________________
  1349.  
  1350.  
  1351.  
  1352.     Any worthwhile enterprise can be successful only as a result of the time
  1353. and effort invested by a number of people. This chapter tries to give some
  1354. credit where it is due.
  1355.     The following people contributed (without their knowledge) to the
  1356. development of Game Music System:
  1357.  
  1358.  
  1359.     Richard Stallman and the FSF development team, for providing the excellent 
  1360. GCC compiler and support tools.
  1361.  
  1362.  
  1363.     Jeffrey Lee for the Soundblaster OPL2 mode documentation.
  1364.  
  1365.  
  1366.     Vladimir Arnost for the Soundblaster OPL3 mode documentation.
  1367.  
  1368.  
  1369.     Linus Torvalds for creating the Linux operating system. Writing an
  1370. MS-DOS application under Unix is "interesting", to say the least.
  1371.  
  1372.  
  1373.     Joseph Allen for making his "joe" text editor. Much, much better than "vi" 
  1374. or (*choke*) "edit".
  1375.  
  1376.  
  1377.     Donald Knuth for the TeX typesetting system, under which this manual was
  1378. written.
  1379.  
  1380.  
  1381.     Without the efforts of the above people, this project would have gone
  1382. nowhere fast.
  1383.  
  1384.  
  1385.  
  1386.                                        25
  1387.  
  1388.  
  1389.  
  1390.  
  1391. APPENDICES
  1392.  
  1393. A. The GMS Module Format
  1394.  
  1395. _______________________________________________________________________________
  1396.  
  1397.  
  1398.  
  1399.     The following table shows what a GMS 1.0 module looks like when it's stored
  1400. on disk:
  1401.  
  1402.  
  1403. _bytes____description_________________________________
  1404.      8    magic cookie "GMS-RCAx" (x = module format version)
  1405.   1-51    song name, null-terminated
  1406. 14-784    info page lines (14 lines, each null-terminated)
  1407.      1    deep vibrato/am byte
  1408.      1    highest track
  1409.      1    tempo
  1410.      1    secondary tempo
  1411.      1    sound system
  1412.      1    highest stereo left
  1413. _____1____number_of_instruments_(always__1)___________
  1414.   1-31    instrument name, null-terminated
  1415.      1    operator 1 am_vib byte
  1416.      1    operator 1 scaling_volume byte
  1417.      1    operator 1 a_d byte
  1418.      1    operator 1 s_r byte
  1419.      1    operator 1 waveform byte
  1420.      1    operator 2 am_vib byte
  1421.      1    operator 2 scaling_volume byte
  1422.      1    operator 2 a_d byte
  1423.      1    operator 2 s_r byte
  1424.      1    operator 2 waveform byte
  1425. _____1____op1mod_feedback_byte________________________
  1426.      1    highest play sequence number
  1427.  1-100    play sequence
  1428. _____1____highest_block_number________________________
  1429.      1    highest line
  1430. __2-32____track_numbers_______________________________
  1431.  0-???    track data
  1432.  
  1433.  
  1434.     The purpose of all the fields is not obvious, so let's take a look at
  1435. the steps the GMS loader routine needs to go through to load a song.
  1436.     The first thing the loader routine does is to compare the first seven
  1437. bytes of the file with the string "GMS-RCA". All GMS modules begin with this
  1438. string. If the module passes this test, the loader reads in the next byte,
  1439. the module format version. If this byte is zero, the module is a GMS 1.0
  1440. song. If it's something else, the loader rejects the module.
  1441.     The loader then reads in the song name and the 14 lines of the info
  1442. page. Each of the 14 info page lines has 0-55 characters followed by a null
  1443. terminator. It then reads in the deep vibrato/am byte, the highest track
  1444. byte (a number from 0 to 17), the tempo and secondary tempo, and the sound
  1445. system. The sound system byte is the integer cast of the sound_cards
  1446. enumeration, so adlib = 0, sb = 1, sbpro1 = 2, and sbpro2 = 3. Then it reads
  1447. in the highest stereo left byte (a number from 0 to 17) and the number of
  1448. instruments in the song.
  1449.     The next part of the module consists of all of the instruments, one
  1450. after the other, starting with instrument 1. The loader creates as many
  1451. instruments as necessary, fills them in with instrument data read from the
  1452. module file, and adds them to the song.
  1453.     After reading in all instruments, the loader reads in the highest play
  1454. sequence number (a number from 0 to 99) and the play sequence. The length of
  1455. the play sequence is equal to the highest play sequence number plus one. For
  1456. example, if the highest play sequence number is 4, it will be followed by 5
  1457. bytes which, taken
  1458.  
  1459.  
  1460.                                        27
  1461.                           Appendix A: The GMS Module Format
  1462.  
  1463.  
  1464. together, are the song's pattern list. Next, the loader reads in the highest
  1465. block number (a number from 0 to 99).
  1466.  
  1467.     To explain the next part, it's necessary to digress slightly and
  1468. describe some of what the GMS save routine does when it saves a module.
  1469. Before it saves any of the blocks, the save routine looks through all of the
  1470. tracks in all of the blocks in the song. It's looking for two things: first,
  1471. for any tracks that are completely empty and have no notes or effects on
  1472. them. Second, for any tracks that are exact duplicates of any other tracks
  1473. in the song.
  1474.  
  1475.     The save routine uses the results of this search to build up a table
  1476. that lists all of the unique tracks in the song. It assigns each of those
  1477. tracks a number, starting with 1. Then it saves all of the unique tracks as
  1478. part of the module, and attaches a set of tables that describe which tracks
  1479. are used by which blocks.
  1480.  
  1481.     After the loader routine reads in the highest block number, it expects
  1482. to find that set of tables right after it _ one table for each block used in
  1483. the song. For example, if the highest block number is 10, there will be 11
  1484. tables.
  1485.  
  1486.     The first number in each table is the highest line number in the block
  1487. (0 to 255). This is followed by a series of 16-bit numbers - one number for
  1488. each track in the song. The numbers are stored in big-endian format. This
  1489. means that each number's high byte appears in the file before its low byte.
  1490. The numbers are the numbers of the unique tracks identified by the save
  1491. routine. The number zero means that the track was completely empty.
  1492.  
  1493.     As an example, let's say we're loading in one of the block tables in a
  1494. song which has 3 tracks. The loader reads in 7 bytes, which (in decimal)
  1495. are: 63 0 17 0 18 0 0. The first number, 63, is the highest line number in
  1496. the block. The next number is the unique track number that corresponds to
  1497. the first track in the block. The unique track number is 17. This track may
  1498. or may not be used elsewhere in the song; we don't know (and it doesn't
  1499. matter). The block's second track uses unique track number 18. The third
  1500. track's number is zero. This means that the third track is completely blank
  1501. and contains no notes or effects. Because of this, it can be ignored by the
  1502. play routine.
  1503.  
  1504.     After reading in all of the block tables, the loader reads in the unique
  1505. tracks. Each track is stored (both on disk and in memory) in a compressed
  1506. format. Each line of each track can consist of a note byte, an instrument
  1507. byte, and one or more effect number bytes, each followed by an effect data
  1508. byte. However, not all of those bytes have to be present. Only the note byte
  1509. is required to be there.
  1510.  
  1511.     The loader routine reads in the first line's note byte and looks at the
  1512. lower 7 bits of the byte. It interprets the value according to the following
  1513. chart:
  1514.  
  1515.  
  1516. number______interpretation_
  1517.       0     no note; blank
  1518.       1     C, octave 1
  1519.       2     C sharp, octave 1
  1520.       3     D, octave 1
  1521.       4     D sharp, octave 1
  1522.       5     E, octave 1
  1523.       6     F, octave 1
  1524.       7     F sharp, octave 1
  1525.       8     G, octave 1
  1526.       9     G sharp, octave 1
  1527.      10     A, octave 1
  1528.      11     A sharp, octave 1
  1529.      12     B, octave 1
  1530.      13     C, octave 2
  1531.      14     C sharp, octave 2
  1532.      : : :  : : :
  1533.      95     A sharp, octave 8
  1534.      96     B, octave 8
  1535.     127     key off
  1536.  
  1537.  
  1538.                                        28
  1539.                           Appendix A: The GMS Module Format
  1540.  
  1541.  
  1542.     If the note's high bit is clear, it means that the note (if there is
  1543. one) is all there is on this line; the instrument and effect fields are
  1544. blank. If, however, it is set, it means that the next byte is the instrument
  1545. byte.
  1546.     The lower 7 bits of the instrument byte are the instrument number (or
  1547. zero).  If the high bit of the instrument byte is clear, it means that the
  1548. effect field is blank. But if the high bit is set, there is at least one
  1549. effect on this line.
  1550.     The lower 7 bits of the effect number byte are the effect number. If the high bit is set, there is another
  1551. effect number and data byte pair following this one. If not, this is the last effect on this line.
  1552.     The loader routine then moves on to the next byte in the module, which
  1553. it assumes to be the note byte of the next line. It continues reading in
  1554. lines until the entire track has been read, and repeats the process for each
  1555. unique track in the module. Although the number of unique tracks and the
  1556. length of each unique track are not stored in the module, they can be
  1557. determined by examining the block tables and "manually" stepping through the
  1558. tracks.
  1559.     After loading all of the unique tracks, the loader routine sets the
  1560. track pointers in all of the blocks to point to the correct tracks, then
  1561. exits.
  1562.  
  1563.  
  1564.  
  1565.                                        29
  1566.  
  1567. B. The GMI Instrument Format
  1568.  
  1569. _______________________________________________________________________________
  1570.  
  1571.  
  1572.  
  1573.     This table shows what a GMS instrument file looks like:
  1574.  
  1575.  
  1576. bytes_____description___________________________________
  1577.     8     magic cookie "GMI-RCAx" (x = instrument format version)
  1578.   1-31    instrument name, null-terminated
  1579.     1     operator 1 am_vib byte
  1580.     1     operator 1 scaling_volume byte
  1581.     1     operator 1 a_d byte
  1582.     1     operator 1 s_r byte
  1583.     1     operator 1 waveform byte
  1584.     1     operator 2 am_vib byte
  1585.     1     operator 2 scaling_volume byte
  1586.     1     operator 2 a_d byte
  1587.     1     operator 2 s_r byte
  1588.     1     operator 2 waveform byte
  1589.     1     op1mod_feedback byte
  1590.  
  1591.  
  1592.     An instrument format version number of zero means that the file is a
  1593. GMS 1.0 instrument.
  1594.  
  1595.  
  1596.  
  1597.                                        30
  1598.  
  1599. C. Playing GMS Modules:  Programmer Documentation
  1600.  
  1601. _______________________________________________________________________________
  1602.  
  1603.  
  1604.  
  1605.     The first step is to integrate the GMS player code into your project. If
  1606. your project is written in C or C++, add the GMS .cpp files to your project
  1607. file, makefile, or whatever system your compiler uses. The play routine was
  1608. written for Borland C++ 3.1. Using it with other compilers may require minor
  1609. adjustments to be made to the code.
  1610.     Note: the play routine may not work properly when compiled with a
  1611. protected-mode compiler. The DJGPP protected-mode compiler's documentation
  1612. warns that interrupt routines need to have their virtual pages locked down
  1613. and need to provide for interrupt reflection from real to protected mode.
  1614. The current player code does not do this. I hope to have GMS 1.1 working
  1615. properly in protected mode. Until then, you're on your own in this area.
  1616.     If your project is written in another language (such as assembly),
  1617. you'll need to use a C++ compiler to compile the player code into an object
  1618. file and link it with your own code. The exact method for call- ing the GMS
  1619. routines will vary depending upon the particular compiler you use. Consult
  1620. your compiler's documentation for more information.
  1621.     The Borland documentation warns that programs that use an interrupt
  1622. routine (as GMS does) need to be compiled with stack overrun checking turned
  1623. off and register variables disabled. The former is definitely necessary; the
  1624. latter may or may not be. (I suspect they just said "disable them" because
  1625. they didn't want to go into a long discussion about when they need to be
  1626. disabled and when they don't). You should be able to turn on all other
  1627. optimizations except for "assume no pointer aliasing" _ certain parts of the
  1628. play routine DO have aliased pointers.
  1629.     Once the code is integrated into your project, the following GMS functions
  1630. will become available to you:
  1631.  
  1632.  
  1633. Prototype: void reset_card()
  1634. Class: music_driver
  1635. Description: This function completely resets the user's sound card. It
  1636. examines the soundsystem variable in the song class to determine what needs
  1637. to be done to reset the card. If the setting of the sound system is wrong,
  1638. the user's sound card may not be correctly reset.
  1639.  
  1640.  
  1641. Prototype: void set_up_card()
  1642. Class: music_driver
  1643. Description:  This function initializes the user's sound card and prepares
  1644. it for music playback.  re- set_card() should be called before calling this
  1645. routine.
  1646.  
  1647.  
  1648. Prototype: unsigned int load_gms(FILE *module)
  1649. Class: music_driver
  1650. Description: This function loads a GMS module into memory and prepares it
  1651. for playing. Only one GMS module can be loaded at a time; the old one, if
  1652. any, is discarded when loading begins. The module parameter is a pointer to
  1653. a FILE structure, returned by a prior call to fopen(). The return value
  1654. indicates the success of the loading operation. If nonzero, the loading was
  1655. successful. If zero, the loading failed for some reason.
  1656.  
  1657.  
  1658. Prototype: int wedge_player()
  1659. Class: music_driver
  1660. Description: This function wedges the timer_int() interrupt routine into the
  1661. timer ISR chain. It sets the timer interrupt frequency to the correct value
  1662. based on the song's tempo. The return value indicates the success of the
  1663. wedging. If a nonzero value is returned, the interrupt routine was wedged
  1664. successfully. If a zero is returned, the interrupt routine was already
  1665. wedged.
  1666.  
  1667.  
  1668. Prototype: int remove_player()
  1669. Class: music_driver
  1670.  
  1671.  
  1672.                                        31
  1673.                 Appendix C: Playing GMS Modules: Programmer Documentation
  1674.  
  1675.  
  1676. Description: This function removes the timer_int() interrupt routine from
  1677. the timer ISR chain.  The return value indicates the success of the removal.
  1678. If a nonzero value is returned, the player was removed successfully. If a
  1679. zero is returned, the player was never installed.
  1680.  
  1681.  
  1682. Prototype: unsigned int compute_timer_setting(unsigned int tempo)
  1683. Class: music_driver
  1684. Description:  This function takes a GMS (primary) tempo value and returns a
  1685. number for use with set_timer().  Legal GMS tempo values range from 1 to
  1686. 255.  If a number outside this range is used, the number returned by this
  1687. routine will be invalid.
  1688.  
  1689.  
  1690. Prototype: void update()
  1691. Class: music_driver
  1692. Description: This routine is called by the timer_int() routine every time
  1693. there is an interrupt. If you're not using interrupts, or you're using your
  1694. own interrupt routine, you'll need to call update() yourself at the proper
  1695. times.
  1696.  
  1697.  
  1698. Prototype: void set_timer(unsigned int new_setting)
  1699. Class: music_driver
  1700. Description: This function reprograms the PC's timer. The new_setting
  1701. parameter is usually obtained through a prior call to
  1702. compute_timer_setting().
  1703.  
  1704.  
  1705. Prototype: void start_playing()
  1706. Class: music_driver
  1707. Description: This function makes the song start playing from its current
  1708. position.
  1709.  
  1710.  
  1711. Prototype: void stop_playing()
  1712. Class: music_driver
  1713. Description: This function halts the song's playback.
  1714.  
  1715.  
  1716. Prototype: void position_jump(unsigned int new_pattern, unsigned int
  1717. new_line = 0)
  1718. Class: song
  1719. Description: This function makes the play routine start playing from a
  1720. different point in the song. (If the song is not currently playing, nothing
  1721. obvious happens, but the internal position variables are reset to point to
  1722. the new song position.) The required first parameter is the number of a line
  1723. in the play sequence (0 is the first line, 3 the fourth, and so on). The
  1724. optional second parameter is the line within that block where playing should
  1725. start.
  1726.  
  1727.  
  1728.     Presently there are two global variables defined, music and song_obj,
  1729. which are instances of the mu- sic_driver and song classes, respectively.
  1730. These two variables should be used to access the member functions of those
  1731. classes. In a future release the variables will be eliminated and the class
  1732. members will be made static. (The current setup came about because of an
  1733. early design decision which later turned out to be unnecessary.)
  1734.     Also, two of the variables in the classes are of particular
  1735. significance: the soundsystem variable in the song class and the
  1736. sb_base_address variable in the music_driver class.
  1737.  
  1738.  
  1739.     So, how do you use all of this?
  1740.  
  1741.  
  1742.  
  1743. Setting up for playing
  1744.     The first order of business when your program starts up is to find out
  1745. what kind of sound card the user has and what its base address is. There are
  1746. a number of methods for "automagically" determining these, but usually the
  1747. simplest and most effective one is just to ask the user. Not all
  1748. Soundblaster clones "look" like a Soundblaster, even if they operate like
  1749. one.
  1750.  
  1751.  
  1752.                                        32
  1753.                 Appendix C: Playing GMS Modules: Programmer Documentation
  1754.  
  1755.  
  1756.     Next, load the GMS module into memory. Then, set the soundsystem and
  1757. sb_base_address variables to reflect the user's particular system. (You can
  1758. set the sb_base_address variable at any time, but you have to set the
  1759. soundsystem variable after loading the module because load_gms() sets
  1760. soundsystem to the value saved in the module.)
  1761.     Sometimes you can skip the above steps. For example, if you know that
  1762. the module was composed under the Adlib sound system, and you want it to
  1763. play back in monaural, all you really need to know is whether or not the
  1764. user has at least an Adlib card. If, however, the module was composed in one
  1765. of the Soundblaster Pro sound systems, you definitely want to find out what
  1766. kind of sound card the user has. The two kinds of Soundblaster Pros work
  1767. quite differently from one another, and playing the module back under the
  1768. wrong sound system will result in garbled-sounding music.
  1769.     Whenever possible, music should be composed and played back in
  1770. Soundblaster Pro II mode. The reason is that the Soundblaster Pro II is
  1771. based around the Yamaha OPL3 chip, while the earlier sound cards are based
  1772. around the OPL2 chip. Whenever the play routine wants to write to an
  1773. OPL2-based card, it has to do these things:
  1774.  
  1775.  
  1776.     1. Write the desired sound card register to the register select port (1
  1777. outp instruction).
  1778.     2. Wait around while the OPL2 chip does internal processing (6 inp
  1779. instructions).
  1780.     3. Perform the actual write (1 outp instruction).
  1781.     4. Sit on its hands while the OPL2 chip processes this (*35* inp
  1782. instructions!).
  1783.  
  1784.  
  1785.     This takes a VERY LONG TIME! The OPL3 chip, on the other hand, is much
  1786. faster and requires hardly any wait time. The difference can be seen
  1787. visually by using the Show Interrupt gadget under the MISC menu.
  1788.  
  1789.  
  1790.  
  1791. Playing the music
  1792.     There are two basic ways to play the music. First, you can use the
  1793. wedge_player() function to put the play routine into the timer ISR chain.
  1794. This is the simplest and easiest method. The interrupt routine runs
  1795. automatically, so your program can more or less ignore it. The disadvantage
  1796. of this method is that (from the program's point of view) the interrupts
  1797. occur at unpredictable times. For some programs this makes no difference,
  1798. but for others (such as those that synchronize themselves to the vertical
  1799. blank) it will result in screen flicker or graphic glitches.
  1800.     For these kinds of programs it's necessary to use the second method,
  1801. which is to call the update() function from your own code _ either your own
  1802. interrupt routine or your game's main loop. An implementation of this method
  1803. might look something like this:
  1804.  
  1805.  
  1806.     for (;;) {
  1807.        wait_for_vertical_blank();
  1808.        flip_screens();
  1809.        music.update();
  1810.        read_controllers();
  1811.        undraw_sprites();
  1812.        update_all_objects();
  1813.        draw_sprites();
  1814.     }
  1815.  
  1816.  
  1817.     This code makes the (possibly incorrect) assumption that all of the
  1818. loop's processing can be completed in one display frame. If it can't, the
  1819. music will sound jerky and/or play more slowly than it should. For this
  1820. reason, it's usually best to call the update() routine from an interrupt,
  1821. even if it makes the code more complicated.
  1822.     A disadvantage of the second method is that it forces the update()
  1823. routine to be called a fixed number of times a second. In the popular video
  1824. mode 13h there are 50 display frames per second, so if the example given
  1825. above used mode 13h it would call update() 50 times a second.  The problem
  1826. with this is that it
  1827.  
  1828.  
  1829.                                        33
  1830.                 Appendix C: Playing GMS Modules: Programmer Documentation
  1831.  
  1832.  
  1833. effectively locks the song's primary tempo at one number, since the primary
  1834. tempo is normally used to set how many times a second the interrupt routine
  1835. is called. The only way to affect the song's speed is to change the
  1836. secondary tempo, which has a much lower resolution and may require some of
  1837. the song's effects to be changed (this is explained in the description of
  1838. the Secondary Tempo gadget under the PLAY menu).
  1839.     The following table shows some common frame rates and their equivalent GMS 
  1840.  primary tempo settings.
  1841.  
  1842.  
  1843. frames/second_____GMS_primary_tempo_setting_
  1844.           18.2    1
  1845.            50     80
  1846.            60     105
  1847.            70     130
  1848.  
  1849.  
  1850.     For example, if you were composing music to be used with the code shown
  1851. above, you would set the primary tempo to 80.
  1852.     Whichever one of the two methods you decide to use, you also need to
  1853. call start_playing() and stop_playing() at appropriate times to start and
  1854. stop the music, respectively.
  1855.  
  1856.  
  1857.  
  1858. Putting multiple songs in one GMS module
  1859.     The fact that the GMS player code can only hold one module in memory at
  1860. a time might seem to be very restrictive. In practice, it isn't. As the
  1861. musician, you simply have to compose all of the game's tunes in one module.
  1862. This section explains how to do that, and how to make use of the resulting
  1863. module.
  1864.     Let's say that you've already composed one of the game's tunes. It uses
  1865. blocks 0 through 2, and the play sequence looks like this:
  1866.  
  1867.  
  1868.     00
  1869.     00
  1870.     01
  1871.     01
  1872.     02
  1873.  
  1874.  
  1875.     Now you want to compose another tune. Instead of starting from block 0,
  1876. as you normally would, you start from the first unused block _ block 3 in
  1877. this example. When you write the second tune's play sequence, you add it
  1878. onto the end of the existing play sequence. If the second tune's play
  1879. sequence consisted of 03, 03, 04, the overall play sequence would look like
  1880. this:
  1881.  
  1882.  
  1883.     00
  1884.     00
  1885.     01
  1886.     01
  1887.     02
  1888.     03
  1889.     03
  1890.     04
  1891.  
  1892.  
  1893.     If you want to add additional tunes to the module, you do so in the same
  1894. manner.
  1895.     To play back these tunes, you use the position_jump() function. In the
  1896. example above, calling posi- tion_jump() with 0 would start playing the
  1897. first tune, and calling it with 5 would start playing the second tune.
  1898.     One thing you have to make sure of is that all of the module's tunes are
  1899. "closed off" from one another. Each tune needs to end with either a B
  1900. command (position jump) or an FFF command (stop playing) to prevent it from
  1901. falling through to any of the module's other tunes. (Unless you want it to
  1902. fall though - but that's unusual.)
  1903.  
  1904.  
  1905.                                        34
  1906.                 Appendix C: Playing GMS Modules: Programmer Documentation
  1907.  
  1908.  
  1909. After playing
  1910.     Before your program exits, it should call stop_playing() and
  1911. reset_card(). Nothing else needs to be done. The song destructor function
  1912. will perform all other necessary cleanup operations.
  1913.     The player program player.cpp, included with the play routine source
  1914. code, is an example of how to load and play a GMS module.
  1915.  
  1916.  
  1917.  
  1918.                                        35
  1919.  
  1920. D. External Formats
  1921.  
  1922. _______________________________________________________________________________
  1923.  
  1924.  
  1925.  
  1926.     In the future, GMS will be capable of loading modules and instruments
  1927. from many other tracker programs. The internals of these programs work
  1928. differently from GMS; sometimes they work very differently. GMS compensates
  1929. for as many of the differences as it can, but almost all modules will
  1930. require some human attention before they sound correct under GMS. This
  1931. appendix gives a brief description of the external formats that GMS supports
  1932. and lists what GMS can and cannot do during the conversion process.
  1933.     At the moment, GMS supports only RAD modules, and no instrument formats
  1934. other than its own. Look for this to change in the near future.
  1935.  
  1936.  
  1937.  
  1938. RAD
  1939.     Reality Adlib Tracker (RAD) is an FM tracker written by Shayde, Rogue,
  1940. and Void of the demo group Reality. GMS is able to load modules made with
  1941. version 1.0 of RAD.
  1942.     RAD's tempo control is equivalent to GMS's secondary tempo. It also has
  1943. two overall operating modes, "normal" and "slow-timer", which control how
  1944. often the play routine is called. These are equivalent to the GMS primary
  1945. tempos 80 and 1, respectively, and will be converted as such.
  1946.     RAD tunes can have a description included in them, like GMS can with its
  1947. Info Page.  The RAD description window and the GMS info page are different
  1948. sizes, though, so the text formatting is likely to be wrecked by the
  1949. conversion process.
  1950.     RAD uses a different internal method of representing frequencies than
  1951. GMS does. GMS tries to compensate for this during the loading process, but
  1952. frequency slide and portamento commands may not sound right in the converted
  1953. module.
  1954.     The RAD volume slide command has a greater maximum value than the GMS
  1955. one (49 for RAD and 15 for GMS). Any volume slides that have a rate greater
  1956. than 15 will be set to 15 during the loading process.
  1957.     The RAD pattern break command lets you specify a line in the next
  1958. pattern for playing to continue at. The GMS counterpart (F00) does not.
  1959.     RAD's position jump commands are included in the play sequence, instead
  1960. of in the blocks as they are in GMS. GMS handles this by creating a one-line
  1961. block with a position jump in it and inserting it into the proper place in
  1962. the play sequence. This may cause a "hop" effect when playing the song.
  1963.  
  1964.  
  1965.  
  1966.                                        36
  1967.  
  1968. E. How Synthetic Instruments Work
  1969.  
  1970. _______________________________________________________________________________
  1971.  
  1972.  
  1973.  
  1974.     Synthetic instruments ("synthsounds") are based around something from
  1975. music theory called the ADSR envelope. ADSR stands for
  1976. attack-decay-sustain-release. Every note goes through all four of these
  1977. phases.
  1978.     The idea is that when a note is played, the volume is initially zero
  1979. (the note is inaudible). The volume then rises to the maximum volume that
  1980. the sound card can produce. This is the attack phase. The note's volume
  1981. starts dropping immediately. This is the decay phase. The volume decay
  1982. continues until the note reaches the sustain volume. It holds at that volume
  1983. for the remainder of the time the note is supposed to be played. Then it
  1984. enters the release phase, and the note tapers off into silence.
  1985.     To understand this better, imagine an eager but inexperienced musician
  1986. playing, say, a clarinet. When he first begins to play a note he sends too
  1987. much air through the instrument, making the note sound too loud (attack
  1988. phase). He quickly corrects for this, lowering the volume to what he wants
  1989. it to be (decay phase). He then maintains that level of air flow until the
  1990. note has played for the proper length of time (sustain phase). Then he
  1991. touches his tongue to the reed, and the note fades away release phase).
  1992. These things still happen even when an expert plays the instrument, but you
  1993. don't notice it unless he wants you to.
  1994.     All notes played by all instruments (real or electronic) can be
  1995. represented by the ADSR envelope. In a real-world instrument, the envelope
  1996. is part of the way the instrument is played (flutes, for example, have a
  1997. noticeable ADSR envelope). In a computer-generated instrument, such as a
  1998. synthsound, the envelope is created by the musician. This is done by
  1999. specifying an attack rate, a decay rate, a sustain level, and a release
  2000. rate. The attack, decay, and release rates determine how fast the note's
  2001. volume changes in the attack, decay, and release phases of the envelope. The
  2002. sustain level determines what volume the decay phase ends at.
  2003.     The length of the sustain phase is controlled by you, the musician,
  2004. using the key off command. The sound chip has a conception of the note being
  2005. in one of two states: either it is "keyed on", which means that the note is
  2006. going through the attack, decay, or sustain phases, or it is "keyed off",
  2007. which means that the note is in the release phase. (These two states get
  2008. their names from the sound chip being designed for use in a synthesizer
  2009. keyboard, where you would actually be pressing and releasing keys.)
  2010.     Whenever an instrument is played, GMS automatically keys it on for you.
  2011. If you never use the key off command, the note will stay in the sustain
  2012. phase until the next note on the track is played, which will cancel the old
  2013. one. (Technically, GMS does do a key off right before it plays the next
  2014. note, but the time spent in the release phase is miniscule.)
  2015.     It's possible to "get rid" of the ADSR envelope by setting the attack,
  2016. decay, and release rates to very high values. At any given time, such an
  2017. instrument would be either keyed on and playing at full volume, or keyed off
  2018. and silent. There would be nothing in between these two extremes. This kind
  2019. of instrument sounds very harsh and "electronic". Sometimes this is what you
  2020. want, but usually a more complicated instrument will make your music sound
  2021. better.
  2022.     In addition to an ADSR envelope, each instrument has a waveform. The
  2023. type of waveform determines the overall sound of the instrument. For
  2024. example, the sine waveform produces a smooth, bell-like note. The square
  2025. waveform produces a more harsh-sounding note.
  2026.     Like the ADSR envelope, the waveform controls the note's volume. But the
  2027. waveform repeats over and over, and is played much faster - usually
  2028. thousands of times a second. Because of this, we don't directly hear the
  2029. volume changes the waveform causes. They blend into our overall impression
  2030. of the note.
  2031.     As you probably already know, it is the frequency at which the waveform
  2032. is repeated that controls the pitch of the note. The more times per second
  2033. the waveform is repeated, the higher in tone the note sounds.
  2034.     The above discussion is general enough to apply to most
  2035. synthsound-producing chips on the market today.  Now let's talk about some
  2036. issues specific to the OPL2 chip, which is the basis for the Adlib and
  2037. Soundblaster cards.
  2038.     Each of the 9 channels on the OPL2 chip has not one but two "operators"
  2039. assigned to it. Each of these operators can produce a tone. Each has its own
  2040. ADSR envelope and waveform. Each has a lot of other options which can be
  2041. used to control the kind of sound it produces.  A few of these, like
  2042. frequency, can only be set on a channel-by-channel basis; both of a
  2043. channel's operators always produce sound at the same frequency. But most can
  2044. be set on an operator-by-operator basis. Sound complicated? It is!
  2045.  
  2046.  
  2047.                                        37
  2048.                        Appendix E: How Synthetic Instruments Work
  2049.  
  2050.  
  2051.     There are two basic modes each channel can be in:
  2052.     In additive synthesis mode, the two operators are independent. The
  2053. settings of one operator do not affect the sound produced by the other
  2054. operator.
  2055.     In frequency modulation mode, operator 1 produces no sound. Instead, it
  2056. feeds its output into operator 2. The sound produced by operator 2 depends
  2057. upon its own settings and upon the output of operator 1.
  2058.     Frequency modulation mode can produce more complex-sounding instruments,
  2059. which usually means better-sounding. But it's much more difficult to use.
  2060. When combined, the operators may produce a sound wholly different from what
  2061. they produced separately.
  2062.     You don't always have to make instruments yourself _ many times you can
  2063. "borrow" them from tunes other people have created. But at some point you're
  2064. probably going to need a sound that you don't have. If that happens, you'll
  2065. have to make it yourself.
  2066.     I suggest you experiment with additive synthesis mode first. Set one of
  2067. the operators so that it's inaudible and play with the other one,
  2068. particularly the ADSR envelope. When you've gained some familiarity with it,
  2069. turn the other operator on and see how they both sound together. After that
  2070. you can take a crack at frequency modulation mode.
  2071.  
  2072.  
  2073.  
  2074.                                        38
  2075.  
  2076. F. An Introduction To Tracker Composition
  2077.  
  2078. _______________________________________________________________________________
  2079.  
  2080.  
  2081.  
  2082.     All tracker programs are based (at least in functionality) on the
  2083. original Amiga program called Sound- tracker. Soundtracker 1.0 was written
  2084. by Karsten Obarski in 1987. The source code found its way into the hands of
  2085. various European demo groups, many of whom released their own "improved"
  2086. versions. (There was an amusing incident where one group released a
  2087. Soundtracker 2.0 and another group released a Soundtracker 1.3 shortly
  2088. thereafter. Neither group had been aware of the other's work.) This resulted
  2089. in a lot of confusion all around (the .MOD files produced by one program
  2090. were usually slightly incompatible with all the other programs) but
  2091. eventually resulted in a flexible, powerful system of music composition.
  2092. Some of the material in this appendix is specific to GMS, but much of it
  2093. applies to tracker programs in general.
  2094.     One of the fundamental concepts behind a tracker program is that music
  2095. is repetitive. The percussion parts of contemporary music usually consist of
  2096. the same rhythm, repeated over and over again. The back- ground chords cycle
  2097. between the same series of notes. And significant portions of the song are
  2098. repeated with minor (or no) changes.
  2099.     A tracker program divides the entire song up into small sections called
  2100. blocks (some trackers call them patterns). Each block is assigned a number,
  2101. starting from zero. The musician can control when each block is played by
  2102. using the play sequence (sometimes called the pattern list or order list).
  2103. The play sequence is simply a list of block numbers. The tracker steps
  2104. through this list, one number at a time, playing the block listed there and
  2105. then moving on to the next one. The block numbers can appear in any order at
  2106. all, and a particular block can be repeated in the list as many times as
  2107. necessary.
  2108.     The idea here is to take advantage of the repetitiveness of music to
  2109. save memory. Sections of the song can be repeated simply by repeating their
  2110. block numbers in the play sequence (and possibly copying and editing a few
  2111. blocks to make smooth transitions).
  2112.     This way of doing things also makes the editing phase easier. In a more
  2113. conventional music program, repeating part of the song might result in a
  2114. copy being made of the repeated section. If you later wanted to make changes
  2115. to that section, you'd also have to change each of the copies of it. Having
  2116. to do this is extremely irritating - particularly if you miss a section and
  2117. don't notice until it's too late.
  2118.     Let's look now at blocks in detail. Each block is composed of tracks and
  2119. lines:
  2120.  
  2121.  
  2122.    Ln#     <01>     <02>     <03>     <04>     <05>     <06>     <07>  <08>
  2123.    022    C-3 1000E-3 1000 G-3 1000 --- 0000 --- 0000 --- 0000 --- 0000C-5 2000
  2124.    023    --- 0000--- 0000 --- 0000 --- 0000 --- 0000 --- 0000 --- 0000--- 0000
  2125.    024    --- 0000--- 0000 --- 1000 --- 0000 --- 0000 --- 0000 --- 0000G-4 2000
  2126.    025    --- 0000--- 0000 --- 0000 --- 0000 --- 0000 --- 0000 --- 0000--- 0000
  2127.    026    --- 0000--- 0000 --- 0000 --- 0000 --- 0000 --- 0000 --- 0000C-4 2000
  2128.                                Lines 22-26, tracks 1-8.
  2129.  
  2130.  
  2131.     Each track represents one of the sound card's output channels. Each line
  2132. represents a small bit of time that can be used to play a note. When the
  2133. tracker plays a block, it starts at the first line in that block and
  2134. processes all of the tracks on that line. After a certain amount of time
  2135. passes (determined by the tempo) the tracker moves to the next line and
  2136. processes all of its tracks. This continues until the entire block is
  2137. played, at which point the tracker starts playing the next block in the play
  2138. sequence.
  2139.     Each line of each track can contain a note, an instrument number, an
  2140. effect number, and an effect data byte. These four components, taken
  2141. together, are sometimes called a note-line. All of them are optional.
  2142.     All numbers in the track display are in hexadecimal. This is mostly
  2143. because they would take up too much screen space if they weren't (though
  2144. there are a few other reasons). It's easy to forget this during an intense
  2145. editing session. If things aren't sounding the way they're supposed to, make
  2146. sure you didn't use a decimal number by mistake.
  2147.     The note part of a note-line consists of the actual note (D, D#, etc)
  2148. and an octave number. The first character is the note letter. The second
  2149. character is a hash mark if the note is sharp, or a dash if it isn't. The
  2150.  
  2151.  
  2152.                                        39
  2153.                      Appendix F: An Introduction To Tracker Composition
  2154.  
  2155.  
  2156. third character is the octave number. "No note" is represented by a dash in
  2157. all three character positions.
  2158.     The note part can also contain the word OFF. This means that the channel
  2159. should be keyed off, which sends the instrument playing on the channel into
  2160. the release phase.
  2161.     Normally if the note-line contains a note it also contains an instrument
  2162. number. The instrument number indicates which instrument the note should be
  2163. played with.  An instrument number of zero means "no instrument".
  2164.     It's highly unusual (but allowed) to put down a note without an
  2165. instrument, or vice versa. If a note is put down without an instrument, the
  2166. channel's frequency is changed but the instrument's ADSR envelope is not
  2167. reset. If an instrument is put down without a note, the ADSR envelope is
  2168. reset without changing the channel's frequency.
  2169.     Let's try setting down some notes. Select the track display and move the
  2170. cursor to line 0 of the current block. Move the cursor into the note part of
  2171. track 1. Press the q key. Move the cursor down two lines. Press the w key.
  2172. Repeat this process with the e, r, and t keys. The upper part of track 1
  2173. should now look like this:
  2174.  
  2175.  
  2176.    Ln#     <01>
  2177.    000    C-4 1000
  2178.    001    --- 0000
  2179.    002    D-4 1000
  2180.    003    --- 0000
  2181.    004    E-4 1000
  2182.    005    --- 0000
  2183.    006    F-4 1000
  2184.    007    --- 0000
  2185.    008    G-4 1000
  2186.    009    --- 0000
  2187.  
  2188.  
  2189.     Select the Play Block gadget from the PLAY menu.
  2190.     Well, it isn't really music, but it's audible. Notice that each time a
  2191. note is played, the previous note is cancelled. Each track can have one -
  2192. and only one - note playing at a time. The number of tracks in your song
  2193. determines the number of notes you can have playing at one time. How many
  2194. you need depends upon your song.
  2195.     Let's add something more. Use the cursor keys and the slash key to add
  2196. key-offs to the track so that it looks like this:
  2197.  
  2198.  
  2199.    Ln#     <01>
  2200.    000    C-4 1000
  2201.    001    OFF 0000
  2202.    002    D-4 1000
  2203.    003    OFF 0000
  2204.    004    E-4 1000
  2205.    005    OFF 0000
  2206.    006    F-4 1000
  2207.    007    OFF 0000
  2208.    008    G-4 1000
  2209.    009    OFF 0000
  2210.  
  2211.  
  2212.     Play the block again. If you don't notice a difference, try using the
  2213. Tempo gadget to make the song play more slowly.
  2214.     An entire song can be created using just the note and instrument parts
  2215. of the note-line. Such songs are rare, however. Virtually all songs use the
  2216. remaining two parts of the note-line: the effect number and effect data
  2217. byte. Taken together, they are referred to as an effect command (sometimes
  2218. simply as an effect or a command). Effect commands let you exercise greater
  2219. control over the sound produced by a track.
  2220.     Let's start with a simple effect command. Move the cursor to line 3 and
  2221. change the note-line to look like
  2222.  
  2223.  
  2224.                                        40
  2225.                     Appendix F: An Introduction To Tracker Composition
  2226.  
  2227.  
  2228. this:
  2229.  
  2230.  
  2231.     OFF 0C1E
  2232.  
  2233.  
  2234.     Now play the block.
  2235.     Effect C is the volume change command. This command overrides the
  2236. track's current volume, changing it to the value of the data byte. When the
  2237. tracker processes line 2, it sets the track's volume to the volume of
  2238. operator 2 in instrument 1. When it reaches line 3, it sets the track's
  2239. current volume to the value of the data byte (1E, equivalent to decimal 30).
  2240. This is lower than the previous volume, so the note suddenly becomes softer.
  2241. If this command had been placed on line 2, the note would have been played
  2242. at 1E in the first place.
  2243.     Now let's try a frequency slide. Move the cursor to line 5. Go to the
  2244. BLOCK menu. Select the gadget called Make Normal Slide. The note-line should
  2245. now look like this:
  2246.  
  2247.  
  2248.     --- 0122
  2249.  
  2250.  
  2251.     Play the block.
  2252.     The tracker has a conception of a "current frequency" for each track.
  2253. The note part of a note-line sets a track's current frequency. But it can
  2254. also be modified by the effect commands, as we did here. Command 1, the
  2255. slide up command, causes the track's frequency to increase. But not by a
  2256. total of 34 - by a total of 204!
  2257.     A very important thing to understand is the relationship between the
  2258. effect commands and the Secondary Tempo gadget in the PLAY menu. Effect
  2259. commands are processed every time the music playing routine is called from
  2260. the interrupt code. The Secondary Tempo controls how many times the music
  2261. playing routine is called before a line is advanced.
  2262.     If the secondary tempo is 6, the first time the routine is called it
  2263. will play line 5's note and effects. The second time it's called it will
  2264. play only line 5's commands, skipping the note. Ditto for the third, fourth,
  2265. fifth, and sixth time. The seventh call will cause it to play line 6's note
  2266. and effects, the eighth will play only line 6's effects, and so on.
  2267.     Every time line 5's effects are processed, the track's frequency will be
  2268. increased by 22 hex (34 decimal). (Including the first time - the effects
  2269. are always processed after the note and instrument are.) But since the
  2270. default secondary tempo is 6, the total frequency increase will be 6 * 34,
  2271. or 204.
  2272.     Let's finish by getting in a little experience with the play sequence.
  2273. Go to the BLOCK menu and select Add Block. This will add a new (blank) block
  2274. to the song, numbered 1. Go to the PLAY menu and select the Play Sequence
  2275. gadget. Using the INSERT and cursor keys, edit the play sequence so that it
  2276. looks like this:
  2277.  
  2278.  
  2279.     00
  2280.     00
  2281.     01
  2282.  
  2283.  
  2284.     This play sequence will play block 0 twice in a row, then play block 1
  2285. once, then start over (because the song loops around automatically). Use the
  2286. Play Song gadget to listen to it.
  2287.     Before actually trying to compose anything yourself, I strongly advise
  2288. that you spend some time looking at other peoples' songs.  They don't have
  2289. to be GMS songs; the basic techniques are the same from one tracker to
  2290. another. Study how these people pulled off the musical effects they used.
  2291. Take the song apart in your mind and figure out what makes it tick. What
  2292. parts of the song are essential, and prevent the song from sounding lame?
  2293. What parts just add a little extra kick? This is time well spent, because
  2294. music is both a technical and creative art. You have to know what goes into
  2295. a good song, and you have to know how to get your song into the tracker and
  2296. make it sound good.
  2297.     (And, by the way, I'm still learning too.)
  2298.     Good luck!
  2299.  
  2300.  
  2301.  
  2302.                                        41
  2303.