CSOUND BUGS & WISHES February 20th 1997 Bugs: opcodes that dont work as advertised. Wishes and Improvements: Things we'd like to see in Csound. Usage: more or less obscure things to avoid. Difficult things : Solutions to some arcane procedures in Csound. ******************************************************************* BUGS: 1- linenr does *not* work (ie: stretch durations beyond note end) when used with regular numeric scores. 2- When default-seeded, the randi and randh ugens will wait the time of their given period to issue their first value. A specified positive seed (0<->1) will work properly. A negative, non-reiniting seed, will always give a 0 as its first value and keep this value for a time of twice the given period. 3- The optional base frequency parameter of loscil is not optional for aiff files. Loscil will not work if it is not given. 4- xpoisson and xbeta dont work. 5- Illegal variable names: asin , acos, ksin, kcos, iint, ifrac, kint, kfrac. There may be others! 6- lpanal and pvanal do *not* accept stereo files as input. 7- GEN21 has a number of odd inconsistencies. The "level" parameter is apparently needed for all GEN21 types. 8- Delayed table loads do not work in all cases -- code was never written for them. 9- The analysis programs produce files which are not machine independent; they rely on byte order. 10- Linseg on the PC will not work for a single segment. 11- The random opcodes generate samples to 16-bits precision. This means, no matter how they are seeded, random signals will cycle after 65536 samples. Robbon Whittle' opcodes solve this problem but these have not been ported to the main Bath Csound release. ********************************************************************* WISHES AND IMPROVEMENTS: 1- replace the (limitating) table and instrument numbering mechanism with symbol tables so that we can refer to them by their names. 2- provide for a really expressive language (as opposed to the current fake assembler syntax). These language front ends could be plug-ins once we have an API to the orchestra translator. 3- introduce a message passing wrapper to csound to provide a means for the syntheis code to be called from any environment allowing any software to call routines on the server and receive a reply. This interface to the csound code could allow the albatros of a terminal interface to be removed. 4- Robin Whittle's very useful table and random opcodes should be integrated into the general Bath release. 5- Develop a mechanism for users to insert their own u/gs into a binary system. Probably DLLs on a PC, dynamic loading or linking on Unix, no model on MAC yet. [Goggins has done PC but I have not yet checked it] 6- Some improvements on granular synthesis suggested by Russell Pinkston. 7- Improvement of the PC user interface, controllable graphics, user init files etc. 8- Make the export/import utilities easier to use, and more secure. 9- Get the compressor from Netherton implemented 10- Write more signal processing external utilities 11- Finish the graph/table generator (currently for Zortech only) 12- Option for storing samples for loscil in 16bit format 13 -Finish delayed table load for all cases 14- Byte order independence in pvoc etc anal files 15 -Make all version of Csound re-entrant 16 -Use CPP preprocessing in score files, and perhaps orc files 17 -Fix LPANAL on MAC ********************************************************************* USAGE: 1- instruments are evaluated in ascending order of instrument number for all three passes (i, k and a). For instance, this means a global variable passed on by instrument # 99 and used by instrument # 1 will not be properly initialised. 2- A signal containing any amount of DC-offset put through a recirculating delay will gradually move out-of-range from the accumulated positive (or negative) offset. ************************************************************** DIFFICULT THINGS: 1- Tied notes. Solution by Marc Resibois ------------- [ protamento.sco ] ------------------ ; Portamento player test ; table for original signal f 1 0 4096 10 1 ; Sine Wave ; Score ; start duration amplit pitch i1 0.0 -1 32000 8.01 i1 1.0 -0.5 32000 8.04 i1 1.5 -0.5 32000 8.09 i1 2.0 2 32000 8.06 e ------------- [ protamento.orc ] ------------------ ; ; Basic Portamento instrument giold init -1 instr 1 istart = giold ; Determine Start-End Frequencies iend = cpspch(p5) if giold>0 igoto nofirst istart = iend nofirst: giold =iend ; Store freq for later kpch expseg istart,0.1,iend,10,iend ; Generate The Frequency Ramp tigoto skiposcinit ; avoid init-phase of osc if tied note using tigoto awave oscil 32000,kpch,1 skiposcinit: out awave endin **************************************************************