CREATE Signal Library (Audio Framework in C++)


Hello all,

I’ve just up-loaded the source, data, and documentation files for the CREATE Signal Library (CSL) 5.0, a major new release that’s faster, more portable, smaller, and easier to use!

CSL (pron. “sizzle”) is a cross-platform general-purpose software framework for sound synthesis and digital audio signal processing. It is implemented as a C++ class library to be used as a stand-alone synthesis server, or embedded as a library into other programs.

The main new feature in CSL 5.0 is that CSL now uses the JUCE framework (V 1.50) for almost all external functions, especially:
[list] real-time sound I/O;
sound file I/O;
MIDI I/O; and
GUI construction.
CSL 5.0 also includes its own FFT, so users do not need to have FFTW installed (although it’s still supported by the FFT_Wrapper class).

The above items mean it’s much easier for a new user to install and learn CSL; you just need to install JUCE (and the CSL patches to it), and you cal build the CSL examples, as in the screenshot below.

All the source, data, and documentation files are available from the CSL home page at


Comments are solicited (to the CSL mailing list).


Canonical screen shot: vector IFFT synthesis takes 1.14% of the CPU…


Thank you Stephen!
I’ve been waiting so long for this!


Hello all,

I’ve just up-loaded a new CSL zip file.

It includes improved Linux premake script and a partial Windows project file.

I also updated the CSL web page…



can we use juce amalgamated with this?


I’m not certain what the difference is with using juce amalgamated; the CSL code requires JUCE 1.50 with the audio IO format extensions in this small tarball to support floating-point and many-channel sample I/O.


(This time with the link turned on…)

I’m not certain what the difference is with using juce amalgamated; the CSL code requires JUCE 1.50 with the audio IO format extensions in this small tarball to support floating-point and many-channel sample I/O.


Hello all,

To celebrate the release of CSL 5.0, and make it easier for new users, I’ve prepared a set of 3 screencasts introducing the CREATE Signal Library C++ framework for music/audio synthesis and processing.

“The CSL Show” Screencasts

[list]Show 1: A Tour of CSL Demos (22 min, 108 MB) -

Show 2: CSL App Slide Show (4:20 min, 17 MB) -

Show 3: CSL Internals, Programming (19 min, 92 MB) -[/list]


[list] CSL 5.0 Src ZIP file
JUCE 1.50 extensions (sound file IO)
CSL Doc ZIP[/list]

See -



Nice one, thanks for sharing!



Looks very interesting, but hard time getting it to compile here.

“Sndfile.h : No such fule or directory”

Couldn’t I use juce audio file format instead and avoid using libsndfile ?

I tried to download libsndfile, but the adress you mention in the read me is broken :
then I found libsndfile-1.0.20 on the web, and manage to configure it to get the “sndfile.h”.

Now it seems to compile everything but link error :
ld: library not found for -lmad
collect2: ld returned 1 exit status
Command /Developer/usr/bin/g+±4.2 failed with exit code 1

I guess libsndfile is not well configured here. Any tips ?
Any way to use juce instead ?



What compile flags are you using?

The system compiles without libsndfile (or libMAD) if you define USE_JSND.





Yes, I did understood from reading that USE_JSND should avoid to use libsndfile.
But I kinda expected this to be set already, as default setting straight from the download…

In the target settings, I can see a preprocessor macro which contain : USE_JUCE

Could you please lead me to where else should I define USE_JSND ? (xcode settings are hudge, and I’m new with this)

Thanks for your patience,



Just to clarify:

CSL 5.0 can be compiled with JUCE as the only other API, or it can use 3rd-party APIs for the following features

Sound file I/O
[list]LibSndFile (supports many other file formats) - -DUSE_LSND
this also required libMAD for MP3 decoding if you define USE_MP3
CoreAudio (works on iPhone) - -DUSE_CASND
JUCE sndfile I/O - -DUSE_JSND
[list]libFFTW (really fast) - -DUSE_FFTW
FFTReal (includfes with CSL) - -DUSE_FFTREAL[/list]

Threads (in the newest versions)
[list]PThreads - -DUSE_PTHREADS
JUCE threads - -DUSE_JTHREADS[/list]

I still have to port the MIDI support over.

These macros are not defined in the header files (though they could be), so that different applications can have different settings (i.e, some apps use MP3 files, and thus require libSndFile).

On the Mac, these options are set in the XCode target preferences (preprocessing::preprocessor macros). OnLinux, they can be set in the Makefile.

Also note that you don’t normally include all the CSL source files in a build; some (like SoundFileJ.cpp and SoundFileL.cpp) are orthogonal; include the one or the other depending on the API you want.