home *** CD-ROM | disk | FTP | other *** search
/ earth.cs.bath.ac.uk / earth.cs.bath.ac.uk.zip / earth.cs.bath.ac.uk / pub / dream / Version4_15.Notes < prev    next >
Text File  |  2002-02-17  |  15KB  |  395 lines

  1. Release Notes for 4.15
  2. ======================
  3.  
  4. A set of corrections to the changes in 4.14 (mislabelled as 4.13).
  5.  
  6.  
  7. Bug Fixes
  8. ---------
  9.  
  10. pvanal in pvx mode allows for duration
  11.  
  12. internal changes to adsr
  13.  
  14. Bug in reading analysis file on macintosh fixed
  15.  
  16. Csound will again run without a csoudn.xmg file -- and defaults to
  17. English (not American)
  18.  
  19.  
  20. Language Changes
  21. ----------------
  22.  
  23. In extented pvoc file it now recognises .pvx in all case variations
  24.  
  25.  
  26. Opcode Fixes
  27. ------------
  28.  
  29. soundin was incorrectly specified in entry table
  30.  
  31. Endianness problem in 24bit sound fixed
  32.  
  33. schedkwhen now allows deferred action turnoff
  34.  
  35. minor fix in adsr
  36.  
  37. Buf in spat3d fixed
  38.  
  39.  
  40. New Opcodes 
  41. -----------
  42.  
  43. tempoval -- read current value of tempo if beatmode is on, or 60 if not
  44. biquada -- just like biquad except the parameters are all a-rate
  45. vibrato, vibr -- Vibrato opcodes
  46. jitter, jitter2, jspline -- Jitter opcodes
  47. oscbnk -- an oscilator bank
  48. cpstun, cpstuni -- another micro-tuning opcode
  49.  
  50.  
  51. Other Changes:
  52. -------------
  53.  
  54. Known Bugs
  55. ==========
  56.  
  57. The following bugs are known but not yet fixed
  58.  
  59. 1: Large scores do not always extend correctly
  60. 2: ADSR can go wrong
  61. 3: Convolve files on Mac not recognised
  62. 4: reported bug in spat3di (mail of Sun, 26 Aug 2001 22:47:37 -0400)
  63. 5: Bug in linseg at k-rate (mail of Wed, 15 Aug 2001 19:59:48 +0100)
  64. 6: PVOC can glitch (mail of Mon, 19 Jun 2000 00:45:23 +0200)
  65.  
  66.  
  67. Windows GUI Changes
  68. -------------------
  69.  
  70. Can now select 24bit output and floats; the GUI was confused and so
  71. there are some layout changes
  72.  
  73. -----------------------------------------------------------------------
  74. ==John ff
  75.   2001 September
  76. ========================================================================
  77. cpstun, cpstuni
  78.  
  79. kcps cpstun ktrig, kindex, kfn
  80. icps cpstuni index, ifn
  81.  
  82. INITIALIZATION
  83.  
  84. icps - return value in cps
  85. index - an integer number denoting an index of scale
  86. ifn - function table containing the parameters (numgrades, interval,
  87. basefreq, basekeymidi) and the tuning ratios.
  88.  
  89. PERFORMANCE
  90.  
  91. kcps - return value in cps
  92. ktrig - a trigger signal used to trigger the evaluation
  93. kindex - an integer number denoting an index of scale
  94. kfn - function table containing the parameters (numgrades, interval,
  95. basefreq, basekeymidi) and the tuning ratios.
  96.  
  97. These opcodes are similar to cpstmid, but work without necessity of
  98. MIDI.
  99.  
  100. cpstun works at k-rate, while cpstuni at init-rate. They allow
  101. fully customized micro-tuning scales. They requires a function table number
  102. containing the tuning ratios, and some other parameters stored in the function
  103. table itself.
  104.  
  105. kindex and index arguments should be filled with integer numbers
  106. expressing the grade of given scale to be converted in cps. In cpstun,
  107. a new value is evaluated only when ktrig contains a non-zero value.
  108. The function table ifn (or kfn) should be generated by GEN2
  109. and the first four values stored in this function are parameters that express:
  110.  
  111. numgrades (the number of grades of the micro-tuning scale),
  112.  
  113. interval (the frequency range covered before repeating the
  114. grade ratios, for example 2 for one octave, 1.5 for a fifth etcetera),
  115.  
  116. basefreq (the base frequency of the scale in cps), 
  117. basekey (the integer index of the scale to which to assign
  118. basefreq unmodified).
  119.  
  120. After these four values, the user can begin to insert the tuning ratios.
  121. For example, for a standard 12-grade scale with the base-frequency of 261
  122. cps assigned to the key-number 60, the corresponding f-statement in the score
  123. to generate the table should be:
  124. ;           numgrades    basefreq     tuning-ratios (eq.temp) ....... 
  125. ;                  interval    basekey
  126. f1 0 64 -2  12     2     261   60     1   1.059463 1.12246 1.18920 ..etc...
  127.  
  128. Another example with a 24-grade scale with a base frequency of 440 assigned
  129. to the key-number 48, and a repetition interval of 1.5:
  130.                   numgrades       basefreq      tuning-ratios .......  
  131.                           interval       basekey
  132. f1 0 64 -2         24      1.5     440    48     1   1.01  1.02  1.03   ..etc...
  133.  
  134. ------------------------------------------------------------------------
  135.  
  136. ar    oscbnk kcps, kamd, kfmd, kpmd, iovrlap, iseed,                   \
  137.         kl1minf, kl1maxf, kl2minf, kl2maxf, ilfomode,               \
  138.         keqminf, keqmaxf, keqminl, keqmaxl, keqminq, keqmaxq, ieqmode, \
  139.         kfn, il1fn, il2fn, ieqffn, ieqlfn, ieqqfn[, itabl[, ioutfn]]
  140.  
  141. DESCRIPTION
  142. ===========
  143.  
  144. This unit generator mixes the output of any number of oscillators. The
  145. frequency, phase, and amplitude of each oscillator can be modulated by two
  146. LFOs (all oscillators have a separate set of LFOs, with different phase and
  147. frequency); additionally, the output of each oscillator can be filtered
  148. through an optional parametric equalizer (also controlled by the LFOs).
  149. This opcode is most useful for rendering ensemble (strings, choir, etc.)
  150. instruments.
  151. Although the LFOs run at k-rate, amplitude, phase and filter modulation are
  152. interpolated internally, so it is possible (and recommended in most cases)
  153. to use this unit at low (~1000 Hz) control rates without audible quality
  154. degradation.
  155. The start phase and frequency of all oscillators and LFOs can be set by
  156. a built-in seedable 31-bit random number generator, or specified manually in
  157. a function table (GEN2).
  158.  
  159. INITIALIZATION
  160. ==============
  161.  
  162. iovrlap - number of oscillator units.
  163.  
  164. iseed - seed value for random number generator (positive integer in the range
  165.   1 to 2147483646 (2^31 - 2)).
  166.  
  167. ilfomode - LFO modulation mode, sum of:
  168.     128: LFO1 to frequency
  169.      64: LFO1 to amplitude
  170.      32: LFO1 to phase
  171.      16: LFO1 to EQ
  172.       8: LFO2 to frequency
  173.       4: LFO2 to amplitude
  174.       2: LFO2 to phase
  175.       1: LFO2 to EQ
  176.   If an LFO does not modulate anything, it is not calculated, and the ftable
  177.   number (il1fn or il2fn) can be omitted.
  178.  
  179. ieqmode - parametric equalizer mode
  180.      -1: disable EQ (faster)
  181.       0: peak
  182.       1: low shelf
  183.       2: high shelf
  184.       3: peak (filter interpolation disabled)
  185.       4: low shelf (interpolation disabled)
  186.       5: high shelf (interpolation disabled)
  187.   The non-interpolated modes are faster, and in some cases (e.g. high shelf
  188.   filter at low cutoff frequencies) also more stable; however, interpolation
  189.   is useful for avoiding "zipper noise" at low control rates.
  190.  
  191. il1fn - LFO1 function table number. The waveform in this table has to be
  192.   normalized (absolute value <= 1), and is read with linear interpolation.
  193.  
  194. il2fn - LFO2 function table number. The waveform in this table has to be
  195.   normalized, and is read with linear interpolation.
  196.  
  197. ieqffn, ieqlfn, ieqqfn - lookup tables for EQ frequency, level, and Q (optional
  198.   if EQ is disabled). Table read position is 0 if the modulator signal is less
  199.   than, or equal to -1, (table length / 2) if the modulator signal is zero, and
  200.   the guard point if the modulator signal is greater than, or equal to 1. These
  201.   tables have to be normalized to the range 0 - 1, and have an extended guard
  202.   point (table length = power of two + 1). All tables are read with linear
  203.   interpolation.
  204.  
  205. itabl - function table storing phase and frequency values for all oscillators
  206.   (optional). The values in this table are in the following order (5 for each
  207.   oscillator unit):
  208.  
  209.   oscillator phase, lfo1 phase, lfo1 frequency, lfo2 phase, lfo2 frequency, ...
  210.  
  211.   All values are in the range 0 to 1; if the specified number is greater than 1,
  212.   it is wrapped (phase) or limited (frequency) to the allowed range. A negative
  213.   value (or end of table) will use the output of the random number generator.
  214.   The random seed is always updated (even if no random number was used), so
  215.   switching one value between random and fixed will not change others.
  216.  
  217. ioutfn - function table to write phase and frequency values (optional). The
  218.   format is the same as in the case of itabl. This table is useful when
  219.   experimenting with random numbers to record the best values.
  220.  
  221. PERFORMANCE
  222. ===========
  223.  
  224. ar - output signal.
  225.  
  226. kcps - oscillator frequency in Hz.
  227.  
  228. kamd - AM depth (0 - 1).
  229.   (AM output) = (AM input) * ((1 - (AM depth)) + (AM depth) * (modulator))
  230. (Note: amplitude modulation is applied before the parametric equalizer.)
  231.  
  232. kfmd - FM depth (in Hz).
  233.  
  234. kpmd - phase modulation depth.
  235.  
  236. kl1minf, kl1maxf - LFO1 minimum and maximum frequency in Hz.
  237.  
  238. kl2minf, kl2maxf - LFO2 minimum and maximum frequency in Hz.
  239. (Note: oscillator and LFO frequencies are allowed to be zero or negative.)
  240.  
  241. keqminf, keqmaxf - parametric equalizer minimum and maximum frequency in Hz.
  242.  
  243. keqminl, keqmaxl - parametric equalizer minimum and maximum level.
  244.  
  245. keqminq, keqmaxq - parametric equalizer minimum and maximum Q.
  246.  
  247. kfn - oscillator waveform table. Table number can be changed at k-rate (this
  248.   is useful to select from a set of band-limited tables generated by GEN30,
  249.   to avoid aliasing). The table is read with linear interpolation.
  250.  
  251. AUTHOR
  252. ======
  253.  
  254. Istvan Varga
  255. 2001
  256.  
  257. ------------------------------------------------------------------------
  258. kout vibrato kAverageAmp, kAverageFreq, kRandAmountAmp, kRandAmountFreq,
  259. kAmpMinRate, kAmpMaxRate, kcpsMinRate, kcpsMaxRate, ifn [, iphs]
  260.  
  261. kout vibr kAverageAmp, kAverageFreq, ifn
  262.  
  263. kout jitter kamp, kcpsMin, kcpsMax
  264. kout jitter2 ktotamp, kamp1, kcps1, kamp2, kcps2, kamp3, kcps3
  265.  
  266. DESCRIPTION
  267.  
  268. These opcode are designed to make sounds more natural to hearing.
  269. vibrato and vibr generates a vibrato-like signal containing
  270. some user-controlled randomness in amplitude and frequency; jitter
  271. and jitter2 produces some deviation to be summed to constant signals
  272. to make them more "analog-like" and natural.
  273.  
  274. INITIALIZATION
  275.  
  276. ifn - number of vibrato table. It normally contains a sine or a triangle
  277. wave.
  278.  
  279. iphs (optional) - initial phase of table, expressed as a fraction
  280. of a cycle (0 to 1). A negative value will cause phase initialization to
  281. be skipped. The default value is 0.
  282.  
  283. PERFORMANCE
  284.  
  285. kAverageAmp - average amplitude value of vibrato
  286. kAverageFreq - average frequency value of vibrato (in cps)
  287. kRandAmountAmp - amount of random amplitude deviation
  288. kRandAmountFreq - amount of random frequency deviation
  289. kAmpMinRate - minimum frequency of random amplitude deviation segments
  290. (in cps)
  291. kAmpMaxRate - maximum frequency of random amplitude deviation segments
  292. (in cps)
  293. kcpsMinRate - minimum frequency of random frequency deviation segments
  294. (in cps)
  295. kcpsMaxRate - maximum frequency of random frequency deviation segments
  296. (in cps)
  297.  
  298. kamp - amplitude of jitter deviation
  299. kcpsMin -  minimum speed of random frequency variations (expressed
  300. in cps)
  301. kcpsMax - maximum speed of random frequency variations (expressed
  302. in cps)
  303.  
  304. ktotamp - resulting amplitude of jitter2
  305. kamp1 - amplitude of the first jitter component
  306. kcps1 - speed of random variation of the first jitter component (expressed
  307. in cps)
  308. kamp2 - amplitude of the second jitter component
  309. kcps2 - speed of random variation of the second jitter component
  310. (expressed in cps)
  311. kamp3 - amplitude of the third jitter component
  312. kcps3 - speed of random variation of the third jitter component (expressed
  313. in cps)
  314.  
  315. vibrato outputs a natural-sounding user-controllable vibrato. The
  316. concept is to randomly vary both frequency and amplitude of the oscillator
  317. generating the vibrato, in order to simulate the irregularities of a
  318. real vibrato. In order to have a total control of these random variations,
  319. several input arguments are present. Random variations are obtained by two
  320. separated segmented lines, the first controlling amplitude deviations, the
  321. second the frequency deviations. Average duration of each segment of each
  322. line can be shortened or enlarged by the arguments kAmpMinRate, kAmpMaxRate,
  323. kcpsMinRate, kcpsMaxRate, and the deviation from the average amplitude
  324. and frequency values can be independently adjusted by means of
  325.  kRandAmountAmp and kRandAmountFreq.
  326.  
  327. vibr is an easier-to-use version of vibrato. It has the same
  328. generation-engine of vibrato, but the parameters corresponding to
  329. missing input arguments are hard-coded to default values.
  330.  
  331. jitter generates a segmented line whose segments are randomly generated
  332. inside the +kamp and -kamp interval. Duration of each segment is a random
  333. value generated according to kcpsmin and kcpsmax values.
  334.  
  335. jitter2 also generates a segmented line such as jitter, but
  336. in this case the result is similar to the sum of three randi opcodes,
  337. each one with a different amplitude and frequency value (see randi
  338. for more details), that can be varied at k-rate. Different effects can be
  339. obtained by varying the input arguments.
  340.  
  341. jitter and jitter2 can be used to make more natural and
  342. "analog-sounding" some static, dull sound. For best results, It is suggested
  343. to keep their amplitude moderate.
  344.  
  345. ------------------------------------------------------------------------
  346.  
  347. kr jspline kamp, kcpsMin, kcpsMax
  348. ar jspline xamp, kcpsMin, kcpsMax
  349.  
  350. kr rspline krangeMin, krangeMax, kcpsMin, kcpsMax
  351. ar rspline xrangeMin, xrangeMax, kcpsMin, kcpsMax
  352.  
  353. DESCRIPTION
  354.  
  355. Generate random spline curves
  356.  
  357. INITIALIZATION
  358.  
  359. no init args
  360.  
  361. PERFORMANCE
  362.  
  363. kr, ar - output signal
  364. xrangeMin, xrangeMax - range of values of random-generated points
  365. kcpsMin, kcpsMax -  range of point-generation rate. Min and max
  366. limits are expressed in cps.
  367. xamp - amplitude factor
  368.  
  369. jspline (jitter-spline generator) generates a smooth curve based on
  370. random points generated at [cpsMin, cpsMax] rate.  This
  371. opcode is similar to randomi or randi or jitter, but
  372. segments are not stright lines, but cubic spline curves. Output value range
  373. is approximately > -xamp and < xamp. Actually, real range
  374. could be a bit greater, because of interpolating curves beetween each pair
  375. of random-points.
  376.  
  377. rspline (random-spline-curve generator) is similar to jspline
  378. but output range is defined by means of two limit values. Also in this case,
  379. real output range could be a bit greater of range values, because of
  380. interpolating curves beetween each pair of random-points.
  381.  
  382. At present time generated curves are quite smooth when cpsMin is not
  383. too different from cpsMax. When cpsMin-cpsMax interval is big,
  384. some little discontinuity could occurr, but it should not be a problem, in
  385. most cases. Maybe the algorithm will be improved in next versions.
  386.  
  387. These opcodes are often better than jitter when user wants to "naturalize"
  388. or "analogize" digital sounds. They could be used also in algorithmic
  389. composition, to generate smooth random melodic lines when used together with
  390. samphold opcode.
  391.  
  392. Note that the result is quite different from the one obtained by filtering
  393. white noise, and they allow the user to obtain a much more precise control.
  394. ------------------------------------------------------------------------
  395.