Cyclone 使用从cycling74 的Max/MSP 克隆的对象扩展了Pure Data,并在两个环境之间提供了一定程度的兼容性。
Pure Data(或简称“Pd”)项目位于:https://sourceforge.net/p/pure-data/pure-data/ci/master/tree/ 或其 github 镜像 https://github.com /纯数据/纯数据。官方下载页面在这里:http://msp.ucsd.edu/software.html
最大位于:https://cycling74.com/
版权所有 © 2003-2024 - Krzysztof Czaja、Hans-Christoph Steiner、Fred Jan Kraan、Alexandre Porres、Derek Kwan、Matt Barber 等。
这项工作是免费的。您可以根据 BSD-3 条款(又名修订版 BSD 许可证)的条款重新分发和/或修改它。有关更多详细信息,请参阅 License.txt https://github.com/porres/pd-cyclone/blob/cyclone0.4/LICENSE.txt 和 https://opensource.org/licenses/BSD-3-Clause。
当前版本:Cyclone 0.9-1(此版本至少需要 Pd Vanilla 0.55-0)
2024 年 8 月 20 日发布
查找 Cyclone 的最新版本:https://github.com/porres/pd-cyclone/releases 或直接通过 Pd 的外部管理器(帮助 => 查找外部)。请在 https://github.com/porres/pd-cyclone/issues 报告错误。
过时的 cyclone (0.1) 版本可在长期废弃的 Pd-extended 发行版(2020 年代没人应该使用)以及 Pd-l2ork 和 Purr Data 中找到 - 两者最初都基于 Pd-Extended,但移植到nw.js(在撰写本文时,这里的 cyclone 0.1 版本尚未完全移植到 nw.js)。如果您想要最新版本的 Cyclone,请使用 Pd Vanilla 或 PlugData。
你知道 PlugData 吗?Cyclone 也是 Timothy Schoen 开发的 PlugData 的一部分,它是 Pd 的一个分支,可以作为独立的或具有改进的 GUI 的 VST 加载。请参阅:https://github.com/timothyschoen/PlugData
Cyclone 的原作者 (Krzysztof Czaja) 在 2005 年的 0.1-alpha55 版本中放弃了它,当时 Cyclone 兼容 MAX 4.0。 Cyclone 随后在 Pd-extend 中被合并并可用,在 2013 年 Hans-Christoph Steiner 的维护下,它只进行了一次小更新(0.1-alpha56),就在 Pd-extend 和 Cyclone(因此)被完全放弃之前(这个0.1-alpha56版本也被Pd-l2ork/Purr Data继承)。在 Fred Jan Kraan 的新维护阶段,发布了 0.1-alpha57 和 Cyclone 0.2 beta 版本,仍然与之前的“0.1-alpha”版本密切相关,并且大部分兼容 Max 4.0!
Cyclone 0.3-0 是 Cyclone 的重大修改,几乎所有对象都更新到最新的 Max 7 版本(Max 7.3.5)。许多错误也得到了修复,文档从头开始重写,并包含了新的对象。检查提供的CHANGELOG.txt文件以了解所有版本更改的详细信息。
目前,Cyclone 仍未达到对“Max 7.3.5”的完全兼容。一些依赖于“传输”或“字典”的功能尚未实现,实际上永远不会实现。 Cyclone 目前并没有进行太多积极的开发,主要目标是维护库并修复错误(因此避免包含更新的东西)。
Cyclone 当前的主要维护者 (Porres) 更忙于开发 ELSE 库。请注意,该库具有几乎所有 cyclone 对象的替代品,并且 ELSE 中的许多对象实际上受到未在 Cyclone 中克隆的 MAX/MSP 对象的启发。顺便说一下,ELSE 也是 PlugData 的一部分,因此 Cyclone 的文档指出了 ELSE 中的替代方案。
Cyclone 中的一些对象现在是从 ELSE 借用的,例如 [pink~] 和 [comment](这个基于 ELSE 的 [note],实际上已被弃用)。这些对象向后兼容,并且提供比原始 MAX 对象更多的东西,因此并不是真正完全兼容。
唯一尚未更新到 MAX 7.3.5 的对象是 [mtr],它位于待办事项列表中。 Cyclone 未来可能仍会在 Max 8(当前版本)和更新的 9+ 版本的现有对象中合并新功能,但我们不能保证这一点。
从 Pd 版本 0.54-0 开始,现在可以实现“mc”兼容性,它支持多通道连接。尽管如此,没有计划为 Cyclone 创建此类对象并追求这种兼容性。另一方面,用户目前可以使用 [clone] 基于 cyclone 对象构建自己的“mc”之类的抽象。请注意,许多 ELSE 对象具有多通道支持!
您可以从此存储库中提供的源代码编译 Cyclone 以获取最新的最新状态,或者从 https://github.com/porres/pd-cyclone/releases 下载更稳定的编译版本之一。一个好的替代方法是使用 Pd 自己的外部下载管理器(又名 deken 插件):只需单击“帮助”菜单下的“查找外部”选项并搜索“cyclone”。
安装 cyclone 时,请确保 Cyclone 文件夹包含在 Pd 搜索的文件夹中,例如~/Documents/Pd/externals
- 这是 Pd 现在建议您对多个版本执行的操作。
现在您可以通过在启动中加载 Cyclone 来安装它:转到“首选项 => 启动”,然后单击“新建”,输入“cyclone”并单击“确定”。下次重新启动 Pd 时,将加载 Cyclone 库二进制文件。
该库二进制文件加载非字母数字运算符对象(它们是: !-
, !-~
, !/
, !/~
, !=~
, %~
, +=~
, <=~
, <~
, ==~
, >=~
和>~
),但它也将 Cyclone 的路径添加到 Pd 的首选项中,因此您可以从 Cyclone 加载其他对象(它们是单独的二进制文件和抽象)。
但请注意,为了在补丁中实际强制路径搜索优先级,您需要使用 [declare -path cyclone]。
如果您不想在 Pd 启动时始终加载 Cyclone,您还可以在补丁中使用 [declare -lib cyclone] 来加载库。将 Cyclone 二进制文件作为对象加载 ([cyclone]) 也会加载库,请参阅其帮助文件以获取更多详细信息。
自“Cyclone 0.1-alpha57”以来,Cyclone 软件包依赖于 Katja Vetter 称为“pd-lib-builder”的新构建系统(查看该项目:https://github.com/pure-data/pd-lib -建设者)。
PdLibBuilder 尝试在几个常见位置查找 Pd 源目录,但是当失败时,您必须使用 pdincludepath 变量自行指定路径。例子:
make pdincludepath=~/pd-0.54-0/src/ (对于 Windows/MinGW 添加 'pdbinpath=~/pd-0.54-0/bin/)
使用“objectsdir”为您的构建设置相对路径,例如:
使安装objectsdir=../cyclone-build
然后将其移至您首选的 Pd 安装文件夹。
现在可以使用 CMake 为 Pd Vanilla 或 libpd 构建 Cyclone。 CMake 是一个跨平台的开源构建系统。 CMake 用于使用简单的平台和独立于编译器的配置文件来控制软件编译过程,并生成可在您选择的编译器环境中使用的本机 makefile 和工作区。这允许通过 Windows (Microsoft Visual Studio)、Linux (GCC) 和 macOS (XCode) 进行本机编译。
依赖项:
如果您使用的是 MinGW,则可以使用此存储库中的maintenance/windows_dll
目录中包含的 pthreadGC-3.dll。或者,您也可以从此处的源下载或自行编译。这通常会产生 pthreadGC2.(dll/lib)。
如果您使用的是 Visual Studio,则需要通过下载或自行编译来提供为 Visual Studio 编译的pthreads
库。请参阅此处。请小心下载/编译适合您的设置的正确版本。这通常是pthreadVC2.(dll/lib)
。
配置 CMake 的一种方法是使用 CMake GUI。 GUI 将列出可用于配置构建的变量。也可以在命令行界面中指定变量(请参阅下面的示例)。
在此步骤中,您可以选择是否要使用BUILD_SHARED_LIBS
构建共享库,以及是否要使用BUILD_SINGLE_LIBRARY
将所有 Cyclone 对象构建到一个库中(更多内容见下文)。
使用 Microsoft Visual Studio (MSVC) 时,系统会要求您使用变量CMAKE_THREAD_LIBS_INIT
和PTHREADS_INCLUDE_DIR
提供pthreads
库及其标头的路径。
您将被要求提供纯数据源和纯数据库的路径。如果为 libpd 构建 Cylone,也可以通过提供 libpd 源内的pure-data
文件夹的路径并提供 libpd 库的路径来满足这些要求。变量是: PD_INCLUDE_DIR
和PD_LIBRARY
。
在 macOS 上,您可以使用变量CMAKE_OSX_DEPLOYMENT_TARGET
和CMAKE_OSX_ARCHITECTURES
定义与当前系统不同的部署目标和架构。
您可以使用变量CMAKE_C_FLAGS
指定其他编译标志。
CMake 现在可以生成 Makefile、MSVC 解决方案或 XCode 项目。
生成后,根据您的平台,您可以导航到 CMake 生成构建文件的目录,然后:
make
当然,您也可以通过在命令行上运行以下命令来使用 CMake 本身来构建 cyclone:
cd
cmake --build .
默认情况下,Cyclone 会将其大部分对象构建为单个二进制文件( .so
/ .dll
/ .dylib
/ .pd_darwin
)。例外是加载非字母数字运算符对象的“cyclone”对象/二进制文件(它们是: !-
, !-~
, !/
, !/~
, !=~
, %~
, +=~
, <=~
, <~
、 ==~
、 >=~
和>~
)。
如果您愿意,还可以通过激活BUILD_SINGLE_LIBRARY
选项将所有 Cyclone 对象构建到一个cyclone.so/dll/dylib/pd_darwin
中。
每个单独的库都包含一个
方法,该方法将在库加载时由纯数据调用。如果您选择BUILD_SINGLE_LIBRARY
,CMake 将生成适当的代码,以便在主cyclone_setup()
中调用所有*_setup()
方法。
以下是如何使用 CMake 和 pure-data 或 libpd 在命令行上下载、配置和构建最新 Cyclone 的一些示例。
Linux:
git clone https://github.com/pure-data/pure-data
git clone https://github.com/porres/pd-cyclone
cd pd-cyclone
mkdir build && cd build
cmake .. -DPD_INCLUDE_DIR:PATH=pure-data/src -DPD_LIBRARY:PATH=
cmake --build .
Windows / MSVC:
git clone https://github.com/pure-data/pure-data
#Clone the Cyclone repository from GitHub:
git clone https://github.com/porres/pd-cyclone
cd pd-cyclone
mkdir build && cd build
cmake .. -DCMAKE_THREAD_LIBS_INIT:PATH= -DPTHREADS_INCLUDE_DIR:PATH= -DPD_INCLUDE_DIR:PATH=pure-data/src -DPD_LIBRARY:PATH=
cmake --build .
在 Linux 中使用 libpd:
# 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 ../..
# Now clone the Cyclone repository
git clone https://github.com/porres/pd-cyclone
cd pd-cyclone
mkdir build && cd build
cmake .. -DPD_INCLUDE_DIR:PATH=../libpd/pure-data/src -DPD_LIBRARY:PATH=../libpd/libs/libpd.so
cmake --build .
摘自 Cyclone 的原始自述文件(由原作者 Krzysztof Czaja 撰写):
Cyclone 的原作者 Krzysztof Czaja 从 2002 年到 2005 年将其作为混合库的一部分进行开发,后来全部放弃。与此同时,mixed 被合并到 Pd Extended 中,并最终由 Hans-Christoph Steiner(Pd-Extended 的主要开发者和维护者)维护。当 Pd Extended 在其最后一次发布(从 2013 年 1 月起)后被放弃时,Cyclone 和 miXed 也因此无人维护。 2014 年 12 月,Fred Jan Kraan 接管了 cyclone(但不是混合库的其余部分)的维护和开发,并发布了 0.1-alpha57 和 Cyclone 0.2 beta 版本,但决定在 2016 年 2 月放弃开发。
自 2016 年 2 月 21 日起,Alexandre Porres、Derek Kwan、Matt Barber 和其他合作者在此存储库上开始了 Cyclone 的进一步开发。第一个稳定版本是 2019 年 2 月发布的 Cyclone 0.3-0!
=> 原始存储库(最高版本 0.1-Alpha-56):MiXed 的原始存储库作为 Pd Extended 的一部分 - 包含 Cyclone 等(例如“toxy”) - 位于 https://svn.code.sf。 net/p/pure-data/svn/trunk/externals/mixed/cyclone 和迁移的存储库: https://git.puredata.info/cgit/svn2git/libraries/miXed.git/。该存储库包含三个不同维护阶段的工作:
=> Fred Jan Kraan 的存储库(0.1-Alpha57 和 0.2-beta):
Fred Jan Kraan 将原始存储库分叉到 https://github.com/electrickery/pd-miXedSon,但仅包含 Cyclone 库。该存储库有几个版本 - 请参阅 https://github.com/electrickery/pd-miXedSon/releases - 它从 2015 年 10 月开始的 Cyclone 版本 0.1-alpha-57 开始,这基本上是原始存储库的最后开发在其最后阶段。然后它转向新的 Cyclone 0.2 版本,该版本于 2016 年 2 月停止在测试阶段。
=> 此存储库(0.3-0 及更高版本):
2016 年 2 月,Porres 从 https://github.com/electrickery/pd-miXedSon 分叉到此存储库,该存储库位于:https://github.com/porres/pd-cyclone。分叉发生在 cyclone 处于 0.2-beta 阶段时。从那时起,亚历山大·波雷斯(Alexandre Porres)、德里克·关(Derek Kwan)、马特·巴伯(Matt Barber)和其他合作者致力于旋风分离器的进一步发展。该存储库的第一个稳定版本是 2019 年 2 月发布的 cyclone 0.3-0。2021 年末,在版本 0.6-0 发布后,该存储库在经过数千次提交后从 GitHub 上的 Kraan (electrickery) 分离。代码库的彻底重组。
=> 'nilwind' 分叉:
“nilwind”库是 Cyclone 的一个分支,它是作为最后一个阶段 https://github.com/electrickery/pd-miXedSon 的分支开始的,这意味着它是对 cyclone 0.2-beta 的开发。 nilwind 的存储库位于 https://github.com/electrickery/pd-nilwind。它的第一个版本是“nilwind 0.2.1”,从 2019 年 11 月开始。这个 cyclone 的分支并不旨在根据较新版本的 Max 进行更新,它的主要关注点是保持与 Pd-Extended 中旧/遗留补丁的兼容性时代(携带旋风0.1)。尽管如此,cyclone 0.3 及以后的版本也兼容 Pd-Extended 时代,因为当前的开发阶段没有引入重大更改,并且自 0.3 以来仅提供稳定版本!
该存储库位于 https://github.com/porres/pd-cyclone,忠实于 Cyclone 的最初目标,即创建一个外部 Pd 包,其中包含克隆的对象集合并与 Max/MSP 对象兼容。错误和问题应报告给 https://github.com/porres/pd-cyclone/issues。此存储库中的版本很稳定,并提供了许多修复并提高了早期版本的稳定性。
与较新版本的 Max 的兼容性是一个问题,但 Max 兼容性始终是 cyclone 的主要目标,并且没有任何真正改变,因为 Max 本身保留了向后兼容性。 cyclone 0.3-0 和库的旧阶段(Pd Extended 中可用的 cyclone 0.1 阶段)之间不应出现不兼容性。由于 Cyclone 的这个开发阶段关注的是为 Pd-Extended 时代制作的补丁提供兼容性,因此如果出现此类问题,应将其视为错误并报告/修复。
该存储库/项目向任何希望工作的人开放协作(请记住 Max/MSP 兼容性的关键和中心目标)。欢迎合作。
感谢以前的维护者 Lucas Cordiviola 致力于编译和交叉编译问题并为许多版本生成二进制文件。 Diego Barrios Romero 研究了将 cyclone 中的所有对象编译为单个二进制文件而不是单独的二进制文件的可能性。 Tim Schoen 帮助解决了一些问题,包括几个对象并将 Cyclone 包含在他的 PlugData 项目中(请参阅:https://github.com/timothyschoen/PlugData)