Cyclone étend Pure Data avec des objets clonés à partir de Max/MSP de cycling74 et offre un bon niveau de compatibilité entre les deux environnements.
Le projet Pure Data (ou simplement "Pd") se trouve sur : https://sourceforge.net/p/pure-data/pure-data/ci/master/tree/ ou dans son miroir github https://github.com /pure-data/pure-data. La page de téléchargement officielle est ici : http://msp.ucsd.edu/software.html
Max se trouve sur : https://cycling74.com/
Copyright © 2003-2024 - Krzysztof Czaja, Hans-Christoph Steiner, Fred Jan Kraan, Alexandre Porres, Derek Kwan, Matt Barber et autres.
Ce travail est gratuit. Vous pouvez le redistribuer et/ou le modifier selon les termes de la clause BSD-3 (alias licence BSD révisée). Voir License.txt https://github.com/porres/pd-cyclone/blob/cyclone0.4/LICENSE.txt et https://opensource.org/licenses/BSD-3-Clause pour plus de détails.
Version actuelle : Cyclone 0.9-1 (cette version nécessite au moins Pd Vanilla 0.55-0)
Sortie le 20 août 2024
Retrouvez les dernières versions de Cyclone sur : https://github.com/porres/pd-cyclone/releases ou directement via le gestionnaire externe de Pd (Aide => Rechercher des externes). Veuillez signaler les bogues sur https://github.com/porres/pd-cyclone/issues.
Des versions obsolètes de cyclone (0.1) sont disponibles dans la distribution Pd-extended abandonnée depuis longtemps (que personne ne devrait utiliser maintenant dans les années 2020) ainsi que dans Pd-l2ork et Purr Data - tous deux basés à l'origine sur Pd-Extended mais portés sur nw.js (les versions 0.1 de cyclone ici n'étaient pas entièrement portées sur nw.js au moment d'écrire ces lignes). Si vous souhaitez une version à jour de Cyclone, utilisez Pd Vanilla ou PlugData.
Connaissez-vous PlugData, Cyclone fait également partie de PlugData de Timothy Schoen, qui est un fork de Pd qui se charge en mode autonome ou VST avec une interface graphique remaniée. Voir : https://github.com/timothyschoen/PlugData
L'auteur original de Cyclone (Krzysztof Czaja) l'a abandonné en 2005 à la version 0.1-alpha55, lorsque Cyclone était compatible avec MAX 4.0. Cyclone a ensuite été incorporé et disponible dans Pd-extended, où il n'a eu qu'une mise à jour mineure sous la maintenance de Hans-Christoph Steiner en 2013 (0.1-alpha56), juste avant que Pd-extended et Cyclone (par conséquent) ne soient complètement abandonnés ( cette version 0.1-alpha56 a également été héritée par Pd-l2ork/Purr Data). Dans le cadre d'une nouvelle phase de maintenance par Fred Jan Kraan, les versions bêta 0.1-alpha57 et Cyclone 0.2 ont été publiées, toujours étroitement liées aux versions précédentes « 0.1-alpha » et pour la plupart conformes à Max 4.0 !
Cyclone 0.3-0 était la refonte majeure de Cyclone, où presque tous ses objets ont été mis à jour vers la dernière version Max 7 (Max 7.3.5). De nombreux bugs ont également été corrigés, la documentation a été réécrite à partir de zéro et de nouveaux objets ont été inclus. Vérifiez le fichier CHANGELOG.txt fourni pour les détails de toutes les modifications de version.
Actuellement, Cyclone n'a pas encore atteint une compatibilité totale avec "Max 7.3.5". Certaines fonctionnalités qui dépendent du « transport » ou des « dictionnaires » n'ont pas été implémentées et ne le seront d'ailleurs jamais. Cyclone n'est pas en développement très actif ces jours-ci et l'objectif principal est de maintenir la bibliothèque et de corriger les bugs (évitez donc d'inclure des éléments plus récents).
Le principal responsable actuel de Cyclone (Porres) est beaucoup plus occupé avec le développement de la bibliothèque ELSE. Notez que cette bibliothèque propose des alternatives pour presque tous les objets cyclone et que de nombreux objets dans ELSE sont en fait inspirés par des objets MAX/MSP qui n'ont pas été clonés dans Cyclone. À propos, ELSE fait également partie de PlugData, par conséquent, la documentation de Cyclone indique des alternatives dans ELSE.
Quelques objets dans Cyclone sont maintenant empruntés à ELSE, comme [pink~] et [comment] (celui-ci est basé sur la [note] d'ELSE et était en fait obsolète). Ces objets sont rétrocompatibles et offrent plus de fonctionnalités que l'objet MAX d'origine, donc pas vraiment entièrement compatibles.
Le seul objet qui n'a pas encore été mis à jour vers MAX 7.3.5 est [mtr] et il figure sur la liste des tâches. Cyclone peut encore intégrer de nouvelles fonctionnalités dans les objets existants de Max 8 (version actuelle) et des versions 9+ plus récentes à l'avenir, mais nous ne pouvons pas le promettre.
Une compatibilité 'mc' serait désormais possible, à partir de la version 0.54-0 de Pd, qui supporte les connexions multicanaux. Néanmoins, il n'est pas prévu de créer de tels objets pour Cyclone et de poursuivre cette compatibilité. D'un autre côté, les utilisateurs peuvent actuellement créer leurs propres abstractions de type "mc" basées sur des objets cyclones avec [clone]. Veuillez noter que de nombreux objets ELSE prennent en charge le multicanal !
Vous pouvez compiler Cyclone à partir de la source fournie dans ce référentiel pour le dernier état actuel ou télécharger l'une des versions compilées les plus stables à partir de https://github.com/porres/pd-cyclone/releases. Une bonne alternative consiste simplement à utiliser le propre gestionnaire de téléchargement externe de Pd (alias le plugin deken) : cliquez simplement sur l'option "Rechercher des éléments externes" dans le menu Aide et recherchez "cyclone".
Lors de l'installation de Cyclone, assurez-vous que le dossier Cyclone est inclus dans un dossier recherché par Pd, tel que ~/Documents/Pd/externals
- ce que Pd vous suggère de faire maintenant pour plusieurs versions.
Vous pouvez maintenant installer Cyclone en le chargeant au démarrage : allez dans "Préférences => Démarrage", puis cliquez sur "Nouveau", tapez "cyclone" et appuyez sur OK. La prochaine fois que vous redémarrerez Pd, le binaire de la bibliothèque Cyclone sera chargé.
Cette bibliothèque binaire charge les objets opérateurs non alphanumériques (qui sont : !-
, !-~
, !/
, !/~
, !=~
, %~
, +=~
, <=~
, <~
, ==~
, >=~
et >~
) mais il ajoute également le chemin de Cyclone aux préférences de Pd, afin que vous puissiez charger les autres objets de Cyclone (qui sont des binaires et des abstractions séparés).
Mais notez que pour forcer réellement une priorité de recherche de chemin dans votre patch, vous devez utiliser [declare -path cyclone].
Vous pouvez également utiliser le [declare -lib cyclone] dans un patch pour charger la bibliothèque si vous ne souhaitez pas toujours que Cyclone soit chargé au démarrage de Pd. Le chargement du binaire Cyclone en tant qu'objet ([cyclone]) charge également la bibliothèque, voir son fichier d'aide pour plus de détails.
Depuis "Cyclone 0.1-alpha57", le package Cyclone s'appuie sur le nouveau système de build appelé "pd-lib-builder" par Katja Vetter (consultez le projet sur : https://github.com/pure-data/pd-lib -constructeur).
PdLibBuilder essaie de trouver le répertoire source de Pd à plusieurs emplacements communs, mais lorsque cela échoue, vous devez spécifier le chemin vous-même à l'aide de la variable pdincludepath. Exemple:
make pdincludepath=~/pd-0.54-0/src/ (pour Windows/MinGW, ajoutez 'pdbinpath=~/pd-0.54-0/bin/)
Utilisez "objectsdir" pour définir un chemin relatif pour votre build, quelque chose comme :
make install objectdir=../cyclone-build
Déplacez-le ensuite vers votre dossier d’installation préféré pour Pd.
Il est désormais possible de construire Cyclone pour Pd Vanilla ou libpd en utilisant CMake. CMake est un système de construction multiplateforme et open source. CMake est utilisé pour contrôler le processus de compilation du logiciel à l'aide de simples fichiers de configuration indépendants de la plate-forme et du compilateur, et générer des makefiles et des espaces de travail natifs qui peuvent être utilisés dans l'environnement de compilateur de votre choix. Cela permet une compilation native via Windows (Microsoft Visual Studio), Linux (GCC) et macOS (XCode).
Dépendances :
Si vous utilisez MinGW, vous pouvez utiliser le pthreadGC-3.dll inclus dans le répertoire maintenance/windows_dll
de ce référentiel. Alternativement, vous pouvez également le télécharger ou le compiler vous-même à partir des sources ici. Cela entraînera généralement pthreadGC2.(dll/lib).
Si vous utilisez Visual Studio, vous devez fournir une bibliothèque pthreads
compilée pour Visual Studio, soit en la téléchargeant, soit en la compilant vous-même. Voir ici. Attention à télécharger/compiler la bonne version pour votre configuration. Ce serait généralement pthreadVC2.(dll/lib)
.
Une façon de configurer CMake consiste à utiliser l'interface graphique de CMake. L'interface graphique listera les variables qui peuvent être fournies pour configurer la construction. Les variables peuvent également être spécifiées dans l'interface de ligne de commande (voir ci-dessous pour un exemple).
Dans cette étape, vous pouvez choisir si vous souhaitez créer des bibliothèques partagées avec BUILD_SHARED_LIBS
et si vous souhaitez créer tous les objets Cyclone dans une seule bibliothèque avec BUILD_SINGLE_LIBRARY
(plus d'informations ci-dessous).
Lorsque vous utilisez Microsoft Visual Studio (MSVC), il vous sera demandé de fournir un chemin d'accès à la bibliothèque pthreads
et à ses en-têtes à l'aide des variables CMAKE_THREAD_LIBS_INIT
et PTHREADS_INCLUDE_DIR
.
Il vous sera demandé de fournir un chemin d'accès aux sources de données pures et à la bibliothèque de données pures. Si vous construisez Cylone pour libpd, ceux-ci peuvent également être satisfaits en fournissant le chemin d'accès au dossier pure-data
à l'intérieur des sources libpd et en fournissant le chemin d'accès à la bibliothèque libpd. Les variables sont : PD_INCLUDE_DIR
et PD_LIBRARY
.
Sur macOS, vous pouvez définir différentes cibles de déploiement et architectures à partir de votre système actuel à l'aide des variables CMAKE_OSX_DEPLOYMENT_TARGET
et CMAKE_OSX_ARCHITECTURES
.
Vous pouvez spécifier des indicateurs de compilation supplémentaires à l'aide de la variable CMAKE_C_FLAGS
.
CMake peut désormais générer des Makefiles, une solution MSVC ou un projet XCode.
Après la génération, en fonction de votre plateforme, vous pouvez accéder au répertoire dans lequel CMake a généré les fichiers de build, puis :
make
Bien sûr, vous pouvez également utiliser CMake lui-même pour créer un cyclone en exécutant ceci sur la ligne de commande :
cd
cmake --build .
Par défaut, Cyclone construira la plupart de ses objets sous la forme d'un seul fichier binaire ( .so
/ .dll
/ .dylib
/ .pd_darwin
). L'exception est l'objet/binaire "cyclone" qui charge les objets opérateurs non alphanumériques (qui sont : !-
, !-~
, !/
, !/~
, !=~
, %~
, +=~
, <=~
, <~
, ==~
, >=~
et >~
).
Si vous le souhaitez, vous pouvez également créer tous les objets Cyclone dans un seul cyclone.so/dll/dylib/pd_darwin
en activant l'option BUILD_SINGLE_LIBRARY
.
Chacune des bibliothèques individuelles contient une méthode
qui sera invoquée par pure-data lors du chargement de la bibliothèque. Si vous sélectionnez BUILD_SINGLE_LIBRARY
, CMake générera le code approprié afin que toutes les méthodes *_setup()
soient invoquées dans le cyclone_setup()
principal.
Voici quelques exemples de comment télécharger, configurer et créer le dernier Cyclone sur la ligne de commande en utilisant CMake et pure-data ou 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 .
Utiliser libpd sous 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 .
Extrait du fichier Readme original de Cyclone (par son auteur original Krzysztof Czaja) :
L'auteur original de Cyclone, Krzysztof Czaja, y a travaillé dans le cadre de sa bibliothèque mixte de 2002 à 2005, puis l'a abandonné complètement. En parallèle, miXed avait été incorporé à Pd Extended et s'est finalement retrouvé sous la maintenance de Hans-Christoph Steiner - le principal développeur et mainteneur de Pd-Extended. Lorsque Pd Extended a été abandonné après sa dernière version (à partir de janvier 2013), Cyclone et miXed n'ont donc pas été maintenus. En décembre 2014, Fred Jan Kraan a pris en charge la maintenance et le développement de Cyclone (mais pas le reste de la bibliothèque miXed) et a publié les versions bêta 0.1-alpha57 et Cyclone 0.2, mais a décidé d'abandonner le développement en février 2016.
Depuis le 21 février 2016, le développement de Cyclone a commencé sur ce référentiel par Alexandre Porres, Derek Kwan, Matt Barber et d'autres collaborateurs. La première version stable était Cyclone 0.3-0 de février 2019 !
=> Dépôt original (jusqu'à la version 0.1-Alpha-56) : Le référentiel original de MiXed dans le cadre de Pd Extended - contenant Cyclone et plus (comme 'toxy') - réside sur https://svn.code.sf. net/p/pure-data/svn/trunk/externals/miXed/cyclone et le référentiel migré : https://git.puredata.info/cgit/svn2git/libraries/miXed.git/. Ce référentiel englobe le travail de trois phases de maintenance différentes :
=> Dépôt de Fred Jan Kraan (0.1-Alpha57 et 0.2-beta) :
Fred Jan Kraan a créé le référentiel original sur https://github.com/electrickery/pd-miXedSon, mais contenant uniquement la bibliothèque Cyclone. Ce référentiel contient quelques versions - voir https://github.com/electrickery/pd-miXedSon/releases - il commence par la version Cyclone 0.1-alpha-57, d'octobre 2015, qui est essentiellement les derniers développements réalisés sur le référentiel d'origine dans sa dernière phase. Puis il passe à une nouvelle version Cyclone 0.2 qui s'est arrêtée au stade bêta en février 2016.
=> Ce référentiel (0.3-0 et versions ultérieures) :
En février 2016, Porres est passé de https://github.com/electrickery/pd-miXedSon à ce référentiel qui réside à l'adresse : https://github.com/porres/pd-cyclone. Le fork s'est produit alors que le cyclone était au stade bêta 0,2. Depuis lors, Alexandre Porres, Derek Kwan, Matt Barber et d'autres collaborateurs ont travaillé sur les développements ultérieurs du cyclone. La première version stable de ce référentiel était Cyclone 0.3-0 de février 2019. Fin 2021, après la sortie de la version 0.6-0, ce référentiel a été détaché de celui de Kraan (électricité) ici sur GitHub, après des milliers de commits en avance et avec une restructuration complète de la base de code.
=> Le fork 'nilwind' :
La bibliothèque 'nilwind' est un fork de Cyclone et elle commence comme un fork de la dernière étape https://github.com/electrickery/pd-miXedSon a été laissée, ce qui signifie qu'il s'agit d'un développement sur le cyclone 0.2-beta. Le référentiel de nilwind se trouve sur https://github.com/electrickery/pd-nilwind. Sa première version est 'nilwind 0.2.1', de novembre 2019. Ce fork de cyclone n'a pas pour objectif de poursuivre les mises à jour en fonction des versions plus récentes de Max et sa principale préoccupation est de maintenir la compatibilité avec les anciens correctifs/hérités créés dans Pd-Extended. époque (qui transportait le cyclone 0,1). Néanmoins, les versions de Cyclone 0.3 et ultérieures sont également compatibles avec l'ère Pd-Extended, car la phase de développement actuelle n'introduit pas de changements majeurs et n'offre que des versions stables depuis la 0.3 !
Ce référentiel réside sur https://github.com/porres/pd-cyclone et est fidèle à l'objectif initial de Cyclone en créant un package Pd externe avec une collection d'objets clonés et compatibles avec les objets Max/MSP. Les bugs et problèmes doivent être signalés à https://github.com/porres/pd-cyclone/issues. Les versions de ce référentiel sont stables et offrent de nombreux correctifs et améliorent la stabilité par rapport aux versions antérieures.
La compatibilité avec les versions plus récentes de Max est une préoccupation, mais la compatibilité Max a toujours été l'objectif principal de Cyclone et rien n'a vraiment changé, puisque Max lui-même conserve des compatibilités ascendantes. Aucune incompatibilité ne devrait survenir entre le cyclone 0.3-0 et l'étape héritée de la bibliothèque (la phase cyclone 0.1 qui était disponible dans Pd Extended). Étant donné que cette étape de développement de Cyclone vise à assurer la compatibilité des correctifs créés à l'époque de Pd-Extended, si de tels problèmes surviennent, ils doivent être traités comme des bogues et signalés/corrigés.
Ce référentiel/projet est ouvert à la collaboration à toute personne souhaitant travailler (en gardant à l'esprit l'objectif clé et central de la compatibilité Max/MSP). N'hésitez pas à collaborer.
Merci aux responsables précédents, Lucas Cordiviola pour avoir travaillé sur les problèmes de compilation et de compilation croisée et généré des binaires pour de nombreuses versions. Diego Barrios Romero a travaillé sur la possibilité de compiler tous les objets du cyclone sous la forme d'un seul binaire au lieu de binaires séparés. Tim Schoen pour son aide sur certains problèmes, y compris quelques objets et l'inclusion de Cyclone dans son projet PlugData (voir : https://github.com/timothyschoen/PlugData)