Touch OSC Fragen

  • ich möchte auf Knopfdruck die Midi CC-Wert aller definierten Knöpfe übermitteln. Wie ginge sowas wohl?

  • default sind "Potis" ja float.. kann man die auf integer umstellen? (ich hätte gerne eine stepped control)
 
Zuletzt bearbeitet:
default sind "Potis" ja float.. kann man die auf integer umstellen? (ich hätte gerne eine stepped control)

Wenn ich das noch richtig im Kopf habe, dann wird der float automatisch beim Versenden der Message in den Datentyp konvertiert, der dort hinterlegt ist. Das ist aber abhängig von der Message.

Bei Midi-Messages wird es immer automatisch zu Integern, das Protokoll kennt ja nix anderes. Bei OSC-Messages muss man den zu übertragenden Parameter einmal anklicken, so dass er gelb wird (s.u.) und dann lässt sich in dem aufpoppendem Bereich darunter auch der Datentyp ausdrücklich angeben.

1678387206432.png



ich möchte auf Knopfdruck die Midi CC-Wert aller definierten Knöpfe übermitteln. Wie ginge sowas wohl?

Kompliziert. Hab ich unter TouchOSC auch so noch nicht selbst gemacht. Du musst dich aber auf jeden Fall ins LUA-Scripting einarbeiten. Dann kannst du alle Werte eines Arrays nehmen und per Message verschicken. Siehe dazu auch diese Seiten hier: https://hexler.net/touchosc/manual/script-functions-global

Dann kannst du z.B. einem bestimmten Button ein Script zuweisen und dann andere GUI-Elemente auslesen und die Werte dann verschicken.

Zu Testzwecken ist es auf jeden Fall ratsam, die von anderen Controls bezogenen Werte zunächst in ein Label in der GUI reinzuschreiben. Dann siehst du auch direkt, ob das richtig ist oder du dir grad Unsinn zusammengeschustert hast. Der nächste Schritt wäre dann, alle CCs in ein jeweils zugehörendes Label mit einem Knopfdruck zu schreiben. Und im Dritten Step baust du dir dann die Midi/OSC-Message zusammen.

Viel Glück!
 
Zuletzt bearbeitet:
@verstaerker Hier noch ein kleines Update, so dass du auch die GUI-Elemente in ihrem Verhalten zu kleinen Schrittchen verdonnern kannst:

Fader, Encoder und Radial brauchen jeweils diesen Code:

Code:
function onValueChanged(key)
  self.values.x = math.floor(self.values.x * self.gridSteps) / self.gridSteps
end

1678392745539.png

Und XY sind ein klitzekleinwenig umfangreicher:


Code:
function onValueChanged(key)
  self.values.x = math.floor(self.values.x * self.gridStepsX) / self.gridStepsX
  self.values.y = math.floor(self.values.y * self.gridStepsY) / self.gridStepsY
end

1678392841487.png

Bei allen wird die Anzahl des Rasters über die Zahlen, die ich da umkringelt habe, festgelegt.
 
@verstaerker Hier noch ein kleines Update, so dass du auch die GUI-Elemente in ihrem Verhalten zu kleinen Schrittchen verdonnern kannst:

Fader, Encoder und Radial brauchen jeweils diesen Code:

Code:
function onValueChanged(key)
self.values.x = math.floor(self.values.x * self.gridSteps) / self.gridSteps
end
mega - danke! Das funktioniert perfekt!
 
@2bit
weisst du zufällig wie man den Midichannel eines Fader relativ zur Page setzt ... also angenommen ich hab 16 pages und auf jeder sind die selben controls , aber auf jeder Page sollen die einen eigenen Midichannel haben, der von er page bestimmt wird

aktuell steht channel auf constant... das heisst wenn ich das setup auf die anderen page kopiere, müsste ich den midi-chnannel für alle controls updaten
 
das heisst wenn ich das setup auf die anderen page kopiere, müsste ich den midi-chnannel für alle controls updaten


Wenn du nur die GUI von TouchOSC benutzen willst, dann ist dies genau das, was du tun musst.
Ich weiß auch nicht, was die Entwickler von TouchOSC hier geraucht haben, aber die Auswahlmöglichkeiten machen da null Sinn.

Die einzige Möglichkeit, die ich sehe, ist, allen Fadern auf einer Seite per Script eine eigene sendMidi-function zu schreiben und diese allesamt den Channel von einer Variablen (z.B. die Seitennummer des Pagers) auslesen zu lassen. Meine Versuche, dies mit den Bordmitteln von TouchOSC umzusetzen, haben mich nur kopfschüttelnd zurück gelassen. Aus irgendwelchen Gründen ist zwar die Möglichkeit da, auf Properties der Parent-Objekte zugreifen zu können, aber die sinnigsten Möglichkeiten (Name, Tag und Label) scheitern daran, dass man über ne versaute Typkonvertierung stolpert.
 
ich hab rausgefunden wie das mit den dynamischen MidiChannels geht

dem pager einen tag verpassen (aktuelle Seitennummer -1)

Code:
for i=1, #self.children do
  self.children[i].tag = i-1
end

dann bei der control diesen tag als property angeben

1678791995677.png
 


News

Zurück
Oben