Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Zusatzfunktionen "Encoder Left Command" und "Encoder Right Command" für Encoder #12

Open
Patrick-MA3 opened this issue Oct 19, 2024 · 3 comments

Comments

@Patrick-MA3
Copy link

Ich nutze dein Programm für das Behringer X-Touch Compact und bin aktuell am Umschreiben des Codes für meine Bedürfnisse. Eine allgemeine Anfrage an dich habe ich schon in YouTube gestellt, da die nächste aber ein mögliches künftiges Feature sein könnte, poste ich sie hier.

In MA3 können für die Encoder Zusatzfunktionen aktiviert werden "Encoder Left Command" und "Encoder Right Command". Diese sind sehr nützlich, um beispielsweise durch die Liste der Cues zu scrollen, um den gewollten auszusuchen und dann über Go abzuspielen. In der jetzigen Programmierung werden allerdings nur die absoluten Werte übergeben, weshalb diese Funktion in MA3 nicht funktioniert.

Wäre es möglich, hierfür einen Zusatzbefehl zu schreiben, sodass die gewünschten Encoder dann beispielsweise nicht mehr im Mapping unter "control" aufgeführt werden, sondern einem eigenen Punkt, der als Ausgabe die Drehrichtung widerspiegelt?

@Patrick-MA3
Copy link
Author

Ich hätte eine Idee. Ich versuche mich die Tage an der Umsetzung, habe aber noch nicht so die großen Programmiererfahrungen:
Der bisherige Encoder-Wert muss in einer eigenen Variable gespeichert werden. Über if muss dann bei Eingabe geklärt werden, ob der Wert kleiner als der vorherige ist oder im Falle 0 gleich bleibt, dann müsste -1 an die Konsole ausgegeben werden. Wenn der Wert aber größer als der vorherige ist oder im Falle 127 gleich bleibt, müsste +1 ausgegeben werden. Der neue Wert wird anschließend als bisheriger Wert gespeichert.

@Patrick-MA3
Copy link
Author

Patrick-MA3 commented Oct 21, 2024

Komplett andere Idee: Über den X-Touch Editor kann das Verhalten aller Tasten und Encoder verändert werden, z.B. min-Value 0, max-Value 1. Das macht die Abfrage etwas leichter, ist über den Zwischenschritt mit dem Editor (windows-only) aber nicht so elegant wie ein Vergleich der ausgegebenen Werte (siehe Post 2). Einmal eingerichtet werden die Änderungen im Behringer gespeichert und können dann auch am Mac so genutzt werden.

Meine Versuche:

  1. Befehl müsste lauten: /gma3/Page1/ExecutorKnob301, i, -1 for left encoder oder /gma3/Page1/ExecutorKnob301, i, 1 for right encoder , allerdings funktioniert es nicht, da onPC es nicht zu erkennen scheint. Eventuell ist die Funktion für onPC ohne CommandWing deaktiviert (ist zumindest bei anderen Turn-Funktionen teils so). Oder der Befehl wird durch die Ausgabedatei verändert?
    var config = routing[port]['control'][ctrl]; if (config.encoder) { if ( value == 0){ send(ip, oscPort, prefix + "/Page" + page + "/ExecutorKnob" + config.encoder, { type: "i", value: "-1" }); } if ( value == 1){ send(ip, oscPort, prefix + "/Page" + page + "/ExecutorKnob" + config.encoder, { type: "i", value: "1" }); } }
  2. Das Routing wird umgangen und stattdessen wird mit cmd gearbeitet, um nächsten oder vorherigen Cue zu laden, ohne ihn zu starten. Man kann also Cues aus der Liste auswählen und mit anschließendem Drücken des Encoders bzw. des Buttons (je nach Programmierung) den Cue starten.
    var config = routing[port]['control'][ctrl]; if (config) { if (config.encoder) { if ( value == 0){ send(ip, oscPort, prefix + "/cmd", { type: "s", value: "Load previous on " + config.encoder }); } if ( value == 1){ send(ip, oscPort, prefix + "/cmd", { type: "s", value: "Load next on " + config.encoder }); } } if (!config.encoder) { send(ip, oscPort, prefix + "/Page" + page + "/Fader" + config, { type: "i", value: value }); } }

Variante 2 funktioniert :-) Die Variable .encoder steht nur bei den gewünschten Encodern im Mapping und wird für alle anderen ausgeschlossen. Zusätzlich habe ich noch die Encoder der 300er Reihe mit aufgenommen (über grandMA3 300er und 400er verbunden), so habe ich für den zusammengefassten Executor zwei Encoder mit jeweils Druckfunktion und noch zwei weitere Executoren (Auswahl / Go+, Master / Off, Go+ und Flash).

@xxpasixx
Copy link
Owner

Hey Patrick,
nice was du schon ausprobiert hast und ne lösung gefunden hast.
Man kann bei dem xTouchCompact auch den modus auf relativ setzten: https://www.reddit.com/r/MIDIcontrollers/comments/zkum5g/behringer_xtouch_mini_relative_mode/
Dann kann man auch abfangen wenn er sich schneller gedreht hat.

Das mit den direkten /cmd load previus... werd ich nicht so einbauen, weil ich die flexibilität für die funktionen gerne in MA hätte, dass ich in MA das verhalten umstellen kann.
Ich bin aber grad am rumprobieren. Wenn das läuft lad ichs hier auf Github hoch

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants