Technik > Tech-Talk Design & Konzepte

Entwicklung eines Midi-Switching-Systems auf Arduino-Basis

<< < (14/30) > >>

kugelblitz:

--- Zitat von: Nils H. am  4.02.2013 14:48 ---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  ;) .

--- Ende Zitat ---

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

Nils H.:

--- Zitat von: kugelblitz am  4.02.2013 15:31 ---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.

--- Ende Zitat ---

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

Nils H.:
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

kugelblitz:
Hallo Nils,

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


--- Zitat von: Nils H. am 19.08.2013 12:35 ---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.

--- Ende Zitat ---

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.


--- Zitat von: Nils H. am 19.08.2013 12:35 ---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.

--- Ende Zitat ---

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

Gruss,
Sepp

Nils H.:
Moin Sepp,


--- Zitat von: kugelblitz am 19.08.2013 14:28 ---Mir schwebt genau das Gegenteil vor, intelligentes Rack, dummer bis maximal mit Grundschulkenntnissen ausgestatteter Footswitch.

--- Ende Zitat ---

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.


--- Zitat von: kugelblitz am 19.08.2013 14:28 --- Wie hast Du die Verbindung und Stromversorgung geloest. Ich wuerde ATM noch zu 2 XLR Verbindungen tendieren.

--- Ende Zitat ---

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.



--- Zitat von: kugelblitz am 19.08.2013 14:28 ---Yepp, vorallem bei den einfacheren Markengeraeten, zB nur PC Nachrichten, sind die Preise wirklich ein Witz.

--- Ende Zitat ---

Zustimmung.

Gruß, Nils

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln