[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 |