Version Info 0.3.1
This is a small update, containing the 3.46 changes and one bug fix.
Includes fog opcode. Fixed bug in options menu. (5/13/97)
Version Info 0.3.0
This the latest release of Csound from Mike Berry, Matt Ingalls and
Dave Madole at Mills College. We've been working on it on and off for a
few months and apologize for the repeated "Real Soon Now" messages
over the last couple of months. There is still a lot we'd like to do, but
this seems like a good stopping point.
As always, contact csound-dev@eartha.mills.edu
with bugs and complaints
Basic Changes
The foreground app is now just called "Csound", the background
app is just called "perf".
As usual, remove (copy to diskette) all previous versions of csound.ppc
and perf.ppc from your file system. Among major upgrades:
A new ugen that reads samples directly from disk ("diskin");
Ability to read and write AIFF-C Floating Point Files; Ability to handle
realtime input; Extended MIDI opcodes and (even) more robust MIDI implementation;
integration of John Fitch's "Bath" code brings in many more ugens..
There are also numerous minor upgrades, bug fixes, etc.
The details are included below, which are copied from the release notes.
We'd like to thank all of the users of our port for their feedback
and support over the last year. We'll probably be putting a hiatus on development,
except for bug fixes, at least for the summer.
Csound (Front End) Changes
CHANGES TO FRONT END for version 0.3b0
-changed popup menu to AIFF/C -added the real-time "audio in"
check box -changed default buffers to more reasonable numbers. -hard wired
RT-MIDI to 16-bit ints -Fixed 'new project'/'open project'/ and drag&drop
project bugs -Fixed more project bugs that the fixes created -Got rid of
'command line' from file menu
-Made the post processor/text editor menu items only options. To choose
a post processor or text editor you must now do so in the "general
preferences" dialog box. However, if you enable one of the options
and there has not been an application yet selected, a courtesy dialog is
displayed for you to choose one.
-Created a 'general prefs' dlog launched from the prefs menu, containing:
- text editor/post processor selection - a safety-file overwrite check
box (if the option is selected, then before launching perf, csound checks
to see if the file exists in SFDIR. if it does, a standard put file comes
for you to type in a new file name.) - automatically launch perf after
scoregeneration check box.
-Many Score Generator Additions/Improvements: (SEE OTHER DOCUMENT FOR
NEW FEATURES) - put in the better robin whittle uniform random generator
- put in a min/max option (a 'P') - exponetial interpolation - quantization
- exponential random distribution. - fixed bug when more than one gesture
of data - disabled the oK-open now button when scogen brings up the text
editor chooser dlog. - added a 'cancel' button (hack that sometimes works)
- front end passes to perf -oName, where Name is only the soundfile, not
full path as new SFDIR flag (see perf changes, below)
-A brand new "pretty" powerplant front end is in progress
and should be in the next release...
perf Changes
Changes to perf.ppc:
Now it is just called "perf".
Okay then, changes to "perf":
BUG FIXES:
- Fixed a bug that caused a crash when a MIDI orchestra failed to compile.
Removed some redundant/unnecessary/debugging messages, especially from
OMS.
Sundry fixes to transport logic.
ADDITIONS/UPGRADES:
32-bit floating point file I/O. perf reads/writes AIFF-C files with
compression type FP32. This is experimental but should be compatible with
future releases of SoundHack. Thanks to Tom Erbe for his cooperation.
Real-time input. Note that there is currently NOTHING WE CAN DO about
250 ms (approximately) delay, as it is built into the Toolbox Sound Input
Manager. Included "RTin" project in "example orcs &
scos" folder.
sndinfo plays sound.
Mostly integrated John Fitch source code distribution into our source
code, resulting in "way too many" unit generators, expanded capabilities
in lpanal. See release documentation for complete list of opcodes implemented
in this release. (note: also implemented "-z" option but this
can currently only be entered on the command line (see below).
Note: "peak" ugens not implemented.
Extended MIDI opcodes from Mike (see doc).
New opcode by Matt to play sample directly from disk (see "0.3b
New Ugens").
If perf is launched by clicking on perf instead of started from CSound,
STR resource is read for default command line. Currently this is not saved
and can only be changed and saved using a resource editor.
Strategically located buffer flushes in perf so that even if text buffer
is set to large value (for optimization) real important messages (like
orchestra compilation & score reading) will be reported. This should
help people that have the "thought perf died" problem.
Increased hetro analysis bands to 1024.
Increased PMAX (max pfields) to 1024.
changed flags: (for the command line entry) '-X' for SFDIR. '-Q' for
SADIR '-q' for SSDIR (like before) '-z' prints list of currently availible
opcodes fixed bug so now input files are looked in SFDIR if not in SSDIR....
It has been a long time - I'm sure there are other things.
KNOWN BUGS:
Still hear about crashes on graphics windows resize (in fact I've seen
it). Stack traces would be appreciated.
New Ugens
New Ugens in 0.3b0
- diskin -----> a new ugen like 'soundin', but with linear interpolation,
pitch shift, direction change, and a "wraparound" option.
Syntax:
a1[[,a2[,a3,a4]] diskin ifilcod,kpitch[,iskiptim][,iwraparound][,iformat]
kpitch - can be any real number. a negative number signifies backwards
playback. The given number is a pitch ratio, where: 1= norm pitch, 2=oct
higher, 3=12th higher,etc; .5= oct lower, .25=2oct lowr, etc; -1= norm
pitch backwards,-2=oct higher backwrds,etc..
iskiptim - the skip time in seconds.
iwraparound - 1=on, 0=off (wraps around to end of file either direction)
iformat - format of input file (see soundin doc)
Warnings: 1) 8-bit files haven't been tested. 2) if backwards playback
and 'wraparound', then you must have at least one sample's worth for skiptime.
--------------------------------------------------------------------------
- playram -----> a new ugen
pretty self explanatory. (and pretty obnoxious)
Syntax:
a1[[,a2[,a3,a4]] playram
Warnings: 1) Will only play for ((RAM size)/(sampframesize*sr)) seconds,
then will output silence
--------------------------------------------------------------------------
Changes to Score Generator
************** New Features in the Score Generator ************************
There are a number of new features to the score generator. You can
still use it the old "simple" way, however. (except that p1 now
defaults to the normal "center/width" mode)
p0 is the same, except the "volume/density scaling flag"
is now an integer representing the sum of these "global" options:
1 = scale volumes according to density (same as last version) 2 = gesture's
function segment lengths (n1,n2,etc...) will be specified in seconds, NOT
relative as default. 4 = let note durations overlap gesture duration (if
this option is NOT enabled, note durations will be truncated to fit within
the given gesture duration.
for example, the p0 statement:
p0 0 40 7982 5
means create a gesture from 0 to 40 seconds, with a random seed of
7982 and scale volumes and let note durations overlap past 40 seconds.
======
The other 'p' functions act just like before, except there are now
optional parameters for more control. To turn on these "extended"
options, you must make the PFIELD NUMBER NEGATIVE!
SYNTAX The entire syntax is as follows, which should be on all one
line. Brackets ([ ]) signify "extended" parameters.
p/P[-]# code [rdist#] [quant#] [exp#] a1 a2 [ar] [aq] [aex] n1 b1 b2
[br] [bq] [bex] n2...x1 x2 [xr] [xq]
(notice the last ex [xex] is not needed.)
DESCRIPTION
p/P: you can use either 'p' or 'P'. 'p' signifies that ordinate values
are "center"/"width" 'P' signifies that, in the random
range, the first ordinate value is the "minimum" - second ordinate
value is "maximum"
#: the pfield number this function is representing. -: if the pfield
number is negative, "extended" options.
code: the sum of option types. 1 = exponential random distribution
2 = quantize 4 = exponential interpolation
rdist#: required if <code> is odd. 0 = use exponential random
distribution in pfields (ar,br,etc...) non-0 = the exponential random distribution
factor for the entire p-function using the equation: a2*pow(rand(),r#);
where rand() returns a uniformly distribute a random number from 0-1 and
r# is the distribution factor.
quant#: required if <code> = 2,3,6,or7. 0 = use quantize params
in pfields (aq, bq, etc...) non-0 = the quantization for this function.
the quantization is simply the value that is rounded to the nearest after
interpolation. (.01 will make all generated values be rounded to the nearest
hundredth, for example)
exp#: required if <code> = 4,5,6,or7. 0 = use exponential interpolation
factor given in pfields (aex, bex, etc...) non-0 = the exponential interpolation
factor. this factor is the exponent the linear interpolation factor is
raised to. (think of it as the function y = x^exp#, where 0<x<1 and
0<y<1. and the interpolated data is: a1 + y*(a2-a1). )
a1,b1,... first ordinate values, either specifying "center"
for a 'p' function or "minimum" for a 'P' function.
a2,b2,... second ordinate values, either specifying "width"
for a 'p' function or "maximum" for a 'P' function.
ar,br,... ordinate values for "extended" random distribution
option. only used if rdist# is non-0.
aq,bq,... ordinate values for "extended" qunatize option.
only used if quant# is non-0.
aex,bex,..ordinate values for "extended" exponential interpolation.
only used if exp# is non-0. unlike aq and ar, these values will ALWAYS
be linearly interpolated.
EXAMPLE:
P-5 7 .5 0 2 0 1 .5 1 .5 10 .1 1 0 1 .001
- is a function describing the 5th pfield for the generated gesture.
- it uses all the "extended" options by having a negative pfield
number and a '7' for the code (1+2+4). - random distribution resembles
the function curve y=x^.5, where 0<x<1 and 0<y<1 throughout
the entire generation, which means the randomness is "weighted"
towards the "maximum" limited slightly. - numbers are interpolated
between ordinate values exponentially with a constant path remsembling
a function curve of y=x^2. - quantization changes throughout the gesture,
first starting rounding all values to the nearest .5, gradually to .1,
then continues to reduce the quantization until it is rounding the generated
values to the nearest .001 at the end of the gesture.
matt ingalls, Dave Madole, Mike Berry