Hi Csounders! I have been working on some new unit generators, and on bug fixes for table read. The source code is suitable for patching to other versions of Csound and is well documented. I have been compiling with DJGPP GNU MSDOS compiler and the CSOUND.EXE file is available as well. All this is on my WWW site, which I will soon be updating. At the moment, the files are in their own subdirectory and you should point your browser directly at: http://www.ozemail.com.au/~firstpr/csound See CSRW_DOC.TXT for an explanation of what my priorities are with this work - and how I hope to keep this source up-to-date. - Robin Whittle Here is a list of the files, and then a quick run-down of the new features. Read CSRW_DOC to get the big picture. CSJF_EXE.ZIP 728,110 John Fitches complete set of CSOUND.EXE and utility programs 17 April 1995. CSJF_SRC.ZIP 406,232 Source for the above. This is the basis of my work. CSRW_DOC.TXT 29,152 Master doco file. CSRW_DOC.ZIP 156,571 ZIP of all doco and new or changed source code. CSRW_EXE.ZIP 162,709 ZIP with my CSOUND.EXE 1.00 only. CSRW_SRC.ZIP 400,261 Complete source for CSOUND.EXE only - for DJGPP. CS_MAN.TXT 317,564 Text version of Barry Vercoe's Csound manual. CS_MAN.ZIP 110,840 ZIP of the above. CS_RAND.TXT 12,140 Doco on my changes to the xlinrand family. TABREAD.TXT 13,962 Doco on fixes and k rate control - table read. UGRW1.TXT 44,373 Describes most of my new unit generators. UGRW2. TXT 2,633 Describes the rest - k rate filters and limit. This CSOUND.EXE (in CSRW_EXE.ZIP) is compiled with the DJGPP 1.12 compiler, and contains a number of enhancements. My work is based on John Fitch's release of Csound code on 17 April 1995. I will attempt to keep up with bug fixes and well documented improvements from this and other sources. This CSOUND.EXE has the following characteristics: 1 - It needs a 386, 486 or Pentium with a maths coprocessor. So a 386 DX or SX is OK if you have a 387 plugged in. Any Intel 486 DX will do - a 486 SX has no maths coprocessor. 2 - It does not do graphics. I probably can get this working, but it will be a lot of work I think. Use one of John Fitch's CSOUND.EXEs if you need to display graphs. 3 - It has several bugs removed from the table and tablei ugens. 4 - It has a whole swag of new ugens as documented below. 5 - It runs under MSDOS, a Win3.1 DOS box, and I expect, a WIN95 DOS box. I am not planning a Windows graphics version at present. 6 - I am only working with the main CSOUND program - not the utilities. I am not maintaining or distribute the the source for them. This carries the same MIT version (3.29) as John Fitch's source from which I worked. I don't know anything about these version numbers. It also carries John's version 12. To this I have added my version number 1.00 - for the 9 September 95 release. This CSOUND.EXE can handle instrument numbers up to 1200 and function table numbers up to 1000. There are some limits on the length of the orchestra file. I have not investigated this yet. UGENS2 Bugs in table read code fixed. New versions of table and ------ tablei enable the table number to be controlled by a k rate variable. See TABREAD.TXT. Modified code is in UGENS2.C and UGENS2.H. These bug fixes, clearer documentation and k rate control are intended to be a lasting part of Csound if people like them. UGRW1 Table write ugens - for writing directly into function tables ----- at i k or a rates - with i or k rate control of the table number. (See TABREAD.TXT for krate control details.) Ugens for manipulating data in tables: tablegpw, tableleng, tablemix and tablecopy. Ugens for reading and writing to table locations sequentially from a rate variables. One of the uses of this is to read a rate data into a table (or several a rates into several tables), and use _any_ k rate code to process the data, before converting it back to a rate. This means that when you really want to, you can use all of Csounds ugens and operations on a rate code. It is somewhat slow, but faster than running with ksmps = 1 and using upsamp and downsamp. Global patching of i, k and a rate signals based on numbers generated at i or k rate. This is really a fudge until the language supports arrays. This is called the "zak" system. However it is extremely useful. There is a numbered set of "zk" k rate patch points and another set of "za" a rate patch points. A variety of ugens read, write and mix to these - with k rate control over which patch point is used. This enables the code in each instrument to decide where to get and send a and k rate signals when working with other instruments. Simple ugens to read the time elapsed since the start of the piece or the initialisation of the instrument. Two ugens for printing k rate variables as numbers on the screen. The second of these allows four variables to be printed in the midst of a text string - by printf(). It also allows any byte to be printed and makes it easy to insert escape codes into the text for cursor control. These, or something like them are intended to become a lasting part of Csound if people like them. The "zak" system is very useful for patching things, but not as good as a rewrite of Csound to support arrays - so it is only intended to last *until* that happens. See UGRW1.TXT. New code in UGRW1.C and UGRW1.H. UGRW2 kport - a low pass filter for k rate variables like port, but ----- now with a k rate frequency control. Filters for k rate variables: ktone, katone, kreson & kareson limit and ilimit ugens for setting k (or i) rate upper and lower limits on (i,) k or a rate variables. See UGRW2.TXT. CMATH A 31 bit random number generator replaces the previous 15 bit ----- one. A seed ugen is provided to set it. This global random number generator is used for all of the new set of noise (random number) ugens introduced early in 1995 by Paris Smarargdis - the zlinrand family. To complete the family, there is now an xunirand ugen for uniform distribution of random numbers between 0 and the value given to the ugen. See CS_RAND.TXT. Also a slight change has been made to entry.c to make the inorm parameter of kpow and apow optional like README.csound says it is. ÿ