Frage

Ich erwäge Audio- und MIDI-Anwendung in Max (oder Max for Live, wirklich), aber ich bin total bequem in Java, so so etwas wie dies scheint auch attraktiv . Hat jemand Erfahrung mit Max? Ist es wirklich die Menschen ausgerichtet, die nicht Code zu tun, oder ist das doof / freundlich aussehenden UI viel effizienter als in geraden Code zu schreiben, sagen wir, Java? Außerdem hat jemand ein VST Plugin in Java geschrieben und kann keine Erfahrungen austauschen da?

War es hilfreich?

Lösung

Max ist ein Datenfluß Sprache. Ich bin mehr vertraut mit PD, die von demselben Autor ist.

Der Vorteil des Datenfluß als Programmierstil ist, dass die meisten Datenabhängigkeiten explizit sind - Sie buchstäblich den Verbindungen zwischen Subroutinen folgen können visuell, und sie sind in der Regel als eine Linie auf dem Bildschirm zwischen ihnen angezeigt. Die Schwierigkeit besteht darin, dass Reihenfolge der Operationen weniger explizit, weil sie zweidimensional in Layout, anstatt eindimensional als textueller Code wäre.

ich die meisten meiner Audio-Sachen in Supercollider heute, aber für eine schnelle Skizze eines Audio-Idee und den Aufbau einer Arbeits grobes Modell, pd funktioniert super.

Die größte Schwierigkeit der Programmierung in einer visuellen Sprache Datenfluß wird Reihenfolge der Operationen Begreifen. Es ist möglich, mehrere Verbindungen von einem Ausgang zu schaffen, aber es ziemt Sie ein explizites [Auslöser] Objekt zu Steuerelement erstellen, welche diese Verbindungen zunächst laufen (eine Linie von einem Auslass kommt, ist vom Konzept her das gleiche wie ein Unterprogramm-Aufruf). Auch gibt es eine Schwierigkeit, mit erfahrenen Programmierer mit anonymen Parameter Gewöhnung -. Die Patching-Linien haben keine Namen, sie haben nur die Steckdose kommen sie aus und den Einlass sie verbunden sind, um sie zu identifizieren

Ein weiterer Tipp Verkapselung zu verwenden ist - in einer Textsprache würden Sie eine Bibliothek oder eine Klassendatei, in Max oder PD Sie kann nach Namen eine externe Patch-Datei laden - so erstellen Sie einen kleinen Patch mit einiger Aus- und Eingängen, und verwendet, die von Ihrem anderen Patch an mehreren Stellen, anstatt Kopieren und Einfügen (wie Sie Funktionen eher als das Kopieren und Einfügen von Code-Blöcken nennen würden).

[Senden] und [receive] sind für global Einstellung / Daten zu erhalten, und haben alle die gleichen Probleme, die mit Globals kommen - ein gemeinsames Problem zu umgehen, wenn sie benötigt werden, ist eine eindeutige Kennung spezifisch für den aktuellen Subpatch Zierer die $ 0 Token auswertet, um die eindeutige ID des aktuellen Subpatch in Objektnamen / Parameter und wird für diesen Zweck verwendet. Dies simuliert eine scoped Variable.

in Datenfluß Debuggen ist ausgezeichnet, weil es sehr einfach ist, eine Menge von Elementen aus ihrer Umgebung Patch zu lösen und führen sie unabhängig und für einen Teil der Strömung auf Spur dreht, ist so einfach wie ein Nummernfeld an eine Steckdose angebracht .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top