Forum: Mikrocontroller und Digitale Elektronik Modular Midi DAW Controller with Motor Faders


von Jonathan P. (jojodayolo)


Lesenswert?

Hallo Forum,

ich bin mittlerweile ein langer Freund diese Forums habe aber noch nie 
selber einen Beitrag geschrieben, was sich hiermit jetzt ändert.

Im Ramen dessen möchte ich auch einfach mal danke sagen an alle hier 
Aktiven Nutzer die sich immer wieder die Zeit nehmen sich mit einem 
Thema auseinander zu setzen zu helfen und auch die ruhe haben neu 
Anfängern ein Thema zu erklären. Danke dafür.


Ich möchte in diesem Beitrag gerne mein Projekt vorstellen und würde 
mich freuen eure Meinung dazu zu hören und Verbesserungen zu finden.

Mir ist bewusst das ich damit folgenden Beitrag teilweise wieder mit 
aufgreife, denke aber das dieses Projekt verschieden genug für einen 
eigenen Beitrag ist.

Beitrag "Facharbeit: Eigenbau eines MidiControllers"


Ich plane und arbeite nun seit einem Gutem Jahr an der Idee von einem 
eigenen Midi DAW Controller, in meinem fall für Logic Pro X.
Im rahmen dessen habe ich bereits viel gelernt was das Thema 
Mikrocontroller angeht, insbesondere die Arduino reihe da sie für das 
einfache Testen und gucken was möglich ist nunmal gut geeignet und 
günstig ist.


Nun zu den Details meines Projekts:

Wie oben schon gesagt soll es ein Midi Controller zum Steuern von DAWs 
werden.
Insgesamt soll er ähnlich wie ein Mischpult werden mit Channelstrips.

Jeder Channelstrip soll in etwa folgende dinge haben(offen für 
Änderungen):
-1xMotor Fader
-3xPoti(eventuell auch encoder)
-1xTaster mit LED
-1xLED(für Clipping o.ä.)



Dabei ist meine Idee für jeden Channelstrip einen microcontroller(z.B. 
Arduino Nano) zu nutzen und dann alle über einen Master Controller an 
den PC zu verbinden.
Somit wäre das ganze system bis zu einem gewissem maß modular, natürlich 
begrenz durch Latenzen...

Was die Verbindung angeht habe ich bereits überlegt und getestet das mit 
I2C zu realisieren bin aber momentan dabei SPI für meine zwecke genauer 
zu verstehen da SPI eine wesentlich höhere Übertragungsrate erreichen 
kann.

Der Fader:
Den Fader habe ich an und für sich am laufen.
Zm testen habe ich momentan folgenden Fader:
https://www.alps.com/prod/info/E/HTML/Potentiometer/SlidePotentiometers/RSN1M/RSA0N11M9A0J.html

Das auslesen des Faders habe ich problemlos hinbekommen.
Das steuern des Motors und das damit verbundene kontrollieren wo der 
Fader hin soll war dann schon etwas schwerer.
Da dieser Fader einen DC Motor hat habe ich zum L298N gegriffen damit 
ich den Motor vernünftig steuern kann.
Nach einigen tests hatte ich das auch am laufen. Für die Steuerung nutze 
ich einen Wertebereich von 0-255 auch wenn Midi nur 0-127 kann. ich 
erhoffe mir davon eine genauere und kotrollierte Ansteuerung der 
Position.

Den Motor in die richtige Richtung zu bewegen ist ja einfach aber ihn 
dann an einer bestimmten stelle zum stoppen zu bringen hat mich auch 
wieder zeit gekostet und muss auch immer noch verbessert werden.

Anmerkung:Den L298N kann man über PWM steuern.

Zu beginn habe ich einfach die Distanz zum Zielpunkt berechnet und dann 
einfach 4 Geschwindigkeitsbereiche bestimmt, bei welchen dann einfach 
der motor, um so näher er ist langsamer gestellt wird. Das war 
allerdings sehr ruckelig.
Meine Aktuelle Lösung ist die Geschwindigkeit mit folgender Funktion zu 
bestimmen:

-e^((-x)/10)*200+255

Wobei x die Distanz zum Zielpunkt ist.
Allerdings werde ich dadran auch noch weiter arbeiten da mit eine 
Toleranz von +-5 bei einem Wertebereich von 0-255 eigentlich noch zu 
grob ist.

Den Touchsense habe ich übrigens auch am laufen womit sich dann 
eindeutig sagen lässt ob eine Änderung am fader vom user oder von der 
daw vorgenommen wird oder werden soll.

Aber das muss erstmal waren.


Poti und Taster abfragen sowie LEDs ansteuern brauche ich glaube ich 
nicht weiter zu erklären.

Nun zu meiner Aktuellen Baustelle: Verbindung der Mikrocontroller und 
Kommunikations weise:

Wie schon gesagt habe ich bereits mit I2C getestet. Was an sich auch 
funktioniert. Da ich aber gerne Latenzmäßig etwas mehr Luft nach oben 
haben würde versuche ich das ganze mit SPI zu machen.

Der jetzige Ansatz ist, das alle Slaves/Channelstrips vom Master im loop 
abgefragt werden.
Dabei Kriegt der Master alle Informationen für jeden Slave von der DAW 
und Speicher diese.
Dann schickt er jedem Slave das Komplette Paket zu(8-10 Byte)
Was die Taster-LED bzw. Taster State angeht hat der der Controller die 
Priorität über der DAW.
Beim Fader kann durch den Touchsense geprüft werden ob gerade ein user 
input statt findet, welcher natürlich Priorität hat, oder ob der wert 
von der DAW auf den Fader geschrieben wird.
Dann antwortet der Slave mit einem Gesamten Datenpaket seinen Status 
inklusive eines bool Werts welcher angibt ob der wert auf den fader 
geschrieben wurde oder eine Änderung vom user vorgenommen wurde, welche 
dann in die DAW geschrieben wird.


Da ich mich mit SPI noch etwas schwer tue ist der letzte block bis jetzt 
nur Theorie und es würde mich sehr freuen wenn ich besonders dazu ein 
paar Meinungen und/oder Verbesserungenvorschläge bekomme.

Grundsätzlich freue ich mich aber über jede Meinung und jeden 
Verbesserungsvorschlag

Vielen dank für euer Interesse

Jonathan

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Jonathan P. schrieb:
> Für die Steuerung nutze ich einen Wertebereich von 0-255 auch wenn Midi
> nur 0-127 kann. ich erhoffe mir davon eine genauere und kotrollierte
> Ansteuerung der Position.

Midi kennt neben 7 Bit auch eine 14-Bit-Betriebsart (NRPN), das ist 
insbesondere dann interessant, wenn man so ein Midi-Gerät zur Steuerung 
von Nicht-Midi-Anwendungen nutzen möchte.

Die Photobearbeitungssoftware Lightroom lässt sich über eine 
(open-source-) Anwendung namens Midi2LR steuern, und die profitiert von 
feiner aufgelösten Eingaben.

https://github.com/rsjaffe/MIDI2LR/wiki/MIDI-Controller-Setup#controllers-that-send-relative-values-or-have-unusual-ranges

Hast Du eine günstige Bezugsquelle für Motorfader?

von Jonathan P. (jojodayolo)


Lesenswert?

ja ok das wusste ich noch nicht wobei 14-bit dann zwar mit einem Arduino 
machbar sind aber halt blöd ist weil man das hoch mappen muss da die 
ADCs ja nur 10-Bit sind.

Planst du sowas für Lightroom zu bauen?
Weil ich arbeite zwar auch recht viel mit Lightroom aber habe bis jetzt 
keine Notwendigkeit oder nutzen für solch einen Controller gesehen. 
Vielleicht bedingt dadurch das ich Primär unterwegs damit arbeite.


Bei Logic oder Cubase wüsste ich leider nicht das die 14 Bit können.



Nein ich habe leider keine günstige Bezugsquelle für die Motorfader. 
Unter 20€/stk komme ich da auch nicht weg.
Aber das ist unter anderem der Grund dafür das ich das ganze Modular 
erweiterbar bauen will. Dann kann ich, wenn ich mal wieder geld habe so 
2 Channelstrips dazu packen und aufhören wenn es mir reicht.


Einbautechnisch will ich das ganze entweder in nen 19" bauen oder 
einfach in einen alten Schreibtisch das ganze einlassen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.