Vorstellung Selbstbau Projekt MIDI Footcontroller

Holzauge
Holzauge
Registrierter Benutzer
Zuletzt hier
16.04.24
Registriert
22.02.09
Beiträge
215
Kekse
4.432
Ort
Lüneburg
Hallo,
hier mal eine kleine Projektvorstellung über den Selbstbau eines kleinen 3-Kanal Midi Controller.
Dieses war erst nicht als Projektvorstellung geplant, deshalb auch nur wenige Bilder in der Fotostrecke.

Die Idee…
Ein Freund suchte einen nicht zu großen MIDI-Foot-Controller um an seinem Vocalisten zwei oder
drei Programmbänke umzuschalten.
Das Problem war nur, das er ein Pedal suchte, um eine Programm-Bank nur kurzzeitig umzuschalten um
z.B am ende des Refrain eine Hallfahne oder ein Echo nur kurzzeitig einzuschalten und dann zur
Ursprünglichen Programmbank zurückzuschalten.
Das kann mann sicherlich mit einem Expression Pedal regeln, aber hier haben wir einfach mal eine andere Lösung gesucht.

Erste Schritte…
Aufgebaut habe ich alles auf einem Arduino Uno, der hierfür scheinbar ausreichend war (näheres Später).
Die Arduinos lassen sich für MIDI Anwendung sehr leicht Programmieren, da dort schon eine Serielle Schnittstelle vorhanden ist,
die man sehr direkt mit MIDI Befehlen füttern kann.
Das Einzige Problem beim Programmieren ist hier, wenn man am Seriellen Ausgang (TX1) eine MIDI Buchse aktiviert, hat man
leider keine Möglichkeit für eine Fehlersuche den Seriellen Monitor zur Fehlersuche im Programm gleichzeitig zu Aktivieren.

Das Programmieren…
Den Code Poste ich hier nicht, da ich im Programmieren extrem schlecht bin, und mich jeder mit nur halbwegs moderaten
Programmierkenntnissen an den Pranger stellen würde (Für Eingeweihte: Mein Programm strotzt nur so von If Befehlen…).
Für jeden, der Lust hat hier etwas selber auszuprobieren: Man braucht hier nicht wirklich viel an Material.
Ein Arduino UNO, ein Breadboard, ein paar Buchsen, Schalter und Widerstände, evtl. noch ein kleines Display, da ist man
mit 25-30 Euro dabei.
Für Einsteiger kann ich sehr empfehlen, sich hier einmal durch zu klicken:

Hier erklärt der Autor Schritt für Schritt, wie man sich einen MIDI Controller selber bauen kann.
Etwas Elektronik und Programmierkenntnisse sollte man bei aufwändigeren Projekten allerdings schon haben, da ich mich erst
durch einige Seiten klicken musste, um hier brauchbare librarys zu finden, da ich das Projekt so umsetzen wollte, das das Gerät
mit Drehencodern und nicht mit Tasten einzustellen ist.
Die Werte für die verschiedenen Programmbänke werden hier im Internen EEPROM des Arduino abgelegt, was hier relativ einfach ist,
da ich nur die Werte von 0-127 abspeichern muss, und jede Speicheradresse im EEPROM mit 8 Bit hier allemal ausreicht.
Einen kleinen Hinweis: Beim abspeichern (überschreiben) von Werten im EEPROM bitte vorher den Programmcode seeehr genau prüfen.
Das EEPROM kann man etwa 100 000 mal überschreiben.
Das hört sich zwar nach viel an, wenn das allerdings bei jedem Programmzyklus passiert und nicht nur einmalig z.B. bei einem Tastendruck,
ist das EEPROM eventuell schon nach ein Paar Sekunden hin.

Die Praktische Umsetzung…
Das größte Problem stellte sich mit der Beschaffung des Gehäuses heraus.
Hier habe ich leider nur ein gescheites Gefunden: Hammond 1590BX2.
Das Gehäuse konnte ich dann aus Platzgründen leider nicht mehr mit einem kleinem LCD Display bestücken, sondern musste aus Platzgründen
auf ein kleines OLED Display zurückgreifen.
Vorteile: Viel kleiner, und ein geringerer Stromverbrauch, da hier keine Hintergrundbeleuchtung benötigt wird.
Nachteile: Trotz des doch übersichtlichen Programms ist der Arduino Programmspeicher auf Grund des Displays zu 95%
Ausgereizt, und das OLED Display verlangsamt das Verstellen der Programmiereinstellungen am Pedal extrem.
Aufgebaut habe ich alles Erst einmal auf dem Schreibtisch mit einer losen Verdrahtung auf dem Breadboard, bevor ich das Gehäuse zerbohre.
Hier hatten wir dann noch die Idee, zwei Expression Pedale mit einzubinden, die erst eimal mit zwei Potis
an den Analog-Eingängen des UNOs simuliert wurden.

Hier erst einmal der Schreibtisch -Testaufbau, um das Programm zum Laufen zu bekommen.
DSC03102.JPG


Der Aufbau…
Da mir der Arduino zu groß ist, habe ich mir eine kleine Platine gebaut, um den Atmel Prozessor als UNO Clon zu benutzen.
(Sieht nicht allzu doll aus, aber mehr gab die Küchentisch Werkstatt nicht her…)

DSC03101.JPGDSC03106.JPG Hier die nackte Platine

Zum Programmieren braucht man hier nur noch einen USB-Seriell Adapter (FTDI), da der Prozessor selber keine USB Schnittstelle hat.

Das Gehäuse…
Als Bohrschablone habe ich mir hier mit dem Platinenprogramm einen transparenten Aufkleber gedruckt, was das Körnen und Bohren sehr erleichtert.

DSC03100.JPG Das Rohgehäuse

Nachdem alles Gebohrt und Der Displayauschnitt gesägt ist, 1x grundiert und mit der Sprühdose silber lackiert.
Ich wollte hier zwar eine knallige Farbe, hatte aber nur noch eine halbe Dose Felgenlack gefunden.
DSC03105.JPG
Mit einer Decal-Folie noch die Beschriftung hergestellt, aufgeklebt und zu guter letzt mit Klarlack versiegelt.
Hier hatte ich ziemlich gepfuscht, wollte aber nicht alles wieder abschleifen, neu bekleben und wieder lackieren.
Die Kontrolle LED´s habe ich einfach mit Zweikomponenten-Kleber eingeklebt und Plangeschliffen.

Die komplette Platine.
Hier sieht man schön was so ein Arduino eigentlich ausmacht: Prozessor, ein Quartz, drei Kondensatoren und einen Widerstand
(Ein Paar Teile sind noch auf der Rückseite als SMD Bauteile direkt aufgelötet).
Mehr braucht es nicht. Die Anderen Teile sind nur noch die Stromversorgung, die Vorwiderstände für die LED´s und etwas Beschaltung,
um den Seriellen Programmieradapter zum Umprogrammieren aufstecken zu können.
DSC03119.JPGDie aufgebaute Platine. Aus Platzgründen habe ich auf Steckkontakte verzichtet und die Kabel mit Kleber gesichert.


Jetzt erst einmal alles in das Gehäuse einsetzen…
DSC03117.JPG


Dann noch alles verlöten, und den Deckel drauf!
DSC03121.JPG

Hier noch einmal die Funktionen:
Den Mode Encoder ein Paar Sekunden drücken, dann kommt man ins Setup -Menü.
Hier stellt man für jeden Taster zwei MIDI Programmbänke ein, die Umgeschaltet werden sollen.
Als nächsten Schritt wählt man an, ob der Taster zwischen den beiden Programmbänken permanent umschaltet,
oder der zweite Befehl nur bei gedrücktem halten des Tasters gesendet wird, und beim Loslassen wieder der Erste Befehl gesendet wird.
Beim weiterdrehen des Mode Encoders kann man die MIDI CC´s für die beiden Expression-Pedale einstellen.
Als letzten Bedienschritt noch der MIDI Sendekanal 1-16.
Verändert werden die Werte mit dem zweiten Encoder, die Werte werden hier beim drücken gespeichert.
Die Werte lassen sich hier leider durch die Verwendung des OLED Displays nur sehr langsam verstellen (etwa 3 Schritte pro Sekunde).
Wenn hier ein LCD Display verwendet wird geht das deutlich schneller. Das kann ich im Moment verschmerzen, denn die Einstellungen
werden hier nicht alle paar Minuten geändert. Für Infos von versierten Programmierern um hier Abhilfe zu schaffen habe ich aber immer
ein offenes Ohr.

Die Menüpunkte:
DSC03138.JPG Der MIDI Programmkanal beim ersten drücken des Tasters (oder loslassen)
DSC03137.JPG Der MIDI Programmkanal beim zweiten drücken des Tasters (oder gedrückt halten)
DSC03139.JPG Anwahl ob der Taster als um-Taster(1) oder um-Schalter (0)funktioniert
DSC03140.JPGDSC03141.JPG Die beiden CC Kanäle für die beiden Expression-Pedale
DSC03142.JPG Der MIDI Sendekanal

Hier noch das Fertiggerät:

DSC03132.JPG

DSC03135.JPG


So, fertig!
Für alle Selbstbauer: Das Projekt war nicht mal eben in ein Paar Tagen fertig! Das hat schon mehrere Wochen gedauert.
Also nicht bei solchen Bastelarbeiten entmutigen lassen.
Das Lackieren muss ich noch etwas perfektionieren, da habe ich leider nicht so viel Geduld.
Und falls jemand eine Bezugsadresse hat um endlich einmal Professionell aussehende Display-Abdeckungen zu beschaffen,
bitte gerne in die Kommentare schreiben.

Andreas
 
Eigenschaft
 

Anhänge

  • DSC03136.JPG
    DSC03136.JPG
    96,8 KB · Aufrufe: 325
Grund: Schreibfehler korrigiert
Zuletzt bearbeitet:
  • Gefällt mir
  • Wow
Reaktionen: 17 Benutzer
Gefällt mir dein Projekt. Immer schön wenn jemand ein Problem hat und selber eine Llösung erarbeitet.

Würde sich das Pedal auch längere Zeit mit Akkus betreiben lassen? Der Arduino und das Display sollten ja keinen so hohen Verbrauch haben oder?
 
Hallo,
deshalb auch der Gedanke ein OLED Display zu benutzen.
Ich habe grade noch Platz, um in das Gehäuse einen Halter für einen 9V Block
einzubauen, werde aber vorher mal schauen, wie lange die Batterie dann hält.
Ein Arduino braucht etwa 50mA, da ich einen Klon gebaut habe ohne USB Schnittstelle
vielleicht etwas weniger.
Mit Kontroll LED und OLED schätze ich also etwa 70mA, d.h. der 9V Block würde etwa
6-7 Stunden halten...

Grüße
Andreas
 
Vielleicht wäre das hier eine Idee https://hhtronik.com/product/pgcpsu-duo-kit/ im Grunde ein Akku der mit kleiner Schaltung kommt. An diese kannst du per USB Versorgen und auch laden. Das ganze liefert dann 5v. Gibt es bestimmt auch von anderen Hersteller. So wärst du flexibel und sparst dir die Folgekosten für Batterien.
 
  • Gefällt mir
Reaktionen: 1 Benutzer
Vielleicht kann man vom Vokalisten etwas Versorgungsspannung abzwacken....
 
Ein Y-Kabel sollte hier kein Problem sein.
Das ist aber auf einem Pedalboard eh kein großes Ding...

L.G.
 
Klasse! Sehr schöne Lösung. Mir gefällt auch die Optik. So etwas ähnliches suche ich auch. Top!
 
Nachteile: Trotz des doch übersichtlichen Programms ist der Arduino Programmspeicher auf Grund des Displays zu 95%
Ausgereizt, und das OLED Display verlangsamt das Verstellen der Programmiereinstellungen am Pedal extrem.
Das war der erste Gedanke, als ich die Bilder gesehen habe. Die grafikfähigen Displays brauchen allein für den Zeichensatz schon eine Menge an Speicher. Und der ATmega 328 hat nur 32 kB.
Ich habe für derartige Dieplays in der Regel nur Text Displays, z.B. das hier:
https://www.reichelt.de/lcd-modul-2x16-h-5-6mm-ge-gn-m-bel--lcd-162c-led-p31653.html

Ich habe noch kleinere Typen verwendet (eines mit 2x8 Zeichen von MIDAS), aber leider sind die gerade nicht lieferbar.

Übrigens, wenn man einen Arduino Leonardo verwendet:
https://www.reichelt.de/arduino-leonardo-atmega32u4-usb-arduino-leonardo-p125561.html
oder die kleinere Bauform Arduino Micro
https://www.reichelt.de/arduino-micro-atmega32u4-microusb-arduino-micro-p130166.html
dann kann man damit sowohl eine serielle Schnittstelle (man braucht ja nur 2x220Ohm je an TXD und +5V zur 5-Pol Midi Buchse) auch zusätzlich ein HID Device (Tastatur/Maus oder MIDI Gerät) über USB realisieren.

Ein Tastaturprojekt habe ich hier schon vorgestellt.

Ein USB-MIDI - DIN MIDI Projekt ist derzeit in Planung (soll ein Start Stop Fernbedienteil für die DAW werden).
 
  • Gefällt mir
Reaktionen: 1 Benutzer
Hallo chris_kah,
das DOT-Matrix Display war in der Tat meine erste Wahl (gibt es bei AZ delivery allerdings deutlich günstiger;)).
Damit läuft das Einstellen der Presets im Programm Mode auch absolut knackig schnell. (trotz I2C Bus)
Nachdem ich das Gehäuse das erst mal auf dem Tisch hatte, war mir klar, das dat gar nicht passt. Deshalb der
switch zum OLED, trotz der Verzögerungen im Einstellmodus, und dem ausräumen der library bis auf die Schriftarten,
die ich benötigte.
War aber auch der erste Selbstbau mit einem OLED, da wollte ich einfach mal testen, wie die so funktionieren.
Stromverbrauch ist hier glaube ich zu vernachlässigen, da ich das Gerät für einen Freund gebaut hatte,
und dieses nur mit Netzteil betreiben wird.

Gruß
Andreas
 
Könnte man nicht einen günstigen externen Speicher einfach auflöten in welchem sich die Daten für das Display befinden? Dann würden die am Arduino keinen Speicher belegen und bei Bedarf werden die benötigten Informationen geladen und direkt an das Display geleitet.
 
*Überflüssiges Vollzitat des direkt vorangegangenen Beitrages entfernt*

Ist am Arduino(AT328) wohl nur schwer möglich, zumal ich alle Anschlüsse komplett ausgereizt habe und die Serielle Kommunikation
schon mit dem Display belegt ist.
Andere Lösungen erschweren dann wieder die Encoder Abfrage, welche auch ziemlich Zeitkritisch ist.
Ich bin nur noch nicht dahintergekommen, ob der verlangsamte Programmiermodus wirklich nur am vollen Speicher liegt:unsure:.
Ich muss evtl mal schauen wie man in der library noch diverse Schriftarten löschen kann, evtl. läuft dann alles auch schon schneller.
 
Zuletzt bearbeitet von einem Moderator:
Ich bin nur noch nicht dahintergekommen, ob der verlangsamte Programmiermodus wirklich nur am vollen Speicher liegt:unsure:.
Wenn du deinen Code veröffentlichen würdest, dann könnten andere mit Erfahrung und ich auch einmal drüber schauen ob etwas direkt auffällt wo man was verbessern könnte. Sehe es auch als Anregung dein Projekt einmal mit Zeichnungen, Bauteilen und Code bei z.B Github zu veröffentlichen, dann können andere darauf aufbauen und geben dir meist auch sinnvolles Feedback.
 
  • Gefällt mir
Reaktionen: 1 Benutzer
Die Lösung an sich ist klasse. Wie Du siehst, sind wir so begeistert, dass sich schon Viele hier Gedanken um Erweiterungen und Verbesserungen machen.
Einen esp32 kann man auch auf der Arduino-Plattform programmieren. Der Code ist in Teilen portierbar. Midi funktioniert auch.

Cheers,

FunkyDuke
 
Für die Display-Scheiben habe ich schon UV-Harz zur Schmuckherstellung benutzt.

Zuerst wird eine passende Aussparung in der Frontplatte hergestellt. Danach reibt man eine Plexiglasplatte mit Kerzenwachs als Trennmittel ein und poliert die gewachste Oberfläche. Diese Scheibe spannt man dann bündig von der Gehäusevorderseite auf die Aussparung und gießt die Aussparung von hinten aus. Das Harz härtet man mit einer UV-Taschenlampe aus. Die Plexiglasplatte kann man vorsichtig von der Frontplatte abdrehen. Das ergibt eine passgenaue Frontscheibe.

Das Display wird auf eine weitere dünne Plexiglasscheibe geschraubt. Diese kann dann mit Heiß-Kleber oder auch mit dem UV-Harz von hinten an die Gehäusefrontplatte geklebt werden. Das Ergebnis ist eine passgenaue Scheibe und eine unsichtbare Displaybefestigung.
 
Wenn du deinen Code veröffentlichen würdest, dann könnten andere mit Erfahrung und ich auch einmal drüber schauen ob etwas direkt auffällt wo man was verbessern könnte. Sehe es auch als Anregung dein Projekt einmal mit Zeichnungen, Bauteilen und Code bei z.B Github zu veröffentlichen, dann können andere darauf aufbauen und geben dir meist auch sinnvolles Feedback.
Hallo,
mit veröffentlichen von Codes bin ich eigentlich durch...
Hatte ich vor zwei Jahren mal auf einer anderen Plattform gemacht, und die ersten 20 Reaktionen darauf waren leider nur
Oberlehrerhafte Belehrungen, das mann dieses oder jenes ja so überhaupt nicht macht, und der Code ja völlig unsinnig aufgebaut war e.t.c.!
Da hat mich die Community leider verloren.
Hier beantworte ich natürlich gerne Fragen, weil es hier den Leuten einfach nur um ein Funktionierendes Gerät geht.

Andreas
Beitrag automatisch zusammengefügt:

Für die Display-Scheiben habe ich schon UV-Harz zur Schmuckherstellung benutzt.
Stimmt, auch eine klasse Idee. Muss ich mal ausprobieren.
Nur halt Ärgerlich, das es alle Möglichen Displays für schmales Geld gibt, und scheinbar niemand sie in ein Gehäuse einbaut.
Eine schnöde Acrylscheibe mit hintergedruckter Sichtblende für den sichtbaren Ausschnitt ist bei Massenproduktion eigentlich
kein großes Ding.
Für 2x16 DOT Matrix Displays gibt es sowas ja auch noch. (Das Plaste-Rähmchen kostet leider immer doppelt so viel wie das Display)...

Andreas
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: 2 Benutzer
mit veröffentlichen von Codes bin ich eigentlich durch
....
Oberlehrerhafte Belehrungen
Das kann ich natürlich verstehen. Da muss man drüber stehen. Als privates Backup kannst du es trotzdem immer mal im Hinterkopf behalten.

Ich habe die gleichen Erfahrungen gemacht, als ich damals nur für mich eine Kopie meiner Steuerung unter https://github.com/ChristianHofmann/Orgel-Midi/blob/main/Firmware3_Final.ino hochgeladen habe. Da kamen auch die sinnlosen Kommentare wie "Du kannst doch nicht ein Array für zwei Manuale nutzen" und hier sollte es so und dort so gemacht werden... So was ignoriert man. Auch wenn einige wohl technisch gesehen Recht haben, so ist bei diesen Anwendungen eben alles zeitkritisch und oft steht man vor der Wahl einen sauberen Code zu schreiben der allen Wünschen entspricht, oder einen Code zu schreiben der einfach zuverlässig funktioniert und schnell ist. Ich sage immer, jede zusätzliche komplizierte Zeile ist ein Ort, an dem Probleme entstehen können und diese Geräte die wir bauen, die müssen im Einsatz 100% zuverlässig das tun wofür wir sie gebaut haben.

Und die Kritiker haben in meinem Fall nicht recht gehabt, in über 400 Stunden Einsatz gab es nie einen Ausfall oder Fehler in der Steuerung.
 
  • Gefällt mir
Reaktionen: 1 Benutzer
Hallo,
ein kleiner Nachtrag zum Projekt:
Das langsame verstellen der Werte habe ich in den Griff bekommen.
Der I2C Bus für das Display ist der Hemmschuh.
Ich habe die library für das Display durch eine "I2C fast" library getauscht, und jetzt ist das verstellen
in einer guten Geschwindigkeit zu meistern.
Hätte ich am Microchip noch zwei Anschlüsse frei gehabt, wäre der Anschluss mit SPI noch etwas fixer.

Andreas
 
  • Gefällt mir
Reaktionen: 2 Benutzer
@Holzauge

Wie heißt denn die I2C fast library genau, und wo findet man die. Ich musste auch schon Softwareklimmzüge machen, weil das OLED-D so langsam ist.
 
@boisdelac
Hallo,
für das OLED Display habe ich die U8glib.h benutzt, die läuft für etliche Displays.
Da gibt es die Option das SH1106 Display als I2C/TWI einzubinden, was ich zuerst probierte,
als weitere Möglichkeit ist dort ein Display auszuwählen, das SH1106........I2C_Opt_fast heißt, das läuft etwa 3x schneller.
Falls die Geschwindigkeit dann nicht mehr reicht, geht nur noch ein SPI Display. (I2C max. 5MHz, SPI etwa 80 MHz glaube ich)
Mit einem DOT Display 2x16 läuft das alles auch merklich flüssiger, das hat aber auch deutlich weniger Datenhunger als das OLED.
 
  • Gefällt mir
Reaktionen: 1 Benutzer
Danke. Die U8glib.h nehme ich auch. Ich schau mal nach, ob ich das Display mit der fastoption auch finde.
Bin gerade dabei, eine MIDI-Clock mit TAP-BPM-Tempo-Eingabe zu machen. Da kommt es auf die Geschwindigkeit drauf an.

Gerade probiert ... funktioniert.
 
Zuletzt bearbeitet:

Ähnliche Themen


Unser weiteres Online-Angebot:
Bassic.de · Deejayforum.de · Sequencer.de · Clavio.de · Guitarworld.de · Recording.de

Musiker-Board Logo
Zurück
Oben