Programmierung

Da der Lemur also erstmal “nackt” – sprich ohne Interfaces – kommt, stellt sich die Frage, wie aufwendig denn die Programmierung von Interfaces ist und ob sowas auch von Laien gemacht werden kann, deren Fokus weiterhin eher auf dem Musizieren ist, als auf dem Programmieren. Hierbei sei aber auch auf die riesige User-Library verwiesen, die es gibt. Man muss das Rad also nicht neu erfinden und kann sich zunächst seine eigene Oberfläche aus einer Kombination von vorhandenen User Modulen bauen. Sowas wie Klaviaturen findet man da in jeglicher Ausprägung und selbst wenn einem etwas anderes vorschwebt, ist es gut, erstmal mit vorhandenen Material zu beginnen und es dann schrittweise anzupassen. Auch Oberflächen für so ziemlich jedes VST Plugin findet man in der User-Area.

Will man es selbst machen, so lässt sich die Programmierung am Lemur in 2 Lager einteilen: Alles was direkt über MIDI-CC eine Oberfläche nachbaut ist easy, solange dem Output eines Kontrollelementes eben direkt MIDI zugeordnet wird. Typische Anwendungen wären hier einen Kontroller für ein VST-Plugin, einen Effekt usw… Komplizierter wird es, wenn die Kontrollelemente eben nicht direkt Midi senden, sondern z.B. Knopf A nur senden soll, wenn Knopf B gedrückt ist. Ein Beispiel wäre hier eine Klaviatur oder ein Sequencer.

Bild “Synth1old”: Beispiel für eine einfache Programmierung einer VST-Synth Oberfläche am Lemur. (Fast) alle Kontrollobjekte sind direkt einem MIDI-Parameter zugeordnet. Änderungen am Plugin über andere Wege (Mausbedienung, zusätzliche Hardware Belegung, Program Change) werden auf der Lemur-Oberfläche angezeigt.

Ich fange mit der einfachen, direkten Programmierung an: Hui, ist das ein Spaß! Kannste PowerPoint (oder hast zumindest keine Angst davor), kannste das auch. Und es macht wirklich einen Riesenspaß sich seine Oberfläche für das Lieblings-Plugin zusammen zu stellen. Die ADSR als 4er MultiSlider…in blau, oder ne, doch lieber in rot….ne größer… und hier Filter Cutoff und Resonanz. Klar, so ein Plugin hat viele Kontrollen und schnell sind ein paar Stunden vergangen. Aber der Prozess ist übersichtlich, von vielen kleinen Erfolgserlebnissen begleitet und (wenn man seinen Perfektionismus im Griff hat) wenig frustrierend. So richtig geht der Spaß aber erst los, wenn man seine eigene Oberfläche dann nutzt, um z.B. neue Sounds auf dem Plugin zu programmieren. Ich kann aus eigener Erfahrung sagen, dass obwohl ich mit dem Synth1 (VSTplugin) schon ewig vertraut bin, seitdem ich ein Lemur-template dafür habe, nicht nur 10 mal soviel Sounds programmiert habe, sondern diese auch in eine ganz andere Qualität haben. Der direkte Zugriff und der Spielspass damit (inklusive des Experimentierens) verändert alles – da kann die Maus-Bedienung wirklich nicht gegen anstinken. Selbst wenn man nicht die komplette Oberfläche des Synths programmiert, sondern nur die Sachen, die man am meisten braucht, reicht das schon – eine parallele Mausbedienung bei irgendwelchen tiefen Operationen ist ja nicht ausgeschlossen.

Ein weiteres Beispiel für diese einfache Programmierung ist der “Rheyne Jammer for Lemur and Ableton Live”. Dabei wurde ein ganzes 4track Live set umgesetzt, was sicher viele Stunden Arbeit war, aber eben meist auf direkter MIDI Zuordnung basiert (und einigen Klaviaturen aus der User-Area), was einfach umzusetzen ist:

https://youtu.be/-_ax_BQxPTw

Kommen wir nun zum “tieferen” Programmieren. Wobei es auch da Unterschiede gibt, wie tief man nun in das Kaninchenloch kriechen will. Eine einfache Programmierung könnte ja schon sein: “Mach den LFO-Slider heller, wenn die LFO eingeschaltet ist.” Das ist durch die Eigenschaft “light”, die jedes Kontrollelement besitzt, einfach: Beim LFO-Slider einfach unter light eintragen “LFOswitch.x” – dann würde es jedesmal hell, wenn LFOswitch.x=1 ist, bzw. dunkel wenn der auf 0 steht. Solche kleinen optischen Helfer sind echt praktisch. Funktioniert auch bei Kanallautstärke und Mute: Habe ich z.B. einen 4er MultiSlider für 4 Kanäle und darunter einen 4er Mute Switch, so trage ich beim MultiSlider light einfach “Mute.x” ein – der Clou – der Lemur routet nun automatisch dem Slider 3 das an/aus von MuteSwitch 3 zu.

Bild “Lemur Editor MultiSlider_cut”: Die ausgewählten roten MultiSlider senden ihre x-Value an MIDI-Target 0 als Control Change Nachrichten auf den Controllern 12-15 in einem Bereich von 0-127 auf Kanal 4. Zur interaktiven Beleuchtung wurde unter “light” “Mute.x/2” angegeben, so dass der einzelne Slider zur Hälfte heller wird, wenn der korrespondierende Mute-Switch gedrückt ist. (Anmerkung: “Mute” müsste hier eigentlich “True” heißen, da in dieser Anwendung nur ein gedrückter Mute-Schalter das Signal auf dem Kanal durchlässt).

Bild “Lemur Editor Midi_cut”: In diesem Modul wurde Custom MIDI verwendet, damit die Zuordnung dynamisch geschehen kann. Die Werte für die Controller Number und Channel werden im Unterordner Set in der Variable “vector” festgelegt. Eine Variable kann 256 Positionen beinhalten, die Position des interessierenden Wertes wird in Klammern dahinter festgelegt.

Bild “Lemur Editor Script”: Beispiel eines Scriptes, hier zum Abrufen der zuvor in Variablen gespeicherten Werte der Kontrollelemente.

  • Das Script wird “on Expression” von “Pattern.x” (das sind die grünen 8 Pads) dann aktiviert, wenn der Wert von 0 auf 1 geht (der Pfeil nach oben, hinten in der Zeile), also eines der 8 Pads gedrückt wird.
  • In diesem Fall wird erstmal geklärt welches Pad gedrückt wurde – “firstof(Pattern.x) –
  • und der Rest nur durchgeführt, wenn “Mode==1”, was hier meint Wiedergabe/grüne Pads, da diese auch rot sein können, wenn “Mode==0” im Modus zum Speichern.
  • Dann folgt ein Loop der 16 mal durchgeführt wird für die 16 einzelnen Slider und die 16 Random-Switches darunter abzurufen.
  • Dann noch für den Grid mit 10 Werten (lässt sich eigentlich auch eleganter umsetzen, da Radiobutton)
  • und die Werte einzelner Kontrollelemente.
  • Zum Schluss noch in der Variablen “active” das derzeitige Pattern hervorheben – dies ist die Licht-Variable des Pattern Objektes.

Die Programmiersprache ist also kein Hexenwerk….aber es ist schon ein wenig Einarbeitung für nötig…

Bild “Lemur Sequencer”: Mit den Object Properties von StepNote kann man leicht auf die schnelle auch einen einfachen Sequencer bauen. Pitch, velocity, channel, length, legato und swing (die blauen values) können auch Vektoren sein und somit pro step und nicht nur global gelten. Target, Clock-quelle, Anzahl der steps und grid lassen sich über eine Codezeile anpassen (setattribute).

Unten rechts ist ein kleiner Sequencer zu sehen, an dem ich gerade bastele. Man kann Velocity, length, Octave, Note und Propability (!) pro step setzen. Die Anzahl der Steps lässt sich auch anpassen….

Bild “Liine_StepNote”: Dies ist ein komplexerer Sequencer auf dem Lemur. Pitch, Octave, Velocity und Length können auch unabhängig von der Länge der Steps sein und so polyrhythmische Variationen zulassen.

Die Programmierung von aufwendigeren Tools ist natürlich ein Zeitfresser. Und nicht nur, dass Zeit, die man vorher mit dem musizieren verbracht hat, nun vom programmieren belegt ist. Nein, man ist auch in einem anderen Modus, wenn man wirklich tief in die Kaninchenhöhle schlüpft. Ideen, Umsetzung und Testen wechseln sich ab. Zum Musik machen bleibt da kaum noch Platz. Während meiner harten Programmierzeit habe ich kaum noch Musik gemacht. Dafür habe ich mir Tools erschaffen können, mit denen ich – auf Dauer – meine musikalischen Ideen und Ansätze besser umsetzen kann. Es hat aber einige Zeit gedauert, bis ich wirklich wieder mehr Musiker als Programmierer war.

Heutzutage möchte ich meine Tools (die ich auf der nächsten Seite vorstelle) nicht mehr missen. Wenn man in der Metapher zur Malerei die Klänge als die Farben ansieht, dann sind die Controller die Pinsel. Klar, mit den vorhandenen Standardpinseln kann man alles machen. Ich habe mir aber nun meine Spezialpinsel entwickelt, die meine kreative Arbeit viel besser unterstützen können. Ist dadurch meine Musik besser geworden? Wahrscheinlich nicht. Aber ich habe viel mehr das Gefühl jetzt die Musik machen zu können und auf die Art und Weise wir ich will. (Das nur als persönliche Gedanken zur Interface-Programmierung)

Forum
  1. Profilbild
    Markus Schroeder  RED

    Wow, super Artikel, congrats und Danke!
    Ich hab immer gesagt Liine Lemur ist _der_ Grund sich ein iPad zu kaufen, aber wie Du sagt, Liine haben anscheinend kein interesse mehr daran oder was auch immer.

    Sehr, sehr schade.

    • Profilbild
      tonvibration  

      Ja Danke und gern geschehen. Der Artikel war mir eine Herzensangelegenheit. Nur schade, dass er jetzt unter diesen Umständen veröffentlicht werden muss…
      Das iPad hat bei Musiksachen schon Vorteile – z.B. wegen der großen Anzahl an Musik Apps allgemein oder dem günstigen aber gut funktionierenden MIDI Adapter. Bei Neuanschaffung tut es aber auch ein Android Tablet, das nunmal viel günstiger ist.

  2. Profilbild
    lsf3og

    Wirklich ein sehr informativer Artikel. Habe gleich Lust bekommen, die App zu laden, werde aber lieber die Finger davon lassen.
    Ich habe gerade geguckt, was man bei Archive.org noch in Bezug auf das größtenteils abgeschaltete Forum findet. Dort gibt es einen Snapshot vom Januar, der genutzt werden kann, um die Library zu durchsuschen. Damit lassen sich auch die entsprechenden Downloadlinks finden, die auch noch funktionieren.
    Hier die Adresse des Snapshots: http://web.....r-library/

    • Profilbild
      tonvibration  

      Der Snapshot ist super! Danke für den Tipp. Dadurch sieht man nämlich auch wieder die Bilder zu den User Interfaces – was eine große Hilfe bei der Fülle an Interfaces ist.
      Leider hat Liine ja just an diesem Wochenende (13.-14.4.19) angefangen die Homepage zu löschen: Zunächst natürlich alles unter Company (damit die User schnell vergessen, wer es war?), aber auch den Premium Content (extra vorgestellte Module von hoher Qualität) und eben Bilder und Suchfunktionen (tags wurden wohl gelöscht) in der User Library. Die Module selbst sind aber noch da.
      Den Gedanken, sich so eine App besser nicht mehr zuzulegen, kann ich gut verstehen. Auf der anderen Seite, dann nicht traurig sein, wenn es die plötzlich nicht mehr gibt und auf absehbare Zeit nichts Vergleichbares kommt. Ist ne doofe Situation….

      • Profilbild
        ALFD

        Also ich habe mir leider letzte Woche die LemurApp fürs iPad gekauft, nur um jetzt festzustellen, das die App wohl am Ende ist. Dabei habe ich mir das iPad (günstig gebraucht) in erster Linie für diesen Zweck zugelegt. Da bin ich echt grad etwas verärgert jetzt…. Schade , wollte eigentlich mit Lemur richtig loslegen, aber nun habe ich da keinen richtigen Bock mehr drauf mich da einzuarbeiten, obwohl der Bericht toll geschrieben ist und voll Lust auf den Lemur macht. Alternativen gibt es ja nicht so wirklich, also bleibt zu hoffen, das die LemurApp vielleicht doch noch am Leben erhalten wird….

        • Profilbild
          Soundreverend  

          Also ich meine ja Du kannst die App wieder „zurückgeben“, das geht irgendwo im App Store, habe ich schon einmal gemacht bei einer teuren App mit der ich wirklich unzufrieden war und es war kein Problem. Geld wird zurück-überwiesen und gut ist…

        • Profilbild
          tonvibration  

          Rückgabe wäre eine Möglichkeit….oder…da Du das iPad und die App eh schon hast… Du sicherst Dir jetzt(!) alles Notwendige.
          Das Manual bietet einen guten Einstieg, auch zum Scripting. Zur Einrichtung gibt es auch noch jede Menge Videos und Tutorials auf YouTube. In dem neuen Forum habe ich auch ne Liste mit Links zu Modulen gemacht.

          Dass man als Neukunde da verärgert ist, ist klar. Als jemand der viel Zeit investiert hat, wie ich, ist es auch nicht besser… Aber Assi-Verhalten von Liine hin oder her, morgen ist es vielleicht weg. Auf Dauer. Da bin ich eher froh, dass ich es auf vielen Geräten habe.

Kommentar erstellen

Die AMAZONA.de-Kommentarfunktion ist Ihr Forum um sich persönlich zu den Inhalten der Artikel auszutauschen. Sich daraus ergebende Diskussionen sollten höflich und sachlich geführt werden. Haben Sie eigene Erfahrungen mit einem Produkt gemacht, stellen Sie diese bitte über die Funktion Leser-Story erstellen ein. Für persönliche Nachrichten verwenden Sie bitte die Nachrichtenfunktion im Profil.