home *** CD-ROM | disk | FTP | other *** search
/ Esprit de Apple Corps / EDAC-1.iso / MOD.Utilities / Info / MSYNTH.TXT < prev   
Text File  |  1993-03-19  |  22KB  |  702 lines

  1.          THE SYNTHETIC SOUND EDITOR
  2.         *==========================*
  3.  
  4.  
  5. This  is the editor, which is used to design simple pieces of waveforms and
  6. to  "program"  the  volume  and pitch altering sequences.  Synthetic sounds
  7. don't  take  much memory (that's the main advantage of them).  They can use
  8. the  whole  5-octave  range.   Although they are quite simple, they usually
  9. sound quite "cool" (and remind me of the good old C-64).
  10.  
  11. Getting started
  12. »»»»»»»»»»»»»»»
  13. First load MED, select the Instr-panel, click the Synth-gadget to initialize
  14. a  new synthsound.  Then click the Synth-display selection gadget to display
  15. the  synthsound  editor.  Please turn editing off.  You can play the current
  16. sound with keyboard, like ordinary samples.
  17.  
  18. Waveform editing
  19. »»»»»»»»»»»»»»»»
  20. There  are  two  waveform  displays,  the  left one is the "master waveform
  21. display" and the right one is for intermediate editing (it also serves as a
  22. copy  buffer).   Between  the  waveform displays are some gadgets, that are
  23. used for transferring waveforms between displays.
  24.  
  25. First  there  are two copy gadgets.  If you press the left copy gadget, the
  26. right waveform will be copied to the left one (and vice versa).  Gadget "<-
  27. EXCHANGE ->" exchanges the waveforms on the left and right.  "<- MIX" mixes
  28. the left waveform to the right waveform.  It is a powerful tool that can be
  29. needed  quite often.  "<-ADD" is similar to the mix, but it doesn't produce
  30. any  average between the wforms (= waveforms, from now on).  The wforms are
  31. simply  added together.  It's possible, that the waveforms exceed the upper
  32. and  lower  limits  (in  that  case,  they  are  truncated).  Two "<- EDIT"
  33. "EDIT->"  gadgets  allow  you to select either of the displayed wforms as a
  34. current  waveform, which is then used in some editing functions.  Sometimes
  35. they're  automatically  set  (when  you  draw  the  wform  with  mouse, for
  36. example).   "UNDO"  undoes  your  last  editing operation.  It can be quite
  37. useful.   "RANGE  ALL"  selects  the  current  wform,  so  that any editing
  38. operations affect the whole wform.
  39.  
  40. Freehand drawing
  41. »»»»»»»»»»»»»»»»
  42. A  very  simple way to create wforms is to draw them from scratch.  This is
  43. easily  done.   Just press the left mouse button and draw...  There are two
  44. drawing  modes.  The default is "pixel".  The other is "line".  This can be
  45. used  for  drawing  straight lines.  There's also a mix-mode, that works in
  46. both  "line"  and  "pixel" -mode.  It mixes the drawed pixels or lines with
  47. the already existing data.  Mode-selection gadgets are located below "RANGE
  48. ALL".
  49.  
  50. Waveform length
  51. »»»»»»»»»»»»»»»
  52. Each  waveform  in  synthsound  can be 2 - 128 bytes long (it must be even,
  53. though).   The  shorter the waveform, the higher the pitch (it also depends
  54. on  the  wform itself).  Usually, to make the pitches compatible with other
  55. instruments,  you should use length 2, 4, 8, 16, 32, 64 or 128.  The length
  56. can be changed with "LEN:" gadgets below the left wform, by typing in a new
  57. value or by clicking the single-step gadgets.
  58.  
  59. Multiple waveforms
  60. »»»»»»»»»»»»»»»»»»
  61. Each synthsound can consist of more than one wform (the maximum is actually
  62. 64). On the left, below the left wform, there's a set of gadgets:
  63.  
  64. curr. wform #
  65.    |
  66.    0  < > / 00
  67.       |/    \|
  68. next/prev    number of the last waveform
  69.  
  70. The arrow gadgets select the next/previous waveform. As this is a operation
  71. that is needed often, there are keyboard shortcuts:
  72.     Alt-cursor left  = previous
  73.     Alt-cursor right = next
  74.  
  75. There are two Add gadgets that allow you to increase the number of waveforms.
  76. "Last" adds a new waveform after the last wform.
  77. "Here" inserts a new wform here, and shifts the others.
  78.  
  79. Del gadgets:
  80. "Last" deletes the last wform.
  81. "Here" deletes the current wform.
  82.  
  83. Preset waveforms
  84. »»»»»»»»»»»»»»»»
  85. There  are some simple, often needed preset waveforms available at a single
  86. click.   First  make  sure, that the destination wform is the current wform
  87. (selected  with  the  EDIT  <-/->  gadgets).   Then  just  click the preset
  88. waveform icon.  The icons are located at the bottom of the editor.
  89.  
  90. The available waveforms are: sine, saw up/down, pulse, random and triangle.
  91. The CLR-gadget clears the current wform.
  92. The ALL-gadget clears the whole synthsound (so be careful..)
  93.  
  94. Range operations
  95. »»»»»»»»»»»»»»»»
  96. These  are  some  basic  operations, that are applied to the selected range
  97. (highlighted  white).   You can select the range by dragging the mouse over
  98. the wform with the right mouse button down.  You can select the whole wform
  99. by  clicking  "RANGE  ALL".  The Range start/Range end gadgets at the lower
  100. right corner of the synthsound editor can be used to make small corrections
  101. to the area.
  102.  
  103. When  there's  no  range  selected, there's a single horizontal white line.
  104. This  is the cursor.  Some editing operations need it.  The cursor position
  105. can be set by clicking the right mouse button on the wform area.  There are
  106. also  three  narrow  gadgets  (on the left of the preset wform gadgets) for
  107. positioning the cursor:
  108.  
  109. cursor to     cursor to end
  110. start   |     |
  111.     <  +  >
  112.            |
  113.       cursor to the middle (of the wform)
  114.  
  115. On the middle of the screen, there's a word "RNG", followed by a strip of
  116. gadgets:
  117.     RNG  Cut  Copy  Paste  Clr  Dbl  Rev  <  >
  118.  
  119. Cut    (works only on left wform). It "cuts" the selected area, which is then
  120.     moved to the right wform display.
  121. Copy    copies the selected range to the right wform, but doesn't cut it away.
  122. Paste    copies the contents of the right wform to the position pointed by
  123.     the cursor.
  124. Clr    clears the range.
  125. Dbl    "doubles" the range, making it play one octave higher.
  126. Rev    reverses the range.
  127. < or >    shift the ranged data to left or right.
  128.  
  129. There are two other editing operations: stretch and volume change.
  130.  
  131. Stretch allows you to stretch a point of the wform towards some other point
  132. (understand?? no?? then try this:)
  133. For example, select a sine wave.  Then position the cursor on the middle of
  134. the  waveform (there's a gadget for this purpose, see above).  Now activate
  135. the  "STRETCH:"-gadget  (on  the  left  lower corner of the synthsound ed).
  136. Type  in the amount of moving, e.g.  32.  This should demonstrate it...  If
  137. the number you type in is negative, the point is stretched to left.
  138.  
  139. Volume change allows you to increase/decrease the volume of selected range:
  140. First  select  a range.  Then activate the "VOL.CHG:"-gadget.  Now you must
  141. enter  the  amount  of  volume  change (in %'s).  For example, to halve the
  142. volume,  you  should  type 50.  If you want to double the volume, type 200.
  143. The volume will be changed when you press Return.
  144.  
  145. Transformation
  146. »»»»»»»»»»»»»»
  147. This  is  quite  a powerful feature.  It allows you to change a waveform to
  148. another  smoothly (by creating the waveforms between them).  Demonstration:
  149. Allocate 9 new waveforms (click Add/Last 9 times).  Now you have 10 wforms.
  150. Move  to  wform  00,  and select a pulse waveform, for example.  Then click
  151. Transform:   Start  to mark the beginning of transformation range.  Move to
  152. wform 09 (the last one).  Put here a sine wform.  Click Transform:  Do, and
  153. the  magic  is  done.   If  you view the wforms 01 - 08, you'll notice that
  154. there's  now  a  smooth  transition  from  the pulse wave to the sine wave.
  155. -----------------------------------------------------------------------------
  156.  
  157. THE PROGRAMMING LANGUAGE
  158. ========================
  159.  
  160. Note: please read this section carefully before experimenting, because you
  161.       can lock up your machine with the synthsound programming language (as
  162.       with any other language)
  163.  
  164. The  programming language is used for controlling the volume/pitch/vibrato/
  165. waveforms/arpeggio/etc...    of  the  synthsound.   It  consist  of  simple
  166. keywords, of which some have an argument.
  167.  
  168. The  programming  is done using two lists of commands/numbers.  These lists
  169. are  displayed  through  a  small  window below the right waveform display.
  170. First  there  are  line  numbers in decimal and hex (two leftmost columns).
  171. The  middle column contains the volume sequence, while the rightmost is the
  172. waveform/pitch sequence.
  173.  
  174.        volume ctrl seq
  175.           |
  176. line      |    waveform ctrl seq
  177.   |       |    |
  178.   00 00   40   00
  179.   01 01  END  END
  180.  
  181. These  lists  are  both  max.   127 ($7F) entries long.  The list is always
  182. terminated  with  "END"  instruction (it's automatically there so you don't
  183. have  to do that).  You can scroll the list with cursor up/down -keys.  The
  184. cursor  can be moved horizontally using the cursor left/right -keys.  There
  185. are  six  possible  cursor  locations  (3  for  both lists).  When entering
  186. commands,  the  cursor  should  be  on  the leftmost position of that list.
  187. Values  are entered by pointing the cursor over the value to be changed and
  188. entering a new value.  Commands and numbers are entered with keyboard.  You
  189. can   insert   entries  to  the  list  with  the  Return-key  (or  clicking
  190. Ins-gadget),  and  delete using Del (or clicking Del-gadget).  JMP commands
  191. are renumbered when entries are inserted or deleted.
  192.  
  193. ALL NUMBERS IN THE SEQUENCE LISTS ARE HEXADECIMAL.
  194. Just remember this, and you have no problems (fingers crossed :^)
  195. Also, the editing (Esc) must be on before the lists can be changed.
  196.  
  197. First, let's examine some example sequences:
  198.  
  199. This is a volume sequence:
  200.     
  201.     00  40 <= set initial volume to 64 (hex $40, did you already forget?)
  202.     01 CHD <= command, that means "Set volume change down speed"
  203.     02  03 <= argument (speed = 3)
  204.     03 END
  205.  
  206. Here's another:
  207.  
  208.     00  00 <= initial volume = 0
  209.     01 CHU <= Command: Set volume change up
  210.     02  07 <= speed = 7
  211.     03 WAI <= Command: Wait
  212.     04  10 <= wait 10 pulses
  213.     05 CHU <= Set volume change up
  214.     06  00 <= speed = 0 -> stop changing volume
  215.     07 WAI <= Wait
  216.     08  70 <= 70 pulses
  217.     09 CHD <= Cmd: Set volume change down
  218.     0A  01 <= speed = 1 (slow)
  219.     0B END
  220.  
  221. Third:
  222.  
  223.     00  40 <= vol = $40
  224.         01  30 <= vol = $30 (without command, the values are volume changes)
  225.     02  20 <= vol = $20
  226.     03 END
  227.  
  228. And fourth, finally:
  229.  
  230.     00  40    <= vol = $40
  231.     01 CHD <+ <= change down speed..
  232.     02  01  | <= ..= 1
  233.     03 WAI  | <= Wait..
  234.     04  20  | <= ..20
  235.     05 CHU  | <= change up
  236.     06  01  | <= ..1
  237.     07 WAI  | <= Wait..
  238.     08  20  | <= ..20 again
  239.     09 JMP  | <= Jump (= goto)
  240.     0A  01 -+ <= to line number 01
  241.     0B END
  242.  
  243. Now some wform/pitch sequences. Wform/pitch sequence is the "mastersequence"
  244. while the volume sequence is a kind of "slave sequence".
  245.  
  246. First: (the simplest case)
  247.     00  00 <= set waveform #00
  248.     01 END
  249.  
  250. A bit more complex:
  251.     00 VBS <= set vibrato speed
  252.     01  40 <= speed = $40
  253.     02 VBD <= set vibrato depth
  254.     03  02 <= depth = 2
  255.     04  00 <= waveform #00
  256.     05 END
  257.  
  258. And very complex:
  259.     00 ARP <= start arpeggio sequence
  260.     01  00 \
  261.     02  03  arpeggio values 0, 3, 7 (minor chord)
  262.     03  07 /
  263.     04 ARE <= end arpeggio sequence
  264.     05 VBD <= vibrato depth
  265.     06  06 <= 6
  266.     07 VBS <= vibrato speed
  267.     08  40 <= $40
  268.     09  00 <= set waveform #0
  269.     0A  01 <= set waveforms 01 - 0A (one timing pulse/waveform)
  270.     0B  02    | |
  271.     0C  03   \   /
  272.     0D  04    \_/
  273.     0E  05
  274.     0F  06
  275.     10  07
  276.     11  08
  277.     12  09
  278.     13  0A and back to #01...
  279.     14  08
  280.     15  07
  281.     16  06
  282.     17  05
  283.     18  04
  284.     19  03
  285.     1A  02
  286.     1B  01
  287.     1C JMP <= jump
  288.     1D  09 <= to position 09 (restart waveform changing)
  289.     1E END
  290.  
  291. -----------------------------------------------------------------------------
  292. You can learn a lot by examining the example synthsounds and by
  293. experimenting.
  294.  
  295. Now, some reference...
  296.  
  297. About timing
  298. »»»»»»»»»»»»
  299. For  both  sequence  lists, most of the commands are fetched, executed, and
  300. the next command is immediately fetched.  There are also some commands that
  301. wait  for  the  next  timing  pulse, this is important because the computer
  302. would  otherwise  send all its time executing the sequence lists (and would
  303. hang  up).   You  should  take  care that all loops contain a command, that
  304. waits  for  the  next timing pulse.  These commands are WAI (Wait), vol chg
  305. (plain  number  in  the  volume  list)  and  set  waveform (plain number in
  306. pitch/wform list).
  307.  
  308. For example, the following loops will hang up your computer:
  309.  
  310.     00 JMP        00  CHU <-+ command CHU doesn't wait
  311.     01  00        01   02   |
  312.         ...        02  JMP   |
  313.             03   00 --+
  314.  
  315. While the following would not:
  316.  
  317.     00  20        00  WAI
  318.     01 JMP        01   02
  319.     02  00        02  JMP
  320.             03   00
  321.  
  322. Execution speed
  323. »»»»»»»»»»»»»»»
  324. The synthsound handling routine is called once every interrupt.  This means
  325. that  the  handling  is  usually  done  6  times/note  (can be changed with
  326. secondary  tempo, see main docs).  Both lists have an execution speed, that
  327. is  the  speed  of the operation.  When the speed is 1, the next command is
  328. fetched/pitch  changed  etc.   on  every interrupt.  If the speed was 2, it
  329. would  happen  every second interrupt (runs two times slower).  The initial
  330. execution  speed  can be set with the two speed gadgets.  During executing,
  331. the speed can be changed with command SPD.
  332.  
  333.  
  334. VOLUME SEQUENCE LIST COMMANDS
  335. =============================
  336.  
  337. 1.    Set volume
  338.     Command: ---
  339.     Keyboard: --- (key needed to enter the command)
  340.  
  341.     This is the default command (no command identifier). It sets the
  342.     absolute volume of the synthsound. It should be 00 - 40. Note that
  343.     the relative track volumes are not used in synthsounds (mostly
  344.     because of performance reasons).
  345.  
  346.     Example:
  347.     00  30 ;volume = $30
  348.     01  10 ;volume = $10
  349.     ...
  350.  
  351. 2.    End sequence
  352.     Command: END
  353.     Keyboard: ---
  354.  
  355.     This command terminates the volume sequence list. It's always there
  356.     and automatically inserted. You can't insert commands past this one.
  357.  
  358. 3.    Set volume change down speed
  359.     Command: CHD
  360.     Keyboard: D
  361.  
  362.     This command sets the speed, in which volume is decreased each timing
  363.     pulse. The volume starts changing automatically after this command.
  364.     To stop automatic volume sliding, issue this command with speed 00.
  365.  
  366.     Example:
  367.     00  CHD
  368.     01   05 ;speed = 5
  369.     ...
  370.     10  CHD
  371.     11   00 ;speed = 0 -> stop sliding
  372.  
  373. 4.    Set volume change up speed
  374.     Command: CHU
  375.     Keyboard: U
  376.  
  377.     This command is like CHD, except it sets the volume change up.
  378.  
  379. 5.    Wait
  380.     Command: WAI
  381.     Keyboard: W
  382.  
  383.     This command waits for specified amount of timing pulses (pause).
  384.  
  385.     Example:
  386.     03  WAI
  387.     04   10 ;wait for 16 ($10) pulses to occur
  388.  
  389. 6.    Jump
  390.     Command: JMP
  391.     Keyboard: J
  392.  
  393.     Causes an immediate jump to another position of the volume list.
  394.  
  395.     Example:
  396.     05  JMP
  397.     06   0A ;jump forward to line 0A
  398.  
  399. 7.    Jump waveform sequence
  400.     Command: JWS
  401.     Keyboard: Shift-J
  402.  
  403.     This command causes a jump in the waveform sequence. This can be used
  404.     for example, to trigger a pitch change at the end of the vol seq
  405.     list. Note that this DOESN'T cause a jump TO waveform sequence.
  406.  
  407.     Example:
  408.     04  JWS
  409.     05   0F    ;Cause jump in waveform sequence list
  410.  
  411.  
  412. 8.    Halt
  413.     Command: HLT
  414.     Keyboard: H
  415.  
  416.     This has the same effect with command END (halt execution), but it
  417.     can be inserted in the middle of the sequence list.
  418.  
  419.     Example:
  420.     03  HLT
  421.     04   04 ;some other code (can be accessed with JMP instruction, for
  422.     ...     example)
  423.  
  424. 9.    Set speed
  425.     Command: SPD
  426.     Keyboard: S
  427.  
  428.     Sets the execution speed.
  429.  
  430.     Example:
  431.     0A  SPD
  432.     0B   01 ;speed = 1 (fastest)
  433.     ...
  434.  
  435. (The following commands require OctaMED V2.00 / MED V3.20 or later.)
  436.  
  437. 10.    One-shot envelope
  438.     Command: EN1
  439.     Keyboard: E
  440.  
  441.     This command allows you to draw the shape of the envelope with the
  442.     mouse. When the end of the envelope is reached, nothing occurs.
  443.     02   40
  444.     03  EN1
  445.     04   05
  446.     Waveform 05 is used as an envelope. Note that the envelope execution
  447.     starts on next interrupt, so the volume is initialized to $40.
  448.     The envelope waveform must always be 128 bytes long!!
  449.  
  450. 11.    Looping envelope
  451.     Command: EN2
  452.     Keyboard: Shift-E
  453.  
  454.     This works like command EN1, except that when the end is reached,
  455.     execution will start again from the beginning.
  456.  
  457.  
  458. WAVEFORM/PITCH SEQUENCE LIST COMMANDS
  459. =====================================
  460.  
  461. 1.    Set waveform
  462.     Command: ---
  463.     Keyboard: ---
  464.  
  465.     This command is used to indicate the waveform number (starting from
  466.     00). After this instruction, the execution stops until next timing
  467.     pulse occurs. Don't use waveform numbers that are higher than the
  468.     actual number of the last wform.
  469.  
  470.     Example:
  471.     00  00 ;wform 00
  472.     01  01 ;wform 01
  473.     ...
  474.  
  475. 2.    End sequence
  476.     Command: END
  477.     Keyboard: ---
  478.  
  479.     This command terminates the wform/pitch sequence list. It's always
  480.     there and automatically inserted. You can't insert commands past this
  481.     one.
  482.  
  483. 3.    Set pitch change down speed
  484.     Command: CHD
  485.     Keyboard: D
  486.  
  487.     This command sets the sliding speed for sliding pitch down. The
  488.     sliding automatically starts after this command and stops, when
  489.     speed is set to zero.
  490.  
  491.     Example:
  492.     00 CHD
  493.     01  03 ;set speed to 3
  494.     ...
  495.  
  496. 4.    Set pitch change up speed
  497.     Command: CHU
  498.     Keyboard: U
  499.  
  500.     Just like previous, but slides pitch up.
  501.  
  502. 5.    Wait
  503.     Command: WAI
  504.     Keyboard: W
  505.  
  506.     This command waits for specified amount of timing pulses (pause).
  507.  
  508.     Example:
  509.     03  WAI
  510.     04   02 ;wait for 2 pulses to occur
  511.  
  512. 6.    Jump
  513.     Command: JMP
  514.     Keyboard: J
  515.  
  516.     Causes an immediate jump to another position of the wform/pitch list.
  517.  
  518.     Example:
  519.     05  JMP
  520.     06   0A ;jump forward to line 0A
  521.  
  522. 7.    Jump volume sequence
  523.     Command: JVS
  524.     Keyboard: Shift-J
  525.  
  526.     This command causes a jump to happen in the volume sequence. Can be
  527.     used e.g. for triggering volume changes after some wform event.
  528.  
  529.     Example:
  530.     09  JVS
  531.     0A   00 ;start volume sequence from the beginning
  532.  
  533. 8.    Halt
  534.     Command: HLT
  535.     Keyboard: H
  536.  
  537.     This has the same effect with command END (halt execution), but it
  538.     can be inserted in the middle of the sequence list.
  539.  
  540.     Example:
  541.     03  HLT
  542.     04   04 ;some other code (can be accessed with JMP instruction, for
  543.     ...     example)
  544.  
  545. 9.    Set speed
  546.     Command: SPD
  547.     Keyboard: S
  548.  
  549.     Sets the execution speed.
  550.  
  551.     Example:
  552.     0A  SPD
  553.     0B   01 ;speed = 1 (fastest)
  554.     ...
  555.  
  556. 10.    Begin arpeggio definition
  557.     Command: ARP
  558.     Keyboard: A
  559.  
  560.     This command starts the arpeggio sequence. The following values are
  561.     the arpeggio offsets from the base note. The arpeggio sequence
  562.     is terminated with ARE-command. The arpeggio starts automatically
  563.     after the sequence is defined.
  564.  
  565.     Example:
  566.     03  ARP ;start arpeggio
  567.     04   00 ;offset values
  568.     05   04
  569.     06   07
  570.     07   0A
  571.     08  ARE ;end arpeggio definition
  572.  
  573. 11.    End arpeggio definition
  574.     Command: ARE
  575.     Keyboard: E
  576.  
  577.     Ends an arpeggio definition. See above.
  578.  
  579. 12.    Set vibrato depth
  580.     Command: VBD
  581.     Keyboard: V
  582.  
  583.     This command is used to set the vibrato depth (00 - 7F).
  584.  
  585.     Example:
  586.     02  VBD
  587.     03   04 ;set depth to 4
  588.  
  589. 13.    Set vibrato speed
  590.     Command: VBS
  591.     Keyboard: Shift-V
  592.  
  593.     This command sets the vibrato speed (00 - 7F). Both speed and depth
  594.     must be nonzero for vibrato to occur.
  595.  
  596.     Example:
  597.     02  VBD
  598.     03   04 ;depth = 4
  599.     04  VBS
  600.     05   30 ;speed = 30
  601.  
  602. 14.    Reset pitch
  603.     Command: RES
  604.     Keyboard: R
  605.  
  606.     This command resets the pitch of the note to its initial pitch.
  607.  
  608. (The following command requires OctaMED V2.00 / MED V3.20 or later.)
  609.  
  610. 15.    Set vibrato waveform
  611.     Command: VWF
  612.     Keyboard: Shift-W
  613.  
  614.     Sets the vibrato waveform. The argument is the number of wform.
  615.     The waveform should always be 32 bytes long!! Note that it's
  616.     actually played reversed (use the Rev gadget to reverse it).
  617.     By default, sine wave is used.
  618.  
  619.     Example:
  620.     00  VBD
  621.     01   06
  622.     02  VBS
  623.     03   40
  624.     04  VWF
  625.     05   04 ;use wform number 04 as vibrato waveform
  626.  
  627. =============================================================================
  628.  
  629. Synthsound handling commands in the songs:
  630.  
  631. Command  E  in the songs controls the MIDI pan, if used with MIDI, but with
  632. synthsounds, it is used to trigger a jump in the wform/pitch sequence list.
  633.  
  634. For  example,  if  you  wanted  to  decrease the pitch of the sound after a
  635. certain point, your wform/pitch sequence could look like this:
  636.  
  637.     00  VBS
  638.     01   40
  639.     02  VBD
  640.     03   06
  641.     04   00    ;play wform 00
  642.     05  HLT
  643.     06  CHD    ;pitch changing entry point
  644.     07   02
  645.     08  END
  646.  
  647. Now you could compose a track like this:
  648.  
  649.     C-2 3000  ;this is the previous synthsound
  650.     --- 0000
  651.     --- 0000
  652.     --- 0E06  ;cause a jump to position 06 (pitch starts to slide down)
  653.     --- 0000
  654.     ...
  655.  
  656. With command JVS, you could make the command affect volume sequence too.
  657.  
  658. Hold/Decay:
  659. ===========
  660. Hold/Decay  work well with synthsounds too.  The decay value in synthsounds
  661. is,  however,  a  jump address in the volume sequence list.  When the decay
  662. should  start,  the  execution will jump to this entry in the vol seq list.
  663. This means that you can handle the decay on any way you want.  You can also
  664. make it affect the pitch/wforms using the command JWS.
  665.  
  666. Example volume sequence list:
  667.  
  668.     00  40    ;volume
  669.     01 HLT  ;end
  670.     02 CHD    ;decay handling (entry point) -> cause decay
  671.     03  03
  672.     04 END
  673.  
  674. The decay value for this synthsound should be 2. When you save/load
  675. synthsounds, the decay values are saved/loaded with the instrument.
  676.  
  677. =============================================================================
  678.  
  679. Saving/loading synthsounds
  680. »»»»»»»»»»»»»»»»»»»»»»»»»»
  681. Synthsounds  are  saved  using the filerequester panel, "save instr".  They
  682. usually  take  very little disk space.  Synthsounds can be loaded just like
  683. normal samples (filerequester, sample list, typing sample name).
  684.  
  685. =============================================================================
  686.  
  687. HYBRID SOUNDS
  688. »»»»»»»»»»»»»
  689. Hybrid  sounds are much like synthsounds, except that there are no waveform
  690. pieces.   Instead, there's a normal sample.  All commands of the synthsound
  691. handling programming language can be used with hybrid sounds.  There's only
  692. one thing you should know:  Don't use "Set waveform".  Because there's only
  693. a single waveform, there's no need for that (and it wouldn't work anyway).
  694.  
  695. =============================================================================
  696.  
  697.     Final note:
  698.  
  699. Don't  be afraid if you didn't understand everything described in this file
  700. (I  hardly  understand  it myself ;-) All this information is not necessary
  701. for using the synthsounds (only for designing them).
  702.