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_13.Notes < prev    next >
Text File  |  2001-08-22  |  22KB  |  629 lines

  1. Release Notes for 4.13
  2. ======================
  3.  
  4. A set of incremental changes, including consolidation of the macintosh
  5. system into the main sources.
  6.  
  7.  
  8. Bug Fixes
  9. ---------
  10.  
  11. There was a fence-post problem throughout strset where string 8, 16,
  12. .. were not recognised.
  13.  
  14. A bug in pvoc fixed which could give incorrect output in some
  15. circumstances
  16.  
  17. fout fixed
  18.  
  19. Typo meant that MIDI did not work on Macintosh
  20.  
  21.  
  22. Language Changes
  23. ----------------
  24.  
  25. The number of channels which used to have an implicit maximum of 8 has
  26. been liberalised significantly.
  27.  
  28. 24bit audio now supported for output and input.
  29.  
  30. The csound.txt file has been renamed csound.xmg (for external
  31. messages)
  32.  
  33. There is a new variable type a f-variable.  This is used in streaming
  34. pvanal.
  35.  
  36. Opcode Fixes
  37. ------------
  38.  
  39. soundin can not take upto 24 channels
  40.  
  41. gbuzz fixed (it used to jump sign sometimes)
  42.  
  43. Improvements to vdelay family
  44.  
  45. New Opcodes 
  46. -----------
  47.  
  48. bbcut -- for breakbeat cutting.(Nick Collins)
  49.  
  50. spat3d, spat3di, spat3dt -- Three dimension room simulation (Istvan
  51. Varga)
  52.  
  53. deltapx, deltapxw -- read from and write to a delayr/delayw delay line
  54. with interpolation
  55.  
  56. pvsanal -- streaming pvanalysis, generating an f-variable
  57. pvsynth -- resynthesis of fvariablesd
  58. pvsadsyn -- streaming additive synthesis
  59. pvscross -- streaming cross-synthesis
  60. pvsfread --
  61. pvsmaska --
  62. pvsftw -- write a streamed pvoc frame to table
  63. pvsftr -- read  a streamed pvoc frame to table
  64. pvsinfo -- information about a streamed pvanal
  65.  
  66. lineto, tlineto -- Generate glissandos starting from a control signal
  67.  
  68. loopseg, lpshold -- Generate control signal consisting of linear
  69. segments delimited by two or more specified points. The entire
  70. envelope is looped at k-rate.
  71.  
  72.  
  73. Other Changes:
  74. -------------
  75.  
  76. The pvanal analysis program can have the windowing type controlled by
  77. a -h option.
  78.  
  79. Internally the maximum number of channels has been increased
  80. significantly. 
  81.  
  82. Efficiency gains in lowpass
  83.  
  84. Some internal messages removed
  85.  
  86. filelen and filepeak revised for PVOC_EX format etc
  87.  
  88. MACOSX changes merged in
  89.  
  90.  
  91. Windows GUI Changes
  92. -------------------
  93.  
  94. Can now select 24bit output
  95.  
  96. -----------------------------------------------------------------------
  97. ==John ff
  98.   2001 August
  99. ========================================================================
  100. bbcutm,bbcuts  
  101.  
  102. a1 bbcutm asource, ibps, isubdiv, ibarlength, iphrasebars, inumrepeats
  103.                 [, istutterspeed, istutterchance, ienvchoice ] 
  104.  
  105. a1,a2 bbcuts asource1, asource2, ibps, isubdiv, ibarlength, iphrasebars,
  106.                 inumrepeats [, istutterspeed, istutterchance, ienvchoice]
  107.  
  108. Description
  109.  
  110. The BreakBeat Cutter automatically generates cutups of a source audio
  111. stream in the style of drum and bass/jungle breakbeat manipulations.
  112. There are two versions, for mono or stereo sources.  Whilst originally
  113. based on breakbeat cutting, the opcode can be applied to any type of
  114. source audio.
  115.  
  116. The prototypical cut sequence favoured over one bar with eighth note
  117. subdivisions would be
  118.  
  119. 3+ 3R + 2
  120.  
  121. where we take a 3 unit block from the source's start, repeat it, then
  122. 2 units from the 7th and 8th eighth notes of the source.
  123.  
  124. We talk of rendering phrases (a sequence of cuts before reaching a new
  125. phrase at the beginning of a bar) and units (as subdivision th notes).
  126.  
  127. The opcode comes most alive when multiple synchronised versions are
  128. used simultaneously.
  129.  
  130. Initialisation
  131.  
  132. ibps- tempo to cut at, in beats per second.
  133. isubdiv - subdivisions unit, for a bar. So 8 is eighth notes (of a 4/4
  134.           bar). 
  135. ibarlength - how many beats per bar. Set to 4 for default 4/4 bar
  136.              behaviour 
  137. iphrasebars - the output cuts are generated in phrases, each phrase is
  138.               up to iphrasebars long.  
  139. inumrepeats - in normal use the algorithm would allow up to one
  140.               additional repeat of a given cut at a time. This
  141.               parameter allows that to be changed. Value 1 is normal-
  142.               up to one extra repeat. 0 would avoid repeating, and you
  143.               would always get back the original source except for
  144.               enveloping and stuttering.  
  145. istutterspeed (optional) - the stutter can be an integer multiple of
  146.               the subdivision speed. For instance, if subdiv is 8
  147.               (quavers) and stutterspeed is 2, then the stutter is in
  148.               semiquavers (sixteenth notes= subdiv 16). The default is 1. 
  149. istutterchance (optional) - the tail of a phrase has this chance of
  150.               becoming a single repeating one unit cell stutter (0.0
  151.               to 1.0). The default is 0. 
  152. ienvchoice (optional) - choose 1 for on (exponential envelope for cut
  153.               grains) or 0 for off. Off will cause clicking, but may
  154.               give good noisy results, especially for percussive
  155.               sources. The default is 1, on.
  156.  
  157. Performance
  158.  
  159. asource - to be cut up. This version runs in real-time without
  160. knowledge of future audio. 
  161.  
  162. CSD EXAMPLES
  163.  
  164. //first steps- mono and stereo versions
  165. <CsoundSynthesizer>
  166. <CsInstruments>
  167. sr        =         44100
  168. kr        =         4410
  169. ksmps     =         10
  170. nchnls    =         2
  171.  
  172. instr 1
  173.     asource diskin "break7.wav",1,0,1    ; a source breakbeat sample, wraparound lest it stop!
  174.  
  175.     ; cuts in eighth notes per 4/4 bar, up to 4 bar phrases, up to 1
  176.     ; repeat in total (standard use) rare stuttering at 16 note speed,
  177.     ; no enveloping  
  178.     asig bbcutm asource, 2.6937, 8,4,4,1,   2,0.1,0
  179.  
  180.     outs    asig,asig
  181. endin
  182.  
  183. instr 2    ;stereo version
  184.    asource1,asource2 diskin "break7stereo.wav",1,0,1    ; a source breakbeat sample, wraparound lest it stop!
  185.  
  186.   ; cuts in eighth notes per 4/4 bar, up to 4 bar phrases, up to 1
  187.   ; repeat in total (standard use) rare stuttering at 16 note speed,
  188.   ; no enveloping  
  189.   asig1,asig2 bbcuts asource1, asource2, 2.6937, 8,4,4,1,   2,0.1,0
  190.  
  191.   outs    asig1,asig2
  192. endin
  193.  
  194. </CsInstruments>
  195. <CsScore> 
  196. i1 0 10 
  197. i2 11 10
  198. e
  199. </CsScore>
  200. </CsoundSynthesizer>
  201.  
  202.  
  203. //multiple simultaneous synchronised breaks
  204.  
  205. <CsoundSynthesizer>
  206. <CsInstruments>
  207. sr        =         44100
  208. kr        =         4410
  209. ksmps     =         10
  210. nchnls    =         1
  211.  
  212. instr 1
  213.   ibps    = 2.6937
  214.   iplaybackspeed = ibps/p5
  215.   asource diskin p4,iplaybackspeed,0,1    
  216.  
  217.   asig bbcutm asource, 2.6937, p6,4,4,p7,   2,0.1,1
  218.  
  219.   out    asig
  220. endin
  221.  
  222. </CsInstruments>
  223. <CsScore> 
  224.  
  225. ;   source      bps cut repeats
  226. i1 0 10 "break1.wav" 2.3 8   2    //2.3 is the source original tempo
  227. i1 0 10 "break2.wav" 2.4 8   3
  228. i1 0 10 "break3.wav" 2.5 16  4
  229. e
  230. </CsScore>
  231. </CsoundSynthesizer>
  232.  
  233.  
  234. //cutting up any old audio- much more interesting noises than this should be possible!
  235. <CsoundSynthesizer>
  236. <CsInstruments>
  237. sr        =         44100
  238. kr        =         4410
  239. ksmps     =         10
  240. nchnls    =         1
  241.  
  242. instr 1
  243.   asource oscil 20000,70,1
  244.   ; ain,bps,subdiv,barlength,phrasebars,numrepeats, 
  245.   ;stutterspeed,stutterchance,envelopingon 
  246.   asig bbcutm asource, 2, 32,1,1,2, 4,0.6,1
  247.   outs    asig
  248. endin
  249.  
  250. </CsInstruments>
  251. <CsScore> 
  252. f1 0 256 10 1
  253. i1 0 10 
  254. e
  255. </CsScore>
  256. </CsoundSynthesizer>
  257.  
  258.  
  259. //constant stuttering- faked, not possible since can only stutter in last half bar
  260. //could make extra stuttering option parameter 
  261. <CsoundSynthesizer>
  262. <CsInstruments>
  263. sr        =         44100
  264. kr        =         4410
  265. ksmps     =         10
  266. nchnls    =         1
  267.  
  268. instr 1
  269.   asource diskin "break7.wav",1,0,1
  270.  
  271.   ;16th note cuts- but cut size 2 over half a beat.
  272.   ;each half beat will eiather survive intact or be turned into 
  273.   ;the first sixteenth played twice in succession
  274.  
  275.   asig bbcutm asource,2.6937,2,0.5,1,2, 2,1.0,0
  276.   outs    asig
  277. endin
  278.  
  279. </CsInstruments>
  280. <CsScore> 
  281. i1 0 30 
  282. e
  283. </CsScore>
  284. </CsoundSynthesizer>
  285.  
  286. Author
  287.         Nick Collins
  288.         London
  289.         August 2001
  290. ------------------------------------------------------------------------
  291.  
  292. aW, aX, aY, aZ  spat3di ain, iX, iY, iZ, idist, ift, imode[, istor]
  293. aW, aX, aY, aZ  spat3d ain, kX, kY, kZ, idist, ift, imode, imdel, iovr[, istor]
  294.                 spat3dt ioutft, iX, iY, iZ, idist, ift, imode, irlen[, iftnocl]
  295.  
  296. DESCRIPTION
  297. -----------
  298.  
  299. These opcodes position the input sound in a 3D space, with optional simulation
  300. of room acoustics, in various output formats. With spat3di, sound source
  301. position is set at i-time; spat3d allows moving the sound at k-rate (this
  302. movement is interpolated internally to eliminate "zipper noise" if sr != kr).
  303. spat3dt can be used to render the impulse response at i-time, storing output
  304. in a function table, suitable for convolution.
  305.  
  306. INITIALIZATION
  307. --------------
  308.  
  309. iX - sound source X coordinate in meters (positive: right, negative: left)
  310. iY - sound source Y coordinate in meters (positive: front, negative: back)
  311. iZ - sound source Z coordinate in meters (positive: up, negative: down)
  312.  
  313. imode - output mode
  314.     0: B format with W output only (mono)
  315.         aout    =  aW
  316.     1: B format with W and Y output (stereo)
  317.         aleft   =  aW + 0.7071*aY
  318.         aright  =  aW - 0.7071*aY
  319.     2: B format with W, X, and Y output (2D). This can be converted to UHJ:
  320.         aWre, aWim      hilbert aW
  321.         aXre, aXim      hilbert aX
  322.         aYre, aYim      hilbert aY
  323.         aWXr    =  0.0928*aXre + 0.4699*aWre
  324.         aWXiYr  =  0.2550*aXim - 0.1710*aWim + 0.3277*aYre
  325.         aleft   =  aWXr + aWXiYr
  326.         aright  =  aWXr - aWXiYr
  327.     3: B format with all outputs (3D)
  328.     4: simulates a pair of microphones (stereo output)
  329.         aW      butterlp aW, ifreq      ; recommended values for ifreq
  330.         aY      butterlp aY, ifreq      ; are around 1000 Hz
  331.         aleft   =  aW + aX
  332.         aright  =  aY + aZ
  333.   Mode 0 is the cheapest to calculate, while mode 4 is the most expensive.
  334.   More information about B format can be found here:
  335.     http://www.york.ac.uk/inst/mustech/3d_audio/ambis2.htm
  336.  
  337. idist - for modes 0 to 3: unit circle distance in meters, for mode 4: distance
  338.   between microphones (0.2 - 0.5 meters).
  339.  
  340. imdel - max. delay time for spat3d in seconds. This has to be longer than the
  341.   delay time of the latest reflection (depends on room dimensions, sound source
  342.   distance, and recursion depth; using this formula gives a safe (although
  343.   somewhat overestimated) value:
  344.     imdel = (R + 1) * sqrt(W*W + H*H + D*D) / 340.0
  345.   where R is the recursion depth, W, H, and D are the width, height, and depth
  346.   of the room, respectively).
  347.  
  348. iovr - oversample ratio for spat3d (1 to 8). Setting it higher improves quality
  349.   at the expense of memory and CPU usage. The recommended value is 2.
  350.  
  351. ioutft - output ftable number for spat3dt. W, X, Y, and Z outputs are written
  352.   interleaved to this table. If the table is too short, output will be
  353.   truncated.
  354.  
  355. irlen - impulse response length of echoes (in seconds). Depending on filter
  356.   parameters, values around 0.005-0.01 are suitable for most uses (higher
  357.   values result in more accurate output, but slower rendering).
  358.  
  359. iftnocl - do not clear output ftable (mix to existing data) if set to 1, clear
  360.   table before writing if set to 0 (default: 0).
  361.  
  362. istor - skip initialization if non-zero (default: 0).
  363.  
  364. ift - function table storing room parameters (for free field spatialization,
  365.   set it to zero or negative). Table size is 64. The values in the table are:
  366.  
  367. +----------------+----------------------------------------------------+
  368. |       0        | Early reflection recursion depth (0 is the sound   |
  369. |                | source, 1 is the first reflection etc.) for spat3d |
  370. |                | and spat3di. The number of echoes for four walls   |
  371. |                | (front, back, right, left) is:                     |
  372. |                |   N = (2*R + 2) * R                                |
  373. |                | If all six walls are enabled:                      |
  374. |                |   N = (((4*R + 6)*R + 8)*R) / 3                    |
  375. +----------------+----------------------------------------------------+
  376. |       1        | Late reflection recursion depth (used by spat3dt   |
  377. |                | only). spat3dt skips early reflections and renders |
  378. |                | echoes up to this level. If early reflection depth |
  379. |                | is negative, spat3d and spat3di will output zero,  |
  380. |                | while spat3dt will start rendering from the sound  |
  381. |                | source.                                            |
  382. +----------------+----------------------------------------------------+
  383. |       2        | imdel for spat3d. Overrides opcode parameter if    |
  384. |                | non-negative.                                      |
  385. +----------------+----------------------------------------------------+
  386. |       3        | irlen for spat3dt. Overrides opcode parameter if   |
  387. |                | non-negative.                                      |
  388. +----------------+----------------------------------------------------+
  389. |       4        | idist value. Overrides opcode parameter if >= 0.   |
  390. +----------------+----------------------------------------------------+
  391. |       5        | random seed (0 - 65535)                            |
  392. |                | -1 seeds from current time.                        |
  393. +----------------+----------------------------------------------------+
  394. |     6 - 53     | wall parameters                                    |
  395. |                |  w =  6: ceil                                      |
  396. |                |  w = 14: floor                                     |
  397. |                |  w = 22: front                                     |
  398. |                |  w = 30: back                                      |
  399. |                |  w = 38: right                                     |
  400. |                |  w = 46: left                                      |
  401. +----------------+----------------------------------------------------+
  402. |     w + 0      | enable reflections from this wall (0: no, 1: yes)  |
  403. +----------------+----------------------------------------------------+
  404. |     w + 1      | wall distance from listener (in meters)            |
  405. +----------------+----------------------------------------------------+
  406. |     w + 2      | randomization of wall distance (0 - 1)             |
  407. |                | (in units of 1 / (wall distance))                  |
  408. +----------------+----------------------------------------------------+
  409. |     w + 3      | reflection level (-1 - 1)                          |
  410. +----------------+----------------------------------------------------+
  411. |     w + 4      | parametric equalizer frequency in Hz               |
  412. +----------------+----------------------------------------------------+
  413. |     w + 5      | parametric equalizer level (1.0: no filtering)     |
  414. +----------------+----------------------------------------------------+
  415. |     w + 6      | parametric equalizer Q (0.7071: no resonance)      |
  416. +----------------+----------------------------------------------------+
  417. |     w + 7      | parametric equalizer mode (0: peak EQ,             |
  418. |                | 1: low shelf, 2: high shelf)                       |
  419. +----------------+----------------------------------------------------+
  420.  
  421. PERFORMANCE
  422. -----------
  423.  
  424. ain - input signal
  425.  
  426. aW, aX, aY, aZ - output signals
  427.  
  428.          +--------+--------+--------+--------+----------------------+
  429.          | mode 0 | mode 1 | mode 2 | mode 3 |       mode 4         |
  430.     +----+--------+--------+--------+--------+----------------------+
  431.     | aW | W out  | W out  | W out  | W out  | left chn / low freq. |
  432.     +----+--------+--------+--------+--------+----------------------+
  433.     | aX |   0    |   0    | X out  | X out  | left chn / high frq. |
  434.     +----+--------+--------+--------+--------+----------------------+
  435.     | aY |   0    | Y out  | Y out  | Y out  | right chn / low frq. |
  436.     +----+--------+--------+--------+--------+----------------------+
  437.     | aZ |   0    |   0    |   0    | Z out  | right chn / high fr. |
  438.     +----+--------+--------+--------+--------+----------------------+
  439.  
  440. kX, kY, kZ - sound source coordinates (in meters)
  441.  
  442. AUTHOR
  443. ------
  444.  
  445. Istvan Varga
  446. 2001
  447.  
  448. ------------------------------------------------------------------------
  449.  
  450.  
  451. aout    deltapx adel, iwsize
  452.         deltapxw ain, adel, iwsize
  453.  
  454. DESCRIPTION
  455. -----------
  456.  
  457. These units can read from and write to a delayr/delayw delay line with
  458. interpolation. deltapx is similar to deltapi or deltap3, however it allows
  459. higher quality interpolation. deltapxw mixes the input signal to the delay
  460. line at adel seconds. This opcode can be mixed with reading units (deltap,
  461. deltapn, deltapi, deltap3, and deltapx) in any order; the actual delay time is
  462. the difference of the read and write time.
  463.  
  464. INITIALIZATION
  465. --------------
  466.  
  467. iwsize - interpolation window size in samples. Allowed values are integer
  468.   multiplies of 4 in the range 4 to 1024. iwsize = 4 uses cubic interpolation.
  469.   Increasing iwsize improves sound quality at the expense of CPU usage, and
  470.   minimum delay time.
  471.  
  472. PERFORMANCE
  473. -----------
  474.  
  475. ain - input signal
  476.  
  477. aout - output signal
  478.  
  479. adel - delay time in seconds.
  480.  
  481.   a1      delayr idlr
  482.           deltapxw a2, adl1, iws1
  483.   a3      deltapx adl2, iws2
  484.           deltapxw a4, adl3, iws3
  485.           delayw a5
  486.  
  487.   Minimum and maximum delay times:
  488.  
  489.     idlr >= 1/kr                                Delay line length
  490.  
  491.     adl1 >= (iws1/2)/sr                         Write before read
  492.     adl1 <= idlr - (1 + iws1/2)/sr              (allows shorter delays)
  493.  
  494.     adl2 >= 1/kr + (iws2/2)/sr                  Read time
  495.     adl2 <= idlr - (1 + iws2/2)/sr
  496.     adl2 >= adl1 + (iws1 + iws2) / (2*sr)
  497.     adl2 >= 1/kr + adl3 + (iws2 + iws3) / (2*sr)
  498.  
  499.     adl3 >= (iws3/2)/sr                         Write after read
  500.     adl3 <= idlr - (1 + iws3/2)/sr              (allows feedback)
  501.  
  502.   (note: window sizes for opcodes other than deltapx are: deltap, deltapn: 1,
  503.    deltapi: 2 (linear), deltap3: 4 (cubic))
  504.  
  505. EXAMPLE
  506. -------
  507.  
  508. a1      phasor 300.0
  509. a1      =  a1 - 0.5
  510. a_      delayr 1.0
  511. adel    phasor 4.0
  512. adel    =  sin (2.0 * 3.14159265 * adel) * 0.01 + 0.2
  513.         deltapxw a1, adel, 32
  514. adel    phasor 2.0
  515. adel    =  sin (2.0 * 3.14159265 * adel) * 0.01 + 0.2
  516.         deltapxw a1, adel, 32
  517. adel    =  0.3
  518. a2      deltapx adel, 32
  519. a1      =  0
  520.         delayw a1
  521.  
  522.         out a2 * 20000.0
  523.  
  524. AUTHOR
  525. ------
  526.  
  527. Istvan Varga
  528. Aug 2001
  529.  
  530. ------------------------------------------------------------------------
  531.  ksig loopseg kfreq, ktrig, ktime0, kvalue0  [, ktime1, kvalue1,
  532. ... , ktimeN, kvalueN]
  533. ksig lpshold kfreq, ktrig, ktime0, kvalue0  [, ktime1, kvalue1,
  534. ... , ktimeN, kvalueN]
  535.  
  536. DESCRIPTION
  537.  
  538. Generate control signal consisting of linear segments delimited by two
  539. or more specified points. The entire envelope is looped at kfreq
  540. rate. Each parameter can be varied at k-rate.
  541.  
  542. INITIALISATION
  543.  
  544. No parameters at init rate.
  545.  
  546. PERFORMANCE
  547.  
  548. ksig - output signal
  549. kfreq - repeat rate in Hz or fraction of Hz
  550. ktrig - if non-zero, retriggers the envelope from start (see
  551. trigger opcode), before the envelope cycle is completed
  552. ktime0...ktimeN - times of points; expressed in fraction
  553. of a cycle
  554. kvalue0...kvalueN - values of points
  555.  
  556. loopseg opcode is similar to linseg, but the entire envelope is looped
  557. at kfreq rate. Notice that times are not expressed in seconds but in
  558. fraction of a cycle. Actually each duration represent is proportional
  559. to the other, and the entire cycle duration is proportional to the sum
  560. of all duration values.  The sum of all duration is then rescaled
  561. according to kfreq argument. For example, considering an envelope made
  562. up of 3 segments, each segment having 100 as duration value, their sum
  563. will be 300. This value represents the total duration of the envelope,
  564. and is actually divided into 3 equal parts, a part for each segment.
  565. Actually, the real envelope duration in seconds is determined by
  566. kfreq. Again, if the envelope is made up of 3 segments, but this time
  567. the first and last segments have a duration of 50, whereas the central
  568. segment has a duration of 100 again, their sum will be 200. This time
  569. 200 represent the total duration of the 3 segments, so the central
  570. segment will be twice as long as the other segments.
  571.  
  572. All parameters can be varied at k-rate. 
  573. Negative frequency values are allowed, reading the envelope backward.
  574. ktime0 should always be set to 0, except if the user wants some special
  575. effect.
  576.  
  577. lpshold is similar to loopseg, but can generate only horizontal
  578. segments, i.e. holds values for each time interval placed between
  579. ktimeN and ktimeN+1. It can be useful, among other things, for melodic
  580. control, like old analog sequencers.
  581.  
  582. Example:
  583. instr 1
  584. k0 line 1,p3,33
  585. k1 loopseg  .5, 0,      0,0, k0,32000, 66,5000, 100,0
  586. ....
  587. endin
  588.  
  589. In the previous example the envelope is repeated one time each two
  590. seconds (kfreq=.5), and the duration of first segment is varied
  591. continuously, being controlled by the output of line opcode.
  592.  
  593. ------------------------------------------------------------------------
  594. kr lineto ksig, ktime
  595. kr tlineto ksig, ktime, ktrig
  596.  
  597. DESCRIPTION
  598.  
  599. Generate glissandos starting from a control signal.
  600.  
  601. PERFORMANCE
  602.  
  603. kr - output signal
  604. ksig - input signal
  605. ktime - time length of glissando in seconds
  606. ktrig - trigger signal
  607.  
  608. lineto adds glissando (i.e. straight lines) to a stepped input signal
  609. (for example, produced by randh, randomh or lpshold).  It generates a
  610. straight line starting from previous step value, reaching the new step
  611. value in ktime seconds. When the new step value is reached, such value
  612. is held until a new step occurs. Be sure that ktime argument value is
  613. smaller than the time elapsed between two consecutive steps of the
  614. original signal, otherwise discontinuities will occur in output
  615. signal.
  616.  
  617. When used together with the output of lpshold it emulates the
  618. glissando effect of old analog sequencers.
  619.  
  620. tlineto is similar to lineto, but can be applied to any kind of signal
  621. (not only stepped signals), without producing discontinuities.  Last
  622. value of each segment is sampled and held from input signal each time
  623. ktrig value is set to a nonzero value. Normally ktrig signal consists
  624. of a sequence of zeroes (see trigger opcode).
  625.  
  626. The effect of glissando is quite different from port, since in these
  627. cases, the lines are stright. Also the context of useage is different.
  628. ------------------------------------------------------------------------
  629.