[Csnd] Csound6.0 rc1
Date | 2013-04-08 21:47 |
From | john ffitch |
Subject | [Csnd] Csound6.0 rc1 |
The developer team are relieved to announce that we have completed a release candidate 1 of csound6. As ever treat with caution, but if you have time and energy please test. Sources and an OSX binary are on Sourceforge now. Instead of a Release Note file there is a What_is_New.txt document, reproduced below. All being well we will be moving to a real release soon. ==John ffitch ======================================================================== WHAT NEEDS HEAVY TESTING ======================== Multiple strings in score --sample-accurate Arrays What is New, What has Changed ============================= Build system in cmake (and not scons as in Csound5). The loadable opcodes are found in the directory named in the environment variables OPCODE6DIR64 or OPCODE6DIR (note the 6) so it can co-exist with Csound5 Support for old hardware and C compilers has been removed; this includes Macintosh OS9 and earlier, Watcom, Borland and Symmantec C compilers. Note events can start and end in mid-kcycle. As this is an incompatible change it is only invoked with the command-line option --sample-accurate is specified. Not that this does not work for tied notes, and use of skipping initialisation has questionable use. A number of table access opcodes have been rewritten but should behave the same. Similarly diskin and diskin2 now use the same code and so diskin should be more stable Compilation can be done at any stage, new instruments are added or replace old ones. Running instances of old instrument definitions are not affected. Only limitation is that instr0 is only compiled once, in the first compilation. Two i-time opcodes for compilation: ires compileorc ifilename compiles an orchestra in ifilename (instr0 ignored) ires compilestr Sinstruments compiles an orchestra defined in Sinstruments ires is 0 if successful and non-0 if compilation failed. The old parser is totally gone. New syntax in csound6 includes +=, -=, *= and /= operators Please use += and -= for accumulating reverbs as it gives better multicore behaviour. Multicore support is totally rewritten using a different algorithm for task-dispatch, which should use less memory and fewer locks. Opcodes like add, sub, mul and div are no longer available in opcode format, only via + - * / Any opcode that returns one answer and whose type is the same as the first argument can be used as a function. This incorporates all functions in CS5, but also functions of two arguments such as taninv2 and divz, and opcodes like oscil. A statement can be broken across lines after a , = or arithmetic operation. Arrays exist in multidimensional format. They are created (usually) with init opcode. k1[] init 4 generates a k-rate 1-D array of length 4. Similarly a2[][] init 4,4 create a square 4x4 a-rate array. Elements are used via indexing in [] such as k1[2] or a2[2][3] One dimensional arrays replace tvars, and can be used in opcodes like maxtab, mintab and sumtab. Array setting can be done in left-hand side of opcodes, i.e.: aSigs[0] vco2 .1, 440 aSigs[1] vco2 .1, 880 The new realtime priority mode can be switched on with by passing the --realtime or setting the CSOUND_PARAMS field realtime_mode to 1. This has the following effects: 1) all opcode audio file reading/writing is handled asynchronously by a separate thread 2) all init-pass operations are also performed asynchronously. Functions for asynchronous audio file access have been added (see below) Analysis formats: Hetro/adsyn analysis files can be machine byte-order independent if created with -X. Down side is a longer file and a little slower loading. The het_export utility will create the independent format from the old, and het_import is no longer necessary. cvanal and lpanal will produce machine independent files if -X option is used. The convolve and lpread etc opcodes will accept either format. You are encouraged to use the machine independent form. Analysis files produced with -X can be used on other systems. The number of strings that can be used in a score line is no longer just one. It is open ended. Each instance of any instrument has a scratchpad of 4 values that persist; allows values to carry to next use of the instrument; hope it may be useful in legato etc. If a table number is given as -1 then an internal sine wave equivalent to "f. 0 8192 10 1" is used. Attempts to write to this table will give unpredictable results, but is not policed. The 8192 can be change by command line option --sine-size=# where the # is rounded up to a power of two. New API functions..... new configuration/parameter setting functions PUBLIC int csoundSetOption(CSOUND *csound, char *option); PUBLIC void csoundSetParams(CSOUND *csound, CSOUND_PARAMS *p); PUBLIC void csoundGetParams(CSOUND *csound, CSOUND_PARAMS *p); PUBLIC void csoundSetOutput(CSOUND *csound, char *name, char *type, char *format); PUBLIC void csoundSetInput(CSOUND *csound, char *name); PUBLIC void csoundSetMIDIInput(CSOUND *csound, char *name); PUBLIC void csoundSetMIDIFileInput(CSOUND *csound, char *name); PUBLIC void csoundSetMIDIOutput(CSOUND *csound, char *name); PUBLIC void csoundSetMIDIFileOutput(CSOUND *csound, char *name); new parsing/compilation functions PUBLIC TREE *csoundParseOrc(CSOUND *csound, char *str); PUBLIC int csoundCompileTree(CSOUND *csound, TREE *root); PUBLIC int csoundCompileOrc(CSOUND *csound, char *str); PUBLIC int csoundReadScore(CSOUND *csound, char *str); PUBLIC int csoundCompileArgs(CSOUND *, int argc, char **argv); new function for starting csound after first compilation PUBLIC int csoundStart(CSOUND *csound); new software bus threadsafe getters/setters PUBLIC MYFLT csoundGetControlChannel(CSOUND *csound, const char *name); PUBLIC void csoundSetControlChannel(CSOUND *csound, const char *name, MYFLT val); PUBLIC void csoundGetAudioChannel(CSOUND *csound, const char *name, MYFLT *samples); PUBLIC void csoundSetAudioChannel(CSOUND *csound, const char *name, MYFLT *samples); PUBLIC void csoundSetStringChannel(CSOUND *csound, const char *name, char *string); PUBLIC void csoundGetStringChannel(CSOUND *csound, const char *name, char *string); new table threadsafe copy functions PUBLIC void csoundTableCopyOut(CSOUND *csound, int table, MYFLT *dest); PUBLIC void csoundTableCopyIn(CSOUND *csound, int table, MYFLT *src); API has been made threadsafe so that performance and control can occur in separate threads (after a call to csoundStart() or csoundCompile()). Threadsafety is ensure by 1) use of atomic read/writing to control channels 2) spinlocks in audio and string channels 3) mutexes protecting compilation, score events and table access Invalue/outvalue and channel callbacks and callback setters have been removed. csoundQueryInterface() has been removed New internal functions in CSOUND: void (*FlushCircularBuffer)(CSOUND *, void *); flush circular buffer. void *(*FileOpenAsync)(CSOUND *, void *, int, const char *, void *, const char *, int, int, int); unsigned int (*ReadAsync)(CSOUND *, void *, MYFLT *, int); unsigned int (*WriteAsync)(CSOUND *, void *, MYFLT *, int); int (*FSeekAsync)(CSOUND *, void *, int, int); async file access. char *(*GetString)(CSOUND *, MYFLT); Extract a string originating from a score-event argument. functions removed void *(*FileOpen)(CSOUND *, void*, int, const char*, void*, const char*); The "private" parts of the API have been changed considerably. Also structures like EVTBLK have changed The LINKAGE1/FLINKAGE1 macros are renamed as LINKAGE_BUILTIN/FLINKAGE_BUILTIN Template for arate perf-pass opcodes is ------------------------------------------------------------------------ int perf_myopcode(CSOUND *csound, MYOPCODE *p) { uint32_t offset = p->h.insdshead->ksmps_offset; uint32_t early = p->h.insdshead->ksmps_no_end; uint32_t nsmps = CS_KSMPS; ... if (UNLIKELY(offset)) memset(p->res, '\0', offset*sizeof(MYFLT)); if (UNLIKELY(early)) { nsmps -= early; memset(&p->res[nsmps], '\0', early*sizeof(MYFLT)); } for (n=offset; n |
Date | 2013-04-08 21:54 |
From | Rory Walsh |
Subject | Re: [Csnd] Csound6.0 rc1 |
Wow. That's a nice read! On 8 April 2013 21:47, john ffitch |
Date | 2013-04-08 22:03 |
From | peiman khosravi |
Subject | Re: [Csnd] Csound6.0 rc1 |
oolala! On 8 April 2013 21:54, Rory Walsh <rorywalsh@ear.ie> wrote: Wow. That's a nice read! |
Date | 2013-04-08 22:06 |
From | andy fillebrown |
Subject | Re: [Csnd] Csound6.0 rc1 |
Cheers, ~ andy.f On Mon, Apr 8, 2013 at 4:47 PM, john ffitch <jpff@codemist.co.uk> wrote: The developer team are relieved to announce that we have completed a |
Date | 2013-04-08 23:26 |
From | Oeyvind Brandtsegg |
Subject | Re: [Csnd] Csound6.0 rc1 |
+1 !!! 2013/4/8 peiman khosravi <peimankhosravi@gmail.com>
Oeyvind Brandtsegg Professor of Music Technology NTNU 7491 Trondheim Norway Cell: +47 92 203 205 http://flyndresang.no/ http://www.partikkelaudio.com/ http://soundcloud.com/brandtsegg http://soundcloud.com/t-emp |
Date | 2013-04-09 10:59 |
From | "Jacques Leplat" |
Subject | Re: [Csnd] Csound6.0 rc1 |
Looks extremely appetising! Thanks for the description of the new features, very handy. Jacques ----- Original Message ----- From: "john ffitch" To: |
Date | 2013-04-10 20:18 |
From | Bill Alves |
Subject | [Csnd] Csound premiere 4/11 |
For those of you in the Los Angeles area, I'd like to invite you to a concert in Hollywood tomorrow (Thursday) night. Included on the program is a new Csound piece that involves multiple realtime stretchings of a microtonal soprano using pvsanal and pvsbufread. In the time that it takes her to repeat a melody six times, the slowest pvsynth has stretched out the melody by a factor of six, and so has completed one time through. The next slowest stretched melody has completed two repetitions of the melody, the next one has gone through it three times, the next four and the next five. http://microfest.org/breath-of-the-compassionate/ Bill Alves http://www2.hmc.edu/~alves/ http://www.billalves.com/ |
Date | 2013-04-10 21:01 |
From | Victor Lazzarini |
Subject | Re: [Csnd] Csound premiere 4/11 |
Nice, good luck on your premiere On 10 Apr 2013, at 20:18, Bill Alves wrote: > For those of you in the Los Angeles area, I'd like to invite you to a concert in Hollywood tomorrow (Thursday) night. Included on the program is a new Csound piece that involves multiple realtime stretchings of a microtonal soprano using pvsanal and pvsbufread. In the time that it takes her to repeat a melody six times, the slowest pvsynth has stretched out the melody by a factor of six, and so has completed one time through. The next slowest stretched melody has completed two repetitions of the melody, the next one has gone through it three times, the next four and the next five. http://microfest.org/breath-of-the-compassionate/ > > Bill Alves > http://www2.hmc.edu/~alves/ > http://www.billalves.com/ > > > > Send bugs reports to the Sourceforge bug tracker > https://sourceforge.net/tracker/?group_id=81968&atid=564599 > Discussions of bugs and features can be posted here > To unsubscribe, send email sympa@lists.bath.ac.uk with body "unsubscribe csound" > Dr Victor Lazzarini Senior Lecturer Dept. of Music NUI Maynooth Ireland tel.: +353 1 708 3545 Victor dot Lazzarini AT nuim dot ie |