Impressum | Datenschutz | Shop | DIY | TT @ Twitter | TT-Cabs
Anzeigen der neuesten Beiträge

Entwicklung eines Midi-Switching-Systems auf Arduino-Basis

  • 145 Antworten
  • 75877 Aufrufe

0 Mitglieder und 1 Gast betrachten dieses Thema.

*

Offline Nils H.

  • YaBB God
  • *****
  • 3.067
Moin Sepp,

das Taster auslesen ist bei meinem Controller schon fertig. Hier habe ich in der Tat nicht das Rad neu erfunden, sondern diese bewährte Routine verwendet. Ich habe sie für die Abfrage über I²C angepasst und außerdem auf bis zu 32 Taster aufgebohrt. Die Taster werden entprellt, und ich kann zwischen kurzem Druck, langem Druck und loslassen unterscheiden, außerdem auch das gleichzeitige Drücken mehrerer Tasten berücksichtigen.

Die Taster werden zyklisch über eine Timer-ISR abgefragt. Für eine sichere Entprellung muss der Taster vier mal hintereinander einen stabilen Zustand haben. Die ISR läuft alle 8ms, es dauert also 32ms plus Prellzeit, um einen (oder mehrere) Tastendrücke zu erkennen. Ich denke, das ist schnell genug.

Gruß, Nils

*

Offline kugelblitz

  • YaBB God
  • *****
  • 1.724
  • be seeing you...
Danke für den Link Nils, ich Idiot hab mir damals noch selbst so einen Mist überlegt der im Endeffekt genau die selbe Funktionalität wenn auch undokumentiert liefert *grml*. Ist jetzt ebenfalls in den Lesezeichen ;) Die numerische Tastatur ala Telefon kann ich zumindest zum Programmieren des Kontrollers trotzdem nur empfehlen, ok ich verwende es zu direkten Patchwahl. Es funktioniert und ist intuitiv.

@8ms bzw 32ms plus Prellzeit: Da sollte sich ja auch Taptempo per Midi realisieren lassen ;)

Gruß,
Sepp

*

Offline Nils H.

  • YaBB God
  • *****
  • 3.067
Die numerische Tastatur ala Telefon kann ich zumindest zum Programmieren des Kontrollers trotzdem nur empfehlen, ok ich verwende es zu direkten Patchwahl. Es funktioniert und ist intuitiv.

Mal sehen, ob ich das brauche. Meinen bisherigen Spielgewohnheiten entsprechend brauchte ich nicht mal eien Bankwahl... da käme ich mit 1x 16 Presets wahrscheinlich dicke hin  :) .

@8ms bzw 32ms plus Prellzeit: Da sollte sich ja auch Taptempo per Midi realisieren lassen ;)

Da gehe ich aus von... Tap Tempo ist ein absolutes Muss-Feature bei mir. Schon weil unser Drummer kein Tempo halten kann  :devil: .

Gruß, Nils

*

Offline kugelblitz

  • YaBB God
  • *****
  • 1.724
  • be seeing you...
Mal sehen, ob ich das brauche. Meinen bisherigen Spielgewohnheiten entsprechend brauchte ich nicht mal eien Bankwahl... da käme ich mit 1x 16 Presets wahrscheinlich dicke hin  :) .

Ok dann soll er vermutlich auch gar nicht offline ohne PC programmierbar werden? Ich denke wahrscheinlich schon wieder zu oversized, um dann im Nachhinein feststellen zu müssen, eigentlich braucht man es so nicht ;)
Nur wer weiß was noch kommt, wenn man dem Trend folgt und auch die DIY Amps midifiziert und basteln hat ja auch seinen Reiz.

Da gehe ich aus von... Tap Tempo ist ein absolutes Muss-Feature bei mir. Schon weil unser Drummer kein Tempo halten kann  :devil: .

 >:D

Gruß und viel Erfolg,
Sepp

*

Offline Nils H.

  • YaBB God
  • *****
  • 3.067
Ok dann soll er vermutlich auch gar nicht offline ohne PC programmierbar werden?

da halte ich eh nix von. Das Bedienkonzept des Controllers muss so einfach sein, dass man ihn ohne Probleme "on the fly" programmieren kann. Wenn ich merke "Die Soundkombination brauche ich öfter" - Zack, drei Tasten drücken, Speichern, fertig. Ich werfe doch nicht dem Computer an, um meine Sounds einzustellen  ;) . Da bin ich vermutlich zu alt für. Abgesehen davon schleppe ich keinen PC oder Laptop mit in den Proberaum.

Gruß, Nils

*

Offline kugelblitz

  • YaBB God
  • *****
  • 1.724
  • be seeing you...
da halte ich eh nix von. Das Bedienkonzept des Controllers muss so einfach sein, dass man ihn ohne Probleme "on the fly" programmieren kann. Wenn ich merke "Die Soundkombination brauche ich öfter" - Zack, drei Tasten drücken, Speichern, fertig. Ich werfe doch nicht dem Computer an, um meine Sounds einzustellen  ;) .

Ah dann hast Du noch ein anderes Konzept, bin auf das Ergebnis gespannt. Ich wuerde ATM, hab mich aber noch nicht im Detail mit Programmierbarkeit auseinander gesetzt, einen Editiermodus vorsehen, in dem die PC und/oder CC Nachrichten frei  numerisch programmiert werden koennen... Du scheinst ja eher Richtung, eines festen PC/CC Nachrichtensatzes zu tendieren und diese einzeln zu aktivieren bzw deaktivieren und diese States zu speichern. Ich glaub jetzt verstehe ich Dich.

Auf jeden Fall bin ich auf Deine Loesung gespannt. Meiner Meinung nach ist es auch das Schwierigste, sei es hier oder in Amps, ein vernuenftiges Bedienkonzept zu erstellen.

Gruss,
Sepp

*

Offline Nils H.

  • YaBB God
  • *****
  • 3.067
Du scheinst ja eher Richtung, eines festen PC/CC Nachrichtensatzes zu tendieren und diese einzeln zu aktivieren bzw deaktivieren und diese States zu speichern. Ich glaub jetzt verstehe ich Dich.

Genau so isses. Es sollen im Controller bis zu acht Geräte definiert werden können, und pro Preset kann ich dann auswählen, ob und welcher PC an welches Gerät gesendet werden soll.

Außerdem wird es ein globales Setup geben, wo jedem Taster ein vordefiniertes Gerät und ein CC# zugewiesen wird. Zusätzlich will ich noch einstellen können, ob's ein Schalter (toggle) oder ein Taster (momentary) ist, und ob - im Falle von Toggle - der gespeicherte Status beim anwählen eines Presets mitgesendet werden soll oder nicht.

Das ist auch der Grund, warum ich so viele CC-Taster vorgesehen habe; macht man die Taster vollständig frei programmierbar, dann käme man ja theoretisch mit deutlich weniger Tastern aus, weil man in Preset A das eine Gerät X und in Preset B ein anderes Gerät Y mit ein und demselben Taster steuern könnte. Das ist programmiertechnisch flexibler, Performance-technischer verliert man aber eher Flexibilität. So ist man deutlich dichter am "echten" Pedalboard dran, das dann aber den Bonus der Programmierbarkeit hat. Ich will halt einen Controller für "Player" (also mich  ;D ) bauen, nicht für Programmierer.

Ich hab mir das natürlich nicht alles selbst ausgedacht, das ist im Prinzip die Basisfunktionalität aller "großen" Midi-Floorboards, die ich mir angesehen habe.

Gruß, Nils

*

Offline Nils H.

  • YaBB God
  • *****
  • 3.067
Moin,

mal ein (langes) Statusupdate von mir. Ich hatte gerade Urlaub und habe in den letzten zwei Wochen intensiv an der Firmware des Controllers weitergearbeit, nachdem die fertige Hardware jetzt ein halbes Jahr im Regal verstaubte.

Bis auf die Routinen zum bearbeiten, speichern und kopieren/verschieben von Presets ist alles fertig. Der Controller kann jetzt folgendes:

  • Speichern und abrufen von 800 Presets in 50 Bänken zu 16 Presets. Die Grenze wir im Prinzip nur von der Größe des EEPROMs gesetzt, ich habe ein AT24C512 mit 64 kB verbaut, da ist noch etwas Luft nach oben. Ein Preset ist im Moment 29 Byte groß.
  • Im Controller können bis zu acht MIDI-Geräte angelegt werden. Jedem gerät kann ein achtstelliger Name sowie ein MIDI-Kanal zugeordnet werden, außerdem kann jedes Gerät dezidiert aktiviert oder deaktiviert werden.
  • Im Direktmodus arbeitet der Controller wie ein Pedalboard, die 16 Presettaster arbeiten als an/aus für einzelne Effekte oder Einstellungen, die Taster senden CC# ("binär", entweder 0 oder 127). Ob ich das mit Zwischenwerten noch mal konfigurierbar mache, muss ich überlegen. Eigentlich ist das aber unnötig. Jeder Taster kann einem hinterlegten Gerät zugeordnet werden, außerdem können CC# und Betriebsart eingestellt werden. Die drei Betriebsarten eines Tasters sind Normal (an/aus), Taster und "Senden mit Preset" (wie Normal, aber der im Preset gespeicherte Zustand wird beim Presetabruf mit raus gesendet). Insgesamt stellt der Controller 32 Taster zur Verfügung, die Taster 17-32 sind "virtuell" und über die 16 physischen Taster per "Shiftfunktion" erreichbar.
  • Auch im Direktmodus ist der Presetwechsel möglich, hier können die Presets per "UP"/"DOWN"-Taster durchgesteppt werden, auch bankübergreifend, also auf Preset 16 in Bank 1 folgt bei "UP" Preset 1 in Bank 2. Andere Controller (z.B. die CAE Controller) nutzen hier getrennte Preset-Speicherbereiche, das fand ich aber unnötig.
  • Redundante Midinachrichten werden vom Controller gefiltert, d.h. beim Abruf eines Presets wird nur das gesendet, was sich zum vorher aktiven Preset unterscheidet. Auch der erneute Abruf eines Presets z.B. bei versehentlicher doppelter Betätigung eines Tasters wird herausgefiltert. Über langes Drücken eines Tasters kann der Filter übergangen werden, dann sendet der Controller das komplette Preset (ggf. erneut).
  • Das LCD zeigt im Presetmodus die aktuelle Bank, die Presetnummer und den Namen des Presets an. Im Direktmodus zeigt es bei Tasterbetätigung den Namen und den Zustand des Tasters an. Letzteres ist eigentlich überflüssig, denn jeder Taster hat ja eine LED.
Weggelassen habe ich ein MIDI-IN und die Anschlussmöglichkeit von Expression Pedalen. Sollte ich das doch mal brauchen, muss ich das halt nachrüsten. Was noch fehlt sind wie gesagt die Presetroutinen, außerdem wäre es vermutlich nicht unklug, Konfiguration und Presets irgendwie extern sichern zu können. Das muss also auch noch.

Der Mikrocontroller ist in der Schaltung programmierbar. Auf der Platine sitzt eine ISP-Wannenstecker, außerdem habe ich einen Bootloader auf dem µC installiert, so dass er per USB bzw. MIDI programmiert werden kann. Praktisch ist das im Moment so, dass ich eine kleine USB-to-UART-Bridge habe, die am Board angeschlossen ist und deren Kabel aus dem Gehäuse raushängen. Ob und wie ich die Firmware per MIDI-Schnittstelle updaten kann, muss ich noch mal rausfinden. Gegebenenfalls baue ich entweder eine USB-Flanschbuchse ein und belasse die UART-Bridge im Controller, oder ich löte einfach mal einen MIDI-Stecker an die Bridge.

Ich habe den Controller bisher nur zu Hause am Audio/MIDI-Interface getestet. Ich habe mir den Output mit der Software MIDI-OX angesehen, bisher passt das alles. Der Controller sendet ja theoretisch bis zu 40 Nachrichten pro Preset, im Moment sind es maximal 17, da ich die virtuellen Taster deaktiviert und nur ein Gerät eingerichtet habe. Die Nachrichten erscheinen bei Tastendruck im Prinzip sofort auf dem Bildschirm, die Performance scheint also sehr gut zu sein. Die meisten Rackgeräte reagieren vermutlich deutlich langsamer. Ob der Controller ggf. sogar zu schnell ist, muss ich noch rausfinden.

Heute Abend nehme ich den Controller mal mit zur Probe und steuere mein G-Sharp damit. Habe ich letzte woche schon mal gemacht, aber da war die Leistung der Firmware noch deutlich reduziert und ich hatte nur ein paar MIDI-Befehle hart gecoded eingebaut. Heute will ich mal schauen, ob der Controller, so wie er jetzt ist, den ganzen Abend stabil und ohne Abstürze durchläuft.


Im nächsten Schritt baue ich dann noch das Rackgegenstück. Hier habe ich mich gegen den kompletten Neubau eines Rackloopers/Switchers entschieden, da ich ja einen voll funktionierenden Relaislooper habe. Stattdessen werde ich eine Steuereinheit bauen, die dort anflanscht, wo das vorhandene Steuerpedal des Loppers angeschlossen wird.

Die Steuereinheit wird wohl auch sehr viel einfacher und "dümmer" als der Controller werden. Kein Display, keine Taster, keine LEDnn womöglich nicht mal Presets. Die Rackeinheit wird vermutlich ausschließlich per CC# gesteuert werden. In meinem Ansatz ist also der Bodencontroller das Gehirn des Setups, nicht der Racklooper, wie das in vielen anderen Projekten ist. Der vorhandene Relaislooper hat 12 Loops und 7 Schaltausgänge, passend zum Controller werde ich die Rackeinheit auf 32 Schaltausgänge auslegen.

Ich hoffe, ich bekomme die Controllerfirmware nächste Woche soweit fertig, dann versuche ich zeitnah, auch die Rackeinheit zu bauen. Die Bauteile dafür habe ich alle schon zu Hause, lediglich ein Gehäuse muss ich noch kaufen - und die Platinen bauen / bestücken.

Ich muss mal sehen, wie es mit der Veröffentlichung des C-Quelltextes hier steht. Es ist fast alles von mir, die Entprellroutine basiert auf obigem Link, sonst habe ich, glaube ich, keinen fremden Quelltext benutzt; muss ich noch mal prüfen. Wer sich direkt bei mir meldet, kann aber - wenn ich komplett fertig bin - den Quelltext gerne von mir bekommen. Er ist sicherlich nicht der eleganteste, schönste, kompakteste, speicherschonenste oder perfomanteste Code, aber er funktioniert. Die kompilierte Firmware ist derzeit 11 kB (!!!) groß, es braucht also schon einen der größeren ATMEGA dafür.

Mein persönliches Fazit ist auf alle Fälle schon mal, das sich das Projekt absolut gelohnt hat. Ich habe quasi bei Null angefangen und sehr viel dabei gelernt, und wenn man die investierte Zeit nicht mitrechnet (was man ja eh nicht machen darf) habe ich vermutlich einige hundert Euro im Vergleich zu komerziell erhältlichen Controllern gespart, vor denen sich meiner nicht zu verstecken braucht. Außerdem habe ich - wie beim Ampbau auch - einiges an Respekt vor den im Handel erhältlichen Produkten verloren. Die kochen auch nur mit Wasser, und einige Preise und auch einige Defizite sind, wenn man's erst mal selbst gemacht hat, kaum mehr verständlich.

Gruß, Nils

*

Offline kugelblitz

  • YaBB God
  • *****
  • 1.724
  • be seeing you...
Hallo Nils,

 :topjob: Du bist ja schon um einiges weiter, meiner verstaubt noch, wenn auch teil genutzt im Rack.

Im nächsten Schritt baue ich dann noch das Rackgegenstück. Hier habe ich mich gegen den kompletten Neubau eines Rackloopers/Switchers entschieden, da ich ja einen voll funktionierenden Relaislooper habe. Stattdessen werde ich eine Steuereinheit bauen, die dort anflanscht, wo das vorhandene Steuerpedal des Loppers angeschlossen wird.

Mir schwebt genau das Gegenteil vor, intelligentes Rack, dummer bis maximal mit Grundschulkenntnissen ausgestatteter Footswitch. Wie hast Du die Verbindung und Stromversorgung geloest. Ich wuerde ATM noch zu 2 XLR Verbindungen tendieren.

Außerdem habe ich - wie beim Ampbau auch - einiges an Respekt vor den im Handel erhältlichen Produkten verloren. Die kochen auch nur mit Wasser, und einige Preise und auch einige Defizite sind, wenn man's erst mal selbst gemacht hat, kaum mehr verständlich.

Yepp, vorallem bei den einfacheren Markengeraeten, zB nur PC Nachrichten, sind die Preise wirklich ein Witz.

Gruss,
Sepp

*

Offline Nils H.

  • YaBB God
  • *****
  • 3.067
Moin Sepp,

Mir schwebt genau das Gegenteil vor, intelligentes Rack, dummer bis maximal mit Grundschulkenntnissen ausgestatteter Footswitch.

Das sind ja so die beiden konkurrierenden Ansätze, dummer rein presetbasierter Controller und möglichst ausgefeilter Racklooper vs. einfacher Looper vs. intelligenter Controller. Meine Entscheidung für letzeres basiert auf der Tatsache, dass der Pedalboardbetrieb für mich wichtiger als der Presetbetrieb ist. Mir ist es sehr wichtig, im Prinzip alle geloopten Effekte nach Gusto ein- und ausschalten zu können und gleichzeitig auch mein 19"-Rackgerät vernünftig steuern zu können. Daneben habe ich ab und zu mal das Bedürfnis danach, den einen oder anderen Sound als Preset abzuspeichern. Dafür brauchte ich eben viele CC-fähige Taster und die meisten bezahlbaren Controller können das eben nicht leisten. Wenn der Controller aber eh so programmiert ist, dass er die CC's beim Presetwechsel mit rausschickt (und das machen alle großen, die ich mir angesehen habe; primär waren das das Ground Control Pro und der RS-T von CAE), dann braucht's den Presetkram im Looper eigentlich nicht.

Das ist auch der Grund, warum ich bei Dirks MIDI-Kanalumschaltung nach CCs gefragt hatte, und das stört mich auch an so Projekten wie dem JimKim Switch - nur auf PC reagieren ist halt doof für mich.

Wie hast Du die Verbindung und Stromversorgung geloest. Ich wuerde ATM noch zu 2 XLR Verbindungen tendieren.

Ich bin mir nicht sicher, was Du meinst. Der Controller hat als einzigen Anschluss eine normale MIDI-Out-Buchse. Auf so Spezialkram wie 5-polige XLR wollte ich verzichten, um den Bedarf nach Spezialkabeln zu vermeiden. Die Spannungsversorgung erfolgt entweder per Phantompower über die freien Pins 1 und 3 im MIDI-Kabel oder per DC-Buchse. Der Controller hat eine gemessene Stromaufnahme von 67 mA (Display und alle LED an), ist also einigermaßen sparsam. Der Löwenanteil entfällt auf die Displaybeleuchtung.


Yepp, vorallem bei den einfacheren Markengeraeten, zB nur PC Nachrichten, sind die Preise wirklich ein Witz.

Zustimmung.

Gruß, Nils

*

Offline kugelblitz

  • YaBB God
  • *****
  • 1.724
  • be seeing you...
... bezahlbaren Controller ...

Ja da wirds so  duenn dass eigentlich nichts ubrigbleibt. Auf der anderen Seite, die Bauteilkosten fuer eine DIY Loesung mag zwar niedriger sein, aber die Arbeitszeit inkl einarbeiten ist schon enorm. Das ist aber auch die schoenste Zeit daran ;) wenn man sie den hat.

Ich bin mir nicht sicher, was Du meinst. Der Controller hat als einzigen Anschluss eine normale MIDI-Out-Buchse. Auf so Spezialkram wie 5-polige XLR wollte ich verzichten, um den Bedarf nach Spezialkabeln zu vermeiden. Die Spannungsversorgung erfolgt entweder per Phantompower über die freien Pins 1 und 3 im MIDI-Kabel oder per DC-Buchse. Der Controller hat eine gemessene Stromaufnahme von 67 mA (Display und alle LED an), ist also einigermaßen sparsam. Der Löwenanteil entfällt auf die Displaybeleuchtung.

Nein ich meinte, ich stelle mir vor zwischen Rack und Pedal nur normale XLR verbindungen zu benutzen, vielleicht einmal male und einmal female. Eines fuer die Stromversorung, eines zur Kommunikation. Mikrokabel sollten doch immer aufzutreiben sein und normale MIDI-Geraete koennten ja ueber die Rackunit angeschlossen werden.

Gruss,
Sepp

*

Offline Nils H.

  • YaBB God
  • *****
  • 3.067
die Bauteilkosten fuer eine DIY Loesung mag zwar niedriger sein, aber die Arbeitszeit inkl einarbeiten ist schon enorm. Das ist aber auch die schoenste Zeit daran ;) wenn man sie den hat.

Zeit: Das ist der Punkt, warum das hier schon so lange dauert. Der Thread hier ist ja schon mein zweiter Anlauf, das Thema beschäftigt mich ja schon seit mehreren Jahren. Die fertige Controllerhardware hat jetzt ja auch wieder ein halbes Jahr im Regal staub angesetzt, weil ich keine Zeit hatte, die Software zu programmieren. Weil mich das genervt hat, bin ich letzte Woche dann mal im  :urlaub: in Klausur gegangen und hab fast nichts anderes gemacht  ;D
.

Die Kosten sind ein Witz. Ich habe direkt auch die Bauteile für die Rackeinheit eingekauft und dazu den einen oder anderen µC und PCF in Reserve, also einiges an Redundanzen, und ich habe, glaube ich, weniger als 180 Euro für die ganze Hardware bezahlt. Und da sind 'n Zwanni für's Gehäuse, 40 Euro für Taster und 40 für's Display mit drin. Der Controller, der für meinen Pate stand, schlägt beim großen T mit 450 oder so zu Buche, und der kann in einigen Bereichen weniger als meiner (unter anderem nur 8x Direktzugriff, und ich hab keinen Einfluss auf die Software). Andere ähnlich teure Controller können sogar noch weniger.

Neu entdeckt habe ich den MIDI Raider von Rocktron, der ist etwas günstiger und hat eine ähnliche Ausstattung.

Aber vom Geld sollte man eh nicht reden. Viel wichtiger ist der Zugriff auf die Software. Wenn mri was nicht passt oder fehlt, kann ich das jederzeit ändern.

Gruß, Nils

*

Offline SvR

  • YaBB God
  • *****
  • 2.384
Salü,
Erstmal gratulation, dass dein Projekt (erfolgreich) dem Ende entgegen geht. :)
Wobei man ja immer noch eine Idee hat, was man an der Software ändern/verbessern könnte ;)
Was noch fehlt sind wie gesagt die Presetroutinen, außerdem wäre es vermutlich nicht unklug, Konfiguration und Presets irgendwie extern sichern zu können. Das muss also auch noch.
Hast du noch nen SPI-Port an deinem µC frei? Dann wäre eine SD-Card evtl. eine Lösung. Es gibt auch eine FAT-Lib für 8Bit-µC (http://elm-chan.org/fsw/ff/00index_p.html).
mfg sven
Rettet den Wald, esst mehr Biber!
PIC32-Tutorial

*

Offline Robinrockt

  • YaBB God
  • *****
  • 1.243
Hallo Nils,

prima, das du dich da jetzt soweit durchgebissen hast und ein (fast) finales Produkt geschaffen hast. Ich drücke die Daumen das es beim Praxistest stabil läuft.
Sicherlich könnte man mit Assembler noch ein wenig zaubern(Speicherplatz etc.) aber scheint ja nicht nötig zu sein. Viel wichtiger ist ja das Programm einfach zu halten und das es gut erweiter-/veränderbar ist.
Presets/Konfiguration evtl. auf USB Stick abspeichern?

Grüße,
Robin
Gefangen vom Ton

*

Offline SvR

  • YaBB God
  • *****
  • 2.384
Salü,
Presets/Konfiguration evtl. auf USB Stick abspeichern?
Dazu müsste der µC USB OTG können und das kann der von Nils verwendete ATmega328P laut Herstellerseite nicht.
mfg Sven
Rettet den Wald, esst mehr Biber!
PIC32-Tutorial