Макс для Live против JVAP Tools - PullRequest
3 голосов
/ 12 января 2010

Я рассматриваю аудио и MIDI-приложения в Max (или Max for Live, правда), но я полностью чувствую себя комфортно в Java, поэтому что-то подобное также кажется привлекательным . У кого-нибудь есть опыт работы с Максом? Действительно ли он предназначен для людей, которые не пишут код, или глупый / дружественный интерфейс гораздо эффективнее, чем написание простого кода, скажем, на Java? Кроме того, кто-нибудь написал плагин VST на Java, и может поделиться там опытом?

1 Ответ

3 голосов
/ 20 января 2010

Макс является языком потока данных. Я больше знаком с PD, который принадлежит тому же автору.

Преимущество потока данных как стиля программирования состоит в том, что большинство зависимостей данных являются явными - вы можете буквально визуально отслеживать связи между подпрограммами, и они обычно отображаются в виде линии на экране между ними. Сложность в том, что порядок операций менее явный, потому что он двухмерный, а не одномерный, как в текстовом коде.

В настоящее время я делаю большую часть своих аудиофайлов в суперколлайдере, но для быстрого наброска звуковой идеи и построения грубой рабочей модели pd отлично работает.

Основная сложность программирования на языке визуального потока данных заключается в понимании порядка операций. Можно создать несколько соединений из одной розетки, но вам необходимо создать явный объект [trigger] для управления тем, какое из этих соединений запускается первым (линия, идущая из розетки, концептуально совпадает с вызовом подпрограммы). Кроме того, у опытных программистов есть проблема с привыканием к анонимным параметрам - у линий исправлений нет имен, они просто имеют выход, из которого они исходят, и вход, к которому они подключены, чтобы идентифицировать их.

Другой совет - использовать инкапсуляцию - на текстовом языке у вас будет библиотека или файл класса, в Max или PD вы можете загрузить внешний файл патча по имени - так что вы создаете небольшой патч с некоторыми выходами и входами, и использовать его из другого патча в нескольких местах, а не копировать и вставлять (точно так же, как вы вызываете функции, а не копировать и вставлять блоки кода).

[send] и [receive] предназначены для глобальной настройки / получения данных и имеют все те же проблемы, что и глобальные переменные - общий обходной путь, когда они необходимы, заключается в добавлении уникального идентификатора, специфичного для текущего подпатча, $ 0 токен оценивается как уникальный идентификатор текущего подпатча в именах / параметрах объекта и используется для этой цели. Это моделирует переменную области действия.

Отладка в потоке данных превосходна, потому что очень легко отсоединить набор элементов от окружающего патча и запустить их независимо, а включить трассировку для части потока так же просто, как прикрепить поле с цифрами к розетке. .

...