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 嗎?請參閱: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。 /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 月開始。舊/遺留補丁的兼容性時代(攜帶旋風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)