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_10.Notes < prev    next >
Text File  |  2001-01-07  |  12KB  |  345 lines

  1. Release Notes for 4.10
  2. ======================
  3.  
  4.  
  5. Bug Fixes
  6. ---------
  7.  
  8. -z option was broken
  9.  
  10. /* ..  */ comments fixed
  11.  
  12. Inaccuracies in sorted score on Linux modified; this may open a old
  13. bug which I do not know.
  14.  
  15. Language Changes
  16. ----------------
  17.  
  18. The mixer did not have .wav tag added to default output file name.  It
  19. does now.
  20.  
  21. A bug where variables in algebraic expressions in the orchestra could
  22. only be 11 characters long (longer ones just overwrote things!) has
  23. been fixed.  There is no reasonable limit to variable name lengths.
  24.  
  25.  
  26. Opcode Fixes
  27. ------------
  28.  
  29. Small fix in sfonts to check more
  30.  
  31. rnd family allow seeding from the clock if the seed is >1
  32.  
  33. comb and alpas -- can specify delay n samples optionally using an
  34. extra optional argument.  If the argument is non-zero then the loop
  35. time is counted in samples.
  36.  
  37. vbap family bug fix
  38.  
  39. vco opcode now has optional arguments which default to 1; now has
  40. xamp, xcps, [iwave,] [ipw,] [isine,] [imaxd]
  41.  
  42. The htrf opcode does not click like it used to, but at teh expense of
  43. a more jerky motion.  This needs to be revisited.
  44.  
  45. New Opcodes 
  46. -----------
  47.  
  48. noise -- variable noise
  49.  
  50. ampdbfs, dbfsamp -- just like ampdb and dbamp except assumes 16bits is
  51. 0dB.  This will eventually be just full scale.
  52.  
  53. lpf18 -- new low pass filter, 18dB/oct resonant 3 pole LPF with tanh() dist.
  54.  
  55. tbvcf -- model some of the filter characteristics of a TB303 VCF.
  56.  
  57. sensekey -- renamed and improved
  58.  
  59. clock -- read real time clock
  60.  
  61.  
  62. Other Changes:
  63. -------------
  64.  
  65. There is a utility for removing noise (dnoise) [See below]
  66.  
  67. There is a sample-rate conversion utility (srconv)) [See below]
  68.  
  69. Note that at present neither of these utilities are guaranteed to work
  70. with MYFLT set to double.  I will fix that soon.
  71.  
  72.  
  73. Windows GUI Changes
  74. -------------------
  75.  
  76. Correct small bug in <=> button (now works)
  77. Bug in pvanal interface fixed
  78.  
  79.  
  80. ------------------------------------------------------------------------
  81. ==John ff
  82.   2000 December
  83. ========================================================================
  84. ar      noise   xamp, kbeta
  85.  
  86. noise is a white noise generator with an IIR lowpass filter.  The
  87. filter equation is
  88.         y_n = sqrt(1-beta^2) * x_n + beta Y_(n-1)
  89. where x_n is white noise.  Beta should be in the range 0 to 1.  The
  90. final signal is given amplitude xamp.
  91.  
  92. ------------------------------------------------------------------------
  93. ampdbfs, dbfsamp
  94.  
  95. amplitude to full scale decibel and vice versa.  Full scale is 0db,
  96. and is currently taken as 16bits.  These are the same as ampdb and
  97. bpamp apart from the reference amplitude.
  98.  
  99. ------------------------------------------------------------------------
  100. ar      lpf18       asig, kfco, kres, kdist
  101.  
  102.  
  103. Implementation of a 3 pole sweepable resonant low-pass filter.
  104.  
  105. PERFORMANCE
  106.  
  107. lpf18 is a digital emulation of a 3 pole (18dB/oct.) lowpass filter
  108. capable of self-oscillation with a buit-in distortion unit. It is
  109. really a 3-pole version of the Moogvcf opcode, retuned, recalibrated
  110. and with some performance improvements.  The tuning and feedback tables
  111. use no more than 6 adds and 6 multiplies per control rate.  The
  112. distortion unit itself is based on a modified tanh() function driven
  113. by the filter controls.
  114.  
  115. Note: This filter requires that the input signal be approximately
  116. normalized to one.
  117.  
  118. kfco - the filter cut-off frequency in Herz, in (0,sr/2).
  119. kres - the amount of resonance in [0,1] with self-oscillation occurring
  120. when xres is approximately one. Values slightly greater than 1 are
  121. possible for more sustained oscillation and overdrive effect.
  122. kdist - distortion amount, kdist=0 gives a clean output, kdist>0 adds
  123. tanh() distortion controlled by the filter parameters, in such a way
  124. that both low cutoff and high resonance increase the distortion
  125. amount. Some experimentation is encouraged.
  126.  
  127. Josep M Comajuncosas, gelida@intercom.es
  128.  
  129. ------------------------------------------------------------------------
  130. ar    tbvcf    asig, xfco, xres, kdist, kasym
  131.  
  132. by Hans Mikelson December 2000-January 2001
  133.  
  134. This opcode attempts to model some of the filter characteristics of a TB303
  135. VCF.  Euler's method is used to approximate the system rather than
  136. traditional filter methods.  Cut-off frequency, Q and distortion   are all
  137. coupled.  Empirical methods were used to try to unentwine  but frequency is
  138. only approximate as a result. In the future I may try to fix some problems
  139. with this opcode which may break existing orchestras relying on this opcode.
  140.  
  141. asig - The input signal should be normalized to +/- 1.0.
  142.  
  143. xfco - Cut-off frequency works best in the range 10,000 to 1500.  Values
  144. below 1000 may cause problems.
  145.  
  146. xres - Resonance or Q, typically 0-2.
  147.  
  148. kdist - Distortion amount, typically 2, changing kdist significantly from 2
  149. may cause odd fco and Q responses.
  150.  
  151. kasym - Asymmetry of resonance, typically 0-1.
  152.  
  153. Test orchestra and score:
  154.  
  155. ;---------------------------------------------------------
  156. ; TBVCF Test
  157. ; Coded by Hans Mikelson December, 2000
  158. ;---------------------------------------------------------
  159. sr =  44100   ; Sample rate
  160. kr =  4410   ; Kontrol rate
  161. ksmps =  10   ; Samples/Kontrol period
  162. nchnls =  2   ; Normal stereo
  163.  zakinit  50, 50
  164.  
  165.  instr 10
  166.  
  167. idur = p3            ; Duration
  168. iamp = p4            ; Amplitude
  169. ifqc = cpspch(p5)    ; Pitch to frequency
  170. ipanl = sqrt(p6)      ; Pan left
  171. ipanr = sqrt(1-p6)    ; Pan right
  172. iq      =       p7
  173. idist   =       p8
  174. iasym   =       p9
  175.  
  176. kdclck linseg 0, .002, 1, idur-.004, 1, .002, 0 ; Declick envelope
  177.  
  178. kfco expseg 10000, idur, 1000 ; Frequency envelope
  179.  
  180. ax vco 1, ifqc, 2, 1   ; Square wave
  181. ay tbvcf ax, kfco, iq, idist, iasym ; TB-VCF
  182. ay      buthp   ay/1, 100    ; Hi-pass
  183.  
  184.  outs ay*iamp*ipanl*kdclck, ay*iamp*ipanr*kdclck
  185.  endin
  186.  
  187. f1 0 65536 10 1
  188. ; TeeBee Test
  189. ; Sta Dur Amp   Pitch Pan Q Dist1 Asym
  190.  
  191. i10 0 0.2 32767 7.00 .5 0.0 2.0 0.0
  192. i10 0.3 0.2 32767 7.00 .5 0.8 2.0 0.0
  193. i10 0.6 0.2 32767 7.00 .5 1.6 2.0 0.0
  194. i10 0.9 0.2 32767 7.00 .5 2.4 2.0 0.0
  195. i10 1.2 0.2 32767 7.00 .5 3.2 2.0 0.0
  196. i10 1.5 0.2 32767 7.00 .5 4.0 2.0 0.0
  197. i10 1.8 0.2 32767 7.00 .5 0.0 2.0 0.25
  198. i10 2.1 0.2 32767 7.00 .5 0.8 2.0 0.25
  199. i10 2.4 0.2 32767 7.00 .5 1.6 2.0 0.25
  200. i10 2.7 0.2 32767 7.00 .5 2.4 2.0 0.25
  201. i10 3.0 0.2 32767 7.00 .5 3.2 2.0 0.25
  202. i10 3.3 0.2 32767 7.00 .5 4.0 2.0 0.25
  203. i10 3.6 0.2 32767 7.00 .5 0.0 2.0 0.5
  204. i10 3.9 0.2 32767 7.00 .5 0.8 2.0 0.5
  205. i10 4.2 0.2 32767 7.00 .5 1.6 2.0 0.5
  206. i10 4.5 0.2 32767 7.00 .5 2.4 2.0 0.5
  207. i10 4.8 0.2 32767 7.00 .5 3.2 2.0 0.5
  208. i10 5.1 0.2 32767 7.00 .5 4.0 2.0 0.5
  209. i10 5.4 0.2 32767 7.00 .5 0.0 2.0 0.75
  210. i10 5.7 0.2 32767 7.00 .5 0.8 2.0 0.75
  211. i10 6.0 0.2 32767 7.00 .5 1.6 2.0 0.75
  212. i10 6.3 0.2 32767 7.00 .5 2.4 2.0 0.75
  213. i10 6.6 0.2 32767 7.00 .5 3.2 2.0 0.75
  214. i10 6.9 0.2 32767 7.00 .5 4.0 2.0 0.75
  215. i10 7.2 0.2 32767 7.00 .5 0.0 2.0 1.0
  216. i10 7.5 0.2 32767 7.00 .5 0.8 2.0 1.0
  217. i10 7.8 0.2 32767 7.00 .5 1.6 2.0 1.0
  218. i10 8.1 0.2 32767 7.00 .5 2.4 2.0 1.0
  219. i10 8.4 0.2 32767 7.00 .5 3.2 2.0 1.0
  220. i10 8.7 0.2 32767 7.00 .5 4.0 2.0 1.0
  221.  
  222. ------------------------------------------------------------------------
  223. kt      clock
  224.  
  225. Return the value of the wall-clock time as provided by the operating
  226. system, in seconds.  Note that the resolution of this clock may be
  227. coarser or finer than that.  On GNU/Linux it works to microseconds; on
  228. Windows to seconds.
  229.  
  230. ------------------------------------------------------------------------
  231.  
  232. Utility: dnoise
  233.  
  234. Usage: dnoise [flags] input_file
  235.         flags:
  236.         -N = # of bandpass filters (1024)
  237.         -w = filter overlap factor: {0,1,(2),3} DON'T USE -w AND -M
  238.         -M = analysis window length (N-1 unless -w is specified)
  239.         -L = synthesis window length (M) 
  240.         -D = decimation factor (M/8)
  241.         -b = begin time in noise reference soundfile (0)
  242.         -B = starting sample in noise reference soundfile (0)
  243.         -e = end time in noise reference soundfile (end)
  244.         -E = final sample in noise reference soundfile (end)
  245.         -t = threshold above noise reference in dB (30)
  246.         -S = sharpness of noise-gate turnoff (1) (1 to 5)
  247.         -n = number of FFT frames to average over (5)
  248.         -m = minimum gain of noise-gate when off in dB (-40)
  249.         -V: verbose - print status info
  250.         -A : AIFF format output
  251.         -W : WAV format output
  252.         -J : IRCAM format output
  253.  
  254.  
  255. This is a noise reduction scheme using frequency-domain noise-gating.
  256. This should work best in the case of high signal-to-noise with
  257. hiss-type noise.  The algorithm is that suggested by Moorer & Berger
  258. in "Linear-Phase Bandsplitting: Theory and Applications" presented at the 76th
  259. Convention 1984 October 8-11 New York of the Audio Engineering Society
  260. (preprint #2132) except that it uses the Weighted Overlap-Add
  261. formulation for short-time Fourier analysis-synthesis in place of the
  262. recursive formulation suggested by Moorer & Berger.  The gain in each
  263. frequency bin is computed independently according to
  264.  
  265. gain = g0 + (1-g0) * [avg / (avg + th*th*nref)] ^ sh
  266.  
  267. where avg and nref are the mean squared signal and noise respectively
  268. for the bin in question.  (This is slightly different than in Moorer &
  269. Berger.)  The critical parameters th and g0 are specified in dB and
  270. internally converted to decimal values.  The nref values are computed
  271. at the start of the program on the basis of a noise_soundfile
  272. (specified in the command line) which contains noise without signal.
  273. The avg values are computed over a rectangular window of m FFT frames
  274. looking both ahead and behind the current time.  This corresponds to a
  275. temporal extent of m*D/R (which is typically (m*N/8)/R).  The default
  276. settings of N, M, and D should be appropriate for most uses.  A higher
  277. sample rate than 16KHz might indicate a higher N. 
  278.  
  279. Mark Dolson
  280. August 26, 1989
  281.  
  282. and
  283.  
  284. John ffitch
  285. 2000 December 30
  286.  
  287. ------------------------------------------------------------------------
  288. Utility: srconv
  289.  
  290. Convert the sample rate of an audio file sample rate Rin and outputs
  291. them at sample rate Rout.  Optionally the ratio (Rin / Rout) may be
  292. linearly time-varying according to a set of (time, ratio) pairs in an
  293. auxiliary file.
  294.  
  295. Usage: srconv [flags] infile
  296.         flags:
  297.         -P num pitch transposition ratio (srate / r) [don't specify both P and r]
  298.         -Q num quality factor (1, 2, 3, or 4: default = 2)
  299.         -i filnam break file
  300.         -r num output sample rate (must be specified)
  301.         -o fnam sound output filename\n
  302.  
  303.         -A create an AIFF format output soundfile;
  304.         -J create an IRCAM format output soundfile;
  305.         -W create a WAV format output soundfile;
  306.         -h no header on output soundfile;
  307.         -c 8-bit signed_char sound samples;
  308.         -a alaw sound samples;
  309.         -8 8-bit unsigned_char sound samples;
  310.         -u ulaw sound samples;
  311.         -s short_int sound samples;
  312.         -l long_int sound samples;
  313.         -f float sound samples;
  314.         -r N orchestra srate override;
  315.         -K Do not generate PEAK chunks;
  316.         -R continually rewrite header while writing soundfile (WAV/AIFF);
  317.         -H# print a heartbeat style 1, 2 or 3 at each soundfile write;
  318.         -N notify (ring the bell) when score or miditrack is done;
  319.         -- fnam log output to file
  320.  
  321. This program performs arbitrary sample-rate conversion with high
  322. fidelity.  The method is to step through the input at the desired
  323. sampling increment, and to compute the output points as appropriately
  324. weighted averages of the surrounding input points.  There are two
  325. cases to consider: 
  326.   1) sample rates are in a small-integer ratio - weights are obtained
  327.      from table, 
  328.   2) sample rates are in a large-integer ratio - weights are linearly
  329.     interpolated from table.
  330.  
  331. Calculate increment: if decimating, then window is impulse response of
  332. low-pass filter with cutoff frequency at half of output sample rate;
  333. if interpolating, then window is impulse response of lowpass filter
  334. with cutoff frequency at half of input sample rate.
  335.  
  336.  
  337. Mark Dolson
  338. August 26, 1989
  339.  
  340. and
  341.  
  342. John ffitch
  343. 2000 December 30
  344. ------------------------------------------------------------------------
  345.