Eingabekonsole für Video/Photo Bearbeitung

Ich hab mich jetzt längere Zeit schon mit Fotographie und Video/Filmerei beschäftigt.
Während des Schneidens der Videos habe ich mich gefragt, ob es einen Weg gibt, den Workflow etwas zu verbessern.

Nur mit Maus und Tastatur war es sehr langsam und kompliziert, weil ich das ja nicht täglich mache und somit das Merken der Tastaturkürzel nicht so einfach war.
Nach etwas Recherche hab ich das ShuttleProV2 gefunden, das wirklich beim Schneiden sehr große Verbesserungen brachte.

ShuttleProV2

Tieferes Beschäftigen mit der Materie “Filmemachen” hat mich dann auf das Thema “ColorCorrection” gebracht.
Natürlich kann man auch das mit Maus und Keyboard machen, aber ich bin eine haptische Person, und Eingabegeräte mit vielen Knöpfen, Drehreglern und natürlich Displays und Leds sind einfach mein Ding :).
Ich wusste allerdings, dass für meine Bedürfnisse ein echtes ColorCorrection Panel ein viel zu überteuertes Spielzeug sein würde und habe jedes Mal vom Kauf eines solchen abgesehen.

Bis ich auf Ebay auf ein gebrauchtes Tangent CP200-BK gestoßen bin, zu einem sehr, sehr, sehr guten Preis. Da konnte ich einfach nicht widerstehen:

CP200-BK

Da es ein älteres Modell mit Ethernet statt USB Schnittstelle ist, gibt es unter Linux leider keine Plug&Play Unterstützung dafür. Ich habe allerdings schon einen funktionierenden Programmcode-Prototypen, der das Ganze dann mit KDEnlive nutzbar mach.
Das ist aber etwas für ein zukünftiges Projekt und Blogpost ;).
Für das CP200-BK gibt es einige Add-On Panels, die mehr Buttons und Encoder zur Verfügung stellen – ähnlich der aktuellen Tangent Element Serie (Tangent Element). Der Preis für ein aktuelles Elements Multifunktionspanel ist zwar für mich zu hoch, aber ich mochte das Grundkonzept davon.
Beim Simulatorprojekt konnte ich über die Jahre ja einiges zum Thema Input-Devices lernen. Deshalb hab’ ich mir gedacht, es muss doch möglich sein, etwas ähnliches wie das Elements Mf zu bauen, nur günstiger – und ich hatte Recht :).

Ich fand heraus, dass ein Arduino Pro Micro im OS als Joystick erscheinen kann. Diese Inputs kann man wiederum mit dem Opensource Programm Antimicro in Tastaturkommandos umwandeln (oder sogar Makros und Mausbewegungen). Nach kurzer Entwicklungsphase ist jetzt der Prototyp der Elektronik fertig:

Prototype

Er besteht aus:

  • 1 Arduino Pro Micro
  • 4 128×32 pixel SSD1306 OLED Displays
  • 1 128×64 pixel SSD1306 OLED Display
  • 4 MCP23017 i2c I/O Expander
  • 1 TCA9548A 1-to-8 I2C Multiplexer Breakout

und der Software:

  • eigener Arduino Code
  • modifizierter Antimicro Sourcecode

Um die wenigen I/O-Pins vom Arduino zu umgehen, hängen alle Inputs und Displays am i2c-Bus.

4 mcp23017 liefern 64 Inputs, die folgendermaßen genutzt werden:
* 16: 8 Drehencoder mit je 2 Pins für Links/Rechts Drehung
* 16: 16 Taster
* 8: ein Taster in jedem Drehencoder (meistens genutzt, um ein Änderung zu resetten)
* 12: 10er Block mit den Ziffern 0-9 bzw. DEL und ENTER
* 1: “Set” Knopf, um die unterschiedlichen Konfigurationssets (“Banks” in Tangent-Speak) in Antimicro durchzuschalten.
Insgesamt werden 53 Inputs genutzt, somit bleiben noch ein paar übrig.

Wie bei den Tangent Konsolen gibt es auch einen “Shift” Knopf, der jedem Input eine zweite Funktion zuweist, wenn er gedrückt ist.
Dieser Taster hängt direkt an einem digitalen Eingang des Arduino, da er nur den internen Tasterstatus ändert und keine Kommandos an den PC schickt.

Bei 8 Tastern und 8 Encoder stehen immer 24 Funktionen zur Verfügung.
Mit dem Shift-Taster werden zusätzliche 24 umgeschaltet, somit sind das 48 gesamt.
Allerdings ist das erst das erste Set, Antimicro stellt 8 frei konfigurierbare Sets zur Verfügung, somit sind es 384 Funktionen pro Konfiguration.
Das sollte für jede Software, die ich steuern will, ausreichen.

Da es recht schwer ist, sich diese Funktionen alle auswendig zu merken, zeigen 4 OLED Displays die aktuell Konfiguration jedes Encoders und Tasters an.
Änderungen in der Antimicro Konfiguration oder Umschalten auf ein anderes Set werden in Realtime an den Arduino übertragen.
Das 128×64 Pixel Display zeigt den Status des Arduino an, ob er mit Antimicro verbunden ist, welche Konfiguration gerade aktiv ist (Antimicro kann das beim Applikationswechsel erkennen) und welche Nummer und Label das aktuelle Set hat.

Als ich das CP200 in Betrieb genommen habe, hat mich eine Funktion wirklich überrascht – solange keine Verbindung vom Gerät mit der Software besteht, bleibt das Panel in einem Testmodus, in dem man die Knöpfe und Drehregler testen kann.
Mich hat das Feature so gefallen, dass ich mit entschlossen habe, es in meinem Arduinocode einzubauen.

So sieht das Statusdisplay im Testmodus aus.

Statusdisplay Testmode

Und so die Displays für die Knöpfe und Encoder aus, solange der Testmodus aktiv ist.

Inputconfig Testmode

Sobald sich Antimicro mit dem Arduino verbunden hat, ändern sich die Anzeigen.
Im Statusdisplay zeigt die gelbe Zeile die aktuelle Konfiguration in Antimicro an, “Bank” zeigt die aktuelle Setnummer und das aktuelle Setlabel an.

Status Display Connected

Die Konfigurationsdisplays zeigen dann natürlich die entsprechende Funktion des jeweiligen Knopfes/Encoders an (oben 4 Encoder, unten 8 Taster).

Encoder/Button Configmode

Das Wiederlernen von C++ bzw. das Neulernen von Qt um Antimicro für meine Zwecke anzupassen, war eine tolle Herausforderung. Ich möchte ja immer wieder was neues lernen und ich hatte Riesenspaß dabei.
Es sind noch kleine Anpassung am Antimicro Code notwendig (automatisches Reagieren beim Aus-/Anstecken des Arduino), ansonsten ist das System voll funktionsfähig.

Im nächsten Post geht’s dann um meine Designideen für das Gehäuse/Hardware.

 

 

 

 

 

 

 

Leave a Comment

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*