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