csound-6.10.0/ 0000775 0000000 0000000 00000000000 13216533447 0013101 5 ustar 00root root 0000000 0000000 csound-6.10.0/.editorconfig 0000664 0000000 0000000 00000000307 13216533447 0015556 0 ustar 00root root 0000000 0000000 root = true
[*]
insert_final_newline = true
trim_trailing_whitespace = true
end_of_line = lf
indent_style = space
indent_size = 4
#[*.{py,h,hh,hpp,c,cc,cpp}]
#indent_style = space
#indent_size = 4
csound-6.10.0/.gitignore 0000664 0000000 0000000 00000005401 13216533447 0015071 0 ustar 00root root 0000000 0000000 # Intermediate object files
*.o
*.os
*.so
# Opcode libraries
/lib*.*
/tclcsound.*
/csladspa.*
# Final library
/libcsound*
# SCons cache and log
/.scon*
/config.log
# Bison & Flex output
/Engine/csound_orclex.c
/Engine/csound_orcparse.[hc]
/Engine/csound_orcparse.output
/Engine/csound_prelex.c
# gettext output files are all placed in subdirs
/po/*/
# Output executables
atsa
atsa.exe
cs
cs.exe
csb64enc
csb64enc.exe
csbeats
csbeats.exe
csound
csound.exe
cstclsh
cstclsh.exe
cswish
cswish.exe
cvanal
cvanal.exe
dnoise
dnoise.exe
envext
envext.exe
extract
extract.exe
extractor
extractor.exe
het_export
het_export.exe
het_import
het_import.exe
hetro
hetro.exe
lpanal
lpanal.exe
lpc_export
lpc_export.exe
lpc_import
lpc_import.exe
mkdb
mkdb.exe
makecsd
makecsd.exe
mixer
mixer.exe
pv_export
pv_export.exe
pv_import
pv_import.exe
pvanal
pvanal.exe
pvlook
pvlook.exe
scale
scale.exe
scot
scot.exe
scsort
scsort.exe
sdif2ad
sdif2ad.exe
sndinfo
sndinfo.exe
srconv
srconv.exe
winsound
winsound.exe
# PD external
/csoundapi*.*
# C++ lib
/libcsnd*
# Python wrappers
csnd.py
csnd.pyc
_csnd.so
# CsoundAC
/libCsoundAC*
CsoundAC.py
csladspa.so
# SWIG Wrappers
*_wrap.cc
*_wrap.h
interfaces/*.java
csnd.jar
*.class
#Loris anf Perry's stuff
Opcodes/Loris/*
loris.py
Opcodes/stk/*/
# Vim swap files
*.swp
## backups
*~
## Others
TAGS
po/old_*
*.wav
##Release_Notes/*
.DS_Store
/CsoundLib64*
examples/java/CSDPlayer.jar
examples/java/CsoundEditor.jar
## Build scripts
build
buildD
## Installer Resources
installer/macosx/DmgResources
installer/macosx/201*
## Generated Doxygen
doc/html
doc/doxygen
#Generated files if running in-source CMake build
cmake_install.cmake
CMakeFiles/
Makefile
cmake_install.cmake
/cmake_uninstall.cmake
CTestTestfile.cmake
/CMakeCache.txt
/interfaces/*wrap.cxx
.dylib
/csound_orclex.c
/csound_orcparse.c
/csound_orcparse.h
/csound_orcparse.output
/csound_prelex.c
/frontends/beats.tab.c
/frontends/beats.tab.h
/frontends/beatslex.yy.c
/tests/c/*Test
*.swo
results.txt
*.pyc
Custom.cmake
Engine/.csound_orc.l.swn
Engine/.csound_orc.y.swn
*.swm
android/CSDPlayer/assets/samples/README
android/CSDPlayer/assets/samples/hrtf-44100-left.dat
android/CSDPlayer/assets/samples/hrtf-44100-right.dat
android/CSDPlayer/assets/samples/hrtf-48000-left.dat
android/CSDPlayer/assets/samples/hrtf-48000-right.dat
android/CSDPlayer/assets/samples/hrtf-96000-left.dat
android/CSDPlayer/assets/samples/hrtf-96000-right.dat
android/CSDPlayer/assets/samples/sf_GMbank.sf2
nacl/csound_orclex.c
nacl/csound_orcparse.c
nacl/csound_orcparse.h
nacl/csound_prelex.c
nacl/pnacl
# Xcode
xcshareddata/
*.xcuserstate
*.xccheckout
project.xcworkspace/
xcuserdata/
emscripten/examples/javascripts/CsoundObj.js
emscripten/examples/javascripts/libcsound.js
*.bz2
tests/soak/CheckSums
tests/soak/Output
Opcodes/stk/
csound-6.10.0/.travis.yml 0000664 0000000 0000000 00000003616 13216533447 0015220 0 ustar 00root root 0000000 0000000 language: cpp
compiler:
- gcc
# - clang
sudo: false
dist: trusty
env:
global:
- secure: "pOICMBtfwljj450Vht1D2/XvtUm07edkbiUI0+PCnfuwiwBFJyqY919whZu+CrplQvkVS+RzvxT3wpgkVccflo0uvNJ7NwfKksRqrUKwTp59nGIwjUsnDjI3YkxOQyxIdIPsSm3bUxXVy/Jge0v6vzvbbPXKxyAxKsupnUBYOwM="
- OMP_NUM_THREADS=4
- VERBOSE=1
before_script:
- mkdir -p build
script:
- "[ ${COVERITY_SCAN_BRANCH} == 1 ] || (cd $TRAVIS_BUILD_DIR/build && cmake .. -DBUILD_STATIC_LIBRARY=ON -DBUILD_TESTS=ON && make && make test && make regression && make csdtests)"
###
addons:
coverity_scan:
project:
name: "csound/csound"
description: "A user-programmable and user-extensible sound processing language and software synthesizer"
notification_email: CSOUND-DEV@listserv.heanet.ie
build_command_prepend: "mkdir -p $TRAVIS_BUILD_DIR/build && cd $TRAVIS_BUILD_DIR/build && cmake .."
build_command: "make -C $TRAVIS_BUILD_DIR/build"
branch_pattern: coverity_scan
apt:
packages:
- cmake
- libsndfile1-dev
- libasound2-dev
- libjack-dev
- portaudio19-dev
- libportmidi-dev
- libpulse-dev
- swig
- liblua5.1-0-dev
- python-dev
- puredata-dev
- default-jdk
- libfltk1.1-dev
- libfluidsynth-dev
- liblo-dev
- fluid
- ladspa-sdk
- libpng-dev
- dssi-dev
- libstk0-dev
- libgmm++-dev
- bison
- flex
- libportsmf-dev
- libeigen3-dev
- libcunit1-dev
- python-tk
notifications:
email:
recipients:
- CSOUND-DEV@listserv.heanet.ie
csound-6.10.0/AUTHORS 0000664 0000000 0000000 00000003435 13216533447 0014156 0 ustar 00root root 0000000 0000000 Csound is the product of many people.
Csound was originally developed by Barry L. Vercoe of the Music and
Cognition Group at the Media Laboratory, M.I.T., Cambridge, MA, USA
with partial support from the System Development Foundation and from
the National Science Foundation Grant #IRI-8704665.
Most of the Csound code has been modified, developed, documented and
extended by an independent group of programmers, composers, and
scientists.
These contributors include
David Akbari
Nicola Bernardini
Mike Berry
Fabio Bertolotti
Stefan Bilbao
David Boothe
Richard Boulanger
Oeyvind Brandtsegg
Eli Breder
Phil Burk
Andrés Cabrera
Brian Carty
Michael Casey
Corbin Champion
Amar Chaudhary
Michael Clark
Nick Collins
Kevin Conder
Perry Cook
Sean Costello
Erik de Castro Lopo
Alan deLespinasse
Oscar Pablo Di Liscia
Richard Dobson
Mark Dolson
Rasmus Ekman
Dan Ellis
Tom Erbe
Georg Essl
John ffitch
Kelly Fitz
Richard Furse
Bill Gardner
Matt Gerassimoff
Matt Gilliard
Michael Gogins
Jens Groh
Samuel Groner
Keith Henderson
Torgeir Strand Henriksen
Matt Ingalls
Thom Johansen
Richard Karpen
Sami Khoury
Anthony Kozar
Clemens Ladisch
Paul Lansky
Victor Lazzarini
Allan Lee
David McIntyre
Dave Madole
Gabriel Maldonado
Cesare Marilungo
Max Mathews
Makoto Matsumoto
Hans Mikelson
Pete Moss
Peter Neubäcker
Takuji Nishimura
Peter Nix
Alex Norman
Juan Pampin
Dave Philips
Maurizio Umberto Puxeddu
Davide Rocchesso
Jean Piché
Ville Pulkki
John Ramsdell
Marc Resibois
Sigurd Saue
Simon Schampijer
Rob Shaw
Paris Smaragdis
Erik Spjut
Dmitriy Startsev
Greg Sullivan
Tom Sullivan
Istvan Varga
Bill Verplank
Jezar Wakefield (?)
Rory Walsh
Robin Whittle
Christopher Wilson
Trevor Wishart
Matt Wright
Steven Yi
There may be others whose names have been inadvertantly omitted.
If so, many apologies. Please report any missing names.
csound-6.10.0/BUILD.md 0000664 0000000 0000000 00000051072 13216533447 0014267 0 ustar 00root root 0000000 0000000 Csound Build Instructions
=========================
Build instructions for building Csound from the source packages for the
following operating systems
- [Debian/Ubuntu Linux](#debian)
- [Mac OS X using Homebrew](#OSXHomebrew)
- [General Instructions for Linux without Root access](#generalLinux)
- [Raspberry PI standard OS](#raspian)
- [Fedora 18](#fedora)
- [Windows 32/64 bit using MYSYS (recommended)](#msys2)
- [Windows (Mingw32)](#mingw32)
- [Windows Visual Studio](#msvs)
- [Android](#android)
Instructions for RPI compiled by Dominic Melville contact via dcamelville at gmail.com
for amendments and updates
Debian/Ubuntu
--------------
The following instructions will explain how to configure, compile, and install
Csound 6 on Debian and Ubuntu systems.
### Requirements
You will need root access, primarily to allow installation of dependencies
required for building Csound, as well as for installing into /usr/local.
### Building Csound 6
The following instructions are written for those getting a copy of the source code from Git.
You will need to adjust the steps accordingly when using the source tarball from
the files section.
The first thing to do is make sure you have all of the required dependencies for
building Csound. In a terminal, do the following:
1. Edit, as root, `/etc/apt/sources.list` and ensure that each line beginning with `deb` has another line below it that is identical except that `deb` is replaced with `deb-src`. Then run `sudo apt-get update`.
1. `sudo apt-get build-dep csound`
2. `sudo apt-get install cmake`
3. `sudo apt-get install git `
The following numbered steps are to be done in a terminal for building and
installing Csound:
1. `cd ~ `
2. `mkdir csound`
3. `cd csound`
4. `git clone https://github.com/csound/csound.git csound`
5. `mkdir cs6make `
6. `cd cs6make `
7. `cmake ../csound`
8. `make -j6 `
9. `sudo make install `
10. `sudo ldconfig `
At this point, Csound 6 should now be compiled and installed into the /usr/local
set of folders.
Mac OS X using Homebrew
-----------------------
### Introduction
Homebrew is a package manager for OSX. It is able to download, build, and
install applications, including their dependencies. The following sections will
describe what you will need to do to use Homebrew to install Csound 6.
Note: At this time, this method of installing Csound is currently being tested.
It is considered beta, and users should be aware that there may be some issues
that will be required to be worked through.
### Requirements
- Xcode
- Xcode Command-Line Tools
- Homebrew - [http://www.brew.sh][2]
[2]:
Installing Homebrew You will first need to have a working Homebrew setup. This
requires installing Xcode and the Xcode Command-Line tools. More information on
installing Homebrew is available on the Homebrew website as well as their wiki.
In particular, you will need to be mindful to enable user read/write for three
directories: "/usr/local", "/Library/Python/2.7/site-packages", and
"/Library/Java/Extensions". These need to be writable by the user as Csound will
need to install packages into each of those folders. Running the following
commands at a Terminal prompt should allow you to do this:
`sudo chmod +a 'user:YOUR_NAME_HERE allow
add_subdirectory,add_file,delete_child,directory_inherit'
/Library/Python/2.7/site-packages `
`sudo chmod +a 'user:YOUR_NAME_HERE allow
add_subdirectory,add_file,delete_child,directory_inherit'
/Library/Java/Extensions `
where YOUR_NAME_HERE refers to your system username.
### Adding the Csound Tap
Homebrew has a central repository, but it also allows for adding "taps", which
are additional repositories. A Csound tap has been setup at
https://github.com/kunstmusik/homebrew-csound. You can tap into it by using the
following command:
`brew tap kunstmusik/csound`
### Installing Csound
Once Homebrew is setup and the csound tap has been tapped, run the following
command at the commandline to install Csound:
`brew install --HEAD csound `
### Known Issues
There is currently a warning issued when Csound installs:
`Warning: Could not fix CsoundLib64.framework/Versions/6.0/CsoundLib64 in
/usr/local/Cellar/csound/HEAD/bin/srconv `
`Warning: Could not fix CsoundLib64.framework/Versions/6.0/CsoundLib64 in
/usr/local/Cellar/csound/HEAD/bin/sndinfo `
`Warning: Could not fix CsoundLib64.framework/Versions/6.0/CsoundLib64 in
/usr/local/Cellar/csound/HEAD/bin/scsort `
`Warning: Could not fix CsoundLib64.framework/Versions/6.0/CsoundLib64 in
/usr/local/Cellar/csound/HEAD/bin/scope `
....
This is due to how the CsoundLib64.framework is installed into
~/Library/Frameworks and bypasses Homebrew's installation path for Frameworks.
This is a known issue and will be looked into.
General Linux without Root access
---------------------------------
These are generic instructions to build on any Linux system with no root access.
These instructions require a full development system (compilers, flex, bison,
cmake). For RT audio you need to make sure you have the alsa headers / lib
installed.
### 1) set up your local directory
This creates three directories in your HOME directory and adds your local lib
directory to dynamic library path. Note that this last step needs to be
performed every time you open a new terminal, otherwise the installed Csound
will not find its dynamic library dependencies. If you add that line to your
HOME/.profile script, it will be run automatically when you start a new
terminal. $ $
- `cd `
- `mkdir include `
- `mkdir lib `
- `mkdir bin `
- `mkdir src`
- `export LD_LIBRARY_PATH=$HOME/lib:LD_LIBRARY_PATH `
(this last command can be added to your $HOME/.profile file for convenience)
### 2) get and install libsndfile
Libsndfile is the only required dependency for a basic Csound build.
Ubuntu users: it appears the libsndfile binaries come as default in your
installation, so this step might not be required. However, there is no harm in
doing it.
- `cd src `
- `wget http://www.mega-nerd.com/libsndfile/files/libsndfile-1.0.25.tar.gz `
- `tar xf libsndfile-1.0.25.tar.gz`
- `cd libsndfile-1.0.25 `
- `./configure --prefix=$HOME`
- `make install `
### 3) get Csound (latest from git)
The latest Csound sources are kept in the develop branch. For the latest
released sources, you do not need to change branches.
- `cd ..`
- `git clone https://github.com/csound/csound.git csound `
- `cd csound`
- `git checkout develop`
- `mv Custom.cmake.ex Custom.cmake `
### 4) set the include path for the build
Cmake needs to find your locally-installed headers in HOME/bin. You can add
custom commands to Cmake by using a Custom.cmake file, which Cmake will read if
it exists.
Open or create the Custom.cmake file in the top level Csound sources directory
and add the following line: `include_directories("ENV{HOME}/include") `
### 5) build and install Csound
The recommended method is to create a separate build directory and run cmake
there.
- `mkdir build`
- `cd build `
- `cmake -DCMAKE_INSTALL_PREFIX=$HOME ..`
- `make install `
### Notes
This builds a basic system. If you add dependencies to your HOME directories,
then you can run make again to build them. The csound command-line frontend will
be installed in $HOME/bin, the libraries in $HOME/lib and the include files in
$HOME/include. The plugin dir is in $HOME/lib/csound/plugins64-6.0.
### Dependencies List
If the dependency you are adding uses ./configure, you can use the same parameters to it as explained in step 2. If it uses cmake, you can use the same parameters as in step 5. After adding dependencies to your $HOME directories, you can run cmake again to re-build Csound. Check the printed output to see if the added dependency has switched on the build of the desired component.
#### OSC opcodes
liblo - http://liblo.sourceforge.net/ NB: the build for version 0.28 seems to be broken.
#### Fluid opcodes
Fluidsynth - http://sourceforge.net/apps/trac/fluidsynth/ NB: cmake might need to be coerced into finding the fluidsynth headers once it is built. For that, you can use the following cmake command (see step 5):
cmake -DCMAKE_INSTALL_PREFIX=$HOME -DFLUIDSYNTH_H=$HOME/include ..
#### Widget opcodes
FLTK - http://www.fltk.org/index.php NB: make sure you configure the FLTK build with --enable-shared, otherwise there could be problems linking to libfltk on 64bit linux.
#### Faust opcodes
libfaust - use faust2 branch of Faust git sources:
$ git clone git://git.code.sf.net/p/faudiostream/code faust
$ cd faust
$ git checkout faust2
NB: libfaust also requires LLVM 3.0, 3.1, 3.2, 3.3 or 3.4 - http://llvm.org/ LLVM can be built with CMake (as in step 5 above). To build faust, use the following make command (replacing LLVM_32 for LLVM_3* depending on the version you are using, if it is not 3.2)
$ make LLVM_VERSION=LLVM_32 LLVM_CONFIG=llvm-config LLVM_CLANG=g++ CXX=g++ ARCHFLAGS=-fPIC
To install it, you should run
$make PREFIX=$HOME
To switch the faust opcodes build on and coerce cmake into finding the faust library use:
cmake -DCMAKE_INSTALL_PREFIX=$HOME -DBUILD_FAUST_OPCODES=1 -DFAUST_LIBRARY=$HOME/lib/faust/libfaust.a ..
NB: Ubuntu users should be aware that LLVM 3.4 and 3.5 packages seem broken. It is probably recommended to build LLVM by oneself. Otherwise, LLVM 3.3 package is enough for building csound 6.05 with Faust opcodes assuming that
- LLVMConfig.cmake is correctly spelled in /usr/share/llvm-3.3/cmake (otherwise create a symbolic link with that name : ln -s /usr/share/llvm-3.3/cmake/LLVM-Config.cmake /usr/share/llvm-3.3/cmake/LLVMConfig.cmake)
- llvm-config is correctly spelled in /usr/bin
- faust2 is built with LLVM 3.3
- cmake version > 2.8.7 (version 3.3.0 builds easily for instance)
Then some additional environment variables may have to be set during the configuration step:
cmake -DLLVM_DIR=/usr/share/llvm-3.3/cmake -DCMAKE_MODULE_LINKER_FLAGS="-L/usr/lib/llvm-3.3/lib" -DBUILD_FAUST_OPCODES=1 -DFAUST_LIBRARY=pathTo/libfaust.a ../csound-develop/
#### Portaudio module
portaudio - http://www.portaudio.com/
#### Portmidi module
portmidi - http://portmedia.sourceforge.net/portmidi/
#### JACK module
Jack connection kit - http://jackaudio.org/
#### Python bindings
swig - http://www.swig.org/ Python headers / library - http://www.python.org
#### Java bindings
swig - http://www.swig.org/ Java SDK - http://www.oracle.com/technetwork/java/javase/downloads/index.html
Raspberry Pi Standard Distro
-----------------------------
### (Raspian Wheezy)
Preliminary step:
`sudo apt-get build-dep csound `
If you get the following error:
`E: You must put some 'source' URIs in your sources.list `
then add the following line to /etc/apt/sources.list:
`deb-src http://mirrordirector.raspbian.org/raspbian/ wheezy main contrib
non-free rpi `
(This can be done with nano)
After adding that to the sources.list, you should run `sudo apt-get update ` and retry the `sudo apt-get build-dep csound` command.
1. `cd ~ `
2. `mkdir csound`
3. `cd csound`
4. `git clone https://github.com/csound/csound.git csound`
5. `mkdir cs6make`
6. `cd cs6make`
7. `cmake ../csound -DBUILD_CSOUND_AC=OFF -DCMAKE_BUILD_TYPE="Release"` (this will not build CsoundAC, that
gives errors)
8. `make -j6`
9. `sudo make install`
10. `sudo ldconfig `
If you want to use the csnd6 Python library, add the following line to .bashrc:
`export PYTHONPATH=/usr/local/lib`
Enabling the Python Bindings requires swig and python-dev packages to be installed with
`sudo apt-get install swig python-dev`
### NEON support for PFFFT lib
From 6.07, Csound includes a choice of FFT libraries. One of these is
PFFFT, which can avail of NEON vector operations on arm, where these
exist. This can lead to a compilation error if the correct options are
not set. If a build error occurs in the compilation of pffft.c, two
options exist.
1. Try to add the correct flags for NEON compilation. This can be made
by editing the top-level file Custom.cmake.ex, and saving it as
Custom.cmake. In that file, the line
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -W -Wall -mtune=core2")
should be changed to
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mfloat-abi=hard -mfpu=neon")
2. If step 1 fails, there might be no NEON support for your arm chip,
in which case, you need to change the line above to
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DPFFFT_SIMD_DISABLE")
in order to disable the vectorial code and use standard C scalar operations.
Fedora 18
---------
### Introduction
This shows how to download the source code from Sourceforge, and build Csound 6
from sources.
### Requirements
For some steps, you'll need root access. You may need to install additional
packages - the example shows installing a number of additional packages, but the
exact requirements depend on your system.
You'll need to make sure Cmake, flex, bison, and libsndfile are installed. If
you're logged in as a non-root user, you can execute root commands using su -c.
So here's how to make sure the basic required packages for building are
installed:
`su -c "yum install cmake libsndfile libsndfile-devel flex bison" `
You'll be prompted for your root password.
### Downloading
Download the latest Csound 6 sources from
[https://sourceforge.net/projects/csound/files/csound6/ ][3]
[3]:
At the time this was written, the downloaded file was Csound6.00.1.tar.gz
### Compiling
First uncompress and untar the source code:
`gunzip Csound6.00.1.tar.gz `
`tar xf Csound6.00.1.tar.gz `
Change into the source directory
`cd Csound6.00.1`
In the source directory what gets compiled is controlled by the file
CMakeLists.txt. By default lots of stuff will get built, as long as you have the
required dependencies installed.
The following commands will add most required packages (but note that lua
interfaces and faust opcodes may still not work):
`su - `
`yum install ladspa ladspa-devel `
`yum install fluidsynth fluidsynth-devel `
`yum install boost boost-devel java-devel `
`yum install jack-audio-connection-kit-devel `
`yum install fltk fltk-devel `
`yum install swig swig-devel `
`yum install pulseaudio-libs-devel `
`yum install portaudio portmidi portaudio-devel portmidi-devel `
`yum install fltk-fluid `
`yum install stk stk-devel `
`yum install python-libs `
`yum install python-devel `
`yum install liblo liblo-devel `
`yum install lua lua-devel `
`yum install eigen3-devel eigen3 `
`yum install gmm-devel `
`yum install wiiuse wiiuse-devel `
`yum install bluez-libs-devel `
yum install llvm-devel
`yum install faust faust-tools`
`exit `
The building process takes two steps
1. use cmake to create a Makefile
2. use make to build Csound 6
To create the Makefile:
`cmake ./ `
At this point you may see messages saying that something can't be built - in
that case use your skill and judgement to work out which packages are missing.
For instance if you get a message saying fltk cannot be built, you could install
the fltk-devel package.
If you install a new package, you'll need to run cmake again:
`rm CMakeCache.txt `
`cmake ./ `
When you're happy, run make
`make `
This builds the csound library.
### Installing
By default, Csound 6 will install in /usr/local, so you'll need root
permissions:
`su -c "make install" `
Finally you need to make sure the library can be found by the linker
`su - `
`cd /etc/ld.so.conf.d `
`touch csound6.conf `
`gedit csound6.conf `
In the editor, add one line
`/usr/local/lib `
and close the file.
Finally update the linker search path
`ldconfig `
and log out of root
`exit `
Testing As a basic test, just try typing csound at a command prompt, and you
should get the help message.
Windows 32/64 Bit (msys2)
---------------
Csound for Windows can now be built using MSYS2. This is the recommeneded way to build Csound for Windows. Please follow the instruction posted [here](https://github.com/csound/csound/tree/develop/mingw64).
Windows 32 Bit (mingw32)
---------------
A basic working knowledge of the Windows command prompt is assumed. Further instructions for Windows can be found in their own document at the following link [Csound Windows Build Doc][1]
[1]:
### Steps (Vanilla build)
1. Download and install MSYS (http://downloads.sourceforge.net/mingw/MSYS-1.0.11.exe)
2. Download and install MinGW (http://sourceforge.net/projects/mingwbuilds).
-When installing choose architecture i686, or x32.
3. Download and install Git(http://git-scm.com/download/win)
4. Download and install libsndfile (32bit) (http://www.mega-nerd.com/libsndfile/)
5. Download and install cmake (http://www.cmake.org/download/)
Open the Windows command prompt and cd to a folder you wish to create your Csound repository in. Then run:
`git clone https://github.com/csound/csound.git`
`cd csound`
`mkdir build`
`cd build`
Then run cmake-gui from the command line:
`cmake-gui`
To the right of 'Where is the source code:' in cmake-gui browse for the Csound source directory. Underneath it, at the "Where to build the binaries" select the newly created build directory. Now type sndfile into the search field and you should see a few cmake entries concerned with libsndfile. Browse for the correct include folder and library file; libsndfile-1.dll. With this done hit configure. At this point you may be greeted with a cmake-gui dialogue asking which generator to use. Select the "MinGW Makefiles" generator. If the configuration command fails you may need to set the CMAKE_C_COMPILER and CMAKE_CXX_COMPILER entries. Simply click the add entry button and add two new FILEPATH entries, CMAKE_C_COMPILER should point towards your installed gcc.exe, and CMAKE_CXX_COMPILER should point towards g++.exe. These files are found in your MinGW/bin directory.
Go back to the command prompt and from your build directory run:
`mingw32-make`
If everything went Ok, you will now have binaries for most vanilla build of Csound possible. Keep reading if you wish to extend this basic build.
### Steps (adding realtime audio and MIDI)
1. Download portaudio (http://portaudio.com/).
2. Open MSYS shell and cd to portaudio directory. Then run
3. './configure'
4. 'make'
If you wish to build with support for ASIO run the following command, replacing the path to your ASIO SDK with your own.
'./configure --with-host_os=mingw --with-winapi=asio [--with-asiodir=/usr/local/asiosdk2]'
'make'
If make has any problems, you can try adding the following directories to your ASIOSDK folders:
ASIOSDK2.3\host\pc\.libs
C:\SDKs\ASIOSDK2.3\host\.libs
ASIOSDK2.3\common\.libs
5. Download and portmidi (http://portmedia.sourceforge.net.), Open command prompt and cd to portmidi directory
6. `mkdir build`
7. `cd build`
8. `cmake ../ -G "Mingw Makefiles"`
9. `mingw32-make`
9. Open up cmake once more and make sure the Csound cmake configuration is open. Then search for entries with portaudio and portmidi in them. Browse for the correct include directories for each, and select the libportaudio-2.dll, and libportmidi.dll libraries. Then run configure and generate.
10. Open the command prompt and cd to the Csound build directory. Then run
`mingw32-make`
Download and install cmake
Run cmake from the csound dir and configure Csound to build using MinGW Makefiles. For this minimal you'll need to disable quite a few features.
Run generate.
cd to csound build directory and run mingw32-make
Windows Visual Studio
--------------
Instructions can be found [here](https://github.com/csound/csound/blob/develop/msvc).
Android
--------------
Requirements
1. SWIG (www.swig.org)
2. libsndfile sources for android (https://bitbucket.org/kunstmusik/libsndfile-android.git)
3. boost (www.boost.org)
4. Android NDK
### Steps
1. Download, build and install SWIG (or install from your distro package system)
2. Clone the libsndfile sources for android repo,e.g.:
$ cd $HOME
$ mkdir android
$ cd android
$ git clone https://bitbucket.org/kunstmusik/libsndfile-android.git
3. Set the ANDROID_NDK_MODULE variable to point to the top directory
where the libsndfile sources are located,e.g.
$ export ANDROID_NDK_MODULE=$HOME/android
4. Download boost and install (headers only) in your include path (e.g. /usr/local/include). There is
no need to build the library.
5. Download the Android NDK and place it somewhere (e.g. $HOME), set the ANDROID_NDK_ROOT
to point to it
$ export ANDROID_NDK_ROOT=$HOME
5. Get Csound, and go to the ./android/CsoundAndroid directory, run
$ sh build.sh
The Java files and NDK libraries will be under CsoundAndroid.
csound-6.10.0/BUILDING_FOR_ANDROID 0000664 0000000 0000000 00000003630 13216533447 0016071 0 ustar 00root root 0000000 0000000 BUILDING FOR ANDROID
Csound 6 now builds and runs on Android ABI 9 or later
for the ARM-v7 architecture (hard floating point).
The build is complex but perhaps not as complex as one might think.
Most of the code is C or C++, only some of the code is Java, so
mostly the Android Native Development Kit (NDK) must be used, as
well of course as the Android Software Development Toolkit (SDK) for Java.
To save build time, third-party dependencies are pre-built and
installed as part of the Android toolchain. This includes for example
the fluidsynth shared library and LuaJIT. The third-party source code
must go into a directory pointed to by NDK_MODULE_PATH. NOTE: this MUST
be on the same hard disk as the Csound sources.
Otherwise your regular Csound build environment can be used after
setting the appropriate NDK environment variables.
Do not use the 'build.sh' helpers, use $NDK/ndk-build to build and
install the shared libraries (modules), the environment variables
will do the job of 'build.sh'. There is one exception to this...
The following variables must be set (this is an example from my
environment):
echo "Configure for Android/ARM, armeabi-v7a (ARMv7 VFP), Android 4.0+ (ICS)..."
export SDK=/d/Android/adt-bundle-windows-x86-20130514/sdk
export NDK=/d/Android/android-ndk-r8e
export ANDROID_NDK_ROOT=$NDK
export NDK_MODULE_PATH=/c/ndk-modules
export PATH=${PATH}:$NDK_MODULE_PATH
export CSOUND_SRC_ROOT=/c/Users/new/csound-csound6-git
# First Android with decent audio.
export NDKABI=9
export NDKVER=$NDK/toolchains/arm-linux-androideabi-4.7
export NDKP=$NDKVER/prebuilt/windows/bin/arm-linux-androideabi-
export NDKF="--sysroot $NDK/platforms/android-$NDKABI/arch-arm"
export NDKARCH="-march=armv7-a -mfloat-abi=softfp -Wl,--fix-cortex-a8"
Obviously all of these variables must be consistent for all components
of Csound for Android.
Download xxx from SourceForge.
Unzip each archive into xxx.
csound-6.10.0/Bela/ 0000775 0000000 0000000 00000000000 13216533447 0013744 5 ustar 00root root 0000000 0000000 csound-6.10.0/Bela/CsoundBela.cpp 0000664 0000000 0000000 00000004331 13216533447 0016470 0 ustar 00root root 0000000 0000000 #include
#include
#include
#define BLOCKS 8
struct csData{
Csound *csound;
CsoundPerformanceThread *thread;
void *cbuff;
int blocksize;
int count;
int read;
MYFLT *buffer;
MYFLT scal;
};
csData* gCsData;
void cback(void *p){
csData* pp = (csData *) p;
if(pp->thread->GetStatus() == 0)
csoundWriteCircularBuffer(csound, pp->cbuff,
(void *) csoundGetSpout(csound),
pp->blocksize);
}
bool setup(BelaContext *context, void *userData)
{
gCsData = new csData;
Csound *csound = new Csound();
csound->Compile("trapped.csd","-+rtaudio=null", "--realtime");
gCsData->blocksize = csound->GetNchnls()*csound->GetKsmps();
gCsData->cbuff = csoundCreateCircularBuffer(csound->GetCsound(),
gCsData->blocksize*BLOCKS,
sizeof(MYFLT));
gCsData->thread = new CsoundPerformanceThread(csound->GetCsound());
gCsData->thread->SetProcessCallback(cback,gCsData);
gCsData->csound = csound;
gCsData->count = 0;
gCsData->read = 0;
gCsData->scal = userData->csound->Get0dBFS();
gCsData->buffer = new MYFLT[gCsData->blocksize];
gCsData->thread->Play();
//userData = data;
return true;
}
void render(BelaContext *context, void *Data)
{
int n,i,j,blocksize,read;
csData *userData = gCsData;
MYFLT *buffer = userData->buffer;
MYFLT scal = userData->scal;
j = userData->count;
read = userData->read;
blocksize = userData->blocksize;
for(n = 0; n < context->audioFrames; n++){
for(i = 0; i < context->audioOutChannels; i++){
if(j >= read) {
read = csoundReadCircularBuffer(NULL,
userData->cbuff,
buffer,
blocksize);
j = 0;
}
if(read > 0)
audioWrite(context,n,i,(float)buffer[j++]/scal);
}
}
userData->count = j;
userData->read = read;
}
void cleanup(BelaContext *context, void *Data)
{
csData *userData = gCsData;
gCsData->thread->Stop();
gCsData->thread->Join();
csoundDestroyCircularBuffer(gCsData->csound->GetCsound(),
gCsData->cbuff);
delete userData->csound;
delete userData->thread;
delete[] userData->buffer;
delete userData;
}
csound-6.10.0/CMakeLists.txt 0000664 0000000 0000000 00000115757 13216533447 0015661 0 ustar 00root root 0000000 0000000 cmake_minimum_required(VERSION 2.8.12)
project(Csound)
ENABLE_TESTING()
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
set(CMAKE_COMPILER_IS_CLANG 1)
endif()
message(STATUS "${CMAKE_HOME_DIRECTORY}")
if(NOT MSVC AND NOT WASM)
set(CMAKE_CXX_FLAGS_RELEASE "-O3 ")
set(CMAKE_C_FLAGS_RELEASE "-O3 ")
endif()
# Project definitions
set(APIVERSION "6.0")
# Relative install paths
set(EXECUTABLE_INSTALL_DIR "bin")
set(LOCALE_INSTALL_DIR "share/locale")
set(HEADER_INSTALL_DIR "include/csound")
set(CS_FRAMEWORK_DEST "~/Library/Frameworks")
include(TestBigEndian)
include(CheckFunctionExists)
include(CheckIncludeFile)
include(CheckIncludeFileCXX)
include(CheckLibraryExists)
include(CMakeParseArguments)
include(CheckCCompilerFlag)
include(CheckCXXCompilerFlag)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/")
# Utility to munge with items in a list.
#
macro(LIST_REPLACE LIST INDEX NEWVALUE)
list(INSERT ${LIST} ${INDEX} ${NEWVALUE})
MATH(EXPR __INDEX "${INDEX} + 1")
list (REMOVE_AT ${LIST} ${__INDEX})
endmacro(LIST_REPLACE)
# Utility function to make executables. All plugin targets should use this as it
# sets up output directory set in top-level CmakeLists.txt
# and adds an appropriate install target
#
# name - name of executable to produce
# srcs - list of src files
# libs - list of library files to link to
# output_name (OPTIONAL) - overide the name of the generated executable
#
function(make_executable name srcs libs)
add_executable(${name} ${srcs})
target_link_libraries (${name} ${libs})
set_target_properties(${name} PROPERTIES
RUNTIME_OUTPUT_DIRECTORY ${BUILD_BIN_DIR})
if(${ARGC} EQUAL 4)
set_target_properties(${name} PROPERTIES
OUTPUT_NAME ${ARGV3})
endif()
install(TARGETS ${name}
RUNTIME DESTINATION "${EXECUTABLE_INSTALL_DIR}" )
endfunction(make_executable)
# Utility function to make a utility executable
#
# name - name of executable to produce
# srcs - list of src files
function(make_utility name srcs)
make_executable(${name} "${srcs}" "${CSOUNDLIB}")
add_dependencies(${name} ${CSOUNDLIB})
if(LINUX)
target_link_libraries(${name} m)
endif()
endfunction()
# Checks if dependencies for an enabled target are fulfilled.
# If FAIL_MISSING is true and the dependencies are not fulfilled,
# it will abort the cmake run.
# If FAIL_MISSING is false, it will set the option to OFF.
# If the target is not enabled, it will do nothing.
# example: check_deps(BUILD_NEW_PARSER FLEX_EXECUTABLE BISON_EXECUTABLE)
function(check_deps option)
if(${option})
set(i 1)
while( ${i} LESS ${ARGC} )
set(dep ${ARGV${i}})
if(NOT ${dep})
if(FAIL_MISSING)
message(FATAL_ERROR
"${option} is enabled, but ${dep}=\"${${dep}}\"")
else()
message(STATUS "${dep}=\"${${dep}}\", so disabling ${option}")
set(${option} OFF PARENT_SCOPE)
# Set it in the local scope too
set(${option} OFF)
endif()
endif()
math(EXPR i "${i}+1")
endwhile()
endif()
if(${option})
message(STATUS "${option} is enabled.")
else()
message(STATUS "${option} is disabled.")
endif()
endfunction(check_deps)
### COMPILER OPTIMIZATION FLAGS
option(USE_COMPILER_OPTIMIZATIONS "Use the default Csound compiler optimization flags" ON)
if(USE_COMPILER_OPTIMIZATIONS)
include(cmake/CompilerOptimizations.cmake)
endif()
if(APPLE)
set(OSX_VERSION " ")
endif()
## USER OPTIONS ##
# Optional targets, they should all default to ON (check_deps will disable them if not possible to build)
option(USE_DOUBLE "Set to use double-precision floating point for audio samples." ON)
option(BUILD_UTILITIES "Build stand-alone executables for utilities that can also be used with -U" ON)
option(NEW_PARSER_DEBUG "Enable tracing of new parser" OFF)
option(BUILD_MULTI_CORE "Enable building for multicore system (requires BUILD_NEW_PARSER)" ON)
option(FAIL_MISSING "Fail when a required external dependency is not present (useful for packagers)" OFF)
option(USE_GETTEXT "Use the Gettext internationalization library" ON)
option(BUILD_STATIC_LIBRARY "Also build a static version of the csound library" OFF)
option(USE_LRINT "Use lrint/lrintf for converting floating point values to integers." ON)
option(USE_CURL "Use CURL library" ON)
option(BUILD_RELEASE "Build for release" ON)
option(BUILD_INSTALLER "Build installer" OFF)
option(BUILD_TESTS "Build tests" ON)
option(USE_GIT_COMMIT "Show the git commit in version information" ON)
option(REQUIRE_PTHREADS "For non-Windows systems, set whether Csound will use threads or not" ON)
# Include this after the install path definitions so we can override them here.
# Also after function definitions so we can use them there
# Also after user options so that the default values don't overwrite the custom files values
find_file(CUSTOM_CMAKE "Custom.cmake" HINTS ${CMAKE_HOME_DIRECTORY})
if(CUSTOM_CMAKE)
message(STATUS "Including Custom.cmake file: ${CUSTOM_CMAKE}")
include(${CUSTOM_CMAKE})
else()
message(STATUS "Not using Custom.cmake file.")
endif()
option(USE_LIB64 "Set to on to set installation directory for libraries to lib64" OFF)
if(USE_LIB64)
set(LIBRARY_INSTALL_DIR "lib64")
add_definitions("-DLIB64")
else()
set(LIBRARY_INSTALL_DIR "lib")
endif()
message(STATUS "LIBRARY INSTALL DIR: ${LIBRARY_INSTALL_DIR}")
if(USE_DOUBLE)
message(STATUS "Building with 64-bit floats")
set(PLUGIN_INSTALL_DIR "${LIBRARY_INSTALL_DIR}/csound/plugins64-${APIVERSION}")
else()
message(STATUS "Building with 32-bit floats")
set(PLUGIN_INSTALL_DIR "${LIBRARY_INSTALL_DIR}/csound/plugins-${APIVERSION}")
endif()
execute_process (
COMMAND python -c
"import site, sys; sys.stdout.write(site.getusersitepackages())"
OUTPUT_VARIABLE PYTHON_USER_SITE_PACKAGES
)
SET(PYTHON_MODULE_INSTALL_DIR ${PYTHON_USER_SITE_PACKAGES} CACHE PATH "Python module install dir")
set(JAVA_MODULE_INSTALL_DIR ${LIBRARY_INSTALL_DIR} CACHE PATH "Java module install dir")
set(LUA_MODULE_INSTALL_DIR ${LIBRARY_INSTALL_DIR} CACHE PATH "Lua module install dir")
# VL this is breaking CUDA compilation. It's not necessary
#if(APPLE)
# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11 -stdlib=libc++")
#endif()
if(WIN32 AND NOT MSVC)
if(EXISTS "C:/MinGW/include")
include_directories(C:/MinGW/include)
else()
MESSAGE(STATUS "MinGW include dir not found.")
endif()
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,--add-stdcall-alias")
endif()
if(MSVC)
include_directories(${PROJECT_SOURCE_DIR}/msvc/include)
list(APPEND CMAKE_REQUIRED_INCLUDES "${PROJECT_SOURCE_DIR}/msvc/include;${PROJECT_SOURCE_DIR}/msvc/deps/include")
endif()
if(WIN32)
set(CMAKE_SHARED_LIBRARY_PREFIX "")
set(CMAKE_SHARED_MODULE_PREFIX "")
if(NOT MSVC)
set(CSOUND_WINDOWS_LIBRARIES
msvcrt
advapi32
comctl32
comdlg32
glu32
kernel32
odbc32
odbccp32
ole32
oleaut32
shell32
user32
uuid
winmm
winspool
ws2_32
wsock32
advapi32
comctl32
comdlg32
glu32
msvcrt
kernel32
odbc32
odbccp32
ole32
oleaut32
shell32
user32
uuid
winmm
winspool
ws2_32
wsock32)
else()
if(MSVC_VERSION LESS 1900)
set(CSOUND_WINDOWS_LIBRARIES
msvcrt
advapi32
comctl32
comdlg32
glu32
kernel32
odbc32
odbccp32
ole32
oleaut32
shell32
user32
uuid
winmm
winspool
ws2_32
wsock32
advapi32
comctl32
comdlg32
glu32
msvcrt
kernel32
odbc32
odbccp32
ole32
oleaut32
shell32
user32
uuid
winmm
winspool
ws2_32
wsock32)
else()
set(CSOUND_WINDOWS_LIBRARIES
ucrt
vcruntime
advapi32
comctl32
comdlg32
glu32
kernel32
mincore
odbc32
odbccp32
ole32
oleaut32
shell32
user32
uuid
winmm
winspool
ws2_32
wsock32
advapi32
comctl32
comdlg32
glu32
kernel32
odbc32
odbccp32
ole32
oleaut32
shell32
user32
uuid
winmm
winspool
ws2_32
wsock32)
endif()
endif()
if(MSVC)
# Experimented with flags but did not make change performance results
#set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /Oi /fp:fast /arch:AVX2")
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Oi /fp:fast /arch:AVX2")
#set(CompilerFlags
# CMAKE_CXX_FLAGS
# CMAKE_CXX_FLAGS_DEBUG
# CMAKE_CXX_FLAGS_RELEASE
# CMAKE_C_FLAGS
# CMAKE_C_FLAGS_DEBUG
# CMAKE_C_FLAGS_RELEASE
# )
#foreach(CompilerFlag ${CompilerFlags})
# string(REPLACE "/MD" "/MT" ${CompilerFlag} "${${CompilerFlag}}")
#endforeach()
else()
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mstackrealign -static-libgcc -static")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mstackrealign -static-libstdc++ -static-libgcc -static")
set_target_properties(${CSOUNDLIB} PROPERTIES LINK_FLAGS "-static-libstdc++ -static-libgcc -static")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -static-libstdc++ -static-libgcc -static")
endif()
endif(WIN32)
if(APPLE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++")
set_target_properties(${CSOUNDLIB} PROPERTIES CXX_COMPILE_FLAGS "-std=c++11")
endif()
if(CMAKE_SYSTEM_NAME MATCHES "Linux")
set(LINUX YES)
else()
set(LINUX NO)
endif()
set(BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR})
check_c_compiler_flag(-fvisibility=hidden HAS_VISIBILITY_HIDDEN)
check_cxx_compiler_flag(-fvisibility=hidden HAS_CXX_VISIBILITY_HIDDEN)
if (HAS_VISIBILITY_HIDDEN)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fvisibility=hidden")
endif()
if (HAS_CXX_VISIBILITY_HIDDEN)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden")
endif()
check_c_compiler_flag(-std=gnu99 HAS_GNU99)
if (HAS_GNU99)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99")
endif()
if (HAS_CXX_VISIBILITY_HIDDEN)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden")
endif()
if(APPLE)
if(IOS)
message(STATUS "Building for iOS.")
else()
message(STATUS "Building for OSX")
if(BUILD_INSTALLER)
set(CS_FRAMEWORK_DEST "${CMAKE_INSTALL_PREFIX}")
endif()
set(DEFAULT_OSX_SYSROOT /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk/)
if(NOT CMAKE_OSX_SYSROOT AND EXISTS ${DEFAULT_OSX_SYSROOT})
set(CMAKE_OSX_SYSROOT ${DEFAULT_OSX_SYSROOT})
endif()
if(CMAKE_OSX_SYSROOT AND NOT CMAKE_OSX_SYSROOT MATCHES ".*OSX10.6.*")
set(CMAKE_OSX_DEPLOYMENT_TARGET 10.7)
message(STATUS "OSX: Setting Deployment Target to 10.7")
endif()
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DHAVE_VECLIB")
if(NOT VECLIB_PATH)
set(VECLIB_PATH "/System/Library/Frameworks/")
endif()
endif()
endif()
if(USE_DOUBLE)
if(APPLE)
set(CSOUNDLIB "CsoundLib64")
set(PLUGIN_INSTALL_DIR "${CS_FRAMEWORK_DEST}/${CSOUNDLIB}.framework/Versions/${APIVERSION}/Resources/Opcodes64")
else()
set(CSOUNDLIB "csound64")
endif()
else()
if(APPLE)
set(CSOUNDLIB "CsoundLib")
set(PLUGIN_INSTALL_DIR "${CS_FRAMEWORK_DEST}/${CSOUNDLIB}.framework/Versions/${APIVERSION}/Resources/Opcodes")
else()
set(CSOUNDLIB "csound")
endif()
endif()
if(APPLE)
if(BUILD_INSTALLER)
set(CS_FRAMEWORK_FULL_PATH "/Library/Frameworks/${CSOUNDLIB}.framework/Versions/${APIVERSION}/Resources/Opcodes64")
else()
get_filename_component(JAVA_MODULE_INSTALL_DIR "~/Library/Java/Extensions" ABSOLUTE)
get_filename_component(CS_FRAMEWORK_FULL_PATH ${PLUGIN_INSTALL_DIR} ABSOLUTE)
endif()
add_definitions("-DCS_DEFAULT_PLUGINDIR=\"${CS_FRAMEWORK_FULL_PATH}\"")
endif()
if(BUILD_RELEASE)
add_definitions("-D_CSOUND_RELEASE_")
if(LINUX)
set(DEFAULT_OPCODEDIR "${CMAKE_INSTALL_PREFIX}/${PLUGIN_INSTALL_DIR}")
add_definitions("-DCS_DEFAULT_PLUGINDIR=\"${DEFAULT_OPCODEDIR}\"")
endif()
else()
add_definitions("-DBETA")
endif()
if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX)
add_definitions("-Wno-format")
endif()
#if(USE_DOUBLE)
# set(BUILD_PLUGINS_DIR ${BUILD_DIR}/plugins64)
#else()
# set(BUILD_PLUGINS_DIR ${BUILD_DIR}/plugins)
#endif()
set(BUILD_PLUGINS_DIR ${BUILD_DIR})
set(BUILD_BIN_DIR ${BUILD_DIR})
set(BUILD_LIB_DIR ${BUILD_DIR})
#if(APPLE AND NOT ${CMAKE_GENERATOR} STREQUAL "Xcode")
# set(BUILD_PLUGINS_DIR ${BUILD_DIR}/${CSOUNDLIB}.framework/Versions/${APIVERSION}/Resources/Opcodes)
#endif()
message(STATUS "BUILD_BIN_DIR set to ${BUILD_BIN_DIR}.")
message(STATUS "BUILD_LIB_DIR set to ${BUILD_LIB_DIR}.")
message(STATUS "BUILD_PLUGINS_DIR set to ${BUILD_PLUGINS_DIR}.")
# OS specific checks
TEST_BIG_ENDIAN(BIG_ENDIAN)
## CONFIGURATION ##
SET(BUILD_SHARED_LIBS ON)
## HEADER/LIBRARY/OTHER CHECKS ##
# First, required stuff
if (MSVC)
find_library(LIBSNDFILE_LIBRARY NAMES sndfile libsndfile-1 libsndfile)
else()
find_library(LIBSNDFILE_LIBRARY sndfile libsndfile-1)
endif()
if(NOT LIBSNDFILE_LIBRARY)
message(FATAL_ERROR "Csound requires the sndfile library")
endif()
find_package(CURL)
set(FLTK_SKIP_OPENGL true)
find_package(FLTK )
#if (FLTK_FOUND AND MSVC)
# # If "SHARED" variants of FLTK libraries exist, use them.
# find_library(FLTK_SHARED_VARIANT "fltk_SHARED")
# message(STATUS "FLTK_SHARED_VARIANT:" ${FLTK_SHARED_VARIANT})
# if(FLTK_SHARED_VARIANT)
# message(STATUS "Using 'SHARED' variants of FLTK libraries.")
# LIST_REPLACE(FLTK_LIBRARIES 0 "fltk_SHARED")
# LIST_REPLACE(FLTK_LIBRARIES 1 "fltk_forms_SHARED")
# LIST_REPLACE(FLTK_LIBRARIES 2 "fltk_images_SHARED")
# endif()
#endif()
find_package(Java)
find_package(JNI)
find_package(LIBLO)
find_package(LUAJIT)
find_package(MUSICXML)
find_package(PORTSMF)
find_package(PythonLibs 2.7)
if(NOT STK_LOCAL)
find_package(STK)
endif()
find_package(SWIG)
find_package(VSTSDK2X)
# TODO should this work for MSVC also?
if(WIN32)
find_library(FLAC_LIB NAMES FLAC flac)
find_library(OGG_LIB ogg)
find_library(SPEEX_LIB speex)
find_library(VORBIS_LIB vorbis)
find_library(VORBISENC_LIB vorbisenc)
set(LIBSNDFILE_SUPPORT_LIBS ${VORBIS_LIB} ${VORBISENC_LIB} ${FLAC_LIB} ${OGG_LIB})
if(SPEEX_LIB)
list(APPEND LIBSNDFILE_SUPPORT_LIBS ${SPEEX_LIB} )
endif()
#message(STATUS "${LIBSNDFILE_SUPPORT_LIBS}")
endif()
find_path(SNDFILE_H_PATH sndfile.h)
if(SNDFILE_H_PATH)
include_directories(${SNDFILE_H_PATH})
else()
message(FATAL_ERROR "Could not find sndfile.h")
endif()
if(NOT MSVC AND REQUIRE_PTHREADS)
# Use ladder of if's to support older CMake versions (i.e., travis)
find_library(PTHREAD_LIBRARY winpthread-1)
if(NOT PTHREAD_LIBRARY)
find_library(PTHREAD_LIBRARY pthread)
endif()
if(NOT PTHREAD_LIBRARY)
find_library(PTHREAD_LIBRARY pthreadGC2)
endif()
if(NOT PTHREAD_LIBRARY)
message(STATUS "Csound requires the pthread library")
endif()
#FIXME this variable is for required include directories, possible bug
set(CMAKE_REQUIRED_INCLUDES pthread.h)
set(CMAKE_REQUIRED_LIBRARIES pthread)
endif()
# Now, non required library searches #
option(USE_ATOMIC_BUILTIN "Use Atomic Builtins if supported" ON)
if(USE_ATOMIC_BUILTIN)
include(cmake/CheckAtomic.cmake)
if(HAVE_ATOMIC_BUILTIN)
message(STATUS "Using atomic builtins.")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DHAVE_ATOMIC_BUILTIN")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DHAVE_ATOMIC_BUILTIN")
else()
message(STATUS "Not using atomic builtins - not found")
endif()
else()
message(STATUS "Not using atomic builtins - user disabled")
endif()
find_library(VORBISFILE_LIBRARY vorbisfile)
check_include_file(libintl.h LIBINTL_HEADER)
find_path(EIGEN3_INCLUDE_PATH eigen3/Eigen/Dense)
find_package(GMM)
find_library(LIBINTL_LIBRARY intl)
find_package(Gettext)
check_library_exists(m lrint "" HAVE_LRINT)
set(HEADERS_TO_CHECK
unistd.h io.h fcntl.h stdint.h
sys/time.h sys/types.h termios.h
values.h winsock.h sys/socket.h
dirent.h )
foreach(header ${HEADERS_TO_CHECK})
# Convert to uppercase and replace [./] with _
string(TOUPPER ${header} tmp)
string(REGEX REPLACE [./] "_" upper_header ${tmp})
check_include_file(${header} HAVE_${upper_header})
endforeach()
check_deps(USE_LRINT HAVE_LRINT)
if(USE_LRINT)
add_definitions("-DUSE_LRINT")
endif()
## Check existence of CURL
if(USE_CURL)
find_package(CURL)
if(CURL_FOUND)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DHAVE_CURL")
else()
message(STATUS "Not using CURL for urls - not found.")
endif()
else()
message(STATUS "Not using CURL for urls - disabled.")
endif()
# Flex/Bison for the new parser
find_package(FLEX)
find_package(BISON)
if(NOT FLEX_EXECUTABLE)
message(FATAL_ERROR "Csound requires the flex executable")
endif()
if(NOT BISON_EXECUTABLE)
message(FATAL_ERROR "Csound requires the bison executable")
endif()
## MAIN TARGETS ##
set(libcsound_CFLAGS -D__BUILDING_LIBCSOUND)
include_directories(./H)
include_directories(./include)
include_directories(./Engine)
#adding this for files that #include SDIF/sdif*
include_directories(./)
#checking pthread functions
if(REQUIRE_PTHREADS AND PTHREAD_LIBRARY)
#list(APPEND libcsound_CFLAGS -DHAVE_PTHREAD)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DHAVE_PTHREAD")
check_function_exists(pthread_spin_lock PTHREAD_SPIN_LOCK_EXISTS)
check_function_exists(pthread_barrier_init PTHREAD_BARRIER_INIT_EXISTS)
if(PTHREAD_SPIN_LOCK_EXISTS)
list(APPEND libcsound_CFLAGS -DHAVE_PTHREAD_SPIN_LOCK)
endif()
if(PTHREAD_BARRIER_INIT_EXISTS)
list(APPEND libcsound_CFLAGS -DHAVE_PTHREAD_BARRIER_INIT)
endif()
endif()
#if(WIN32)
include_directories(${LIBSNDFILE_INCLUDE_DIRECTORY})
#endif(WIN32)
# get the git hash and pass it to csound
SET(git_hash_values "none")
if(USE_GIT_COMMIT)
find_package(Git)
message(STATUS "GIT: ${GIT_EXECUTABLE}")
if(GIT_FOUND)
execute_process(COMMAND ${GIT_EXECUTABLE} "rev-parse" "HEAD"
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE git_hash_value)
if (git_hash_value)
string(STRIP ${git_hash_value} git_hash_values)
message(STATUS "HASH: ${git_hash_values}")
endif()
endif()
endif()
set_source_files_properties(Top/csound.c PROPERTIES
COMPILE_FLAGS -DGIT_HASH_VALUE=${git_hash_values})
# The csound library
set(libcsound_SRCS
Top/csound.c
Engine/auxfd.c
Engine/cfgvar.c
Engine/corfiles.c
Engine/entry1.c
Engine/envvar.c
Engine/extract.c
Engine/fgens.c
Engine/insert.c
Engine/linevent.c
Engine/memalloc.c
Engine/memfiles.c
Engine/musmon.c
Engine/namedins.c
Engine/rdscor.c
Engine/scsort.c
Engine/scxtract.c
Engine/sort.c
Engine/sread.c
Engine/swritestr.c
Engine/twarp.c
Engine/csound_type_system.c
Engine/csound_standard_types.c
Engine/csound_data_structures.c
Engine/pools.c
InOut/libsnd.c
InOut/libsnd_u.c
InOut/midifile.c
InOut/midirecv.c
InOut/midisend.c
InOut/winascii.c
InOut/windin.c
InOut/window.c
InOut/winEPS.c
InOut/circularbuffer.c
OOps/aops.c
OOps/bus.c
OOps/cmath.c
OOps/diskin2.c
OOps/disprep.c
OOps/dumpf.c
OOps/fftlib.c
OOps/pffft.c
OOps/goto_ops.c
OOps/midiinterop.c
OOps/midiops.c
OOps/midiout.c
OOps/mxfft.c
OOps/oscils.c
OOps/pstream.c
OOps/pvfileio.c
OOps/pvsanal.c
OOps/random.c
OOps/remote.c
OOps/schedule.c
OOps/sndinfUG.c
OOps/str_ops.c
OOps/ugens1.c
OOps/ugens2.c
OOps/ugens3.c
OOps/ugens4.c
OOps/ugens5.c
OOps/ugens6.c
OOps/ugtabs.c
OOps/ugrw1.c
OOps/vdelay.c
OOps/compile_ops.c
Opcodes/babo.c
Opcodes/bilbar.c
Opcodes/compress.c
Opcodes/eqfil.c
Opcodes/Vosim.c
Opcodes/squinewave.c
Opcodes/pinker.c
Opcodes/pitch.c
Opcodes/pitch0.c
Opcodes/spectra.c
Opcodes/ambicode1.c
Opcodes/sfont.c
Opcodes/grain4.c
Opcodes/hrtferX.c
Opcodes/loscilx.c
Opcodes/minmax.c
Opcodes/pan2.c
Opcodes/arrays.c
Opcodes/phisem.c
Opcodes/hrtfopcodes.c
Opcodes/vbap.c
Opcodes/vbap1.c
Opcodes/vbap_n.c
Opcodes/vbap_zak.c
Opcodes/vaops.c
Opcodes/ugakbari.c
Opcodes/harmon.c
Opcodes/pitchtrack.c
Opcodes/partikkel.c
Opcodes/shape.c
Opcodes/tabsum.c
Opcodes/crossfm.c
Opcodes/pvlock.c
Opcodes/fareyseq.c
Opcodes/modmatrix.c
Opcodes/scoreline.c
Opcodes/modal4.c
Opcodes/physutil.c
Opcodes/physmod.c
Opcodes/mandolin.c
Opcodes/singwave.c
Opcodes/fm4op.c
Opcodes/moog1.c
Opcodes/shaker.c
Opcodes/bowedbar.c
Opcodes/gab/tabmorph.c
Opcodes/gab/hvs.c
Opcodes/gab/sliderTable.c
Opcodes/gab/newgabopc.c
Opcodes/ftest.c
Opcodes/hrtfearly.c
Opcodes/hrtfreverb.c
Opcodes/cpumeter.c
Opcodes/gendy.c
Opcodes/tl/sc_noise.c
Opcodes/afilters.c
Opcodes/wpfilters.c
Top/argdecode.c
Top/csdebug.c
Top/cscore_internal.c
Top/cscorfns.c
Top/csmodule.c
Top/getstring.c
Top/main.c
Top/new_opts.c
Top/one_file.c
Top/opcode.c
Top/threads.c
Top/utility.c
Top/threadsafe.c
Top/server.c)
if(WIN32 AND NOT MSVC)
set_source_files_properties(Opcodes/sfont.c PROPERTIES
COMPILE_FLAGS -mno-ms-bitfields)
endif()
set(stdopcod_SRCS
Opcodes/ambicode.c
Opcodes/bbcut.c
Opcodes/biquad.c
Opcodes/butter.c
Opcodes/clfilt.c
Opcodes/cross2.c
Opcodes/dam.c
Opcodes/dcblockr.c
Opcodes/filter.c
Opcodes/flanger.c
Opcodes/follow.c
Opcodes/fout.c
Opcodes/freeverb.c
Opcodes/ftconv.c
Opcodes/ftgen.c
Opcodes/gab/gab.c
Opcodes/gab/vectorial.c
Opcodes/grain.c
Opcodes/locsig.c
Opcodes/lowpassr.c
Opcodes/metro.c
Opcodes/midiops2.c
Opcodes/midiops3.c
Opcodes/newfils.c
Opcodes/nlfilt.c
Opcodes/oscbnk.c
Opcodes/pluck.c
Opcodes/paulstretch.c
Opcodes/repluck.c
Opcodes/reverbsc.c
Opcodes/seqtime.c
Opcodes/sndloop.c
Opcodes/sndwarp.c
Opcodes/space.c
Opcodes/spat3d.c
Opcodes/syncgrain.c
Opcodes/ugens7.c
Opcodes/ugens9.c
Opcodes/ugensa.c
Opcodes/uggab.c
Opcodes/ugmoss.c
Opcodes/ugnorman.c
Opcodes/ugsc.c
Opcodes/wave-terrain.c
Opcodes/stdopcod.c
Opcodes/socksend.c
Opcodes/sockrecv.c)
set(cs_pvs_ops_SRCS
Opcodes/ifd.c
Opcodes/partials.c
Opcodes/psynth.c
Opcodes/pvsbasic.c
Opcodes/pvscent.c
Opcodes/pvsdemix.c
Opcodes/pvs_ops.c
Opcodes/pvsband.c
Opcodes/pvsbuffer.c
Opcodes/pvsgendy.c)
set(oldpvoc_SRCS
Opcodes/dsputil.c
Opcodes/pvadd.c
Opcodes/pvinterp.c
Opcodes/pvocext.c
Opcodes/pvread.c
Opcodes/ugens8.c
Opcodes/vpvoc.c
Opcodes/pvoc.c)
set(mp3in_SRCS
Opcodes/mp3in.c
InOut/libmpadec/layer1.c
InOut/libmpadec/layer2.c
InOut/libmpadec/layer3.c
InOut/libmpadec/synth.c
InOut/libmpadec/tables.c
InOut/libmpadec/mpadec.c
InOut/libmpadec/mp3dec.c)
list(APPEND libcsound_SRCS ${stdopcod_SRCS} ${cs_pvs_ops_SRCS} ${oldpvoc_SRCS} ${mp3in_SRCS})
if(INIT_STATIC_MODULES)
set(static_modules_SRCS
Top/init_static_modules.c
Opcodes/ampmidid.cpp
Opcodes/doppler.cpp
Opcodes/tl/fractalnoise.cpp
Opcodes/ftsamplebank.cpp
Opcodes/mixer.cpp
Opcodes/signalflowgraph.cpp)
set_source_files_properties(${static_modules_SRCS} PROPERTIES COMPILE_FLAGS -DINIT_STATIC_MODULES)
list(APPEND libcsound_SRCS ${static_modules_SRCS})
endif()
# Handling New Parser
set(YACC_SRC ${CMAKE_CURRENT_SOURCE_DIR}/Engine/csound_orc.y)
set(YACC_OUT ${CMAKE_CURRENT_BINARY_DIR}/csound_orcparse.c)
set(YACC_OUTH ${CMAKE_CURRENT_BINARY_DIR}/csound_orcparse.h)
set(LEX_SRC ${CMAKE_CURRENT_SOURCE_DIR}/Engine/csound_orc.lex)
set(LEX_OUT ${CMAKE_CURRENT_BINARY_DIR}/csound_orclex.c)
set(PRELEX_SRC ${CMAKE_CURRENT_SOURCE_DIR}/Engine/csound_pre.lex)
set(PRELEX_OUT ${CMAKE_CURRENT_BINARY_DIR}/csound_prelex.c)
add_custom_command(
OUTPUT ${LEX_OUT}
DEPENDS ${LEX_SRC}
COMMAND ${FLEX_EXECUTABLE} ARGS -B -t ${LEX_SRC} > ${LEX_OUT}
)
add_custom_command(
DEPENDS ${PRELEX_SRC}
COMMAND ${FLEX_EXECUTABLE} ARGS -B ${PRELEX_SRC} > ${PRELEX_OUT}
OUTPUT ${PRELEX_OUT}
)
add_custom_command(
OUTPUT ${YACC_OUT} ${YACC_OUTH}
DEPENDS ${YACC_SRC} ${LEX_OUT}
COMMAND ${BISON_EXECUTABLE}
ARGS -pcsound_orc -d --report=itemset -o ${YACC_OUT} ${YACC_SRC}
)
list(APPEND libcsound_SRCS
${LEX_OUT} ${YACC_OUT} ${PRELEX_OUT}
Engine/csound_orc_semantics.c
Engine/csound_orc_expressions.c
Engine/csound_orc_optimize.c
Engine/csound_orc_compile.c
Engine/new_orc_parser.c
Engine/symbtab.c)
set_source_files_properties(${YACC_OUT} GENERATED)
set_source_files_properties(${YACC_OUTH} GENERATED)
set_source_files_properties(${LEX_OUT} GENERATED)
set_source_files_properties(${PRELEX_OUT} GENERATED)
if(MSVC)
set_source_files_properties(${LEX_OUT} PROPERTIES
COMPILE_FLAGS -DYY_NO_UNISTD_H)
set_source_files_properties(${PRELEX_OUT} PROPERTIES
COMPILE_FLAGS -DYY_NO_UNISTD_H)
endif()
# Handling New Score Parser
##list(APPEND libcsound_CFLAGS -DSCORE_PARSER)
#set(YACC_SCOSRC ${CMAKE_CURRENT_SOURCE_DIR}/Engine/csound_sco.y)
#set(YACC_SCOOUT ${CMAKE_CURRENT_BINARY_DIR}/csound_scoparse.c)
#set(YACC_SCOOUTH ${CMAKE_CURRENT_BINARY_DIR}/csound_scoparse.h)
#set(LEX_SCOSRC ${CMAKE_CURRENT_SOURCE_DIR}/Engine/csound_sco.lex)
#set(LEX_SCOOUT ${CMAKE_CURRENT_BINARY_DIR}/csound_scolex.c)
set(PRELEX_SCOSRC ${CMAKE_CURRENT_SOURCE_DIR}/Engine/csound_prs.lex)
set(PRELEX_SCOOUT ${CMAKE_CURRENT_BINARY_DIR}/csound_prslex.c)
##message("${CMAKE_CURRENT_BINARY_DIR}/csound_prslex.c")
##message("${CMAKE_CURRENT_BINARY_DIR}/csound_scolex.c")
##message("${CMAKE_CURRENT_BINARY_DIR}/csound_scoparse.c")
#add_custom_command(
# OUTPUT ${LEX_SCOOUT}
# DEPENDS ${LEX_SCOSRC}
# COMMAND ${FLEX_EXECUTABLE} ARGS -B -t ${LEX_SCOSRC} > ${LEX_SCOOUT}
# )
add_custom_command(
OUTPUT ${PRELEX_SCOOUT}
DEPENDS ${PRELEX_SCOSRC}
COMMAND ${FLEX_EXECUTABLE} ARGS -B -t -d ${PRELEX_SCOSRC} > ${PRELEX_SCOOUT}
)
#add_custom_command(
# OUTPUT ${YACC_SCOOUT} ${YACC_SCOOUTH}
# DEPENDS ${YACC_SCOSRC} ${LEX_SCOOUT}
# COMMAND ${BISON_EXECUTABLE}
# ARGS -pcsound_sco -t -d --report=itemset -o ${YACC_SCOOUT} ${YACC_SCOSRC}
# )
list(APPEND libcsound_SRCS ${PRELEX_SCOOUT})
#${LEX_SCOOUT} ${YACC_SCOOUT} ${PRELEX_SCOOUT})
#set_source_files_properties(${YACC_SCOOUT} GENERATED)
#set_source_files_properties(${LEX_SCOOUT} GENERATED)
set_source_files_properties(${PRELEX_SCOOUT} GENERATED)
if(MSVC)
set_source_files_properties(${PRELEX_SCOOUT} PROPERTIES
COMPILE_FLAGS -DYY_NO_UNISTD_H)
endif()
include_directories(${CMAKE_CURRENT_BINARY_DIR})
include_directories(${CMAKE_CURRENT_BINARY_DIR}/include)
if(NEW_PARSER_DEBUG)
message(STATUS "Building with new parser debugging.")
list(APPEND libcsound_CFLAGS -DPARSER_DEBUG=1)
else()
message(STATUS "Not building with new parser debugging.")
endif()
if(BUILD_MULTI_CORE)
message(STATUS "Building with multicore support.")
list(APPEND libcsound_SRCS
Engine/cs_new_dispatch.c
Engine/cs_par_base.c
Engine/cs_par_orc_semantic_analysis.c
Engine/cs_par_dispatch.c)
list(APPEND libcsound_CFLAGS -DPARCS)
else()
message(STATUS "Not building with multicore support.")
endif()
set(CSOUNDLIB_STATIC "${CSOUNDLIB}-static")
# ADDING HERE TO GRAB LIST OF HEADERS IN CASE OF BUILDING OSX FRAMEWORK
add_subdirectory(include)
if(APPLE)
string(REGEX REPLACE "([^;]+)(;|$)" "include/\\1\\2" csheaders "${csheaders}")
file(GLOB H_headers "${CMAKE_CURRENT_SOURCE_DIR}/H/*.h")
set(libcsound_SRCS "${libcsound_SRCS};${csheaders};${H_headers};${CMAKE_CURRENT_BINARY_DIR}/include/float-version.h")
endif()
add_library(${CSOUNDLIB} SHARED ${libcsound_SRCS})
set_target_properties(${CSOUNDLIB} PROPERTIES
SOVERSION ${APIVERSION})
if(APPLE)
set_target_properties(${CSOUNDLIB} PROPERTIES FRAMEWORK YES)
set_target_properties(${CSOUNDLIB} PROPERTIES FRAMEWORK_VERSION "${APIVERSION}")
set_target_properties(${CSOUNDLIB} PROPERTIES PUBLIC_HEADER "${csheaders};${CMAKE_CURRENT_BINARY_DIR}/include/float-version.h")
endif()
# This copies libsndfile into the framework and sets the install names
# of CsoundLib to refer to it.
#if(APPLE AND NOT ${CMAKE_GENERATOR} STREQUAL "Xcode")
#get_filename_component(source ${LIBSNDFILE_LIBRARY} REALPATH)
#get_filename_component(depname ${source} NAME)
#set(CSOUNDLIB_DIR ${BUILD_DIR}/${CSOUNDLIB}.framework/Versions/${APIVERSION})
#if(NOT EXISTS ${CSOUNDLIB_DIR}/Resources/libs/${depname})
# add_custom_command(
# TARGET ${CSOUNDLIB}
# POST_BUILD
# COMMAND mkdir
# ARGS -p ${CSOUNDLIB_DIR}/Resources/libs
# COMMAND cp
# ARGS ${source} ${CSOUNDLIB_DIR}/Resources/libs/${depname}
# COMMAND ${CMAKE_INSTALL_NAME_TOOL}
# ARGS -id ${depname} ${CSOUNDLIB_DIR}/Resources/libs/${depname}
#)
#endif()
#add_custom_command(
# TARGET ${CSOUNDLIB}
# POST_BUILD
# COMMAND ${CMAKE_INSTALL_NAME_TOOL}
# ARGS -change ${source} @loader_path/Resources/libs/${depname} ${CSOUNDLIB_DIR}/${CSOUNDLIB}
#)
#endif()
# Utility function to make plugins. All plugin targets should use this as it
# sets up output directory set in top-level CmakeLists.txt
# and adds the appropriate install target
#
# libname - name of library to produce
# srcs - list of src files (must be quoted if a list)
# extralibs (OPTIONAL) - extra libraries to link the plugin to
#
# NB - this was moved here as it needs some VARS defined above
# for setting up the framework
function(make_plugin libname srcs)
if(APPLE)
add_library(${libname} SHARED ${srcs})
else()
add_library(${libname} MODULE ${srcs})
endif()
set(i 2)
while( ${i} LESS ${ARGC} )
if(NOT MSVC OR NOT("${ARGV${i}}" MATCHES "m"))
target_link_libraries(${libname} ${ARGV${i}})
endif()
math(EXPR i "${i}+1")
endwhile()
set_target_properties(${libname} PROPERTIES
RUNTIME_OUTPUT_DIRECTORY ${BUILD_PLUGINS_DIR}
LIBRARY_OUTPUT_DIRECTORY ${BUILD_PLUGINS_DIR}
ARCHIVE_OUTPUT_DIRECTORY ${BUILD_PLUGINS_DIR})
install(TARGETS ${libname}
LIBRARY DESTINATION "${PLUGIN_INSTALL_DIR}" )
endfunction(make_plugin)
# this copies the dependencies of plugins into framework
# and fixes the lib name references
function(add_dependency_to_framework pluginlib dependency)
#if(APPLE AND NOT ${CMAKE_GENERATOR} STREQUAL "Xcode")
#get_filename_component(source ${dependency} REALPATH)
#get_filename_component(depname ${source} NAME)
#
#set(RESOURCE_DIR ${BUILD_DIR}/${CSOUNDLIB}.framework/Versions/${APIVERSION}/Resources)
#if(NOT EXISTS ${RESOURCE_DIR}/libs/${depname})
#add_custom_command(
#TARGET ${pluginlib}
#COMMAND mkdir
#ARGS -p ${RESOURCE_DIR}/libs
#COMMAND cp
#ARGS -f ${source} ${RESOURCE_DIR}/libs/${depname}
#COMMAND ${CMAKE_INSTALL_NAME_TOOL}
#ARGS -id ${depname} ${RESOURCE_DIR}/libs/${depname}
#)
#endif()
#add_custom_command(
#TARGET ${pluginlib}
#POST_BUILD
#COMMAND ${CMAKE_INSTALL_NAME_TOOL}
#ARGS -change ${source} @loader_path/../libs/${depname} ${BUILD_PLUGINS_DIR}/lib${pluginlib}.dylib
#)
#endif()
endfunction(add_dependency_to_framework)
# Add the install target
if(WIN32)
install(TARGETS ${CSOUNDLIB}
RUNTIME DESTINATION "${EXECUTABLE_INSTALL_DIR}"
ARCHIVE DESTINATION "${LIBRARY_INSTALL_DIR}"
FRAMEWORK DESTINATION "${CS_FRAMEWORK_DEST}")
else()
install(TARGETS ${CSOUNDLIB}
LIBRARY DESTINATION "${LIBRARY_INSTALL_DIR}"
ARCHIVE DESTINATION "${LIBRARY_INSTALL_DIR}"
FRAMEWORK DESTINATION "${CS_FRAMEWORK_DEST}")
endif()
if(EMSCRIPTEN)
include_directories(emscripten/deps/libsndfile-1.0.25/src/)
endif()
set(libcsound_LIBS ${LIBSNDFILE_LIBRARY})
if(REQUIRE_PTHREADS AND PTHREAD_LIBRARY)
list(APPEND libcsound_LIBS ${PTHREAD_LIBRARY})
endif()
if(WIN32)
list(APPEND libcsound_LIBS "${CSOUND_WINDOWS_LIBRARIES}")
list(APPEND libcsound_LIBS "${LIBSNDFILE_SUPPORT_LIBS}")
else()
endif()
if(CURL_FOUND)
list(APPEND libcsound_LIBS ${CURL_LIBRARIES})
if(WIN32 AND NOT MSVC)
# not quite working yet with msys2/mingw64
#list(APPEND libcsound_CFLAGS -DCURL_STATICLIB -DLIBSSH_STATIC)
#list(APPEND libcsound_LIBS crypto ssh2 ssl ws2_32 rtmp)
#find_library(GNUTLS_LIB gnutls)
#list(APPEND libcsound_LIBS ${GNUTLS_LIB})
endif()
endif()
# Linux does not have a separate libintl, it is part of libc
set(LIBINTL_AVAIL (LIBINTL_LIBRARY OR LINUX))
check_deps(USE_GETTEXT LIBINTL_HEADER LIBINTL_AVAIL GETTEXT_MSGFMT_EXECUTABLE)
if(USE_GETTEXT)
message(STATUS "Using GNU gettext.")
if(NOT LINUX)
list(APPEND libcsound_LIBS ${LIBINTL_LIBRARY})
endif()
list(APPEND libcsound_CFLAGS -DGNU_GETTEXT)
if(NOT DEFINED CSOUND_TEXTDOMAIN AND BUILD_RELEASE AND (LINUX))
file(TO_NATIVE_PATH "${CMAKE_INSTALL_PREFIX}/${LOCALE_INSTALL_DIR}" CSOUND_TEXTDOMAIN)
endif()
if(CSOUND_TEXTDOMAIN)
message(STATUS "Setting textdomain to ${CSOUND_TEXTDOMAIN}.")
set_source_files_properties(Top/getstring.c PROPERTIES
COMPILE_FLAGS -DCSOUND_TEXTDOMAIN=\\\"${CSOUND_TEXTDOMAIN}\\\")
else()
message(STATUS "Not setting textdomain.")
endif()
else()
message(STATUS "Not using localization.")
endif()
if(LINUX)
message(STATUS "Building on Linux.")
add_definitions(-DLINUX -DPIPES -DNO_FLTK_THREADS -D_GNU_SOURCE -DHAVE_SOCKETS)
list(APPEND libcsound_LIBS m dl)
find_library(LIBRT_LIBRARY rt)
if(LIBRT_LIBRARY)
list(APPEND libcsound_LIBS ${LIBRT_LIBRARY})
message(STATUS " ADDING LIBRT LIBRARY: ${LIBRT_LIBRARY}.")
endif()
endif()
if(APPLE AND NOT IOS)
message(STATUS "Building on OSX")
add_definitions(-DMACOSX -DPIPES -DNO_FLTK_THREADS -DHAVE_SOCKETS)
find_library(ACCELERATE_LIBRARY Accelerate)
find_path(VECLIB_PATH "Accelerate/Accelerate.h")
include_directories(${VECLIB_PATH})
list(APPEND libcsound_LIBS m dl ${ACCELERATE_LIBRARY})
endif()
if(WIN32)
add_definitions(-DWIN32)
endif()
check_function_exists(strlcat HAVE_STRLCAT)
if(HAVE_STRLCAT)
add_definitions(-DHAVE_STRLCAT)
endif()
# Locale-aware reading and printing
check_function_exists(strtok_r HAVE_STRTOK_R)
check_function_exists(strtod_l HAVE_STRTOD_L)
check_function_exists(sprintf_l HAVE_SPRINTF_L)
if(HAVE_STRTOK_R)
add_definitions(-DHAVE_STRTOK_R)
endif()
if(HAVE_STRTOD_L)
add_definitions(-DHAVE_STRTOD_L)
endif()
if(HAVE_SPRINTF_L)
add_definitions(-DHAVE_SPRINTF_L)
endif()
# Same for Windows
check_function_exists(_strtok_r HAVE__STRTOK_R)
check_function_exists(_strtod_l HAVE__STRTOD_L)
check_function_exists(_sprintf_l HAVE__SPRINTF_L)
if(HAVE__STRTOK_R)
add_definitions(-DHAVE__STRTOK_R)
endif()
if(HAVE__STRTOD_L)
add_definitions(-DHAVE__STRTOD_L)
endif()
if(HAVE__SPRINTF_L)
add_definitions(-DHAVE__SPRINTF_L)
endif()
# Pass flags according to system capabilities
if(HAVE_WINSOCK_H OR HAVE_SYS_SOCKETS_H)
list(APPEND libcsound_CFLAGS -DHAVE_SOCKETS)
endif()
if(HAVE_DIRENT_H)
list(APPEND libcsound_CFLAGS -DHAVE_DIRENT_H)
endif()
if(HAVE_FCNTL_H)
list(APPEND libcsound_CFLAGS -DHAVE_FCNTL_H)
endif()
if(HAVE_UNISTD_H)
list(APPEND libcsound_CFLAGS -DHAVE_UNISTD_H)
endif()
if(HAVE_STDINT_H)
list(APPEND libcsound_CFLAGS -DHAVE_STDINT_H)
endif()
if(HAVE_SYS_TIME_H)
list(APPEND libcsound_CFLAGS -DHAVE_SYS_TIME_H)
endif()
if(HAVE_SYS_TYPES_H)
list(APPEND libcsound_CFLAGS -DHAVE_SYS_TYPES_H)
endif()
if(HAVE_TERMIOS_H)
list(APPEND libcsound_CFLAGS -DHAVE_TERMIOS_H)
endif()
if(HAVE_VALUES_H)
list(APPEND libcsound_CFLAGS -DHAVE_VALUES_H)
endif()
#if(CMAKE_C_COMPILER MATCHES "gcc")
# list(APPEND libcsound_CFLAGS -fno-strict-aliasing)
#endif()
if(BIG_ENDIAN)
list(APPEND libcsound_CFLAGS -DWORDS_BIGENDIAN)
endif()
target_compile_options(${CSOUNDLIB} PRIVATE ${libcsound_CFLAGS})
target_link_libraries(${CSOUNDLIB} PRIVATE ${libcsound_LIBS})
set_target_properties(${CSOUNDLIB} PROPERTIES
RUNTIME_OUTPUT_DIRECTORY ${BUILD_BIN_DIR}
LIBRARY_OUTPUT_DIRECTORY ${BUILD_LIB_DIR}
ARCHIVE_OUTPUT_DIRECTORY ${BUILD_LIB_DIR})
if(BUILD_STATIC_LIBRARY)
add_library(${CSOUNDLIB_STATIC} STATIC ${libcsound_SRCS})
SET_TARGET_PROPERTIES(${CSOUNDLIB_STATIC} PROPERTIES OUTPUT_NAME ${CSOUNDLIB})
SET_TARGET_PROPERTIES(${CSOUNDLIB_STATIC} PROPERTIES PREFIX "lib")
target_compile_options(${CSOUNDLIB_STATIC} PRIVATE ${libcsound_CFLAGS})
target_link_libraries(${CSOUNDLIB_STATIC} ${libcsound_LIBS})
set_target_properties(${CSOUNDLIB_STATIC} PROPERTIES
RUNTIME_OUTPUT_DIRECTORY ${BUILD_BIN_DIR}
LIBRARY_OUTPUT_DIRECTORY ${BUILD_LIB_DIR}
ARCHIVE_OUTPUT_DIRECTORY ${BUILD_LIB_DIR})
# Add the install target
install(TARGETS ${CSOUNDLIB_STATIC}
LIBRARY DESTINATION "${LIBRARY_INSTALL_DIR}"
ARCHIVE DESTINATION "${LIBRARY_INSTALL_DIR}")
endif()
# VL -- this seems to be a duplicate instruction
# and it's breaking the build. See lines 1088-95
#install(TARGETS ${CSOUNDLIB}
# LIBRARY DESTINATION "${LIBRARY_INSTALL_DIR}"
# ARCHIVE DESTINATION "${LIBRARY_INSTALL_DIR}")
## option(BUILD_CATALOG "Build the opcode/library catalog" OFF)
## check_deps(BUILD_CATALOG)
## if(BUILD_CATALOG)
## make_executable(mkdb "mkdb" "dl")
## set_target_properties(mkdb PROPERTIES LINKER_LANGUAGE C)
## endif()
add_subdirectory(Opcodes)
add_subdirectory(InOut)
add_subdirectory(interfaces)
add_subdirectory(frontends)
add_subdirectory(util)
add_subdirectory(util1)
add_subdirectory(SDIF)
add_subdirectory(po)
add_subdirectory(tests/c)
add_subdirectory(tests/commandline)
add_subdirectory(tests/regression)
add_subdirectory(tests/soak)
# uninstall target
configure_file(
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in"
"${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
IMMEDIATE @ONLY)
add_custom_target(uninstall
COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake)
# target etags/tags
if(UNIX)
add_custom_target(tags COMMAND etags `find ${CMAKE_CURRENT_SOURCE_DIR} -name \\*.cc -or -name \\*.hh -or -name \\*.cpp -or -name \\*.h -or -name \\*.c | grep -v " " `)
add_custom_target(etags DEPENDS tags)
endif()
# build a CPack driven installer package
#include (InstallRequiredSystemLibraries)
set (CPACK_PACKAGE_NAME "csound")
set (CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/COPYING")
set (CPACK_PACKAGE_VERSION "6.0.0")
set (CPACK_PACKAGE_VERSION_MAJOR "6")
set (CPACK_PACKAGE_VERSION_MINOR "0")
set (CPACK_PACKAGE_VERSION_PATCH "0")
include (CPack)
# Documentation
find_package(Doxygen)
if(DOXYGEN_FOUND)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.doxygen
${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY)
add_custom_target(doc ${DOXYGEN_EXECUTABLE}
${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
)
else()
message(STATUS "Not building documentation")
endif(DOXYGEN_FOUND)
csound-6.10.0/COPYING 0000664 0000000 0000000 00000063476 13216533447 0014154 0 ustar 00root root 0000000 0000000 GNU LESSER GENERAL PUBLIC LICENSE
Version 2.1, February 1999
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
[This is the first released version of the Lesser GPL. It also counts
as the successor of the GNU Library Public License, version 2, hence
the version number 2.1.]
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
Licenses are intended to guarantee your freedom to share and change
free software--to make sure the software is free for all its users.
This license, the Lesser General Public License, applies to some
specially designated software packages--typically libraries--of the
Free Software Foundation and other authors who decide to use it. You
can use it too, but we suggest you first think carefully about whether
this license or the ordinary General Public License is the better
strategy to use in any particular case, based on the explanations below.
When we speak of free software, we are referring to freedom of use,
not price. Our General Public Licenses are designed to make sure that
you have the freedom to distribute copies of free software (and charge
for this service if you wish); that you receive source code or can get
it if you want it; that you can change the software and use pieces of
it in new free programs; and that you are informed that you can do
these things.
To protect your rights, we need to make restrictions that forbid
distributors to deny you these rights or to ask you to surrender these
rights. These restrictions translate to certain responsibilities for
you if you distribute copies of the library or if you modify it.
For example, if you distribute copies of the library, whether gratis
or for a fee, you must give the recipients all the rights that we gave
you. You must make sure that they, too, receive or can get the source
code. If you link other code with the library, you must provide
complete object files to the recipients, so that they can relink them
with the library after making changes to the library and recompiling
it. And you must show them these terms so they know their rights.
We protect your rights with a two-step method: (1) we copyright the
library, and (2) we offer you this license, which gives you legal
permission to copy, distribute and/or modify the library.
To protect each distributor, we want to make it very clear that
there is no warranty for the free library. Also, if the library is
modified by someone else and passed on, the recipients should know
that what they have is not the original version, so that the original
author's reputation will not be affected by problems that might be
introduced by others.
Finally, software patents pose a constant threat to the existence of
any free program. We wish to make sure that a company cannot
effectively restrict the users of a free program by obtaining a
restrictive license from a patent holder. Therefore, we insist that
any patent license obtained for a version of the library must be
consistent with the full freedom of use specified in this license.
Most GNU software, including some libraries, is covered by the
ordinary GNU General Public License. This license, the GNU Lesser
General Public License, applies to certain designated libraries, and
is quite different from the ordinary General Public License. We use
this license for certain libraries in order to permit linking those
libraries into non-free programs.
When a program is linked with a library, whether statically or using
a shared library, the combination of the two is legally speaking a
combined work, a derivative of the original library. The ordinary
General Public License therefore permits such linking only if the
entire combination fits its criteria of freedom. The Lesser General
Public License permits more lax criteria for linking other code with
the library.
We call this license the "Lesser" General Public License because it
does Less to protect the user's freedom than the ordinary General
Public License. It also provides other free software developers Less
of an advantage over competing non-free programs. These disadvantages
are the reason we use the ordinary General Public License for many
libraries. However, the Lesser license provides advantages in certain
special circumstances.
For example, on rare occasions, there may be a special need to
encourage the widest possible use of a certain library, so that it becomes
a de-facto standard. To achieve this, non-free programs must be
allowed to use the library. A more frequent case is that a free
library does the same job as widely used non-free libraries. In this
case, there is little to gain by limiting the free library to free
software only, so we use the Lesser General Public License.
In other cases, permission to use a particular library in non-free
programs enables a greater number of people to use a large body of
free software. For example, permission to use the GNU C Library in
non-free programs enables many more people to use the whole GNU
operating system, as well as its variant, the GNU/Linux operating
system.
Although the Lesser General Public License is Less protective of the
users' freedom, it does ensure that the user of a program that is
linked with the Library has the freedom and the wherewithal to run
that program using a modified version of the Library.
The precise terms and conditions for copying, distribution and
modification follow. Pay close attention to the difference between a
"work based on the library" and a "work that uses the library". The
former contains code derived from the library, whereas the latter must
be combined with the library in order to run.
GNU LESSER GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License Agreement applies to any software library or other
program which contains a notice placed by the copyright holder or
other authorized party saying it may be distributed under the terms of
this Lesser General Public License (also called "this License").
Each licensee is addressed as "you".
A "library" means a collection of software functions and/or data
prepared so as to be conveniently linked with application programs
(which use some of those functions and data) to form executables.
The "Library", below, refers to any such software library or work
which has been distributed under these terms. A "work based on the
Library" means either the Library or any derivative work under
copyright law: that is to say, a work containing the Library or a
portion of it, either verbatim or with modifications and/or translated
straightforwardly into another language. (Hereinafter, translation is
included without limitation in the term "modification".)
"Source code" for a work means the preferred form of the work for
making modifications to it. For a library, complete source code means
all the source code for all modules it contains, plus any associated
interface definition files, plus the scripts used to control compilation
and installation of the library.
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running a program using the Library is not restricted, and output from
such a program is covered only if its contents constitute a work based
on the Library (independent of the use of the Library in a tool for
writing it). Whether that is true depends on what the Library does
and what the program that uses the Library does.
1. You may copy and distribute verbatim copies of the Library's
complete source code as you receive it, in any medium, provided that
you conspicuously and appropriately publish on each copy an
appropriate copyright notice and disclaimer of warranty; keep intact
all the notices that refer to this License and to the absence of any
warranty; and distribute a copy of this License along with the
Library.
You may charge a fee for the physical act of transferring a copy,
and you may at your option offer warranty protection in exchange for a
fee.
2. You may modify your copy or copies of the Library or any portion
of it, thus forming a work based on the Library, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) The modified work must itself be a software library.
b) You must cause the files modified to carry prominent notices
stating that you changed the files and the date of any change.
c) You must cause the whole of the work to be licensed at no
charge to all third parties under the terms of this License.
d) If a facility in the modified Library refers to a function or a
table of data to be supplied by an application program that uses
the facility, other than as an argument passed when the facility
is invoked, then you must make a good faith effort to ensure that,
in the event an application does not supply such function or
table, the facility still operates, and performs whatever part of
its purpose remains meaningful.
(For example, a function in a library to compute square roots has
a purpose that is entirely well-defined independent of the
application. Therefore, Subsection 2d requires that any
application-supplied function or table used by this function must
be optional: if the application does not supply it, the square
root function must still compute square roots.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Library,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Library, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote
it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Library.
In addition, mere aggregation of another work not based on the Library
with the Library (or with a work based on the Library) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may opt to apply the terms of the ordinary GNU General Public
License instead of this License to a given copy of the Library. To do
this, you must alter all the notices that refer to this License, so
that they refer to the ordinary GNU General Public License, version 2,
instead of to this License. (If a newer version than version 2 of the
ordinary GNU General Public License has appeared, then you can specify
that version instead if you wish.) Do not make any other change in
these notices.
Once this change is made in a given copy, it is irreversible for
that copy, so the ordinary GNU General Public License applies to all
subsequent copies and derivative works made from that copy.
This option is useful when you wish to copy part of the code of
the Library into a program that is not a library.
4. You may copy and distribute the Library (or a portion or
derivative of it, under Section 2) in object code or executable form
under the terms of Sections 1 and 2 above provided that you accompany
it with the complete corresponding machine-readable source code, which
must be distributed under the terms of Sections 1 and 2 above on a
medium customarily used for software interchange.
If distribution of object code is made by offering access to copy
from a designated place, then offering equivalent access to copy the
source code from the same place satisfies the requirement to
distribute the source code, even though third parties are not
compelled to copy the source along with the object code.
5. A program that contains no derivative of any portion of the
Library, but is designed to work with the Library by being compiled or
linked with it, is called a "work that uses the Library". Such a
work, in isolation, is not a derivative work of the Library, and
therefore falls outside the scope of this License.
However, linking a "work that uses the Library" with the Library
creates an executable that is a derivative of the Library (because it
contains portions of the Library), rather than a "work that uses the
library". The executable is therefore covered by this License.
Section 6 states terms for distribution of such executables.
When a "work that uses the Library" uses material from a header file
that is part of the Library, the object code for the work may be a
derivative work of the Library even though the source code is not.
Whether this is true is especially significant if the work can be
linked without the Library, or if the work is itself a library. The
threshold for this to be true is not precisely defined by law.
If such an object file uses only numerical parameters, data
structure layouts and accessors, and small macros and small inline
functions (ten lines or less in length), then the use of the object
file is unrestricted, regardless of whether it is legally a derivative
work. (Executables containing this object code plus portions of the
Library will still fall under Section 6.)
Otherwise, if the work is a derivative of the Library, you may
distribute the object code for the work under the terms of Section 6.
Any executables containing that work also fall under Section 6,
whether or not they are linked directly with the Library itself.
6. As an exception to the Sections above, you may also combine or
link a "work that uses the Library" with the Library to produce a
work containing portions of the Library, and distribute that work
under terms of your choice, provided that the terms permit
modification of the work for the customer's own use and reverse
engineering for debugging such modifications.
You must give prominent notice with each copy of the work that the
Library is used in it and that the Library and its use are covered by
this License. You must supply a copy of this License. If the work
during execution displays copyright notices, you must include the
copyright notice for the Library among them, as well as a reference
directing the user to the copy of this License. Also, you must do one
of these things:
a) Accompany the work with the complete corresponding
machine-readable source code for the Library including whatever
changes were used in the work (which must be distributed under
Sections 1 and 2 above); and, if the work is an executable linked
with the Library, with the complete machine-readable "work that
uses the Library", as object code and/or source code, so that the
user can modify the Library and then relink to produce a modified
executable containing the modified Library. (It is understood
that the user who changes the contents of definitions files in the
Library will not necessarily be able to recompile the application
to use the modified definitions.)
b) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (1) uses at run time a
copy of the library already present on the user's computer system,
rather than copying library functions into the executable, and (2)
will operate properly with a modified version of the library, if
the user installs one, as long as the modified version is
interface-compatible with the version that the work was made with.
c) Accompany the work with a written offer, valid for at
least three years, to give the same user the materials
specified in Subsection 6a, above, for a charge no more
than the cost of performing this distribution.
d) If distribution of the work is made by offering access to copy
from a designated place, offer equivalent access to copy the above
specified materials from the same place.
e) Verify that the user has already received a copy of these
materials or that you have already sent this user a copy.
For an executable, the required form of the "work that uses the
Library" must include any data and utility programs needed for
reproducing the executable from it. However, as a special exception,
the materials to be distributed need not include anything that is
normally distributed (in either source or binary form) with the major
components (compiler, kernel, and so on) of the operating system on
which the executable runs, unless that component itself accompanies
the executable.
It may happen that this requirement contradicts the license
restrictions of other proprietary libraries that do not normally
accompany the operating system. Such a contradiction means you cannot
use both them and the Library together in an executable that you
distribute.
7. You may place library facilities that are a work based on the
Library side-by-side in a single library together with other library
facilities not covered by this License, and distribute such a combined
library, provided that the separate distribution of the work based on
the Library and of the other library facilities is otherwise
permitted, and provided that you do these two things:
a) Accompany the combined library with a copy of the same work
based on the Library, uncombined with any other library
facilities. This must be distributed under the terms of the
Sections above.
b) Give prominent notice with the combined library of the fact
that part of it is a work based on the Library, and explaining
where to find the accompanying uncombined form of the same work.
8. You may not copy, modify, sublicense, link with, or distribute
the Library except as expressly provided under this License. Any
attempt otherwise to copy, modify, sublicense, link with, or
distribute the Library is void, and will automatically terminate your
rights under this License. However, parties who have received copies,
or rights, from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.
9. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Library or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Library (or any work based on the
Library), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Library or works based on it.
10. Each time you redistribute the Library (or any work based on the
Library), the recipient automatically receives a license from the
original licensor to copy, distribute, link with or modify the Library
subject to these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties with
this License.
11. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Library at all. For example, if a patent
license would not permit royalty-free redistribution of the Library by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Library.
If any portion of this section is held invalid or unenforceable under any
particular circumstance, the balance of the section is intended to apply,
and the section as a whole is intended to apply in other circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
12. If the distribution and/or use of the Library is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Library under this License may add
an explicit geographical distribution limitation excluding those countries,
so that distribution is permitted only in or among countries not thus
excluded. In such case, this License incorporates the limitation as if
written in the body of this License.
13. The Free Software Foundation may publish revised and/or new
versions of the Lesser General Public License from time to time.
Such new versions will be similar in spirit to the present version,
but may differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Library
specifies a version number of this License which applies to it and
"any later version", you have the option of following the terms and
conditions either of that version or of any later version published by
the Free Software Foundation. If the Library does not specify a
license version number, you may choose any version ever published by
the Free Software Foundation.
14. If you wish to incorporate parts of the Library into other free
programs whose distribution conditions are incompatible with these,
write to the author to ask for permission. For software which is
copyrighted by the Free Software Foundation, write to the Free
Software Foundation; we sometimes make exceptions for this. Our
decision will be guided by the two goals of preserving the free status
of all derivatives of our free software and of promoting the sharing
and reuse of software generally.
NO WARRANTY
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Libraries
If you develop a new library, and you want it to be of the greatest
possible use to the public, we recommend making it free software that
everyone can redistribute and change. You can do so by permitting
redistribution under these terms (or, alternatively, under the terms of the
ordinary General Public License).
To apply these terms, attach the following notices to the library. It is
safest to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least the
"copyright" line and a pointer to where the full notice is found.
Copyright (C)
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Also add information on how to contact you by electronic and paper mail.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the library, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
, 1 April 1990
Ty Coon, President of Vice
That's all there is to it!
csound-6.10.0/ChangeLog 0000664 0000000 0000000 00001356746 13216533447 0014701 0 ustar 00root root 0000000 0000000 2012-02-09 john ffitch
* Opcodes/ugsc.c (hilbertset): Remove unnecessary arrays
2012-02-06 john ffitch
* H/version.h: VERSION 5.16.1
2011-11-30 john ffitch
* Opcodes/pitch.c (impulse): If next is negative time, make it
absolute value
2011-10-28 john ffitch
* Opcodes/socksend.c (send_send, send_sendS): Added optional
format message as INT16_LE and remove MTFU check
2011-10-14 John ff
* Opcodes/tabvars.c (ftab2tab):
(tab2ftab): New opcodes
2011-10-12 John ff
* VERSION 5.14
2011-06-21 john ffitch
* Opcodes/wiimote.c (wii_data_init): Return value missing
(wii_data_inits): Ditto
2011-05-25 John ff
* Engine/fgens.c (nextval): Ensure c moves on if not a number
2011-05-19 john ffitch
* OOps/cmath.c (exprndiset, kexprndi, aexprndi): New code for
exprandi opcode; also cauchyi
2011-05-05 john ffitch
* SConstruct (optionsFilename): Try to check that the custom.py exists
2011-04-10 john ffitch
* OOps/aops.c (is_NaN, is_NaNa): New function
(is_inf, is_infa): New function
2011-03-17 john ffitch
* Engine/csound_orc_expressions.c (csound_orc_expand_expressions):
Generate kgoto rather than goto. Not totally sure this is right yet
2011-02-09 john ffitch
* util1/csd_util/makecsd.c (main): new options for MIDI files and
score processing; licence control as well
* util1/csd_util/base64.c (encode_file): Added extra arg to select tags
2011-01-20 john ffitch
* Opcodes/mp3in.c (mp3len): New code
* SConstruct: Add building of fareyseq/fareygen which got lost
2011-01-17 john ffitch
* H/version.h: VERSION 5.13
2011-01-13 john ffitch
* OOps/ugens2.c (ko1set): ensure that the increment cannot be zero
2011-01-10 john ffitch
* Engine/fgens.c (gen49): Use csound->FileOpen2 rather than open
to get searching
(gen49): buffer used was in wrong units (chars v shorts)
2010-12-28 john ffitch
* Engine/symbtab.c (add_token): remove message if Opcode/Function
confusion
2010-12-18 john ffitch
* Opcodes/gab/tabmorph.c (atabmorphia): Fixed editing error that
would have caused opcode to scribble over memory
2010-12-17 John ff
* Opcodes/gab/vectorial.c: Lots of optimisations and corrections
2010-12-10 john ffitch
* Opcodes/gab/gab.c (isChanged_set): Initialise p->old_inargs
2010-12-05 john ffitch
* H/aops.h (struct INCH): Rewritten
* OOps/aops.c (inch_opcode): Rewritten
* Engine/entry1.c: Allow multiple args in inch
* Engine/csound_orc.l (do_at): New code to support @ and @@ operators
2010-11-28 john ffitch
* Engine/symbtab.c: Added cent as function
2010-11-27 john ffitch
* OOps/ugens3.c (adsyn): check that ktogo is never zero
2010-11-16 John ff
* Top/main.c (csoundCompile): and call macro inits
* Engine/csound_orc.l: Add standard macro initialisation code to lexer
2010-11-12 John ff
* Engine/csound_orc_semantics.c (handle_polymorphic_opcode):
Calculating c before switch can lead to following a null
pointer. Moved calculation to where it is needed.
2010-11-05 John ff
* OOps/ugens4.c (riset, rndset, rhset): Use Warning rather than Message
2010-11-04 John ff
* Opcodes/pvsbasic.c (MAXOUTS): Extend upto 16 outputs
(localops): Use F format in pvstanal
2010-10-12 john ffitch
* Engine/csound_orc.y: Allow labels in exprlists
2010-10-08 John ff
* OOps/cmath.c (ipow, apow): If normalisation is zero make it 1;
Needed in new parser as optional arg not handled
* csound_orc.l: Many changes in macros and stack of inputs
2010-09-23 john ffitch
* Opcodes/fout.c (sprints): Attempt to fix %%->% problem
2010-09-18 john ffitch
* Engine/csound_orc_expressions.c (create_expression): Unary minus
should use i rate if it can
2010-09-17 john ffitch
* SConstruct:
* Top/csound.c: Make new parser default
2010-09-02 Michael Gogins
* Corrected signature of fluidAllOut opcode, and fencepost error
in that opcode.
* Fixed order of processing in CsoundVST audio output callbacks.
2010-09-02 Michael Gogins
* Migrated Windows compiler to MinGW GCC 4.4.0 from Qt for all
third party and Csound executables. This compiler generates dw2
exception handling code.
* Fixed up examples to execute in their own directories.
* Changed csoundSetMessageCallback to reset the callback to
csoundDefaultMessageCallback if the user sets the callback to
null, in order to prevent segment faults.
2010-09-01 john ffitch
* Opcodes/gab/gab.c (adsynt2): Phase not handled correctly
2010-08-31 john ffitch
* Engine/csound_orc_expressions.c: Many changes to make if_then
etc work
2010-08-28 Michael Gogins
* Replaced csound-build.tex with
How_to_Build_Csound_on_Windows.doc, in Microsoft Word format,
which should be more accessible to users.
* Changed multi-threading in the head branch to use OpenMP instead
of PThreads, for greater clarity and maintainability.
2010-08-26 john ffitch
* Engine/csound_orc_expressions.c (create_cond_expression): New
code to deal with (a?b:c) variant
(is_expression_node): Added S_Q to expression operators
(create_expression): Call create_cond_expression
2010-08-25 John ff
* Engine/insert.c (insert): In pset case no not zero excess opcodes
2010-08-10 Michael Gogins
* Engine/typetabl.h: Supplied missing type mask for 'J' type code,
i.e. k-rate scalar defaulting to -1, used in "STK" opcodes and others.
* Opcodes/stk/STKOpcodes.cpp: Changed threading from 5 to 3,
changed MIDI controller number and value parameters to 'J' type.
* Updated environment, build, and installer scripts for new Windows
version built on new Core i7, Windows 7 computer.
2010-08-09 john ffitch
* InOut/libsnd.c (sfopenin): Correct warning message
* Top/csound.c ("C"): Default value of inchnls is now -1
* Engine/otran.c (oload): Set inchnls to nchnls if not explicit
2010-08-03 john ffitch
* Engine/csound_orc.y (ifac): Typo -- used S_MOD rather than S_DIV
2010-08-01 john ffitch
* Top/csound.c (csoundAddSpinSample): Needs to use nchnls_i
2010-07-31 john ffitch
* Engine/csound_orc_semantics.c (handle_optional_args):
* Engine/rdorch.c (getoptxt): Added J arg type
2010-07-28 John ff
* Opcodes/urandom.c (urand_run, urand_init, urand_deinit): New
code (LINUX ONLY)
2010-07-27 john ffitch
* Top/csmodule.c (csoundCheckOpcodeDeny): Complete function vis
CS_OMIT_LIBS environment
2010-07-26 john ffitch
* Top/csmodule.c (csoundCheckOpcodeDeny): New function (INCOMPLETE)
(csoundLoadModules): Check to see if library denied
2010-07-20 john ffitch
* Engine/sort.c (ordering): Fixed stupidity of using int where
MYFLT was needed
* Opcodes/grain.c (ags): Added check that kglen is strictly positive
2010-07-19 john ffitch
* Engine/sort.c (ordering): take account of negative p3
2010-07-14 john ffitch
* Opcodes/mp3in.c (mp3in): Deal with case of end of data
2010-07-13 john ffitch
* Engine/fgens.c (gen23): Typo in check for extra numbers removed
2010-07-08 john ffitch
* OOps/sndinfUG.c (filevalid):
* Engine/entry1.c:
* H/entry1.h: Added filevalid opcode
* H/sndinfUG.h (struct): Added FILEVALID structure
2010-07-04 john ffitch
* Engine/musmon.c (process_midi_event):
* Engine/insert.c (insert, MIDIinsert, insert_event):
* Engine/auxfd.c (auxchprint): Print name of instrument if available
(fdchprint): ditto
2010-07-03 john ffitch
* Engine/sort.c (ordering): Rewrote to make clearer and complete
* H/sort.h (srtblk): Changed order of fields to avoid overwrite
* Engine/extract.c: Added lineo field to dummy events
2010-06-28 john ffitch
* Opcodes/pitch0.c (maxalloc, cpuperc, instcount) Allow named
instruments
2010-06-24 john ffitch
* Engine/sort.c (ordering): Added ordering on line number if all
else fails
* H/csoundCore.h (EVTBLK): Added array of chars for strings
2010-05-26 john ffitch
* Opcodes/ftgen.c (ftgen): Need to deal with fp[5] in named gen case
2010-05-23 john ffitch
* Engine/fgens.c (hfgens): Check was against GENMAX rather than
csound->genmax
* Opcodes/ftgen.c (ftgen): Allow for named GENs
* Top/csound.c (csoundGetNamedGens): New API function
* Opcodes/fareyseq.c (tableshuffle): New code for two opcodes
2010-05-16 john ffitch
* Opcodes/pitch.c (medfiltset):
(medfilt): New code
2010-05-10 john ffitch
* Opcodes/fareygen.c:
* Opcodes/fareyseq.c: New code
* SConstruct: Added farey sequence GEN and opcodes
2010-05-09 john ffitch
* install.py: Added atsa to binaries
2010-05-03 john ffitch
* OOps/ugens6.c (delay1): use memmove rather than a loop
2010-04-25 john ffitch
* Opcodes/uggab.c (lineto): Some changes -- seems better
* OOps/ugens3.c (adsyn): Sorted out confusion over int32 and MYFLT
* OOps/ugens5.c (atonex): Fix bug; it was repeating the filter to
the input rather than cascading
(resonx):
(tonex): Same error as atonex
* Opcodes/gab/gab.c (adsynt2_set): Brought into line with
adsynt_set, and revised
(adsynt2_set): Initialisation of amp and frequency table was
totally wrong
2010-04-10 john ffitch
* Engine/fgens.c (gen41): Added check for positive probability
2010-04-05 john ffitch
* Opcodes/sndwarp.c (sndwarp): The attempt to give only one
warning message was wrong. Think OK now??
2010-03-24 john ffitch
* Top/main.c (csoundCompile): Removed spurious BETA check
2010-03-23 jpff
* Engine/sread.c (sget1): Remove repeats free
2010-03-22 john ffitch
* Engine/fgens.c (gen28): Typo -- freed x rather than y
2010-03-16 john ffitch
* Engine/sort.c: Code replaced with smoothsort code
2010-03-13 john ffitch
* Engine/smoothsort.c (sort): Deal with case of no e event
2010-03-12 jpff
* SConstruct: Added smoothSort option to control building
* Engine/smoothsort.c: New drop-in replacement for sort.c using a
fancier sort algorithm
2010-02-28 john ffitch
* OOps/ugrw1.c (sprints): A format with a % but no arg would cause
a crash
2010-02-25 john ffitch
* Opcodes/gab/gab.c: Added range checks to the fast table opcodes
2010-02-21 john ffitch
* OOps/aops.c (aassign): Correct typo in arguments
* Engine/rdorch.c (splitline): Rework \ inside strings
2010-02-15 jpff
* Engine/typetabl.h (]): Need to add p to I case
* Engine/rdorch.c (rdorchfile): Do not increment lincnt in line
continuation mode
2010-02-13 john ffitch
* OOps/aops.c (minit): Ensure a,b=b,a works
2010-02-12 john ffitch
* OOps/aops.c (minit, mainit): new code for multiple init
* Engine/entry1.c: Changed init to multiple version
2010-01-24 john ffitch
* Engine/sread.c (init_smacros): Define INF macro in scores as well
(getscochar): Read 'z' as infinity
* Engine/rdorch.c (init_math_constants_macros): Added INF macro
for infinity in orchestra
2010-01-17 john ffitch
* VERSION 5.12
a2010-01-16 john ffitch
* Engine/otran.c (oload): Need to check the first 6 variables, up
from 5 due to input channel code
2010-01-11 john ffitch
* Engine/fgens.c (gen28, gen31, gen32, gen33, gen34): Used
malloc/free for local memory
* InOut/widgets.cpp (fl_callbackExecButton): Freed memory
allocated in Windows case
2010-01-08 mantaraya36
* Engine/insert.c: Allow turning off non-indefinite instruments from negative score events. By John ffitch.
2010-01-08 john ffitch
* Engine/musmon.c (musmon): Corrected csound->inchnls to csound->nchnls
* Engine/csound_orc.y (param): Alter precedence of ? operator
2010-01-06 jpff
* Opcodes/fout.c (fprintf_set): Set line buffering
2010-01-02 john ffitch
* Opcodes/uggab.c (loopxseg): Fixed bug on shape
2009-12-28 john ffitch
* Engine/linevent.c (sensLine):
* Engine/musmon.c (insert_score_event_at_sample): Allow too few
arguments in f -x case
2009-12-27 john ffitch
* Opcodes/uggab.c (loopxseg): New code for loopxseg opcode
2009-12-26 john ffitch
* Opcodes/uggab.c (nterpol_init): Check to stop division by zero
2009-12-25 john ffitch for Francois Pinot
* Opcodes/crossfm.h:
* Opcodes/crossfm.c: New code
2009-12-23 john ffitch
* Opcodes/sfont.c: Set pitches on module creation rather than on
every load.
2009-12-22 john ffitch
* Opcodes/sfont.c (SfLoad): Added check to see if too many sound
fonts are loaded.
* Opcodes/pitch.c (trnsetr, trnset): Check argument count is 1mod3
2009-12-20 john ffitch
* Engine/csound_orc_semantics.c (handle_optional_args): If there
are no arguments yet we still need to add optionals
2009-12-13 john ffitch
* Opcodes/nlfilt.c (pinit): New code to implement passign opcode
2009-12-11 john ffitch
* Engine/rdorch.c (splitline): Allow \" in strings
* Top/one_file.c (readOptions): Reset linecount after reading .csoundrc
2009-11-29 john ffitch
* Opcodes/cross2.c (getmag): If magnitude is zero do not scale!
2009-11-28 john ffitch
* Opcodes/pitch.c (clockon, clockoff): Reading the clock should be
incremental. (correcting bug introduced by Istvan)
2009-11-24 jpff
* Engine/musmon.c (gettempo): Fixed stupid error
2009-11-09 john ffitch
* Opcodes/pan2.c (pan2run): Fixed editing error in type 3 (thanks
to Sigurd Saue)
2009-11-03 john ffitch
* Opcodes/p5glove.c (p5glove_find): Use thread to read the USB glove.
2009-10-16 jpff
* Opcodes/pvsbasic.c (pvsshiftset): Change MYFLT to float in memset
2009-10-02 jpff
* Opcodes/pitch.c (trnsetr, ktrnsegr, trnsegr): New code
* Opcodes/spectra.c: declare transegr
2009-09-22 jpff
* H/version.h: VERSION 5.11.1
* Opcodes/bilbar.c (bar_run): Fix typo in right end type 1
(bar_run): Loop needs to be one more for right end
2009-09-14 jpff
* Engine/fgens.c (gen32): And allow extended here as well, via aux
function
2009-09-10 jpff
* Engine/fgens.c (gen52, gen51): Added extended arg support
2009-08-27 jpff
* H/csoundCore.h (PMAX): Reduced by 2
(EVTBLK): Added c.extra field to EVTBLK
* Engine/fgens.c: LOTS of changes to allow extension of arguments uses.
* Engine/sread.c (ifa): removed limit of PMAX arguments to events
* Engine/rdscor.c (rdscor): Allow reading of more than PMAX fields
* Engine/fgens.c (gen23): Total rewrite
2009-08-19 jpff
* Engine/fgens.c (hfgens): Correct error string to 1, 23 or 28 for
deferred size.
2009-08-12 jpff
* Engine/fgens.c (hfgens): Do not extend table of ftables
unnecessarily; it used to always extend even if spare slots
existed.
2009-08-10 jpff
* Opcodes/tabsum.c (tabsum): Fixed silly error that made it all
wrong.
2009-07-25 Michael Gogins
* The Windows installer now provides the user with options for
core, custom, or complete installation. Custom options include
independent installation of C/C++, Lua, Python, Java, and Lisp
interfaces; independent installation of csnd and
CsoundAC; and independent installation of front ends and
various other options.
2009-07-21
* OOps/cmath.c (seedrand): if positive would still seed from time
2009-07-20 jpff
* OOps/ugrw1.c (printsset): Set string[0] to null as otherwise
sprints does wrong thing on empty string
2009-07-18 Michael Gogins
* SConstruct now builds completely independent shared libraries
for Python, Lua, and Java wrappers.
* Reorganized examples directory to put all examples for C, C++,
Python, Lua, Java, and Lisp wrappers in separate subdirectories.
Opcode demos also go into a separate subdirectory. The root examples
directory should now contain only complete pieces or tutorial pieces.
2009-07-05 jpff
* Opcodes/spectra.c (mute opcode): Should be type T to accept
string or number.
* SConstruct (cf): Check that libintl.h exists in the GETTEXT version
2009-06-10 jpff
* Engine/csound_orc.l: Corrected continuation line pattern
2009-06-05 jpff
* Engine/csound_orc.y (ident): Added unary +
* H/version.h: Marked as 5.10.90 and 5.11rc1
2009-06-04 jpff
* Engine/csound_orc_expressions.c (create_goto_token)
(get_boolean_arg, create_boolean_expression)
(create_synthetic_ident, csound_orc_expand_expressions):
Create and use Boolean variables with either k or i type as required
2009-05-05 jpff
* Engine/csound_orc.l: Deal with \+NL
2009-05-01 jpff
* Engine/csound_orc.y (if, ifthen, elsif): Removed requirement for
brackets round condition.
2009-04-30 jpff
* Engine/csound_orc.y: Remove two globals to the CSOUND structure
and start numbered instruments.
2009-04-29 Victor Lazzarini
* InOut/FL_graph.cpp: fixed the redrawing of graphs so that only
selected ones get redrawn.
2009-04-28 jpff
* H/csoundCore.h ("C"): Declare
* Top/csound.c ("C"): Initialise floatsize
* Engine/musmon.c (musmon): Set csound->floatsize
2009-04-27 Victor Lazzarini
* Opcodes/pvsbasic.c: added rounding bin code to pvsscale
* Opcodes/ftgen.c: added NP2 support for ftload and ftsave
* Engine/fgen.c: moved a PerfError to a Warning when tables are
resized to enable ftload to resize deferred-allocation tables.
* OOps/ugens5.c: experimental LPC read opcode
* H/ugens.h: as above
* Engine/oentry1.c: as above
2009-04-24 Anthony Kozar
* SConstruct: Define WORDS_BIGENDIAN for hrtfnew opcodes when appropriate.
* H/prototyp.h:
* H/csoundCore.h:
* Top/csound.c:
* Engine/memfiles.c: New API function pointer ldmemfile2withCB() which is
a version of ldmemfile() allowing a callback to be set and called exactly
once to process the MEMFIL buffer after it is loaded.
* H/version.h: Increased API version to 2.1.
* Engine/memfiles.c (Load_File_):
* Opcodes/hrtfopcodes.c: Moved byteswapping code for HRTF opcodes to
hrtfnew module utilizing ldmemfile2withCB().
* H/csound.h: Removed file type CSFTYPE_FLOATS_BINARY_SW
2009-04-19 jpff
* Opcodes/p5glove.c: New code to controlP5 Glove directly
* Engine/csound_orc_semantics.c (handle_polymorphic_opcode): Added
polymorphic type 0xfffd
2009-04-17 jpff
* Engine/memfiles.c (Load_File_): Add option for byteswap from
LITTLE- to BIG-ENDIAN if necessary (CSFTYPE_FLOATS_BINARY_SW)
* H/csound.h: New file type CSFTYPE_FLOATS_BINARY_SW
2009-04-08 Michael Gogins
* Opcodes/mixer.cpp:
Added MixerSetLevel_i, an init-time only version of MixerSetLevel,
so that it is possible to set the levels of mixer sends in the
orchestra header.
2009-03-30 jpff
* OOps/diskin.c (diskin_read_buffer): Typo corrected
2009-03-24 Michael Gogins
* frontends/CsoundAC/Score.cpp:
* interfaces/CsoundFile.cpp:
Implemented importation of MusicXML v2 files into the CsoundAC Score class
and the csnd CsoundFile class, using the Grame MusicXML library.
2009-03-22 jpff
* OOps/oscils.c (tablexkt): Line adding to ar removed as wrong
2009-03-18 Anthony Kozar
* SConstruct:
* Opcodes/syncgrain.c: Added config test for values.h.
* frontends/cscore/cscoremain.c:
* frontends/cscore/cscoremain_MacOS9.c:
* util1/scot/scot_main.c: Changed Scot and Cscore to take an optional
second commandline argument specifying the output file.
2009-03-16 jpff
* InOut/rtalsa.c (set_device_params): Change to
snd_pcm_hw_params_set_rate_near rather than exact samplerate from "Pete G."
2009-03-15 jpff
* Top/one_file.c (createExScore): Added new facility to have score
generated by external code
(read_unified_file): and call it
2009-03-14 jpff
* util/lpc_export.c (lpc_export): Fix from Martin Rocamora on line 83
* util/lpcx_main.c (main): Fix from Martin Rocamora on line 82
2009-03-04 jpff
* Opcodes/wiimote.c: New code (still experimental) to use wiimote
in Csound (Linux only at present)
2009-03-01 jpff
* Opcodes/mp3in.c: New code to read MP3 files (still experimental)
2009-02-28 Anthony Kozar
* H/ugens5.h:
* OOps/ugens5.c (lprdset, lpread): Fixed bad assumptions in doubles
build when skipping over the LPC file header.
2009-02-23 jpff
* Engine/fgens.c (gen49): New gen to read MP3 files using mpadec
library
2009-02-07 jpff
* Engine/rdorch.c (rdorchfile):
* Engine/sread.c (sget1): Mane mname grow rather than being fixed size
2009-02-06 jpff
* H/csoundCore.h ("C"): Added GetChannelLock to API
* OOps/bus.c (csoundGetChannelLock): New function, deployed as
well all over this file
* H/csound.h ("C"): Added csoundGetChannelLock
2008-12-19 jpff
* H/version.h: VERSION 5.10.1
2008-12-18 jpff
* Opcodes/pitch.c (hsboscset): Bug whereby two internal variables may
be unititialised fixed.
2008-12-17 Anthony Kozar
* SConstruct: Add libintl on OS X when useGettext=1. Commented out
-fno-rtti option on OS X. Revised Python detection logic so that it
works on multiple versions of OS X.
2008-12-15 jpff
* H/version.h (CS_APIVERSION): Upped version to 2/0
* H/csoundCore.h: Cleaned up unused fields in struct CSOUND_ and
added some expansions. Tidied timing counters as well. Involved
a number of small changes elsewhere
2008-12-04 mantaraya36
* Opcodes/pmidi.c : Added option to listen on all MIDI ports
using 'a' instead of a device number.
2008-12-04 jpff
* Opcodes/midiops3.c (islider32bit14): I think it should have 32
as arg to ISLIDER14
2008-12-02 jpff
* Engine/insert.c:
* Engine/linevent.c:
* Engine/musmon.c:
* Engine/otran.c:
* H/csoundCore.h:
* H/prototyp.h:
* InOut/libsnd.c:
* InOut/midisend.c:
* OOps/schedule.c:
* OOps/ugrw1.c:
* Opcodes/OSC.c:
* Top/csound.c: Change curTime to integer and work in samples
rather than seconds. Same for beatTime
2008-11-30 jpff
* Engine/fgens.c (csoundFTAlloc): Make size change with active
instruments a PerfError
2008-11-21 jpff
* Opcodes/filter.c (izfilter): Loop went 1 too many for
coeffs->dcoeffs
2008-11-01 jpff
* Opcodes/pitch.c (pitchamdf): Arrange that if peri is zero not to
return NaN or Inf values. Suggests some algorithmic error
(pitchamdfset): Initialise rmsmedian buffer -- it was undefined.
No idea how it ever could work.
2008-10-31 jpff
* Engine/otran.c (otran): Experimentally set locale to C numeric
before parsing orchestra.
2008-10-27 jpff
* OOps/aops.c (outo): Channel 6 was wrong,
(outh): also here.
2008-10-18 jpff
* InOut/rtwinmm.c (open_device): Dither only if requested.
* H/csoundCore.h ("C"): Move dither to visible.
* InOut/rtpa.c (set_device_params): Dither only if requested.
(paBlockingReadWriteOpen): Ditto.
* InOut/rtalsa.c (set_format): Dither only if requested.
(MYFLT_to_short_no_dither): New function.
2008-10-09 Victor Lazzarini
* Engine/fgens.c: added an optional parameter
for GEN20 (type 6, Gaussian), to set the variance
(default = 1.0).
2008-09-29 jpff
* OOps/diskin.c (diskin_read_buffer): mea culpa; zeros written to
wrong place.
2008-09-13 Michael Gogins
* H/csound.h: Added Doxygen "mainpage" introductory section at top
of file; switched to HTML format for API documentation (replacing
LaTeX/PDF format).
2008-09-17 jpff
* RELEASE VERSION 5.09
2008-09-13 Michael Gogins
* frontends/CsoundAC/Score.cpp: Implemented importation of
MusicXML v2 files into the CsoundAC Score class, using the
Grame MusicXML library.
2008-09-13 Michael Gogins
* custom-mingw.py: Updated for more recent third party packages.
* frontends/fltk_gui/CsoundGUIMain.cpp: Score editor works properly now.
* examples: Updated CsoundAC.csd and CsoundAC-midi.csd,
removed some obsolete precursors of them, added Drone.py Tk GUI example.
* csound-build.tex: Detailed instructions for building
the Windows installers.
* Top/csound.c, H/csoundCore.h: Corrected spinlocks for thread-safe
access to spin and spout buffers, added to dummy slots of the CSOUND
structure to preserve backwards API compatibility.
2008-09-10 jpff
* Opcodes/scoreline.c (localops): Wrong structure named in entry
-- probably benign
* H/version.h (CS_PACKAGE_STRING): VERSION 5.09
2008-09-09 Anthony Kozar
* H/csound.h (csoundSpinLock, csoundSpinUnLock): Removed attempt at
printing warnings when spinlocks are not implemented.
* Opcodes/sfont.c (SfPlayMono): More declaration before code fixes.
* Opcodes/shape.c (PDHalfX): Fixed unitialized variable.
* Engine/rdorch.c (skiporccomment):
* Opcodes/Vosim.c (vosimset): Added missing return values.
2008-09-08 Anthony Kozar
* Top/threads.c (csoundRunCommand, csoundSleep): Consolidated dummy
versions to avoid multiple definitions.
2008-09-08 jpff
* Top/csound.c ("C"): Do not load pthreads in mac_clasic
* Top/threads.c (csoundRunCommand, csoundSleep): Added mac_classic
dummy versions
* OOps/aops.c (outs): Declarations before code in C
2008-09-02 jpff
* H/ugrw1.h:
* OOps/ugrw1.c (printkset, printk, printksset, printks): Check
that opcode is initialised
2008-08-31 jpff
* H/version.h: 5.08.99
2008-08-14 jpff
* Engine/csound_orc.l: Added #include and macros (currently
without arguments)
2008-08-12 jpff
* Opcodes/uggab.c (poscaa, poscka): Ensure frequency is not
overwritten if variable is shared
2008-07-26 jpff
* Engine/rdorch.c (skiporccomment): Correct stupid error in
multiple * characters
2008-07-23 jpff
* Engine/fgens.c (gen23): Allow scientific notation (as was in csound4!)
2008-07-05 jpff
* Opcodes/ambicode1.c: Added new file with Furse/Wiggins decoders
2008-06-30 Steven Yi
* Engine/musmon.c: reverted sensevents to set EVTBLK to outside of
while loop; caused bug where using event opcode with "e" would
cause a segfault and hang csound
2008-06-26 jpff
* SConstruct: Allow selectable version if TCL and TK (needed for
OpenSuSE11.0)
2008-06-12 jpff
* Engine/memalloc.c (mfree):
(mrealloc): Improvements to coding
2008-05-28 Michael Gogins
* Top/threads.c:
For the Csound threading API, on the Windows platform, I removed
the native Windows threading implementation and replaced it with the
POSIX threads implementation already used for Linux and OS X. This
is to facilitate development of multi-threading in Csound, and to
simplify the maintenance of Csound.
2008-05-28 jpff
* Opcodes/ugens7.c (harmon): Make constant totally 64bit safe
* Opcodes/vbap.c: Change argument types to akOO from akoo etc
2008-05-18 Michael Gogins
* Opcodes/chua/ChuaOscillator.cpp:
Csound opcode implementation of Chua's Oscillator,
a nonlinear dynamical system capable of many kinds of periodic and chaotic
behavior, including multiple simultaneous attractors. See the
reference manual entry for "chuap" for documentation. See
examples/chuap.csd and examples/chuas_oscillator/ChuasOscillatorApp.py for
sample Csound usage.
* Opcodes/linear_algebra.cpp:
Csound i-rate and k-rate opcodes for much standard linear algebra over
real and complex vectors and matrices: elementwise arithmetic, norms,
transpose and conjugate, inner products, matrix inverse, LU decomposition,
QR decomposition, and QR-based eigenvalue decomposition. Includes
copying vectors to and from a-rate signals, function tables, and f-signals.
See the source code for preliminary documentation and tests/test24.csd for
sample Csound usage.
2008-05-17 jpff
* util/lpanal.c: Removed static variables to a structure
2008-05-08 jpff
* util/envext.c:
* util/het_export.c:
* util/het_import.c:
* util/heti_main.c:
* util/lpc_export.c:
* util/lpc_import.c:
* util/lpci_main.c:
* util/lpcx_main.c:
* util/mixer.c:
* util/pv_export.c:
* util/pv_import.c:
* util/scale.c:
* util/srconv.c:
* util/xtrct.c:
* util1/sortex/smain.c:
* util1/sortex/xmain.c: Corrected licence to LGPL
2008-05-06 jpff
* Engine/rdorch.c (skiporccomment): New function to handle /* .. */
(rdorchfile): Call it
* Engine/sread.c (sget1): Do not expand macros in /* .. */ context
2008-04-30 jpff
* H/sysdep.h: Introduce macros for MYFLT versions of functions
* OOps/aops.c: Use macro for exp/expf etc all over
2008-04-28 jpff
* OOps/ugens4.c (buzz): Restructured for speed
(gbuzz): Ditto
2008-04-24 jpff
* Top/argdecode.c (argdecode): OLPC now have dummy R,N and H options
2008-04-15 jpff
* OOps/diskin.c (sndo1set): Deprecate soundout in favour of fout
2008-03-23 jpff
* Top/argdecode.c (decode_long): Change incorrect %n to %d (shades
of BCPL)
2008-03-18 jpff
* Opcodes/Vosim.c: New file and opcode
2008-02-27 jpff
* Opcodes/vbap.c (localops): Changed vbap* to gave a k-rate last
required arg.
2008-03-16 jpff
* H/version.h: 5.08.2
2008-03-08 Anthony Kozar
* H/prototyp.h:
* Top/argdecode.c:
* Top/main.c:
* Top/one_file.c (readOptions, read_unified_file): readOptions() only
prints "missing " message when reading from CSD file.
2008-03-02 Michael Gogins
* SConstruct, csoundd.nsi:
Many changes to enable building and installing Csound built
with MSVC 2008 or MinGW 4.2.1
* CsoundAC:
Build as static library to try to work around problem with
MSVC corrupting data in C++ classes exported but based
on non-exported STL classes.
* API Reference:
Updated to reflect recent changes.
2008-02-23 Michael Gogins
* InOut/widgets.cpp:
Fixed a major bug in which the Csound memory manager (C style) was
allocating and deallocating a C++ structure (WIDGETS_GLOBALS).
If new is not called for WIDGETS_GLOBALS, the constructors of its
std::vector collections are not called. Then in the widget
csoundDestroyModule function, invalid vectors are iterated,
causing an access violation. Fixed by using standard C++
new and delete for the structure to ensure proper creation of its
vector members. This is OK because by calling csoundModuleInit
and csoundModuleDestroy, Csound is permitting the module to
manage its own memory.
The code accessed FLTK flags as a value when the flags had not been
initialized as a global variable. This caused an access violation
in csoundModuleDestroy. The code has been changed to get the flags
as a pointer, and only dereference the pointer if it is not null.
* Opcodes/vst4cs/src/vst4cs.cpp:
Cleaned up csoundModuleDestroy code for Windows MSVC build,
which was causing an access violation.
2008-02-22 Michael Gogins
* SConstruct:
Many changes to enable all features of Csound to build with
Microsoft Visual C++ 2008 (MSVC). Also changes to enable
build with MinGW 3.4.5/MSys 1.0.11/SCons 0.97.
* custom-mingw.py, custom-msvc.py:
Rationalized locations of third-party libraries in
network mounted "U:/" drive root directory.
* Frontends/CsoundAC/Counterpoint.cpp:
Many changes to enable MSVC compilation.
* CsoundVST:
Renamed CsoundVST.exe to CsoundVstShell.exe to
enable MSVC build.
Exported new RunCsoundVST function to enable CsoundVstShell to run
with MSVC build.
* Engine/sread.c (nested_repeat, do_repeat, sread, etc.):
Renamed struct in_stack_s to avoid debugging conflict with rdorch.c.
Fixed some endless loops caused by the 'm' and 'n' statements.
Prevented 'm' and 'n' statements from eating next line.
Fixed line counts when using 'm' and 'n'.
nested_repeat() does not need to change event opcode to 's'.
Fixed 'r' repeats to work with optional p1 of 's' and 'e' statements.
'{' statement should not reset clock_base, warp_factor, or prvp2.
2008-02-01 Anthony Kozar
* H/version.h (CS_APISUBVER): Increased to 6 for Csound 5.08.
* Top/getstring.c: Added stub for csoundSetLanguage().
2008-01-31 Anthony Kozar
* H/csound.h (CSOUND_FILETYPES): Added CSFTYPE_IMAGE_PNG.
* Opcodes/imageOpcodes.c (__doOpenImage, __doSaveImage): Use FileOpen2()
and FileClose() instead of fopen() and fclose(). Other minor fixes.
2008-01-30 jpff
* retagged 5.08b
2008-01-29 veplaini
* Opcodes/hrtfopcodes.c: New HRTF opcodes by Brian Carty
* Opcodes/syncgrain.c: fixed bug in period counter preventing
accurate tuning of grain frequency
* SConstruct: added token NOGETTEXT to useGettext=0 option
2008-01-29 jpff
* H/dumpf.h: Commented out the interpolation argument as not
implemented.
2008-01-29 Anthony Kozar
* Top/one_file.c (readOptions, checkVersion, etc.): Fixed version checks;
prevented crashes in readOptions(), and improved error reporting for CSD.
2008-01-27 Anthony Kozar
* Top/one_file.c (read_unified_file, checkLicence): Added as
an acceptable alternate spelling of .
2008-01-27 jpff
* version 5.08Beta
* installer/linux/installer.fl:
* installer/linux/new_install.cxx: Added support for installing locales
2008-01-22 Anthony Kozar
* Top/argdecode.c (decode_long): Added --csd-line-nums= option.
2008-01-21 Anthony Kozar
* Engine/sread.c (scorerr, sreaderr, getscochar, sread, getpfld, etc.):
Major changes to score error reporting; now accurately reports the line
numbers for the chain of inputs for most errors. Many error messages
were changed to avoid redundancy and for clarity.
2008-01-20 Anthony Kozar
* H/csoundCore.h (CSOUND):
* Top/csound.c:
* Top/main.c (csoundCompile): Save the original CSD file name.
* Engine/sread.c (scorerr, sget1): Fixed backtrace of score includes in
scorerr() and a possible crash when a #include file is not found.
2008-01-19 Anthony Kozar
* H/csoundCore.h (CSOUND):
* Top/csound.c:
* Top/one_file.c (read_unified_file, etc.):
* Engine/rdorch.c (synterr): Count lines while reading a CSD and save the
offsets of the orchestra and score; add offset to line numbers reported
with errors in the orchestra. (Score yet to be done).
2008-01-13 jpff
* Opcodes/pan2.c (pan2): Corrected so it agrees with documentation
2008-01-06 jpff
* H/version.h (CS_PATCHLEVEL): If subversion goes
up,patchlevelneeds to be reset.
2007-12-27 jpff
* Opcodes/imageOpcodes.h:
* Opcodes/imageOpcodes.c: New code
2007-12-25 jpff
* po/french.po:
* po/american.po: Translations
* po/csound.po: New; gettext template
* Top/getstring.c (init_getstring): Alternative version for GNU
gettext version
* InOut/widgets.cpp: Correct double negatives in error messages
2007-12-17
* H/csoundCore.h (CSOUND): added fields delayederrormessages and
printerrormessagesflag and reduced number of dummies
* Top/csmodule.c (csoundLoadExternal): Store messages about
non-modules
* Top/csound.c (csoundPreCompile): Print delayed messages at end
if any and in API version
* Top/main.c (csoundCompile): If delayed messages print after arg
decode
2007-12-15 jpff
* Opcodes/pvsband.c (pvsbrej): New opcode for band reject
2007-12-14 Anthony Kozar
* Opcodes/shape.c: Added unipolar option to pdclip, pdhalf, and pdhalfy,
making it the default.
2007-12-11 Anthony Kozar
* Engine/sread.c (ifa, getpfld): New "no-carry" operator (!) for score
language that prevents implicit carrying of p-fields in i-statements.
(eg. i 2 1 1 4.0 ! will only have 4 p-fields regardless of whether
previous i2 statements had more).
2007-12-11 jpff
* H/version.h (CS_PATCHLEVEL): 3
* Opcodes/pvsband.c: New code
* Opcodes/pvs_ops.c (csoundModuleInit): Initialise pvsband
2007-12-06 Anthony Kozar
* SConstruct:
* Opcodes/shape.c: New opcodes powershape, polynomial, chebyshevpoly,
pdclip, pdhalf, pdhalfy, and syncphasor.
2007-12-03 Anthony Kozar
* Engine/sread.c (sread, flushlin, getpfld): Improved line counts for
error reporting (still much to do though). Fixed some potential buffer
overflows. Fixed {} repeat opcodes and improved their parameter reading
(similarly to previous changes for 'r' statement). Now flushing rest of
line after finding an illegal character in getpfld().
2007-11-30 jpff
* Opcodes/pvsbasic.c (pvsscale): Improved algorithm for SDFT case
so no ampltitude variation
2007-11-29 Anthony Kozar
* Top/argdecode.c (argdecode, decode_long):
* Top/main.c (csoundCompile):
* Top/csound.c (const cenviron_):
* Engine/otran.c (otran):
* H/csoundCore.h (struct OPARMS):
Added --check-syntax-only commandline flag (exclusive with --i-only).
otran() and csoundCompile() return early when just checking syntax.
--i-only sets --nosound same as -I
Added initial value for numThreads to OPARMS.
* Top/one_file.c (read_unified_file): CSD read should fail when no
tag found so that performance is aborted.
* Ops/str_ops.c (getcfg_opcode): Added mac_classic case for host OS name.
2007-11-21 Anthony Kozar
* Opcodes/sfont.c: Corrected code for C89 (all declarations at top).
2007-11-07 Felipe Sateler
* H/csound.h,frontends/csladspa/csladspa.cpp,interfaces/CsoundFile.hpp,
interfaces/filebuilding.h
* SConstruct (CheckGcc4): Added stuff to limit visibility of symbols
2007-10-01 jpff
* VERSION 5.07
2007-09-30 jpff
* OOps/goto_ops.c (turnoff2): Patch from Jonathan Murphy in mode4 case
* OOps/pstream.c (pvscross): SDFT support
2007-09-29 jpff
* OOps/ugens1.c (xsgset2, xsgset): Allow negative amd zero length
segments
2007-10-03 Michael Gogins
* Updated Windows installers to current versions: libsndfile,
PortAudio, Fluidsynth, Synthesis Toolkit in C++.
* Restored Synthesis Toolkit in C++ Csound opcode wrappers
for native STK C++ code, as STK now has BSD-type license.
* Convenience wrappers in high-level CsoundAC.Composition
class for Csound.Score.arrange(), csnd.CppSound.setOrchestra(),
and csnd.CppSound.setScoreHeader(), for more intuitive use
of CsoundAC with Csound.
* Updated Csound API documentation to reflect splitup between
CsoundAC and CsoundVST.
2007-09-28 jpff
* Opcodes/pan2.c: New code
* Opcodes/pvsbasic.c (pvsoscprocess): Added SDFT support
2007-09-21 jpff
* Opcodes/pvsbasic.c: Added tests all over to warn if the same
f-signal is used as in and out in the same opcode
2007-09-20 jpff
* Opcodes/pvsbasic.c (pvsblurset, pvsblur): Added SDFT support
2007-09-19 jpff
* Opcodes/pvsbasic.c (pvsfilterset, pvsfilter): Added SDFT support
2007-09-18 jpff
* Opcodes/pvsbasic.c (pvsmix): Added SDFT support
2007-09-17 jpff
* Opcodes/pvsbasic.c (pvsmoothprocess): Added SDFT support; also
a-rate parameters is wanted
2007-09-09 jpff
* Made SDFT dependent of SDFT macro and adjust SConstruct to set
it
* Opcodes/pvsbasic.c (pvsshift, pvsscale): Added SDFT support
2007-09-08 jpff
* Opcodes/pvsbasic.h (_pvsfreez): Remove unused lastfreq
2007-08-28 Steven Yi
* InOut/rtwinmm.c: midi_in_close had incorrect check causing
device not to be closed properly
2007-09-06 jpff
* Opcodes/pvsdemix.c (pvsdemix_init): Added (under BETA) support
for streamed SDFT.
* Opcodes/pvsbasic.h (_pvsfreez): Added field in SDFT case
* Opcodes/pvsbuffer.c (pvsbufreadset, pvsbufferset): Added (under
BETA) support for streamed SDFT.
* Opcodes/pvscent.c (pvscentset, pvscent, pvsscent)
(pvspitch_init): Added (under BETA) support for
streamed SDFT. Includes a-rate opcode for pvscent
* Opcodes/pvsbasic.c (pvsinit, pvsfwriteset, pvsdiskinset)
(pvsfreezeset, pvssfreezeprocess, pvsfreezeprocess, pvsoscset)
(pvsbinprocess, pvsbinprocessa, pvsmoothset, pvsmixset, pvsmix)
(pvsfilterset, pvsscaleset, pvsshiftset, pvsshift, pvsblurset)
(pvstencilset, pvstencil): Added (under BETA) support for
streamed SDFT. Includes a-rate opcode for pvsbinprocess
* OOps/pvsanal.c (pvssanalset, pvsanalset, pvssanal, pvsanal)
(pvsynthset, pvssynth, pvsynth): Added (under BETA) support for
streamed SDFT
* H/pstream.h: Added (under BETA) support for streamed SDFT.
Changes to PVSDAT and PVSANAL
2007-08-31 Anthony Kozar
* OOps/aops.c:
* Engine/entry1.c:
* H/entry1.h: Added new value conversion functions to convert from Midi
note number to Csound's three pitch formats (cpsmidinn, pchmidinn,
and octmidinn).
2007-08-28 Steven Yi
* Opcodes/fluidOpcodes/fluidOpcodes.c: modified fluidEngine opcode
to take optional number of channels (range 16-256, default to 256)
and polyphony (range 16-4096, default to 4096) to use.
2007-08-21 Steven Yi
* Opcodes/fluidOpcodes/fluidOpcodes.c: added new
fluidSetInterpMethod opcode that wraps fluidSynth's
fluid_set_interp_method API method; allows user to choose
interpolation method from 0 (none), 1 (Linear), 4 (4th order,
default), and 7 (7th order, highest quality) on a per channel
basis
2007-08-21
* Opcodes/sfont.c: removed all global static variables
2007-08-16
* SConstruct: Separate Word64 (for PIC) and Lib64 for library name
2007-08-14
* SConstruct: Use .Program rather than .Command in cseditor
2007-07-24 Michael Gogins