Technik > Tech-Talk Design & Konzepte
Entwicklung eines Midi-Switching-Systems auf Arduino-Basis
Nils H.:
Moin,
melde mich, nachdem ich 'ne Woche krank im Bett gelegen habe, mit der Vorstellung meines neuen Projekts zurück aus der Versenkung.
Ich hab ja in diesem Thread schon ein wenig rumgejammert, dass ich mit dem Management meiner Effektbataillon unzufrieden bin. Naja, nicht direkt unzufrieden, denn das System funktioniert eigentlich gut, aber es gibt doch Verbesserungsmöglichkeiten. Und da ich immer schon mal was mit µCs machen wollte, habe ich beschlossen, die nächste Generation meines FX-Looper/Switcher-Systems zu entwickeln und zu bauen - diesmal mit µC und MIDI. Das Projekt ist - für meinen Kenntnisstand - sehr ambitioniert, und ich muss speziell an der Programmierfront einiges an Vorarbeit leisten, bevor was produktives dabei herauskommen wird, weswegen ich mir keinen Zeitrahmen setzen will - es ist fertig, wenn's fertig ist.
Als erstes möchte ich mich mit dem Konzept des ganzen befassen, und das sollte gut durchdacht und stimmig sein, bevor überhaupt irgendwas praktisch in Angriff genommen wird. Was auf jeden Fall schon fest steht ist die Nutzung eines fertigen Arduino-Boards, da ich mit der Platinenentwicklung und -fertigung so wenig wie möglich zu tun haben will; außerdem gibt's die leistungsfähigeren µCs nur als SMD, und das verträgt sich gar nicht mit Tremor und Kurzsichtigkeit ;D .
Jedenfalls, ich fange mal an damit, meine Vorstellung darzulegen und so. Ich schreibe den Mist hier parallel auch an einer Art "Konzeptpapier", dass mir als Leitfaden und Dokumentation dienen soll. Später irgendwann, wenn das soweit ist, dass es sich lohnt, werde ich das auch hier veröffentlichen.
Los geht's mit der
Grundidee
Das alte System
Das hier entwickelte System soll langfristig das bestehende Looper-/Switcher-Racksystem ersetzen. Dieses besteht aus einer Rackeinheit mit 12 Audio-Loops, von denen jeweils vier intern in Serie geschaltet sind, sowie 6 potentialfreien Schaltausgängen. Bedient wird die Rackeinheit über einen Bodencontroller mit insgesamt 20 zweipoligen Fußschaltern, über die zum einen die Spulenspannung der Relais geschaltet wird; mit dem anderen Schalterpol wird die zugehörige LED am Controller geschaltet. Der Controller wird über ein voll belegtes 25-poliges D-SUB-Kabel mit der Rackeinheit verbunden.
Dieses System verlagert die Komponenten eines komplexen Pedalboards in ein 19“-Rack. Die Effektgeräte stehen im Rack auf ausziehbaren Bodenwannen und sind so geschützter als auf einem Pedalboard, z.B. gegen versehentliches Verstellen. Vor den Füßen auf der Bühne liegt nur noch ein Controller, der deutlich kompakter ist als ein entsprechendes Pedalboard. Eine Programmierbarkeit bietet das System nicht, wurde von mir aber auch nicht benötigt, da ich kein „Preset-Spieler“ bin – ich schalte meine Effekte einfach nach Lust und Laune ein oder aus.
Der Wunsch nach einer Midifizierung des Systems entstand mit dem Bedürfnis, das im Setup vorhandene 19“-Effektgerät G-Sharp von TC Electronic effizienter zu nutzen. Bisher nutze ich dieses rein im „Manual“-Modus mit fest eingestelltem Delay und Hall, bei dem das Effektgerät an den Reglern auf der Frontplatte eingestellt wird. Über die auf der Rückseite vorhandene Remotebuchse können die Funktionen Delay an/aus, Hall an/aus und Tap Tempo fernbedient werden.
Schöner wäre es, auch die Presets des Gerätes nutzen zu können und so z.B. unterschiedliche Delayeinstellungen und –typen sowie, alternativ zum Delay, auch die Modulationseffekte des G-Sharp nutzen zu können. Dafür ist aber eine Ansteuerung per MIDI unerlässlich. Die einfache Lösung wäre, zusätzlich zum Controller des Loopers ein MIDI-Pedal zu benutzen, und das ist in der Tat die Lösung, die ich im Moment nutze. Der Nachteil ist, dass wieder mehr Platz vor den Füßen benötigt wird, und auch von der Bedienung her ist es suboptimal.
Das neue System
Das neue System soll wie handelsübliche kommerziell erhältliche Switchingsysteme arbeiten und aus zwei Komponenten bestehen. Die alte Rackeinheit wird durch einen per MIDI steuerbaren Looper/ Switcher nach dem Vorbild von Geräten wie dem GCX Audio Switcher von Voodoo Lab oder dem RG-16 bzw. Rack Gizmo von RJM ersetzt. Bei diesen Geräten können die Loops und – im Falle des Rack Gizmo – die Schaltausgänge per MIDI über Continuous-Controller-Befehle ein- und ausgeschaltet werden, das Rack Gizmo ist darüber hinaus auch noch in der Lage, Presets abzuspeichern. Beide Geräte erlauben allerdings nur die Verwendung von bis zu acht Loops. Das GCX bietet keine seperaten Schaltausgänge, das Rack Rack Gizmo hingegen acht. Acht Loops reichen für mein derzeitiges Setup aber nicht aus, so dass die neue Rackeinheit mit der gleichen Anzahl Loops ausgestattet werden soll, wie die alte Rackeinheit.
Gesteuert werden soll die Rackeinheit per MIDI Foot Controller. Hier könnte vermutlich jeder programmierbare MIDI Foot Controller zum Einsatz kommen, der das Senden von CC-Befehlen beherrscht, wie z.B. das Ground Control Pro, ebenfalls von Voodoo Lab oder die Controller von CAE. Alle „bezahlbaren“ Controller haben aber den Nachteil, dass sie nicht genügend Fußtaster für die Steuerung von bis zu 12 Loops sowie mehreren Schaltausgängen haben. Andere Lösungen wie z.B. CAE werden dann sehr schnell sehr teuer. Da ich mich für dieses Projekt sowieso intensiv mit den Themenbereichen MIDI-Protokoll, Microcontroller und Programmierung auseinandersetzen muss, soll im zweiten Schritt auch der passende MIDI Foot Controller entworfen und gebaut werden.
Anforderungen
Looper / Switcher
Features:
* 12 True-Bypass-Audio-Loops mit mit diskretem Input, Insert, Output
* Alle Loops auch als Schaltausgänge nutzbar (Insertbuchse, Tip = NC, Ring = NO)
* 8 potentialfreie Schaltausgänge (Tip auf Masse, NO)
* Steuerung per MIDI
* Ein- und Ausschalten der Loops per CC-Befehl
* Möglichkeit der Speicherung von Presets
* Einschleifbarer Buffer (OP/JFET)
* Individuelles Schalten der Loops per CC#80-91
* Individuelles Schalten der Schaltausgänge per CC#104-111
* Speichern von Presets
* MIDI-Kanal 1-16 frei einstellbar, Omni-ModHardware:
* Arduino-Basis
* 19“-Rackunit, 2HE
* 7-Segment-Anzeige mit serieller Ansteuerung zur Anzeige der Presetnummer
* Versorgung per 9V AC/DC-Adapter
* USB-Anschluss für FW-Update
* MIDI-/Pedal-In an der Frontplatte
* 9V Phantom-Power für Controller, ggf. schaltbar
* Aufbau der Treiberschaltungen, Relais und Buchsen auf Eyeletboard oder Loch-/StreifenrasterWeiter geht's dann später mit den möglichen geeigneten Arduino-Varianten für die Rackeinheit sowie den Anforderungen an den Floorcontroller. Input, Vorschläge und Meinungen sind natürlich erwünscht!
Gruß, Nils
Duesentrieb:
wow. Viel Glück, Nils.
Nils H.:
--- Zitat von: Duesentrieb am 26.08.2011 23:21 ---wow. Viel Glück, Nils.
--- Ende Zitat ---
Das klingt ja sehr skeptisch ;) . Ich weiß, das klingt sehr ambitioniert, und es wird ein langer Weg sein, bis die Kiste fertig ist. Im Wesentlichen ist es ein Programmierprojekt, denn die Hardwareseite ist ja sehr überschaubar. Wenn man an die Software einigermaßen strukturiert rangeht und das von Anfang an modular aufbaut, kann man ja Feature um Feature einbauen. Und wichtig ist halt ein stimmiges Grundkonzept.
Gruß, Nils
Nils H.:
Moin,
weiter gehts:
Microcontroller (Rackeinheit):
Gerade hier würde ich mich über Input freuen, da ich kaum Erfahrungen mit Microcontrollern habe; vielleicht habe ich bei meiner Recherche ja Lösungswege übersehen, die andere Alternativen erlauben.
Anforderungen:
Der Microcontroller für den Switcher benötigt in der angepeilten Ausbaustufe (12 Loops und 8 Schaltausgänge) 20 freie digitale I/O-Pins, konfiguriert als Ausgang. Hinzu kommt noch die gleiche Anzahl digitaler Inputs für die Bedienung durch Taster auf der Frontplatte sowie zwei Pins für Midi I/O und ein Pin für die Ansteuerung der seriellen 7-Segment-Anzeige. Insgesamt werden also 44 I/O-Pins benötigt (20 Outputs und 24 Inputs).
Der ATmega168 und ATmega328 haben nur 14 digitale I/O, von denen zwei für MIDI In/Out abgezogen werden müssen. Allein durch die Anzahl an benötigten Outputs ergeben sich zwei Möglichkeiten:
- Einsatz eines Boards mit ATmega1280 oder ATmega2560
- Einsatz zweier / mehrerer Boards mit ATmega168 oder ATmega328
Letzteres ist im Hinblick auf den Beschaffungspreis eigentlich nur sinnvoll bei Einsatz eines Arduino Pro oder Pro-Mini. Ein weiterer Nachteil des ATmega168 wäre das mit 512 Byte sehr knapp bemessene EEPROM.
Mögliche Controller und Boards:
ATmega1280
* 54 digitale I/O
* 16 analoge Inputs
* 128 kB Flash / 8 kB SRAM / 4 kB EEPROM
* Kein aktuelles DesignMögliche Boards:
Original Arduino MEGA
* schwierig zu bekommen, weil veraltet
* Preis ca. €24,-
* Benötigt MIDI-I/O-Shield ("Shield" heißen bei Arduino die Aufsteck-Tochterboards), kostet €15,-
* Maße ca. 102 mm x 54 mmMiduino Keyboard/Piano Foot Pedals MIDI/USB
* Arduino MEGA-Board
* Preis: €65,-
* Inkl. MIDI I/O-Shield
* Beinhaltet nicht benötigtes Programm, für das wohl mit bezahlt wirdATmega2560
* 54 digitale I/O
* 16 analoge Inputs
* 256 kB Flash / 8 kB SRAM / 4 kB EEPROMMögliche Boards:
Original Arduino MEGA 2560
* Preis: um €50,-
* Benötigt zusätzlich MIDI-I/O-Shield, kostet ca. €15,-
* Maße ca. 102 mm x 54 mmATmega328
* 14 digitale I/O
* 8 analoge Inputs
* 32 kB Flash / 2 kB SRAM / 1 kB EEPROMMögliche Boards:
Original Arduino Uno
* Preis: ca €25,-
* Benötigt MIDI-I/O-Shield, kostet €15,-
* Maße ca. 69 mm x 54 mmOriginal Arduino Duemilanove
* Preis: ca. €25,-
* Benötigt MIDI-I/O-Shield, kostet €15,-
* Maße ca. 69 mm x 54 mmOriginal Arduino Pro
* Preis: ca €17,-
* Benötigt MIDI-I/O-Shield, kostet €15,-
* Kein USB-Anschluss, Kabel oder Konverter benötigt
* Sehr kompaktes BoardDie einzige sinnvolle Variante ist nach meiner Einschätzung der Einsatz des MEGA- oder MEGA 2650-Designs. Das Optimum würde wohl ein Board mit ATmega2560 darstellen, inkl. MIDI-I/O liegt der Preis bei ca. 65 Euro.
Mit etwas Glück ist ein MEGA-Board für ca. 25 Euro zu bekommen, ergänzt um ein MID-I/O-Shield z.B. von Miduino liegt der Anschaffungspreis bei ca. 40 Euro. Der geringeren Flashspeicher von 128 kB (256 kB beim 2560) sollte bei dieser Anwendung keinen Nachteil darstellen.
Die Beschaffung eines MEGA-basierten Miduino-Designs scheint nur dann sinnvoll, wenn kein originales MEGA-Board zu einem günstigen Preis beschafft werden kann. In diesem Fall scheint z.B. das Projekt „Keyboard/Piano Foot Pedals MIDI/USB“ für 65 Euro das richtige und günstigste Miduino-Projekt zu sein, zu diesem Preis könnte man dann aber auch gleich zur erstgenannten Lösung greifen.
Nils H.:
Zum Schluss für heute meine Idee vom
Midi Foot Controller
Die folgenden Listen stellen einen möglichen Funktionsumfang dar. Die Programmieraufgabe wird beim Controller deutlich größer sein als beim Looper/Switcher, so dass die Software mit der Zeit wachsen wird. Es muss noch festgelegt werden, welche Features für einen Grundbetrieb benötigt und was die Mindestanforderungen an die Software sein werden.
Features:
* Senden von PC-Befehlen
* Senden von CC- oder PC-Befehlen per Direktanwahl-Taster
* Speichern von 100 Presets
* Steuerung von bis zu 8 Geräten auf unterschiedlichen MIDI-Kanälen
* Anschlussmöglichkeit von 2 Expression-Pedalen
* Range-Einschränkung der Expressionpedale möglich
* Fußtaster konfigurierbar als Schalter (latching) oder Taster (momentary)
* Fußtaster können bis zu 4 andere Taster zurücksetzenHardware:
* Metallgehäuse
* Metall-Fußtaster
* Low Current-LED
* Beleuchtetes LCD 16x2
* Mindestens vier Taster plus Bank up/down zur Presetwahl
* 20 Taster zum Schalten aller Loops und Schaltausgänge der Rackeinheit
* Phantomgespeisung oder Versorgung per Steckernetzteil
* 9V DC-Output zur Versorgung von Effektgeräten
* USB-Anschluss für FW-UpdateMicrocontroller:
Der Microcontroller für den MIDI Foot Controller benötigt für die Direktanwahl von 12 Loops und 8 Schaltausgängen sowie das Schalten von 4 oder 5 Presets / Bank 26 bzw. 27 digitale Inputs sowie ebenso viele digitale Outputs für die zugehörigen LED. Dazu kommt noch je ein Pin für MIDI-Out und die Kommunikation mit dem LC-Display mit serieller Ansteuerung. Damit benötigt der Controller mehr als die 54 digitalen I/O-Pins, die der ATmega1280 oder ATmega2560 zur Verfügung stellen. Das Problem kann auf mehrere Arten umgangen werden, z.B.:
* Verschaltung der Fußtaster als Matrix, Auswertung über die Arduino Keypad-Library. Für die Auswertung der Taster werden dann statt 27 Eingängen nur noch 11 benötigt.
* Auswertung mehrerer Taster über analoge Eingänge. Die Taster werden hier mit unterschiedlichen Widerständen verschaltet und bilden mit den Pull-Up-Widerständen unterschiedliche Spannungsteiler. 4-5 Taster pro Eingang sollten problemlos möglich sein, es würden dann 6 oder 7 analoge Eingänge benötigt. Im Arduino Playground steht hierfür die „AnalogButtons“-Library zur Verfügung.Für den Controller wird aber auf alle Fälle ein Controller mit reichlich I/O-Ports benötigt, auch reichen die 512 Byte bzw. 1 kByte der kleineren Atmels nicht aus. Sinnvoll ist hier nur der Einsatz eines ATmega1280 oder 2560, für die Varianten und die Verfügbarkeit gilt das für die Rackeinheit bereits gesagte. Da nur ein Midi-Out vorgesehen werden muss, kann die Midi-Beschaltung aber deutlich einfacher ausfallen, so dass kein separates MIDI-Shield benötigt wird.
Soweit erstmal von mir für heute,
Gruß, Nils
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln