Question

Je considérais audio et l'application MIDI Max (ou Max for Live, vraiment), mais je suis tout à fait à l'aise en Java, donc quelque chose comme cela semble aussi attrayante. Est-ce que quelqu'un a une expérience avec Max? Est-il vraiment adapté aux personnes qui ne codent pas, ou est le Goofy / recherche convivial interface utilisateur beaucoup plus efficace que l'écriture de code directement dans, disons, Java? En outre, quelqu'un at-il écrit un plugin VST en Java et peut partager des expériences là-bas?

Était-ce utile?

La solution

Max est un langage de flux de données. Je suis plus familier avec PD, qui est du même auteur.

L'avantage de flux de données comme un style de programmation est que la plupart des dépendances de données sont explicites - vous pouvez littéralement suivre les liens entre les sous-routines visuellement, et ils sont généralement affichés sous la forme d'une ligne sur l'écran entre eux. La difficulté est que l'ordre des opérations est moins explicite, car il est à deux dimensions dans la mise en page, plutôt que unidimensionnels code textuel serait.

Je fais la plupart de mes affaires audio supercollider de nos jours, mais pour une esquisse rapide d'une idée audio, et la construction d'un modèle de travail rude, pd fonctionne très bien.

La principale difficulté de la programmation dans un langage de flux de données visuelle comprendre l'ordre des opérations. Il est possible de créer plusieurs connexions à partir d'une sortie, mais il vous appartient de créer un [déclencheur] explicite objet pour contrôler les connexions de ces passe d'abord (une ligne provenant d'une sortie est conceptuellement identique à un appel de sous-programme). En outre il y a une difficulté avec les programmeurs expérimentés se habituer à des paramètres anonymes -. Les lignes de rapiéçage ont pas de noms, ils ont juste la sortie ils viennent et l'entrée ils sont connectés à les identifier

Une autre astuce consiste à utiliser l'encapsulation - dans un langage textuel que vous auriez une bibliothèque ou un fichier de classe, Max ou PD vous pouvez charger un fichier patch externe par nom - si vous créez un petit patch avec quelques sorties et les entrées, et l'utiliser à partir de votre autre patch dans plusieurs endroits, plutôt que de copier et coller (comme vous le feriez appeler des fonctions plutôt que de copier et coller des blocs de code).

[Envoyer] et [recevoir] sont pour la mise à l'échelle mondiale / l'obtention de données, et ont tous les mêmes problèmes qui viennent avec GLOBALS - une solution commune quand ils sont nécessaires est de préfixer un identifiant unique spécifique à la sous-patch actuel, le 0 $ jeton évalue l'ID unique de la sous-patch en cours dans les noms d'objet / paramètres, et est utilisé à cette fin. Ceci simule une variable scope.

Mise au point dans le flux de données est excellente, car elle est très facile à détacher un ensemble d'éléments à partir de leur pièce environnante et les faire fonctionner de façon autonome, et tournant sur le tracé d'une partie du flux est aussi simple que la fixation d'une boîte de numéro à un orifice de sortie .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top