문제

나는 Max (또는 Max for Live)의 오디오 및 MIDI 응용 프로그램을 고려하고 있지만 Java에서는 완전히 편안합니다. 이와 같은 것도 매력적으로 보입니다. Max에 대한 경험이 있습니까? 코드를 작성하지 않는 사람들에게 실제로 적용됩니까? 또한 Java에 VST 플러그인을 쓴 사람이 있습니까? 그곳에서 경험을 공유 할 수 있습니까?

도움이 되었습니까?

해결책

Max는 데이터 흐름 언어입니다. 나는 같은 저자의 PD에 더 익숙합니다.

프로그래밍 스타일로서 DataFlow의 장점은 대부분의 데이터 종속성이 명백하다는 것입니다. 문자 그대로 서브 루틴 간의 연결을 시각적으로 따를 수 있으며 일반적으로 화면 사이의 라인으로 표시됩니다. 어려움은 텍스트 코드와 같이 1 차원이 아니라 레이아웃에서 2 차원이기 때문에 운영 순서가 덜 명백하다는 것입니다.

요즘 SuperCollider에서 대부분의 오디오 작업을 수행하지만 오디오 아이디어를 빠르게 스케치하고 작동하는 거친 모델을 구축하기 위해 PD는 훌륭하게 작동합니다.

시각적 데이터 흐름 언어로 프로그래밍의 주요 어려움은 운영 순서를 이해하는 것입니다. 한 콘센트에서 여러 연결을 만들 수는 있지만, 해당 연결 중 어느 것이 먼저 실행되는지를 제어하기 위해 명시 적 [트리거] 객체를 생성하는 것이 좋습니다 (콘센트에서 나오는 선은 개념적으로 서브 루틴 호출과 동일합니다). 또한 익명의 매개 변수에 익숙해지는 숙련 된 프로그래머에는 어려움이 있습니다. 패치 라인에는 이름이 없으며, 출구에서 나오는 출구와 입구가 연결되어있는 입구가 있습니다.

또 다른 팁은 캡슐화를 사용하는 것입니다 - 텍스트 언어로 라이브러리 또는 클래스 파일이 있으면 최대 또는 PD로 이름으로 외부 패치 파일을로드 할 수 있으므로 일부 콘센트 및 인트가있는 작은 패치를 만들고 사용합니다. 복사 및 붙여 넣기보다는 여러 곳의 다른 패치에서 코드 블록을 복사하고 붙여 넣기보다는 기능을 호출하는 것처럼).

Send] 및 [수신]은 전 세계적으로 설정 / 수신을위한 것이며 글로벌과 함께 발생하는 것과 동일한 문제를 모두 가지고 있습니다. 필요할 때 일반적인 해결 방법은 현재 서브 패치에 특정한 고유 식별자를 준비하는 것입니다. $ 0 토큰은 평가합니다. 객체 이름 / 매개 변수의 현재 서브 패치의 고유 ID는이 목적으로 사용됩니다. 이것은 스코프 변수를 시뮬레이션합니다.

DataFlow의 디버깅은 주변 패치에서 일련의 항목을 분리하고 독립적으로 실행하는 것이 매우 쉽기 때문에 우수하며, 흐름의 일부에 대한 추적을 켜는 것은 숫자 상자를 콘센트에 부착하는 것만 큼 쉽습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top