home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 580a.lha / AM / ReadMe.pp / ReadMe
Text File  |  1991-12-04  |  10KB  |  259 lines

  1.  
  2.  
  3.     What is AM?
  4.     ===========
  5.  
  6. - AM is public domain software.
  7.  
  8. - AM produces algorithmic music through any MIDI environment.
  9.  
  10. - AM needs AmigaDOS 2.0 and the midi.library by Bill Barton
  11.  
  12.  
  13.     About AM
  14.     ========
  15.  
  16. This  piece of software has been developed and was successfully used for an
  17. exhibition of pictures of a young painter I know, Olivia Rost.
  18.  
  19. The exhibition was entitled "Der Nabel der Welt".  The overall theme of the
  20. shown  pictures  and  drawings was about the way, the human race approaches
  21. the new genetic technologies - both technically and in mind.
  22.  
  23. The  initial  opening was planned to last for two hours.  When Olivia asked
  24. me  to  write  some  music  for  this  opening,  I  immediately  thought of
  25. algorithmic  music being the right thing to do this job.  I had those early
  26. software packages in mind, "genetic music" and "DNA music" and the like.  I
  27. asked  for  them  at  some software vendors, but it seems that these things
  28. have had some problems on the commercial market :-(.
  29.  
  30. So  I decided to write something myself.  The first version of AM was coded
  31. during  some  weekend  just to test my thoughts.  After some refinements, I
  32. added  some  gadgets to ease the parameter input.  The result has then been
  33. used for the exhibition.  (Lazy guy?  Come on, at least it worked!  :-)
  34.  
  35. This  version  has  got  one new feature (see below), which came to my mind
  36. during  the  opening.   If  you  have  other  special  ideas  of  producing
  37. algorithmic music, feel free to extend this program.  But send me a copy of
  38. your results, I would love to hear other people's ideas.
  39.  
  40. The  original exhibition script is provided as an example.  I designed this
  41. script  and  the  proper  sounds  to produce a slow (remember:  two hours!)
  42. evolution  from  harmonic  to  disharmonic sounds.  The script shows how to
  43. assemble AM processes to build a complete performance.
  44.  
  45.  
  46.     Running TAKT
  47.     ============
  48.  
  49. First  of  all, you have to run the sync master called "takt".  Give it the
  50. number  of  milliseconds  (0..999999)  you  want  to  have between two sync
  51. signals, e.g.
  52.  
  53. 1> run takt 333333
  54.  
  55. for three syncs per second.  Every new AM process links onto the sync port,
  56. and will reject to run without it.
  57.  
  58. To  stop  the  sync  process, just give it a break (ctrl-c) signal.  Before
  59. dying, the sync process will terminate all running AM processes:
  60.  
  61. 1> status
  62. Process  1: Loaded as command: ced
  63. Process  2: Loaded as command: conclip
  64. Process  3: Loaded as command: Workbench
  65. Process  4: Loaded as command: Helper
  66. Process  5: Loaded as command: Arq
  67. Process  6: Loaded as command: status
  68. Process  7: Loaded as command: takt
  69. Process  8: Loaded as command: am
  70. Process  9: Loaded as command: am
  71. 1> break 7
  72. 1> status
  73. Process  1: Loaded as command: ced
  74. Process  2: Loaded as command: conclip
  75. Process  3: Loaded as command: Workbench
  76. Process  4: Loaded as command: Helper
  77. Process  5: Loaded as command: Arq
  78. Process  6: Loaded as command: status
  79. 1> 
  80.  
  81.  
  82.     Running AM
  83.     ==========
  84.  
  85. AM  can  only  be started from Shell.  I have not had the time to implement
  86. any file requester for the startup parameters, but redirecting the input to
  87. some  file  works  just fine.  Also, after stopping an AM process, the last
  88. actual  parameter set will be printed to stdout, so if you want to keep the
  89. changed parameters, also redirect the output to a file, for example
  90.  
  91. 1> run AM <oldpar >newpar
  92.  
  93. If  you  do  not  redirect  the input, AM will look for parameters from the
  94. keyboard.   When  "run"'ed  like above, AM will start immediately, thinking
  95. there  is  no input available.  When started as the foreground process, you
  96. can enter parameter definitions (see below).  An empty line or an undefined
  97. parameter  keyword  ends the input mode.  AM will use it's default settings
  98. for up to then undefined parameters. Example:
  99.  
  100. 1> AM >ram:test        ; input from keyboard, output to ram:test
  101. skala=963633963517    ; set some parameters
  102. kanal=13
  103. pausen=0.55
  104. ende            ; end input (empty line would do)
  105.  
  106. When  given the option '-w', AM will open a window containing all necessary
  107. gadgets to control the parameters in real time:
  108.  
  109. 1> run AM -w >newpar <oldpar
  110.  
  111. This option is for experimenting and for designing a new set of parameters.
  112. When  you  want  AM  to just process some previously defined data, start it
  113. with  only  the  proper redirections (probably <parfile >NIL:).  This keeps
  114. your screen from getting overcrowded.
  115.  
  116. AM  starts  smoothly  by  fading  the  volume  slowly in over the first few
  117. generated  notes.   This is to prevent abrupt changes in the flow of sounds
  118. and can't be disabled.
  119.  
  120. To stop an AM process, break it (ctrl-c).  Use the Shell command 'Break' to
  121. terminate  background  processes  of  AM.  See the example script on how to
  122. control many AM processes running simultaneously.
  123.  
  124. If  the parameter window is enabled, you can also stop the corresponding AM
  125. process by clicking on the close gadget.
  126.  
  127.  
  128.     Parameters
  129.     ==========
  130.  
  131. AM  expects  its parameter input to be lines of the format "KEYWORD=VALUE".
  132. An  empty  line or a wrong keyword ends the parameter input mode and starts
  133. the music generation.
  134.  
  135. The  output  generated  from  AM can be used as the parameter input for the
  136. next AM start.
  137.  
  138. In  the  parameter  control  window, the parameters 'KANAL' and 'INSTR' are
  139. each displayed one step higher than their actual values.  So Kanal=1 in the
  140. parameter window means MIDI channel 0, and Instr=0 means no change.
  141.  
  142. The  Skala  and CSkala string gadgets have a fixed length of 12 characters.
  143. If  you  enter  less,  the  input will be discarded.  If you leave just the
  144. "nn:" in the CSkala gadget, the corresponding CSkala entry will be cleared.
  145.  
  146.  
  147. Now for the allowed keywords (case is not significant) and their values:
  148.  
  149.  
  150. Keyword   | Value (Range)  | Description
  151. ----------+----------------+---------------------------------------------
  152. KANAL     | 0..15          | MIDI channel to be used (-> 1..16)
  153.           |                |
  154. INSTR     | -1, 0..63      | Instrument# for MIDI device, -1 means no
  155.           |                | change
  156.           |                |
  157. FREQMITTE | 0..127         | The middle frequency; note pitches will be
  158.           |                | generated in the range FREQMITTE ± FREQABW
  159.           |                | This is measured in half steps, 0 is the
  160.           |                | lowest pitch playable through MIDI, 127 the
  161.           |                | highest
  162.           |                |
  163. FREQABW   | 0..127         | see above, 12 means ± one octave
  164.           |                |
  165. VOLMITTE  | 0..127         | The middle volume; note volumes will be
  166.           |                | generated in the range VOLMITTE ± VOLABW
  167.           |                |
  168. VOLABW    | 0..127         | see above
  169.           |                |
  170. PAUSEN    | 0.0 .. 1.0     | How many new notes shall be generated?
  171.           |                | 0.0 means every sync is a new note, 1.0 means
  172.           |                | the first note lasts forever...
  173.           |                |
  174. TONAUS    | 0.0 .. 1.0     | If not starting a new note: The probability
  175.           |                | of stopping the actual note. 0.0 means no
  176.           |                | Note-Off at all, 1.0 means every pause also
  177.           |                | stops the note (so all note lengths will be
  178.           |                | of the sync interval length)
  179.           |                |
  180. SKALA     | 12 characters  | This is the big one. The 12 chars tell the
  181.           | CcDdEFfGgAaB   | "allowance" of each half tone of the octave.
  182.           |                | By carefully setting this value, you can
  183.           |                | control the harmonic of the generated music.
  184.           |                | The default value is "999999999999" what means
  185.           |                | all notes are absolutely allowed. This produces
  186.           |                | totally random harmonics.
  187.           |                |
  188. ENDE      | - none -       | Terminate parameter input mode
  189.           |                |
  190. ----------+----------------+---------------------------------------------
  191. CSKALA    | nn:SKALA       | Added for this release. This provides for
  192.           |                | "continued skalas" what means every half tone
  193.           |                | can lead to it's own skala of allowed tones
  194.           |                | to follow. Not applied CSkalas default to
  195.           |                | the basic SKALA.
  196.           |                | By carefully programming this parameter, you
  197.           |                | can give the produced music some kind of
  198.           |                | melody; the programmed patterns will occur
  199.           |                | from time to time, causing the listener to
  200.           |                | remember them.
  201.           |                |
  202.  
  203.  
  204. Now here's a commented example input to AM:
  205.  
  206. Kanal=0                Output to MIDI channel 1
  207. Instr=-1            No instrument change
  208. FreqMitte=63            Note pitches will vary between 51
  209. FreqAbw=12            and 75 (range of two octaves)
  210. VolMitte=63            Volume will vary between 43
  211. VolAbw=20            and 83
  212. Pausen=0.40            40 % of the syncs will be pauses
  213. TonAus=0.30            30 % of those pauses will stop the sound
  214. Skala=909099090909        C Major (C D E F G A B)
  215. CSkala=00:500009000000        C leads to C or F
  216. CSkala=05:000000090000        F leads to G
  217. CSkala=07:300006000090        G leads to C, F or Bb
  218. Ende                That's it
  219.  
  220.  
  221. And here are the default settings:
  222.  
  223. Kanal=0
  224. Instr=-1
  225. FreqMitte=63
  226. FreqAbw=48
  227. VolMitte=63
  228. VolAbw=48
  229. Pausen=0.40
  230. TonAus=0.30
  231. Skala=999999999999
  232.  
  233.  
  234.     Last Words
  235.     ==========
  236.  
  237. As  each  AM  process  generates  exactly one voice, the composition of the
  238. harmonics  is  up  to  you.   By  carefully  selecting the SKALA and CSKALA
  239. parameters,  you  should  be  able  to  produce  any sound and melody, from
  240. absolutely boring to totally random.  It's up to you.
  241.  
  242. Feel free to use the code as a skeleton for your own algorithms, but if you
  243. do  so,  I  would like to get a copy of your results.  Send flames to HELL:
  244. and comments or enhanced versions to
  245.  
  246.     balzer@heike.informatik.uni-dortmund.de
  247.     
  248.     or
  249.     
  250.     M.BALZER@AWORLD.ZER
  251.     
  252.     or
  253.     
  254.     Michael Balzer
  255.     Wildermuthstr. 18
  256.     W-5828 Ennepetal 14
  257.     GERMANY
  258.  
  259.