Cyclone expande Pure Data com objetos clonados do Max/MSP do cycling74 e fornece um bom nível de compatibilidade entre os dois ambientes.
O projeto Pure Data (ou apenas "Pd") é encontrado em: https://sourceforge.net/p/pure-data/pure-data/ci/master/tree/ ou em seu espelho github https://github.com /dados puros/dados puros. A página oficial de download está aqui: http://msp.ucsd.edu/software.html
Max é encontrado em: https://cycling74.com/
Copyright © 2003-2024 - Krzysztof Czaja, Hans-Christoph Steiner, Fred Jan Kraan, Alexandre Porres, Derek Kwan, Matt Barber e outros.
Este trabalho é gratuito. Você pode redistribuí-lo e/ou modificá-lo sob os termos da BSD-3-Clause (também conhecida como Licença BSD Revisada). Consulte License.txt https://github.com/porres/pd-cyclone/blob/cyclone0.4/LICENSE.txt e https://opensource.org/licenses/BSD-3-Clause para obter mais detalhes.
Versão Atual: Cyclone 0.9-1 (esta versão precisa de pelo menos Pd Vanilla 0.55-0)
Lançado em 20 de agosto de 2024
Encontre os últimos lançamentos do Cyclone em: https://github.com/porres/pd-cyclone/releases ou diretamente através do gerenciador externo do Pd (Ajuda => Encontrar Externos). Por favor, relate bugs em https://github.com/porres/pd-cyclone/issues.
Versões desatualizadas do cyclone (0.1) estão disponíveis na distribuição Pd-extended há muito abandonada (que ninguém deveria usar agora na década de 2020), bem como em Pd-l2ork e Purr Data - ambos originalmente baseados em Pd-Extended, mas portados para nw.js (as versões 0.1 do cyclone aqui não foram totalmente portadas para nw.js no momento da redação deste artigo). Se você deseja uma versão atualizada do Cyclone, use Pd Vanilla ou PlugData.
Você conhece o PlugData, o Cyclone também faz parte do PlugData de Timothy Schoen, que é um fork do Pd que carrega como autônomo ou VST com uma GUI renovada. Veja: https://github.com/timothyschoen/PlugData
O autor original do Cyclone (Krzysztof Czaja) abandonou-o em 2005 na versão 0.1-alpha55, quando o Cyclone era compatível com o MAX 4.0. Cyclone foi então incorporado e disponível em Pd-extended, onde teve apenas uma pequena atualização sob a manutenção de Hans-Christoph Steiner em 2013 (0.1-alpha56), logo antes de Pd-extended e Cyclone (por consequência) serem totalmente abandonados ( esta versão 0.1-alpha56 também foi herdada por Pd-l2ork/Purr Data). Sob uma nova fase de manutenção por Fred Jan Kraan, as versões beta 0.1-alpha57 e Cyclone 0.2 foram lançadas, ainda intimamente relacionadas às versões anteriores '0.1-alpha' e principalmente compatíveis com Max 4.0!
Cyclone 0.3-0 foi a grande revisão do Cyclone, onde quase todos os seus objetos foram atualizados para a versão mais recente do Max 7 (Max 7.3.5). Muitos bugs também foram corrigidos, a documentação foi reescrita do zero e novos objetos foram incluídos. Verifique o arquivo CHANGELOG.txt fornecido para obter detalhes sobre todas as alterações de versão.
Atualmente, o Cyclone ainda não atingiu compatibilidade total com “Max 7.3.5”. Algumas funcionalidades que dependem de “transporte” ou “dicionários” não foram implementadas e na verdade nunca serão. O Cyclone não está em muito desenvolvimento ativo atualmente e o objetivo principal é manter a biblioteca e corrigir bugs (evitando, portanto, incluir coisas mais novas).
O principal mantenedor atual do Cyclone (Porres) está muito mais ocupado com o desenvolvimento da biblioteca ELSE. Observe que esta biblioteca tem alternativas para quase todos os objetos Cyclone e muitos objetos em ELSE são na verdade inspirados em objetos MAX/MSP que não foram clonados no Cyclone. Aliás, ELSE também faz parte do PlugData, portanto, a documentação do Cyclone aponta alternativas em ELSE.
Alguns objetos no Cyclone agora são emprestados do ELSE, como [pink~] e [comment] (este baseado na [nota] do ELSE e na verdade foi descontinuado). Esses objetos são compatíveis com versões anteriores e oferecem mais coisas do que o objeto MAX original, portanto, não são totalmente compatíveis.
O único objeto que ainda não foi atualizado para o MAX 7.3.5 é [mtr] e está na lista de tarefas pendentes. O Cyclone ainda pode incorporar novas funcionalidades em objetos existentes do Max 8 (versão atual) e versões mais recentes 9+ no futuro, mas não podemos prometer isso.
Uma compatibilidade 'mc' seria possível agora, a partir da versão 0.54-0 do Pd, que suporta conexões multicanais. Apesar disso, não há planos para criar tais objetos para o Cyclone e buscar essa compatibilidade. Por outro lado, os usuários podem atualmente construir suas próprias abstrações do tipo "mc" baseadas em objetos de ciclone com [clone]. Observe que muitos objetos ELSE têm suporte multicanal!
Você pode compilar o Cyclone a partir da fonte fornecida neste repositório para o último estado atual ou baixar uma das versões compiladas mais estáveis em https://github.com/porres/pd-cyclone/releases. Uma boa alternativa é simplesmente usar o gerenciador de downloads externo do próprio Pd (também conhecido como plugin deken): basta clicar na opção “encontrar externos” no menu Ajuda e procurar por “ciclone”.
Ao instalar o Cyclone, certifique-se de que a pasta Cyclone esteja incluída em uma pasta que o Pd procura, como ~/Documents/Pd/externals
- que é o que o Pd sugere que você faça para várias versões agora.
Agora você pode instalar o Cyclone carregando-o na inicialização: vá em "Preferências => Inicialização", clique em "Novo", digite "ciclone" e clique em OK. Na próxima vez que você reiniciar o Pd, o binário da biblioteca Cyclone será carregado.
Este binário de biblioteca carrega os objetos de operadores não alfanuméricos (que são: !-
, !-~
, !/
, !/~
, !=~
, %~
, +=~
, <=~
, <~
, ==~
, >=~
e >~
), mas também adiciona o caminho do Cyclone às preferências do Pd, para que você possa carregar os outros objetos do Cyclone (que são binários e abstrações separados).
Mas observe que para realmente forçar uma prioridade de busca de caminho em seu patch, você precisa usar [declare -path cyclone].
Você também pode usar o [declare -lib cyclone] em um patch para carregar a biblioteca se não quiser que o Cyclone seja sempre carregado quando o Pd for iniciado. Carregar o binário Cyclone como um objeto ([ciclone]) também carrega a biblioteca, consulte seu arquivo de ajuda para mais detalhes.
Desde o "Cyclone 0.1-alpha57", o pacote Cyclone conta com o novo sistema de compilação chamado "pd-lib-builder" de Katja Vetter (confira o projeto em: https://github.com/pure-data/pd-lib -construtor).
PdLibBuilder tenta encontrar o diretório de origem do Pd em vários locais comuns, mas quando isso falha, você mesmo deve especificar o caminho usando a variável pdincludepath. Exemplo:
make pdincludepath=~/pd-0.54-0/src/ (para Windows/MinGW adicione 'pdbinpath=~/pd-0.54-0/bin/)
Use "objectsdir" para definir um caminho relativo para sua construção, algo como:
faça instalar objetosdir=../cyclone-build
Em seguida, mova-o para a pasta de instalação de sua preferência para Pd.
Agora é possível construir Cyclone para Pd Vanilla ou libpd usando CMake. CMake é um sistema de compilação de plataforma cruzada e código aberto. CMake é usado para controlar o processo de compilação de software usando arquivos simples de configuração independentes de plataforma e compilador, e gerar makefiles e espaços de trabalho nativos que podem ser usados no ambiente de compilador de sua escolha. Isso permite a compilação nativa via Windows (Microsoft Visual Studio), Linux (GCC) e macOS (XCode).
Dependências:
Se estiver usando MinGW, você pode usar o pthreadGC-3.dll incluído no diretório maintenance/windows_dll
neste repositório. Alternativamente, você também pode baixá-lo ou compilá-lo a partir das fontes aqui. Isso normalmente resultará em pthreadGC2.(dll/lib).
Se estiver usando o Visual Studio, você precisará fornecer uma biblioteca pthreads
compilada para o Visual Studio baixando-a ou compilando-a você mesmo. Veja aqui. Tenha cuidado ao baixar/compilar a versão correta para sua configuração. Normalmente seria pthreadVC2.(dll/lib)
.
Uma maneira de configurar o CMake é usar a GUI do CMake. A GUI listará as variáveis que podem ser fornecidas para configurar a construção. As variáveis também podem ser especificadas na interface da linha de comando (veja um exemplo abaixo).
Nesta etapa você pode selecionar se deseja construir bibliotecas compartilhadas com BUILD_SHARED_LIBS
e se deseja construir todos os objetos Cyclone em uma única biblioteca com BUILD_SINGLE_LIBRARY
(mais sobre isso abaixo).
Ao usar o Microsoft Visual Studio (MSVC), você será solicitado a fornecer um caminho para a biblioteca pthreads
e seus cabeçalhos usando as variáveis CMAKE_THREAD_LIBS_INIT
e PTHREADS_INCLUDE_DIR
.
Será solicitado que você forneça um caminho para as fontes de dados puros e para a biblioteca de dados puros. Se estiver construindo Cylone para libpd, eles também podem ser satisfeitos fornecendo o caminho para a pasta pure-data
dentro das fontes libpd e fornecendo o caminho para a biblioteca libpd. As variáveis são: PD_INCLUDE_DIR
e PD_LIBRARY
.
No macOS, você pode definir diferentes destinos de implantação e arquiteturas do seu sistema atual usando as variáveis CMAKE_OSX_DEPLOYMENT_TARGET
e CMAKE_OSX_ARCHITECTURES
.
Você pode especificar sinalizadores de compilação adicionais usando a variável CMAKE_C_FLAGS
.
O CMake agora pode gerar Makefiles, uma solução MSVC ou um projeto XCode.
Após a geração, dependendo da sua plataforma você pode navegar até o diretório onde o CMake gerou os arquivos de build e então:
make
Claro que você também pode usar o próprio CMake para construir o ciclone executando isto na linha de comando:
cd
cmake --build .
Por padrão, o Cyclone construirá a maioria de seus objetos como um único arquivo binário ( .so
/ .dll
/ .dylib
/ .pd_darwin
). A exceção é o objeto/binário "ciclone" que carrega os objetos operadores não alfanuméricos (que são: !-
, !-~
, !/
, !/~
, !=~
, %~
, +=~
, <=~
, <~
, ==~
, >=~
e >~
).
Se desejar, você também pode construir todos os objetos Cyclone em um cyclone.so/dll/dylib/pd_darwin
ativando a opção BUILD_SINGLE_LIBRARY
.
Cada uma das bibliotecas individuais contém um método
que será invocado por dados puros no carregamento da biblioteca. Se você selecionar BUILD_SINGLE_LIBRARY
, o CMake irá gerar o código apropriado para que todos os métodos *_setup()
sejam invocados no cyclone_setup()
principal.
Aqui estão alguns exemplos de como baixar, configurar e construir o Cyclone mais recente na linha de comando usando CMake e 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 .
Usando libpd no 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 .
Trecho do Leiame original do Cyclone (de seu autor original Krzysztof Czaja):
O autor original do Cyclone, Krzysztof Czaja, trabalhou nele como parte de sua biblioteca mixada de 2002 a 2005 e mais tarde abandonou tudo junto. Paralelamente, o miXed foi incorporado ao Pd Extended e acabou sob a manutenção de Hans-Christoph Steiner - o principal desenvolvedor e mantenedor do Pd-Extended. Quando o Pd Extended foi abandonado após seu último lançamento (a partir de janeiro de 2013), o Cyclone e o miXed ficaram sem manutenção como resultado. Em dezembro de 2014, Fred Jan Kraan assumiu a manutenção e o desenvolvimento do Cyclone (mas não do resto da biblioteca miXed) e lançou as versões beta 0.1-alpha57 e Cyclone 0.2, mas decidiu abandonar o desenvolvimento em fevereiro de 2016.
Desde 21 de fevereiro de 2016, o desenvolvimento do Cyclone começou neste repositório por Alexandre Porres, Derek Kwan, Matt Barber e outros colaboradores. A primeira versão estável foi Cyclone 0.3-0 de fevereiro de 2019!
=> Repositório Original (até a versão 0.1-Alpha-56): O repositório original do MiXed como parte do Pd Extended - contendo Cyclone e mais (como 'toxy') - reside em https://svn.code.sf. net/p/pure-data/svn/trunk/externals/miXed/cyclone e o repositório migrado: https://git.puredata.info/cgit/svn2git/libraries/miXed.git/. Este repositório abrange o trabalho de três fases de manutenção diferentes:
=> Repositório de Fred Jan Kraan (0.1-Alpha57 e 0.2-beta):
Fred Jan Kraan bifurcou o repositório original para https://github.com/electrickery/pd-miXedSon, mas contendo apenas a biblioteca Cyclone. Este repositório possui alguns lançamentos - veja https://github.com/electrickery/pd-miXedSon/releases - começa com Cyclone versão 0.1-alpha-57, de outubro de 2015, que são basicamente os últimos desenvolvimentos feitos no repositório original em sua última fase. Em seguida, ele passa para uma nova versão do Cyclone 0.2, que parou em fase beta em fevereiro de 2016.
=> Este Repositório (0.3-0 em diante):
Em fevereiro de 2016, Porres bifurcou https://github.com/electrickery/pd-miXedSon para este repositório que reside em: https://github.com/porres/pd-cyclone. A bifurcação aconteceu enquanto o ciclone estava no estágio 0,2 beta. Desde então, Alexandre Porres, Derek Kwan, Matt Barber e outros colaboradores trabalharam no desenvolvimento do ciclone. A primeira versão estável deste repositório foi o Cyclone 0.3-0 de fevereiro de 2019. No final de 2021, após o lançamento da versão 0.6-0, este repositório foi desanexado do Kraan (electrickery) aqui no GitHub, depois de milhares de commits pela frente e com uma reestruturação completa da base de código.
=> O garfo 'nilwind':
A biblioteca 'nilwind' é uma bifurcação do Cyclone e começa como uma bifurcação do último estágio em que https://github.com/electrickery/pd-miXedSon foi deixado, o que significa que é um desenvolvimento sobre o ciclone 0.2-beta. O repositório do nilwind está em https://github.com/electrickery/pd-nilwind. Seu primeiro lançamento é ‘nilwind 0.2.1’, de novembro de 2019. Este fork do cyclone não tem como objetivo buscar atualizações de acordo com versões mais recentes do Max e sua principal preocupação é manter a compatibilidade com patches antigos/legados feitos no Pd-Extended era (que carregou o ciclone 0.1). No entanto, as versões do cyclone 0.3 em diante também são compatíveis com a era Pd-Extended, já que a fase de desenvolvimento atual não introduz alterações significativas e só oferece versões estáveis desde 0.3!
Este repositório reside em https://github.com/porres/pd-cyclone e é fiel ao objetivo original do Cyclone em criar um pacote Pd externo com uma coleção de objetos clonados e compatíveis com objetos Max/MSP. Bugs e problemas devem ser relatados em https://github.com/porres/pd-cyclone/issues. As versões deste repositório são estáveis e oferecem muitas correções e melhoram a estabilidade de versões anteriores.
A compatibilidade com versões mais recentes do Max é uma preocupação, mas a compatibilidade do Max sempre foi o objetivo principal do Cyclone e nada realmente mudou, já que o próprio Max mantém compatibilidades com versões anteriores. Não devem surgir incompatibilidades entre o ciclone 0.3-0 em diante e o estágio legado da biblioteca (a fase do ciclone 0.1 que estava disponível no Pd Extended). Como esta fase de desenvolvimento do Cyclone se preocupa em fornecer compatibilidade para patches feitos na era Pd-Extended, caso tais problemas surjam, eles devem ser tratados como bugs e reportados/corrigidos.
Este repositório/projeto está aberto à colaboração de qualquer pessoa que deseje trabalhar (tendo em mente o objetivo principal e central da compatibilidade Max/MSP). Sinta-se à vontade para colaborar.
Obrigado aos mantenedores anteriores, Lucas Cordiviola, por trabalhar nos problemas de compilação e compilação cruzada e gerar binários para muitos lançamentos. Diego Barrios Romero trabalhou na possibilidade de compilar todos os objetos no ciclone como um único binário em vez de binários separados. Tim Schoen por ajudar com alguns problemas, incluindo alguns objetos e incluindo Cyclone em seu projeto PlugData (veja: https://github.com/timothyschoen/PlugData)