Cyclone erweitert Pure Data um Objekte, die aus Max/MSP von Cycling74 geklont wurden, und bietet ein gutes Maß an Kompatibilität zwischen den beiden Umgebungen.
Das Projekt Pure Data (oder einfach „Pd“) finden Sie unter: https://sourceforge.net/p/pure-data/pure-data/ci/master/tree/ oder in seinem Github-Spiegel https://github.com /reine-daten/reine-daten. Die offizielle Download-Seite finden Sie hier: http://msp.ucsd.edu/software.html
Max ist zu finden unter: https://cycling74.com/
Copyright © 2003-2024 – Krzysztof Czaja, Hans-Christoph Steiner, Fred Jan Kraan, Alexandre Porres, Derek Kwan, Matt Barber und andere.
Diese Arbeit ist kostenlos. Sie können es gemäß den Bedingungen der BSD-3-Klausel (auch bekannt als überarbeitete BSD-Lizenz) weitergeben und/oder ändern. Weitere Informationen finden Sie unter License.txt https://github.com/porres/pd-cyclone/blob/cyclone0.4/LICENSE.txt und https://opensource.org/licenses/BSD-3-Clause.
Aktuelle Version: Cyclone 0.9-1 (diese Version benötigt mindestens Pd Vanilla 0.55-0)
Veröffentlicht am 20. August 2024
Die neuesten Versionen von Cyclone finden Sie unter: https://github.com/porres/pd-cyclone/releases oder direkt über den externen Manager von Pd (Hilfe => Externe Dateien finden). Bitte melden Sie Fehler unter https://github.com/porres/pd-cyclone/issues.
Veraltete Versionen von Cyclone (0.1) sind in der lange aufgegebenen Pd-extended-Distribution (die jetzt in den 2020er Jahren niemand mehr verwenden sollte) sowie in Pd-l2ork und Purr Data verfügbar – beide basierten ursprünglich auf Pd-Extended, wurden aber darauf portiert nw.js (0.1-Versionen von Cyclone waren zum Zeitpunkt des Verfassens dieses Artikels noch nicht vollständig auf nw.js portiert). Wenn Sie eine aktuelle Version von Cyclone wünschen, verwenden Sie Pd Vanilla oder PlugData.
Kennen Sie PlugData? Cyclone ist auch Teil von PlugData von Timothy Schoen, einem Abzweig von Pd, der als Standalone-Version oder VST mit einer überarbeiteten GUI geladen wird. Siehe: https://github.com/timothyschoen/PlugData
Der ursprüngliche Autor von Cyclone (Krzysztof Czaja) gab es 2005 in der Version 0.1-alpha55 auf, als Cyclone mit MAX 4.0 kompatibel war. Cyclone wurde dann integriert und war in Pd-extended verfügbar, wo es 2013 unter der Leitung von Hans-Christoph Steiner nur ein kleines Update erhielt (0,1-alpha56), kurz bevor Pd-extended und Cyclone (infolgedessen) ganz aufgegeben wurden ( diese 0.1-alpha56-Version wurde auch von Pd-l2ork/Purr Data geerbt. Im Rahmen einer neuen Wartungsphase von Fred Jan Kraan wurden die Betaversionen 0.1-alpha57 und Cyclone 0.2 veröffentlicht, die immer noch eng mit den vorherigen „0.1-alpha“-Versionen verwandt sind und größtenteils mit Max 4.0 kompatibel sind!
Cyclone 0.3-0 war die umfassende Überarbeitung von Cyclone, bei der fast alle Objekte auf die neueste Max 7-Version (Max 7.3.5) aktualisiert wurden. Außerdem wurden viele Fehler behoben, die Dokumentation von Grund auf neu geschrieben und neue Objekte eingebunden. Überprüfen Sie die bereitgestellte Datei CHANGELOG.txt auf Details zu allen Versionsänderungen.
Derzeit ist Cyclone noch nicht vollständig mit „Max 7.3.5“ kompatibel. Einige Funktionalitäten, die von „Transport“ oder „Wörterbüchern“ abhängen, wurden nicht implementiert und werden es auch nie sein. Cyclone befindet sich heutzutage nicht mehr in der aktiven Entwicklung und das Hauptziel besteht darin, die Bibliothek zu pflegen und Fehler zu beheben (vermeiden Sie daher die Einbeziehung neuerer Dinge).
Der derzeitige Hauptbetreuer von Cyclone (Porres) ist viel mehr mit der Entwicklung der ELSE-Bibliothek beschäftigt. Beachten Sie, dass diese Bibliothek Alternativen für fast alle Cyclone-Objekte bietet und viele Objekte in ELSE tatsächlich von MAX/MSP-Objekten inspiriert sind, die nicht in Cyclone geklont wurden. ELSE ist übrigens auch Teil von PlugData, daher weist die Dokumentation von Cyclone auf Alternativen in ELSE hin.
Einige Objekte in Cyclone sind jetzt von ELSE entlehnt, wie etwa [pink~] und [comment] (dieses basiert auf ELSEs [note] und war eigentlich veraltet). Diese Objekte sind abwärtskompatibel und bieten mehr Funktionen als das ursprüngliche MAX-Objekt, sind also nicht wirklich vollständig kompatibel.
Das einzige Objekt, das noch nicht auf MAX 7.3.5 aktualisiert wurde, ist [mtr] und steht auf der To-Do-Liste. Möglicherweise wird Cyclone in Zukunft noch neue Funktionalitäten in bestehende Objekte aus Max 8 (aktuelle Version) und neuere 9+-Versionen integrieren, wir können dies jedoch nicht versprechen.
Eine „mc“-Kompatibilität wäre ab der Pd-Version 0.54-0 möglich, die Mehrkanalverbindungen unterstützt. Ungeachtet dessen gibt es keinen Plan, solche Objekte für Cyclone zu erstellen und diese Kompatibilität anzustreben. Andererseits können Benutzer derzeit mit [clone] ihre eigenen „mc“-ähnlichen Abstraktionen basierend auf Cyclone-Objekten erstellen. Bitte beachten Sie, dass viele ELSE-Objekte Mehrkanalunterstützung bieten!
Sie können Cyclone aus der in diesem Repository bereitgestellten Quelle für den aktuellen, neuesten Stand kompilieren oder eine der stabileren kompilierten Versionen von https://github.com/porres/pd-cyclone/releases herunterladen. Eine gute Alternative besteht darin, einfach Pds eigenen externen Download-Manager (auch bekannt als Deken-Plugin) zu verwenden: Klicken Sie einfach auf die Option „Externals suchen“ im Hilfemenü und suchen Sie nach „Cyclone“.
Stellen Sie bei der Installation von Cyclone sicher, dass der Cyclone-Ordner in einem Ordner enthalten ist, nach dem Pd sucht, z. B. ~/Documents/Pd/externals
– was Pd Ihnen jetzt für mehrere Versionen empfiehlt.
Jetzt können Sie Cyclone installieren, indem Sie es im Startup laden: Gehen Sie zu „Einstellungen => Startup“, klicken Sie dann auf „Neu“, geben Sie „cyclone“ ein und klicken Sie auf OK. Wenn Sie Pd das nächste Mal neu starten, wird die Binärdatei der Cyclone-Bibliothek geladen.
Diese Bibliotheksbinärdatei lädt die nicht alphanumerischen Operatorobjekte (diese sind: !-
, !-~
, !/
, !/~
, !=~
, %~
, +=~
, <=~
, <~
, ==~
, >=~
und >~
), aber es fügt auch den Pfad von Cyclone zu den Pd-Einstellungen hinzu, sodass Sie die anderen Objekte von Cyclone laden können (bei denen es sich um separate Binärdateien und Abstraktionen handelt).
Beachten Sie jedoch, dass Sie [declare -path cyclone] verwenden müssen, um tatsächlich eine Pfadsuchpriorität in Ihrem Patch zu erzwingen.
Sie können auch [declare -lib Cyclone] in einem Patch verwenden, um die Bibliothek zu laden, wenn Sie nicht möchten, dass Cyclone immer geladen wird, wenn Pd startet. Durch das Laden der Cyclone-Binärdatei als Objekt ([cyclone]) wird auch die Bibliothek geladen. Weitere Informationen finden Sie in der Hilfedatei.
Seit „Cyclone 0.1-alpha57“ setzt das Cyclone-Paket auf das neue Build-System namens „pd-lib-builder“ von Katja Vetter (siehe Projekt unter: https://github.com/pure-data/pd-lib -Baumeister).
PdLibBuilder versucht, das Pd-Quellverzeichnis an mehreren gemeinsamen Speicherorten zu finden. Wenn dies jedoch fehlschlägt, müssen Sie den Pfad mithilfe der Variablen pdincludepath selbst angeben. Beispiel:
Machen Sie pdincludepath=~/pd-0.54-0/src/ (für Windows/MinGW fügen Sie 'pdbinpath=~/pd-0.54-0/bin/ hinzu)
Verwenden Sie „objectsdir“, um einen relativen Pfad für Ihren Build festzulegen, etwa so:
make install objectdir=../cyclone-build
Verschieben Sie es dann in Ihren bevorzugten Installationsordner für Pd.
Es ist jetzt möglich, Cyclone für Pd Vanilla oder libpd mit CMake zu erstellen. CMake ist ein plattformübergreifendes Open-Source-Build-System. CMake wird verwendet, um den Softwarekompilierungsprozess mithilfe einfacher plattform- und compilerunabhängiger Konfigurationsdateien zu steuern und native Makefiles und Arbeitsbereiche zu generieren, die in der Compilerumgebung Ihrer Wahl verwendet werden können. Dies ermöglicht eine native Kompilierung über Windows (Microsoft Visual Studio), Linux (GCC) und macOS (XCode).
Abhängigkeiten:
Wenn Sie MinGW verwenden, können Sie die pthreadGC-3.dll verwenden, die im Verzeichnis maintenance/windows_dll
in diesem Repository enthalten ist. Alternativ können Sie es auch hier herunterladen oder selbst aus den Quellen zusammenstellen. Dies führt normalerweise zu pthreadGC2.(dll/lib).
Wenn Sie Visual Studio verwenden, müssen Sie eine für Visual Studio kompilierte pthreads
Bibliothek bereitstellen, indem Sie sie entweder herunterladen oder selbst kompilieren. Siehe hier. Achten Sie darauf, die richtige Version für Ihr Setup herunterzuladen/zu kompilieren. Dies wäre normalerweise pthreadVC2.(dll/lib)
.
Eine Möglichkeit, CMake zu konfigurieren, ist die Verwendung der CMake-GUI. Die GUI listet die Variablen auf, die zum Konfigurieren des Builds bereitgestellt werden können. Die Variablen können auch in der Befehlszeilenschnittstelle angegeben werden (siehe unten für ein Beispiel).
In diesem Schritt können Sie auswählen, ob Sie gemeinsam genutzte Bibliotheken mit BUILD_SHARED_LIBS
erstellen möchten und ob Sie alle Cyclone-Objekte mit BUILD_SINGLE_LIBRARY
in einer einzigen Bibliothek erstellen möchten (mehr dazu weiter unten).
Wenn Sie Microsoft Visual Studio (MSVC) verwenden, werden Sie aufgefordert, mithilfe der Variablen CMAKE_THREAD_LIBS_INIT
und PTHREADS_INCLUDE_DIR
einen Pfad zur pthreads
-Bibliothek und ihren Headern anzugeben.
Sie werden aufgefordert, einen Pfad zu den Pure-Data-Quellen und zur Pure-Data-Bibliothek anzugeben. Wenn Sie Cylone für libpd erstellen, können diese auch erfüllt werden, indem Sie den Pfad zum pure-data
-Ordner in den libpd-Quellen und den Pfad zur libpd-Bibliothek angeben. Die Variablen sind: PD_INCLUDE_DIR
und PD_LIBRARY
.
Unter macOS können Sie mithilfe der Variablen CMAKE_OSX_DEPLOYMENT_TARGET
und CMAKE_OSX_ARCHITECTURES
unterschiedliche Bereitstellungsziele und Architekturen Ihres aktuellen Systems definieren.
Sie können zusätzliche Kompilierungsflags mithilfe der Variablen CMAKE_C_FLAGS
angeben.
CMake kann jetzt Makefiles, eine MSVC-Lösung oder ein XCode-Projekt generieren.
Nach der Generierung können Sie je nach Plattform zu dem Verzeichnis navigieren, in dem CMake die Build-Dateien generiert hat, und dann:
make
ausNatürlich können Sie auch CMake selbst verwenden, um Cyclone zu erstellen, indem Sie Folgendes in der Befehlszeile ausführen:
cd
cmake --build .
Standardmäßig erstellt Cyclone die meisten seiner Objekte als einzelne Binärdatei ( .so
/ .dll
/ .dylib
/ .pd_darwin
). Die Ausnahme ist das „Zyklon“-Objekt/die Binärdatei, die die nicht alphanumerischen Operatorobjekte lädt (diese sind: !-
, !-~
, !/
, !/~
, !=~
, %~
, +=~
, <=~
, <~
, ==~
, >=~
und >~
).
Wenn Sie möchten, können Sie auch alle Cyclone-Objekte in ein einziges cyclone.so/dll/dylib/pd_darwin
einbauen, indem Sie die Option BUILD_SINGLE_LIBRARY
aktivieren.
Jede der einzelnen Bibliotheken enthält eine
Methode, die von pure-data beim Laden der Bibliothek aufgerufen wird. Wenn Sie BUILD_SINGLE_LIBRARY
auswählen, generiert CMake den entsprechenden Code, sodass alle *_setup()
Methoden im Haupt cyclone_setup()
aufgerufen werden.
Hier finden Sie einige Beispiele zum Herunterladen, Konfigurieren und Erstellen des neuesten Cyclone über die Befehlszeile mit CMake und pure-data oder libpd.
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 .
Verwendung von libpd unter Linux:
# 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 .
Auszug aus der Original-Readme-Datei von Cyclone (vom ursprünglichen Autor Krzysztof Czaja):
Der ursprüngliche Autor von Cyclone, Krzysztof Czaja, arbeitete von 2002 bis 2005 als Teil seiner miXed-Bibliothek daran und gab es später ganz auf. Parallel dazu wurde miXed in Pd Extended integriert und stand schließlich unter der Verwaltung von Hans-Christoph Steiner – dem Hauptentwickler und Betreuer von Pd-Extended. Als Pd Extended nach der letzten Veröffentlichung (im Januar 2013) aufgegeben wurde, blieben Cyclone und miXed daher ohne Wartung. Im Dezember 2014 übernahm Fred Jan Kraan die Wartung und Entwicklung für Cyclone (jedoch nicht für den Rest der miXed-Bibliothek) und veröffentlichte die Betaversionen 0.1-alpha57 und Cyclone 0.2, beschloss jedoch, die Entwicklung dafür im Februar 2016 einzustellen.
Seit dem 21. Februar 2016 begann die Weiterentwicklung von Cyclone auf diesem Repository durch Alexandre Porres, Derek Kwan, Matt Barber und andere Mitarbeiter. Die erste stabile Version war Cyclone 0.3-0 vom Februar 2019!
=> Original-Repository (bis Version 0.1-Alpha-56): Das Original-Repository von MiXed als Teil von Pd Extended – enthält Cyclone und mehr (wie „toxy“) – befindet sich unter https://svn.code.sf. net/p/pure-data/svn/trunk/externals/miXed/cyclone und das migrierte Repository: https://git.puredata.info/cgit/svn2git/libraries/miXed.git/. Dieses Repository umfasst Arbeiten aus drei verschiedenen Wartungsphasen:
=> Fred Jan Kraans Repository (0.1-Alpha57 und 0.2-beta):
Fred Jan Kraan hat das ursprüngliche Repository auf https://github.com/electrickery/pd-miXedSon geforkt, das jedoch nur die Cyclone-Bibliothek enthält. Dieses Repository hat einige Versionen – siehe https://github.com/electrickery/pd-miXedSon/releases – es beginnt mit der Cyclone-Version 0.1-alpha-57 vom Oktober 2015, bei der es sich im Grunde um die letzten Entwicklungen handelt, die am ursprünglichen Repository vorgenommen wurden in seiner letzten Phase. Dann geht es weiter mit einer neuen Cyclone 0.2-Version, die im Februar 2016 im Beta-Stadium endete.
=> Dieses Repository (0.3-0 und höher):
Im Februar 2016 hat Porres von https://github.com/electrickery/pd-miXedSon zu diesem Repository weitergeleitet, das sich unter https://github.com/porres/pd-cyclone befindet. Die Gabelung erfolgte, während sich der Zyklon im 0,2-Beta-Stadium befand. Seitdem haben Alexandre Porres, Derek Kwan, Matt Barber und andere Mitarbeiter an der Weiterentwicklung von Cyclone gearbeitet. Die erste stabile Veröffentlichung aus diesem Repository war Cyclone 0.3-0 vom Februar 2019. Ende 2021, nach der Veröffentlichung von Version 0.6-0, wurde dieses Repository nach Tausenden von Commits hier auf GitHub von Kraan (electrickery) getrennt eine völlige Neustrukturierung der Codebasis.
=> Der 'nilwind'-Fork:
Die „nilwind“-Bibliothek ist ein Fork von Cyclone und beginnt als Fork der letzten Stufe, in der https://github.com/electrickery/pd-miXedSon belassen wurde, was bedeutet, dass es sich um eine Weiterentwicklung von Cyclone 0.2-beta handelt. Das Nilwind-Repository befindet sich unter https://github.com/electrickery/pd-nilwind. Die erste Veröffentlichung ist „nilwind 0.2.1“ vom November 2019. Diese Abzweigung von Cyclone zielt nicht darauf ab, Updates für neuere Versionen von Max durchzuführen, und ihr Hauptanliegen besteht darin, die Kompatibilität mit alten/älteren Patches aufrechtzuerhalten, die im Pd-Extended erstellt wurden Ära (die Zyklon 0.1 trug). Nichtsdestotrotz sind Versionen ab Cyclone 0.3 auch mit der Pd-Extended-Ära kompatibel, da die aktuelle Entwicklungsphase keine Breaking Changes einführt und erst seit 0.3 stabile Releases anbietet!
Dieses Repository befindet sich unter https://github.com/porres/pd-cyclone und entspricht dem ursprünglichen Ziel von Cyclone, ein externes Pd-Paket mit einer Sammlung geklonter und mit Max/MSP-Objekten kompatibler Objekte zu erstellen. Fehler und Probleme sollten an https://github.com/porres/pd-cyclone/issues gemeldet werden. Versionen aus diesem Repository sind stabil und bieten viele Korrekturen und verbessern die Stabilität gegenüber früheren Versionen.
Die Kompatibilität mit neueren Versionen von Max ist ein Problem, aber die Max-Kompatibilität war immer das Hauptziel von Cyclone und es hat sich nichts wirklich geändert, da Max selbst Abwärtskompatibilitäten beibehält. Es sollten keine Inkompatibilitäten zwischen Cyclone 0.3-0 und der Legacy-Phase der Bibliothek (der Cyclone 0.1-Phase, die in Pd Extended verfügbar war) auftreten. Da es in dieser Entwicklungsphase von Cyclone darum geht, die Kompatibilität für Patches aus der Pd-Extended-Ära sicherzustellen, sollten solche Probleme, wenn sie auftreten, als Fehler behandelt und gemeldet/behoben werden.
Dieses Repository/Projekt steht jedem zur Zusammenarbeit offen, der mitarbeiten möchte (unter Berücksichtigung des wichtigsten und zentralen Ziels der Max/MSP-Kompatibilität). Fühlen Sie sich frei, mitzuarbeiten.
Vielen Dank an den früheren Betreuer Lucas Cordiviola für die Arbeit an Kompilierungs- und Cross-Kompilierungsproblemen und die Generierung von Binärdateien für viele Veröffentlichungen. Diego Barrios Romero arbeitete an der Möglichkeit, alle Objekte im Zyklon als eine einzige Binärdatei statt als separate Binärdateien zusammenzustellen. Tim Schoen für seine Hilfe bei einigen Problemen, einschließlich einiger Objekte und der Einbindung von Cyclone in sein PlugData-Projekt (siehe: https://github.com/timothyschoen/PlugData)