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
Max는 https://cycling74.com/에서 찾을 수 있습니다.
저작권 © 2003-2024 - Krzysztof Czaja, Hans-Christoph Steiner, Fred Jan Kraan, Alexandre Porres, Derek Kwan, Matt Barber 및 기타.
이 작품은 무료입니다. BSD-3-Clause(개정 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일 출시
https://github.com/porres/pd-cyclone/releases에서 Cyclone의 최신 릴리스를 찾거나 Pd의 외부 관리자를 통해 직접 찾아보세요(도움말 => 외부 찾기). https://github.com/porres/pd-cyclone/issues에서 버그를 보고해 주세요.
오래된 버전의 사이클론(0.1)은 오랫동안 버려진 Pd 확장 배포판(2020년대에는 아무도 사용하지 않아야 함)과 Pd-l2ork 및 Purr Data에서 사용할 수 있습니다. 둘 다 원래 Pd-Extended를 기반으로 했지만 다음으로 포팅되었습니다. nw.js(여기서 0.1 버전의 cyclone은 이 글을 쓰는 시점에 nw.js로 완전히 포팅되지 않았습니다). 최신 버전의 Cyclone을 원할 경우 Pd Vanilla 또는 PlugData를 사용하세요.
PlugData에 대해 알고 계시나요? Cyclone은 Timothy Schoen이 만든 PlugData의 일부이기도 합니다. 이는 개선된 GUI를 사용하여 독립 실행형 또는 VST로 로드되는 Pd의 포크입니다. 참조: https://github.com/timothyschoen/PlugData
Cyclone의 원저작자(Krzysztof Czaja)는 Cyclone이 MAX 4.0과 호환되자 2005년 버전 0.1-alpha55에서 이를 포기했습니다. 그런 다음 Cyclone은 Pd 확장에 통합되어 사용할 수 있게 되었으며, Pd 확장 및 Cyclone(결과적으로)이 완전히 폐기되기 직전인 2013년(0.1-alpha56) Hans-Christoph Steiner의 유지 관리에 따라 사소한 업데이트만 있었습니다( 이 0.1-alpha56 버전은 Pd-l2ork/Purr Data에서도 상속되었습니다. Fred Jan Kraan의 새로운 유지 관리 단계에서 0.1-alpha57 및 Cyclone 0.2 베타 버전이 출시되었습니다. 이 버전은 여전히 이전 '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 라이브러리 개발에 훨씬 더 바쁩니다. 이 라이브러리에는 거의 모든 사이클론 개체에 대한 대안이 있으며 ELSE의 많은 개체는 실제로 Cyclone에서 복제되지 않은 MAX/MSP 개체에서 영감을 받았습니다. 그런데 ELSE도 PlugData의 일부이므로 Cyclone 문서에서는 ELSE의 대안을 가리킵니다.
이제 Cyclone의 [pink~] 및 [comment]와 같은 몇 가지 객체가 ELSE에서 차용되었습니다(이것은 ELSE의 [note]를 기반으로 하며 실제로 더 이상 사용되지 않습니다). 이러한 개체는 이전 버전과 호환되며 원래 MAX 개체보다 더 많은 기능을 제공하므로 완전히 호환되지는 않습니다.
아직 MAX 7.3.5로 업데이트되지 않은 유일한 개체는 [mtr]이며 이는 To Do 목록에 있습니다. Cyclone은 Max 8(현재 릴리스) 및 향후 최신 9+ 버전의 기존 개체에 새로운 기능을 여전히 통합할 수 있지만 약속할 수는 없습니다.
다중 채널 연결을 지원하는 Pd 버전 0.54-0부터 'mc' 호환성이 가능해졌습니다. 그럼에도 불구하고 Cyclone용으로 이러한 개체를 만들고 이러한 호환성을 추구할 계획은 없습니다. 반면에 사용자는 현재 [clone]을 사용하여 사이클론 개체를 기반으로 하는 추상화와 같은 자체 "mc"를 구축할 수 있습니다. 많은 ELSE 객체가 다중 채널을 지원한다는 점에 유의하세요!
현재 최첨단 최종 상태에 대해 이 저장소에 제공된 소스에서 Cyclone을 컴파일하거나 https://github.com/porres/pd-cyclone/releases에서 보다 안정적인 컴파일 릴리스 중 하나를 다운로드할 수 있습니다. 좋은 대안은 단순히 Pd의 자체 외부 다운로드 관리자(일명 deken 플러그인)를 사용하는 것입니다. 도움말 메뉴에서 "외부 찾기" 옵션을 클릭하고 "사이클론"을 검색하면 됩니다.
Cyclone을 설치할 때 Pd가 검색하는 폴더(예: ~/Documents/Pd/externals
)에 Cyclone 폴더가 포함되어 있는지 확인하십시오. 이는 현재 Pd가 여러 버전에 대해 수행하도록 제안하는 것입니다.
이제 시작 시 Cyclone을 로드하여 설치할 수 있습니다. "Preferences => Startup"으로 이동한 다음 "New"를 클릭하고 "cyclone"을 입력한 후 OK를 누르십시오. 다음에 Pd를 다시 시작하면 Cyclone 라이브러리 바이너리가 로드됩니다.
이 라이브러리 바이너리는 영숫자가 아닌 연산자 객체(예: !-
, !-~
, !/
, !/~ , !=~
, %~
, +=~
, <=~
, <~
, ==~
, >=~
를 !/~
. >=~
및 >~
) 그러나 Pd의 기본 설정에 Cyclone의 경로도 추가하므로 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 변수를 사용하여 직접 경로를 지정해야 합니다. 예:
pdincludepath=~/pd-0.54-0/src/(Windows/MinGW의 경우 'pdbinpath=~/pd-0.54-0/bin/ 추가)
"objectsdir"을 사용하여 빌드의 상대 경로를 다음과 같이 설정하세요.
설치 객체dir=../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 자체를 사용하여 사이클론을 빌드할 수도 있습니다.
cd
cmake --build .
기본적으로 Cyclone은 대부분의 개체를 단일 바이너리 파일( .so
/ .dll
/ .dylib
/ .pd_darwin
)로 빌드합니다. 예외는 영숫자가 아닌 연산자 객체( !-
, !-~
, !/
, !/~
, !=~
, %~
, +=~
, <=~
, <~
, ==~
, >=~
및 >~
).
원하는 경우 BUILD_SINGLE_LIBRARY
옵션을 활성화하여 모든 Cyclone 개체를 하나의 cyclone.so/dll/dylib/pd_darwin
으로 빌드할 수도 있습니다.
개별 라이브러리 각각에는 라이브러리 로드 시 순수 데이터에 의해 호출되는
메서드가 포함되어 있습니다. BUILD_SINGLE_LIBRARY
를 선택하면 CMake는 모든 *_setup()
메서드가 기본 cyclone_setup()
에서 호출되도록 적절한 코드를 생성합니다.
다음은 CMake와 pure-data 또는 libpd를 사용하여 명령줄에서 최신 Cyclone을 다운로드, 구성 및 빌드하는 방법에 대한 몇 가지 예입니다.
리눅스:
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 .
윈도우/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의 원본 Readme에서 발췌(원저자 Krzysztof Czaja 작성):
Cyclone의 원작자 Krzysztof Czaja는 2002년부터 2005년까지 자신의 혼합 라이브러리의 일부로 Cyclone을 작업했지만 나중에 모두 함께 버렸습니다. 동시에 miXed는 Pd Extended에 통합되었고 결국 Pd-Extended의 주요 개발자이자 유지관리자인 Hans-Christoph Steiner의 유지 관리를 받게 되었습니다. Pd Extended가 마지막 릴리스(2013년 1월부터) 이후 폐기되었을 때 Cyclone과 miXed는 결과적으로 유지 관리되지 않은 채로 남겨졌습니다. 2014년 12월 Fred Jan Kraan은 cyclone(나머지 혼합 라이브러리는 아님)의 유지 관리 및 개발을 맡아 0.1-alpha57 및 Cyclone 0.2 베타 버전을 출시했지만 2016년 2월에 개발을 포기하기로 결정했습니다.
2016년 2월 21일부터 Alexandre Porres, Derek Kwan, Matt Barber 및 기타 공동 작업자가 이 저장소에서 Cyclone에 대한 추가 개발을 시작했습니다. 첫 번째 안정 릴리스는 2019년 2월 Cyclone 0.3-0이었습니다!
=> 원본 저장소(버전 0.1-Alpha-56까지): Pd Extended의 일부인 MiXed의 원본 저장소(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로 시작합니다. 이는 기본적으로 원래 저장소에서 이루어진 마지막 개발입니다. 마지막 단계에서. 그런 다음 2016년 2월 베타 단계에서 중단된 새로운 Cyclone 0.2 버전으로 이동합니다.
=> 이 저장소(0.3-0 이상):
2016년 2월, Porres는 https://github.com/electrickery/pd-miXedSon에서 https://github.com/porres/pd-cyclone에 있는 이 저장소로 포크했습니다. 사이클론이 0.2베타 단계에 있을 때 포크가 발생했습니다. 그 이후로 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에 있습니다. 첫 번째 릴리스는 2019년 11월 'nilwind 0.2.1'입니다. 이 사이클론 포크는 Max의 최신 버전에 따른 업데이트를 추구하는 것을 목표로 하지 않으며 주요 관심사는 Pd-Extended에서 만들어진 이전/레거시 패치와의 호환성을 유지하는 것입니다. 시대 (사이클론 0.1을 운반). 그럼에도 불구하고 cyclone 0.3 이후 버전은 Pd-Extended 시대와도 호환됩니다. 현재 개발 단계에서는 획기적인 변경 사항이 도입되지 않고 0.3 이후로 안정적인 릴리스만 제공되었기 때문입니다!
이 리포지토리는 https://github.com/porres/pd-cyclone에 있으며 Max/MSP 개체와 호환되고 복제된 개체 컬렉션이 포함된 외부 Pd 패키지를 생성하는 Cyclone의 원래 목표에 충실합니다. 버그와 문제는 https://github.com/porres/pd-cyclone/issues에 보고해야 합니다. 이 저장소의 릴리스는 안정적이며 많은 수정 사항을 제공하고 이전 버전보다 안정성이 향상되었습니다.
최신 버전의 Max와의 호환성이 문제이지만 Max 호환성은 항상 cyclone의 주요 목표였으며 Max 자체가 이전 버전과의 호환성을 유지하기 때문에 실제로 변경된 것은 없습니다. 라이브러리의 레거시 단계(Pd Extended에서 사용 가능한 사이클론 0.1 단계)와 사이클론 0.3-0 이후 사이에 비호환성이 발생해서는 안 됩니다. 이번 Cyclone 개발 단계는 Pd-Extended 시대에 만들어진 패치에 대한 호환성을 제공하기 위한 것이므로 이러한 문제가 발생하면 버그로 처리하여 보고/수정해야 합니다.
이 저장소/프로젝트는 작업을 원하는 누구에게나 협업이 가능하도록 열려 있습니다(Max/MSP 호환성의 핵심이자 중심 목표를 염두에 두십시오). 자유롭게 협력해 보세요.
컴파일 및 교차 컴파일 문제를 해결하고 많은 릴리스에 대한 바이너리를 생성한 이전 관리자 Lucas Cordiviola에게 감사드립니다. Diego Barrios Romero는 사이클론의 모든 객체를 별도의 바이너리가 아닌 단일 바이너리로 컴파일할 수 있는 가능성에 대해 연구했습니다. 몇 가지 개체를 포함하고 PlugData 프로젝트에 Cyclone을 포함하여 몇 가지 문제를 해결하는 데 도움을 준 Tim Schoen(https://github.com/timothyschoen/PlugData 참조)