Cyclone: A Set of Pure Data Objects Cloned From Max/MSP
Cyclone: A Set of Pure Data Objects Cloned From Max/MSP
Cyclone: A Set of Pure Data Objects Cloned From Max/MSP
Max/MSP
Cyclone expands Pure Data with objects cloned from cycling74's Max/MSP and
provides some good level of compatibility between the two environments.
This work is free. You can redistribute it and/or modify it under the terms of the
BSD-3-Clause (aka Revised BSD License). See License.txt https://github.com/po
rres/pd-cyclone/blob/cyclone0.4/LICENSE.txt and https://opensource.org/licen
ses/BSD-3-Clause for more details.
Current Release: Cyclone 0.5-3 (this release needs at least Pd Vanilla 0.51-0)
About Cyclone:
Cyclone 0.5-3 needs at least Pd Vanilla 0.51-0 (current version is 0.51-1) and
does not run on Pd-Extended or Pd-l2ork/Purr Data.
Cyclone 0.3-0 was the major overhaul in cyclone, where almost all of its objects
got updated to the latest Max 7 version (Max 7.3.5). Many bugs were also fixed,
the documentation was rewritten from scratch and new objects were included.
Here's the aftermath:
62 updated objects;
65 fixed objects (including updated objects);
40 new objects;
Newly written documentation
Check the provided CHANGELOG.txt file for the details in all version changes.
Currently, cyclone still pursues compatibilty to Max 7.3.5 with minor issues still
in the way, but one object will not get fully updated, which is comment (it
misses 'bubble' stuff from Max 6+).
Cyclone is still not compatible to the new Max 8 version, this is still not in the
radar for implementartion plans. Hopefully, functionalities added in cyclone
objects in Max 8 might be included in future versions of Cyclone. Nonetheless,
things like 'mc' compatiblity won't likely be possible or make it to cyclone!
Installing Cyclone:
You can compile Cyclone from the source provided in this repository for the
current bleeding edge last state or download one of the more stable compiled
releases from https://github.com/porres/pd-cyclone/releases. A good
alternative is simply to use Pd's own external download manager (a.k.a deken
plugin), just click on the "find externals" option under the Help menu and
search for Cyclone.
When installing cyclone, make sure the Cyclone folder is included in a folder that
Pd searches for, such as ~/Documents/Pd/externals - which is what Pd
suggests you to do (since version 0.48-0).
Now you can install Cyclone by loading it in the startup: go to "Preferences =>
Startup", then click "New", type "Cyclone" and hit OK. Next time you restart Pd,
the Cyclone library binary will be loaded.
This library binary loads the non alphanumeric operators objects (which are: !-,
!-~, !/, !/~, !=~, %~, +=~, <=~, <~, ==~, >=~ and >~) but it also adds Cyclone's
path to Pd's preferences, so you can load the other objects from Cyclone (which
are separate binaries and abstractions).
You can also use the [declare -lib cyclone] in a patch to load the library if you
don't want to always have Cyclone loaded when Pd starts.
Loading the Cyclone binary as an object ([cyclone]) also loads the library, see its
help file for more details.
Use "objectsdir" to set a relative path for your build, something like:
Dependencies:
CMake: You can download for your platform here.
Only on Windows: pthreads library
Pure-data or libpd: sources and binaries.
If you are using MinGW, you can use the pthreadGC-3.dll included in the
maintenance/windows_dll directory in this repository. Alternatively, you can
also download it or compile it yourself from the sources here. This will typically
result in pthreadGC2.(dll/lib).
If you are using Visual Studio, you need to provide a pthreads library compiled
for Visual Studio either by downloading it or compiling it yourself. See here. Be
careful to download / compile the right version for your setup. This would
typically be pthreadVC2.(dll/lib).
One way to configure CMake is to use the CMake GUI. The GUI will list the
variables that can be provided to configure the build. The variables can also be
specified in the command-line interface (See below for an example).
In this step you can select if you want to build shared libraries with
BUILD_SHARED_LIBS and if you want to build all Cyclone objects into one single
library with BUILD_SINGLE_LIBRARY (more on this below).
When using Microsoft Visual Studio (MSVC), you will be requested to provide a
path to the pthreads library and its headers using variables
CMAKE_THREAD_LIBS_INIT and PTHREADS_INCLUDE_DIR.
You will be requested to provide a path to the pure-data sources and to the pure-
data library. If building Cylone for libpd, these can also be satisfied by providing
the path to the pure-data folder inside the libpd sources and providing the path
to the libpd library. The variables are: PD_INCLUDE_DIR and PD_LIBRARY.
On macOS, you can define different deployment target and architectures from
your current system using the variables CMAKE_OSX_DEPLOYMENT_TARGET and
CMAKE_OSX_ARCHITECTURES.
You can specify additional compilation flags using the variable CMAKE_C_FLAGS.
CMake can now generate Makefiles, a MSVC solution, or an XCode project.
Building
After generation, depending on your platform you can navigate to the directory
where CMake generated the build files and then:
Of course you can also use CMake itself to build cyclone by running this on the
command line:
cd <path/to/build/files/generated/by/CMake>
cmake --build .
Per default Cyclone will build most of its objects as a single binary file (.so /
.dll / .dylib / .pd_darwin). The exception is the "cyclone" object/binary that
loads the non alphanumeric operators objects (which are: !-, !-~, !/, !/~, !=~,
%~, +=~, <=~, <~, ==~, >=~ and >~).
If you want you can also build all of the Cyclone objects into one
cyclone.so/dll/dylib/pd_darwin by activating the BUILD_SINGLE_LIBRARY
option.
Each one of the individual libraries contain a <name>_setup() method that will
be invoked by pure-data on library load. If you select the
BUILD_SINGLE_LIBRARY, CMake will generate the appropriate code so that all
*_setup() methods will be invoked in the main cyclone_setup().
Command-line examples
Here are a few examples of how to download, configure and build the latest
Cyclone on the command line using CMake and pure-data or libpd.
Linux:
git clone https://github.com/pure-data/pure-data
<download pure-data binaries or build it yourself>
Windows / MSVC:
# Here we compile libpd ourselves, you can skip the building steps if
you download the libpd binaries
git clone https://github.com/libpd/libpd
cd libpd
git submodule init
git submodule update
# libpd build steps:
mkdir build && cd build
cmake ..
cmake --build .
cd ../..
Since February 21st 2016, further development for Cyclone started on this
repository by Alexandre Porres, Derek Kwan, Matt Barber and other
collaborators. The first stable release was Cyclone 0.3-0 from february 2019!
Czaja's era (until 2005 and up to 0.1-Alpha55): Czaja (the original author)
worked on Cyclone from version 01-alpha-01 (2002) to 0.1-alpha-55
(2005).
Hans era (until 2013 and 0.1-Alpha-56): Hans maintained Cyclone from
2005 to 2013. The 0.1-Alpha55 version of Cyclone is found in most of Pd-
Extended versions up to Pd-Extended 0.42-5. The last release of Pd-
Extended is 0.43-4 from Jan-2013 and it carries the 0.1-Alpha56 version of
Cyclone, which can also be found as "cyclone-v0-0extended" when
searching for externals in Pd Vanilla.
Kraan era (up to 2015): The later work in this repository was not made
available into a new release from this repository.
=> Fred Jan Kraan's Repository (0.1-Alpha57 and 0.2-beta):
The 'nilwind' library is a fork of cyclone and it starts as a fork of the last stage ht
tps://github.com/electrickery/pd-miXedSon was left at. The nilwind's
repository is at https://github.com/electrickery/pd-nilwind. It's first release is
'nilwind 0.2.1', from November 2019, which is a development over cyclone 0.2-
beta. This fork of cyclone does not aim to pursue updates according to newer
versions of Max and its main concern is to keep compatibility to patches made in
the Pd-Extended era. Nonetheless, versions of cyclone 0.3 onward are also
compatible to Pd-Extended era, as the current development phase does not
introduce breaking changes and has only offered stable releases since 0.3!
Collaborating to Cyclone:
This repository/project is open to collaboration to anyone who wishes to work
according to the key and central goal of Max/MSP compatibility. Feel free to
collaborate.