Csound is copyright 1986, 1987 by the Massachusetts Institute of Technology. All rights reserved.
Developed by Barry L. Vercoe at the Experimental Music Studio, Media Laboratory, M.I.T., Cambridge, Massachusetts, with partial support from the System Development Foundation, and from NSF Grant IRI-8704665.
Permission to use, copy, or modify these programs and their documentation for educational and research purposes only and without fee is hereby granted, provided that this copyright and permission notice appear on all copies and supporting documentation. For any other uses of this software, in original or modified form, including but not limited to distribution in whole or in part, specific prior permission from M.I.T. must be obtained. M.I.T. makes no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty.
MODIFICATIONS BY MICHAEL GOGINS
I have modified this build of Csound to use plugin opcodes, and to increase the capacity of the adsyn opcode from 50 to 1,024 partials. I have also optimized Csound for Windows 95. This build of Csound is a true 32 bit executable that does not require any external memory management programs. This build does not include function table graphs.
The idea of plugins is that musicians and programmers all over the world can design and build opcodes, the "words" in the Csound language, that will work with Csound without requiring Csound to be relinked in order to use them. This makes it possible for the Csound community to exchange opcodes at will.
All plugins must have the filename extension "OPC", e.g. "MyOpcode.OPC". Plugins must be compiled as Win32 dynamic link libraries using 8 byte memory alignment, so that both Csound and opcodes agree about the alignment of the function table structures and opcode definition structures. Plugin libraries must export the following function:
__declspec(dllexport) long CSOpcodeRegister(long Subscript,
float* pfEsr,
float* pfKsr,
int* pnKsmps,
int* pnNchnls,
FUNC* Flist[],
OENTRY* pEntry);
which reads pfEser, pfKsr, pnKsmps, pnNchnls, and Flist to obtain global variables required for signal processing, and fills in the fields of pEntry to register the opcode with Csound in accordance with the Csound manual. The function must return true for each opcode in the library, and 0 when there are no more opcodes to register, so that Csound can iterate through each opcode in a library.
An environment variable OPCODEDIR should be used to define the plugin directory. Alternatively, Csound will attempt to register OPC libraries in the current working directory.
The "SynthesisToolkit.OPC" file in this release is such a library. It makes all of the instruments demonstrated in Perry R. Cook's "Synthesis Toolkit 95" available as Csound opcodes. These instruments include physical modeling instruments, FM synthesis instruments, modal synthesis instruments, and other instruments.