MultimediaWindows

MIDI-Controller als Windows-Eingabegerät nutzen

MIDI-Geräte können nicht nur für Musik genutzt werden, auch als Programmstarter oder Makro-Board machen sie eine gute Figur.

Computer-Tastaturen lassen sich auf vielfältige Weise programmieren und mit Makros belegen. Zum Beispiel zum Starten von Programmen, für die Auswahl von Tools in der Bildbearbeitung oder spektakuläre Aktionen in Spielen. Das Blöde daran: Entweder ist Eure Tastatur dadurch riesig oder Ihr müsst ständig umschalten, per SHIFT, STRG, WIN, FN oder irre Kombinationen wie STRG+ALT+UMSCHALT+X. Viel besser: Ein separates Gerät – vor allem, wenn schon eines da ist ;)

MIDI-Controller = Eingabegerät

Kürzlich hatten wir einen ausführlichen Artikel zum Thema Musikproduktion für Einsteiger per MIDI. MIDI ist ein Protokoll, das in der Musikproduktion sowohl in der analogen als auch der digitalen Welt genutzt wird. Ein MIDI-Controller sendet im Grunde einfach nur Signale (hier) an den Rechner, die in der Regel von einer Digital Audio Workstation (DAW), also einer Produktionssoftware, interpretiert wird – sei es in Form einer gespielten Note oder eines gedrehten Reglers.

Insofern ist ein MIDI-Controller ein Eingabegerät wie Maus und Tastatur. Warum also nur für Musik nutzen? Zugegeben, das Nektar LX61+ ist ein tolles Gerät, aber gigantisch groß und nicht geeignet, um es ständig auf dem Schreibtisch herumstehen zu haben.

nektar midi cakewalk einstieg screesnhot
1: Pitch, Transponiern, Oktavwahl – die üblichen Buttons.
2: Knöpfe für DAW-Integration
3: Drum-Pads

Aber es gibt durchaus kleine Launchpads, die schlicht ein 8×8-Raster an frei belegbaren Pads (Tasten zum Draufhauhen, teils anschlagdynamisch) bieten. Das ist nicht nur hübsch, sondern auch recht günstig: Es gibt ja durchaus spezielle „Tastaturen“ für solche Zwecke, vor allem für Gamer gedacht. Zum Beispiel das Expertkeys EK-58 – 58 Tasten für 139 Euro! Der MIDI-Controller Novation Launchpad Mini bietet 64 Tasten für 59 Euro.

Bild: Novation/Focusrite Plc

Allerdings: Da MIDI-Controller nicht für solche Zwecke gedacht sind, sind sie natürlich größer und aufwändiger zu konfigurieren. Und beim EK-58 lässt sich zudem jede Taste individuell mit Texten und Symbolen versehen, einfach über kleine Zettelchen. Aber spätestens wenn bereits ein MIDI-Keyboard oder -Launchpad oder -Drumcomputer vorhanden ist, lohnt sich der Aufwand.

Autohotkey!

Mal wieder ist Autohotkey die Lösung, wie schon so oft in Artikeln bei uns. Hier müsst Ihr aber nicht von Grund auf skripten, sondern könnt auf das Open-Source-Projekt midi4ahk zurückgreifen. Dieses besteht aus einer DLL-Datei und einem Autohotkey-Skript, das die Verwendung der Funktionen innerhalb der DLL vereinfacht. Ihr müsst Euch aber mit beiden Dateien nicht unbedingt auseinandersetzen, sondern könnt einfach Nutzerskripte im selben Ordner ablegen. Das Projekt liefert dazu einige Beispielskripte, die sich einfach anpassen lassen.

Das Prinzip: Ihr legt eine Tastenzuordnung und eine Aktion fest – fertig.

Hier mal ein simples Skript, über das sich mit der tiefsten Taste auf dem LX61+ der Windows-Taschenrechner (calc) öffnen lässt. Es basiert auf dem mitgelieferten Beispielskript midi_in_lib_test.ahk, das eigentlich die ebenfalls mitgelieferten WAV-Dateien (Trommeln) abspielt. Diese Funktionen sind raus, es bleibt aber das „Drumherum“, das sich um den Ablauf des Programms kümmert.

#SingleInstance force
SendMode Input
SetWorkingDir %A_ScriptDir% 

OnExit, sub_exit
if (midi_in_Open(0))
    ExitApp
Menu TRAY, Icon, icon4.ico

;--------------------  Midi "hotkey" mappings  -----------------------
listenNote(36, "foobar")

return
;----------------------End of auto execute section--------------------

sub_exit:
    midi_in_Close()
ExitApp

;-------------------------Miscellaneous hotkeys-----------------------
Esc::ExitApp

;-------------------------Midi "hotkey" functions---------------------
foobar(note, vel)
{
    if (vel)
    {
    run, calc
    }
}

;-------------------------  Midi input library  ----------------------
#include midi_in_lib.ahk

Neu sind hier aber nur folgende Zeilen:

;Tastenzuordnung:
listenNote(36, "foobar")

;Funkion:
foobar(note, vel)
{
    if (vel)
    {
    run, calc
    }
}

Zunächst wird mit listenNote der MIDI-Note 36 der Name foobar zugeordnet. Anschließend läuft die Funktion foobar mit den beiden Parametern note (Taste) und vel (Anschlagsgeschwindigkeit) und führt auf Tastendruck mit run das Programm calc aus. Die if-Abfrage schaut einfach, ob eine Anschlagsgeschwindigkeit existiert (gleichbedeutend mit Note gespielt/Taste gedrückt). Ruft man die Funktion ohne if-Schleife auf, wird calc zweimal ausgeführt – vielleicht gibt es da noch eine andere Möglichkeit, aber wozu suchen? Diese funktioniert ;)

bild von nektar lx61+
Per MIDI-Note 36 (C) wird Calc.exe geöffnet – egal, ob Taste oder Drumpad.

Ihr könnt also ganz einfach erst die Tastenzuordnungen oben im Bereich Midi „hotkey“ mappings eintragen – dieser wird beim Start des Skript umgehend ausgeführt:

listenNote(36, "calc")
listenNote(37, "word")
listenNote(38, "irgendeinprogramm")
...

Und anschließend die Aufrufe unter Midi „hotkey“ functions eintragen:

irgendeinprogramm(note, vel)
{
    if (vel)
    {
    run, "C:\programme\mein-programm-xyz.exe"
    }
}

Und so weiter. Eine Übersicht der MIDI-Noten-Nummern findet Ihr hier.

Natürlich muss es nicht dabei bleiben. midi4ahk hat noch mehr zu bieten und innerhalb der if-Abfrage könnt Ihr sowieso aus dem Vollen schöpfen und mit Autohotkey zum Beispiel per Knopfdruck Textbausteine einfügen, Fenster transparent machen oder im Vordergrund halten oder in den Tray minimieren oder auf 720p skalieren oder auch Makros für Spiele, Gimp etc. triggern. Und auch bei den MIDI-Geräten muss es nicht bei den naheliegenden Launchpads bleiben – denkt zum Beispiel mal an Fußcontroller! Ganz neue Möglichkeiten eröffnen sich …

Hinweis: Bei den Amazon-Links im Artikel handelt es sich um Partnerlinks, sprich für alles, was Ihr kauft, bekommen wir Provision – weniger Geld für Amazon, mehr Geld für uns, kein Unterschied für Euch. Und damit Ihr wisst, dass wir es ernst meinen: Wenn Ihr mittels Autohotkey-Tastenzuordnungen und diesem Gerät (oder einem ählichen …) einen Kommentar mit mindestens 500 Zeichen schreibt und das auf Video festhaltet, gibt’s eine Tutonaut-Kaffeetasse ;)

Anzeige Wir empfehlen NordVPN.

Mirco Lang

Freier Journalist, Exil-Sauerländer, (ziemlich alter) Skateboarder, Dipl.-Inf.-Wirt, Einzelhandelskaufmann, Open-Source-Nerd, Checkmk-Handbuchschreiber. Ex-Saturn'ler, Ex-Data-Becker'ler, Ex-BSI'ler. Computer-Erstkontakt: ca. 1982 - der C64 des großen Bruders eines Freunds. Wenn Ihr hier mehr über Open Source, Linux und Bastelkram lesen und Tutonaut unterstützen möchtet: Über Kaffeesponsoring via Paypal.freue ich mich immer. Schon mal im Voraus: Danke! Nicht verpassen: cli.help

Verwandte Beiträge

8 Kommentare

  1. Habe grade nochmal alles gecheckt, Windows 10 64 Bit Betriebssystem, 64 Bit Notepad ++ Version, alle midi4ahk Dateine gelöscht und erneut runtergeladen und entpackt. Selbe Fehlermeldung beim ausführen von midi_in_lib_test als auch MidiInDllTest.
    Beim ausführen von midi_in_lib kommen ganze 20 Fehlermeldungen auf verschiedenen Zeilen (referenz zum Code vermute ich).

    1. Dann fällt mir leider auch nichts mehr ein, zumal ich den Fehler hier partout nicht rekonstruieren kann, nicht mit Leerzeichen im Pfad, nicht mit schreibgeschütztem Verzeichnis, nicht mit ANSI-Kodierung oder Windows-Linebreaks … Process Monitor zeigt auch keine obskuren Abhängigkeiten oder dergleichen an. Ebenso Dependencies.

      1. Vielen Dank schonmal für die Hilfe!
        Ich habe nach ähnlichen Projekten gesucht, jedoch bin ich leider kein Stück weiter.
        https://github.com/genmce/AHK_Midi2Keypress das ist das einzige Programm welches mein Midi erkennt (hat einen kleinen Midi-monitor). Nur leider check ich nicht wie/wo ich Textbausteine auf bestimmte Midinoten „mappen“ kann, oder eigene Midirules defienieren kann.

        1. Das ist erfreulich simpel: Über den Monitor siehst Du, welche MIDI-Taste gedrückt wurde – als „data1“.

          Damit kannst Du dann sowas machen:

          }
          if (data1 = 60)
          run, calc.exe
          {
          

          Die vorgegebenen Beispiele findest Du ab Zeile 74. Hier nochmal im Bild:

          MIDI-Key öffnet calc.exe

          Nachtrag: Über data2 könntest Du zum Beispiel die die Werte 0 bis 127 von Schiebe- und Drehreglern verwenden.

  2. Hallo,
    Ich habe eine Frage und hoffe dass es angebracht ist sie hier zu stellen.
    Vorab muss ich sagen dass ich beim Programmieren (noch) nicht so durchsteige. Mein Ziel ist es Textbausteine in Microsoft Word 2019 über einen Midi Controller zu triggern.
    Ich habe die Einführung von ahk bevolgt und kann auch schon erfolgreich „u.U.“ durch „unter Umständen“ ersetzen lassen.
    Diese Anleitung habe ich genaustens befolgt, jedoch meldet mir das Programm wenn ich „midi_in_lib_test“ ausführen will: „Cannot load library midi_in.dll“.
    Muss ich den Suchpfad in „midi_in_lib“ ändern oder ist die .dll datei eventuell defekt?

    Danke im Vorraus und viele Grüße

    1. Nein, ändern solltest Du da nichts müssen – ich vermute mal, dass die DLL-Datei und Dein Skript nicht im selben Verzeichnis liegen. Das Skript „midi_in_lib_test.ahk“ lädt die Datei „midi_in_lib.ahk“ und die wiederum die „midi_in.dll“, und alle gehe davon aus, im selben Verzeichnis zu liegen.

      1. Selbes Verzeichnis bedeutet selber Ordner?
        Weil das sind sie, ich habe den Zip-Ordner vom eingebetteten Gitup-Link entpackt und direkt die obenstehenden Änderungen in „midi_in_lib_test“ vorgenommen.

        1. Ja, Ordner=Verzeichnis.
          Versuch mal, ob die originale midi_in_lib_test.ahk funktioniert; oder die MidiInDllTest.ahk.
          Falls nein: Hast Du vielleicht ein 32-Bit-Windows? Nachzulesen unter Systemsteuerung/System. Als 64-Bit-DLL würde sie dann nicht laufen.

          Gerade nochmal heruntergeladen und es funktioniert problemlos unter 64-Bit-Windows-10.

Schreibe einen Kommentar zu Antoine Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.

Schaltfläche "Zurück zum Anfang"
Tutonaut.de