2010-01-12 2 views
3

Max (또는 Max for Live, 실제로는)에서 오디오 및 MIDI 응용 프로그램을 고려하고 있지만 Java에서는 완전히 편안하므로 something like this also seems attractive입니다. 아무도 맥스와 어떤 경험이 있니? 실제로 코드를 작성하지 않은 사람들, 또는 바보 같은 코드를 사용하는 UI가 Java 코드에 직접 작성하는 것보다 훨씬 효율적입니까? 또한, 누구도 Java에서 VST 플러그인을 작성하고 거기서 어떤 경험을 공유 할 수 있습니까?라이브 대 JVAP 도구의 최대 값

답변

3

최대 값은 데이터 흐름 언어입니다. 저는 PD와 더 친숙합니다. PD는 같은 저자입니다.

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

요즘은 오디오 콜렉션에서 오디오 작품을 대부분 담당하지만, 오디오 아이디어를 빠르게 스케치하고 작동하는 거친 모델을 제작하려면 pd가 훌륭합니다.

시각적 인 데이터 흐름 언어로 프로그래밍하는 주요 어려움은 작업 순서를 이해하는 것입니다. 하나의 콘센트에서 여러 개의 연결을 만들 수는 있지만 명시 적으로 [트리거] 개체를 만들어 처음 실행되는 연결 (콘센트에서 오는 선은 개념적으로 서브 루틴 호출과 동일 함)을 제어해야합니다. 숙련 된 프로그래머는 익명 매개 변수에 익숙해지기가 어렵습니다. 패치 라인에는 이름이 없으며, 콘센트가 있고 콘센트가 연결되어있어 식별 할 수 있습니다.

또 다른 팁은 캡슐화를 사용하는 것입니다. 라이브러리 또는 클래스 파일이있는 텍스트 언어에서는 외부 패치 파일을 Max 또는 PD에서로드 할 수 있습니다. 따라서 일부 콘센트 및 입구가있는 작은 패치를 만듭니다 (코드 블록을 복사하여 붙여 넣기하는 대신 함수를 호출하는 것처럼) 복사 및 붙여 넣기가 아닌 여러 위치에서 다른 패치의 코드를 사용하십시오.

[send] 및 [receive]는 데이터를 전역 적으로 설정/가져 오는 데 사용되며 전역 변수와 동일한 문제가 있습니다. 필요한 경우 일반적인 해결 방법은 현재 하위 패치에 고유 한 식별자를 추가하는 것입니다. $ 0 토큰은 객체 이름/매개 변수에서 현재 서브 패치의 고유 ID로 평가되며이 용도로 사용됩니다. 이것은 스코프 변수를 시뮬레이트합니다.

주변의 패치에서 항목 세트를 분리하고 독립적으로 실행하기가 쉽기 때문에 데이터 흐름의 디버깅이 뛰어납니다. 흐름의 일부분에 대한 추적 기능을 켜기는 쉽습니다. 콘센트.

+1

그리고 나는 거의 언급하지 않았다 : 맥스와 pd에 대한 좋은 점은 스파게티 코드가 말 그대로 스파게티처럼 보이고 잘 정렬 된 코드는 일반적으로 당신이 5 피트 모니터에서 다시 확인하십시오. –

+1

또 다른 옵션은 http://www.csounds.com/manual/html/CommandCsoundVST.html csoundvst이며 csound 프로그래밍 언어를 vst 플러그인에 포함시킵니다. csound의 구문은 어셈블러 매크로를 기반으로 한 매우 오래된 것이지만 비 실시간 오디오 프로그래밍을 수행하는 데 훌륭한 DSL입니다. csound의 이점은 다른 모든 오디오 DSL보다 훨씬 적은 롤링 자신감을 가지기 때문에 거의 모든 비 tradesecret 오디오 합성 또는 프로세싱 알고리즘을 구현 한 것입니다. 또한 폭넓게 사용되는 오디오 DSL 중에서 가장 성능이 뛰어나며 JVAP를 능가하는 성능을 발휘합니다. –

+0

+1 지금 당장 당신의 대답을 깊이 연구해야합니다. –