Вопрос

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

Это было полезно?

Решение

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top