Hallo, habe da ein kleines Problem und hoffe das ihr mir da helfen könnt. Folgendes Scenario: Ich bin dabei einen MIDI-Controller für meine VST-Plugins zu bauen. Was ich habe: Einen Arduino Pro Mini ohne USB, 10 Potis, 1 Taster, 1 Switch. Software läuft und gibt über den Seriellen Monitor auch schön meine MIDI Bytes aus. Um nun die MIDI-Tauglichkeit zu testen habe ich mir ein USB-MIDI Kabel gekauft (ebay). Habe das Ding auseinander gebaut und den Tx Ausgang von meinem Pro Mini mit dem Rx Eingang von der Platine von dem MIDI-Kabel verbunden. Der USB-Seriell Chip ist ein CH345T also ein USB-Seriell Chip. MIDI IN/OUT Buchsen benötige ich nicht. Gekauftes Kabel angesteckt, Cubase gestartet an Potis gedreht.... Funktioniert perfekt. Mein Problem: Das Kabel ist ja nicht schlecht allerdings wird es von Windows als USB2.0-MIDI Gerät erkannt. Wenn ich nun mehrere solcher Controller baue (z.B. 8 Stück) habe ich 8 x USB2.0-MIDI Geräte. In Cubase tauchen diese dann auch in der Liste so auf. Ich hätte aber gerne das die Namen der Controller angezeigt werden. Ist das über eine änderung der .INF Datei möglich oder eher über die V-USB Lösung? Danke Stefan
Stefan M. schrieb: > CH345T Dieser Schrott kann weder SysEx noch Running Status korrekt empfangen. > Ich hätte aber gerne das die Namen der Controller angezeigt werden. MIDI hat keine standardisierte Möglichkeit, den Namen eines externes Gerätes zu übertragen. Der Name des USB-Gerätes ist "USB2.0-MIDI"; und der CH345 hat keine Möglichkeit, das zu ändern. > Ist das über eine änderung der .INF Datei möglich Nein, usbaudio.sys vertraut dem USB-Gerät. > oder eher über die V-USB Lösung? V-USB ist keine Lösung; damit is kein standardkonformes USB-MIDI möglich. Du solltest besser einen µC mit eingebauter USB-Unterstützung verwenden. Aber wenn du USB MIDI selbst implementierst, dann kannst du deinen Geräten beliebige Namen geeben.
:
Bearbeitet durch User
Danke für die Antwort. Bei USB gibt es doch verschiedene Klassen (AUDIO, HID, HUB etc..), kann ich das beeinflussen welche Klasse mein Gerät hat? Ist dieses mit einem ft232 Chip möglich? Der USB-Descriptor ist doch in dem USB Chip gespeichert (VID,PID, Class, Startpoint,Endpoint, etc...) dieser wird doch an den PC gesendet (oder ausgelesen) und dementspechend wird ein Treiber installiert. Bei den Steinberg CMC-MIDI Controllern (sind Controller für Cubase) erscheinen diese immer als Yahmaha USB MIDI (WDM) Gerät in dem Geräte-Manager. In Cubase selbst steht dann der Name des Controllers (z.B. CMC-PD oder CMC-AI) woher kommt der Name, vom Controller selbst? Grüße Stefan
Stefan M. schrieb: > kann ich das beeinflussen welche Klasse mein Gerät hat? Ja, mit dem Feld bInterfaceClass. > Ist dieses mit einem ft232 Chip möglich? Nein. > Yahmaha USB MIDI (WDM) Das ist der Name, den der Yamaha-Treiber sich selbst gibt. Du könntest anstelle des Standard-USB-MIDI-Protokolls das Yamaha-USB-MIDI-Protokoll verwenden, aber das würde dir auch nicht helfen. > In Cubase selbst steht dann der Name des Controllers > (z.B. CMC-PD oder CMC-AI) woher kommt der Name, vom Controller selbst? Wenn das die selbe Stelle ist, wo auch "USB2.0-MIDI" erscheint, dann ist das der Name aus dem USB-Deskriptor.
Wo finde ich das Feld bInterfaceClass bzw. wo kann ich dieses ändern? Komme ich mit einem MCP2200 weiter? Kann ich meinen Arduino so umprogrammieren das er bInterfaceClass weiter gibt bzw. die USB Descriptoren weiter gibt? Gruß Stefan
ich schrieb: > Stefan M. schrieb: >> kann ich das beeinflussen welche Klasse mein Gerät hat? > > Ja, mit dem Feld bInterfaceClass. Bitte beachte, dass dieses Feld den Treiber bestimmt, aber dass es nur beschreibt, welches Protokoll das Gerät spricht. Dieses Feld zu ändern ist nur dann sinnvoll, wenn du auch den Rest der Firmware änderst, so dass sie USB MIDI statt seriell (CDC) spricht. Stefan M. schrieb: > Wo finde ich das Feld bInterfaceClass bzw. wo kann ich dieses ändern? Im Quellcode der Firmware. > Komme ich mit einem MCP2200 weiter? Nein. Keiner der üblichen USB-seriell-Chips unterstützt das. > Kann ich meinen Arduino so umprogrammieren das er bInterfaceClass weiter > gibt bzw. die USB Descriptoren weiter gibt? Bei einem Arduino, der selbst kein USB spricht, ist das nicht möglich. Wenn du die USB-MIDI-Firmware nicht selbst schreiben willst, brauchst du einen Mikrocontroller, der nicht nur USB unterstützt, sondern schon USB-MIDI-Bibliotheken hat. Das wären entweder PSoC, oder AVR mit LUFA.
:
Bearbeitet durch User
Wenn du vor hast mehrere Midi Controller zu bauen, würde ich die AVR's weglassen und stattdessen ARM's nehmen. Ich selbst habe viel mit den maple mini clones (3-4 Euro auf aliexpress, bzw. alle anderen STM32F1 dev boards) gebastelt (u.a. midi controller, synthesizer). Vorteil für dich wäre, dass du deine gewohnte Arduino Umgebung nicht verlassen müsstet. Tip: stm32duino.com Als "Zuckerl" gibt es auch eine Variante der Repo, in der USB-MIDI von Haus aus implementiert wurde: https://github.com/libarra111/Arduino_STM32 D.h. mit einem 3 EUR Board, das dazu noch um etliches leistungsfähiger als ein AVR ist, kannst du ohne zusätzliche (USB) Hardware einen Midicontroller bauen. Hier eines meiner Videos, um nur eine der vielen Möglichkeiten zu zeigen: https://www.youtube.com/watch?v=-jvCRHCk7wQ (bitte nicht meine github repo verwenden, die ist out of date und in die von libarra eingeflossen) Liebe Grüße Matthias
:
Bearbeitet durch User
Hallo, danke für eure Antworten. Habe das Problem nun auf meinem Arduino Uno Board erstmal gelöst. Dort ist ein Atmega16u2 als USB-Controller verbaut den man umflashen kann. Habe nun mit dem HIDUINO-Projekt rumexperimentiert und siehe da das Ding taucht als USB-Audiogerät auf. Werde jetzt mal ein bisschen an dem Code rumbasteln und schauen was dabei rauskommt. Ist es eigentlich besser alles von einem Chip erledigen zu lassen (USB-MIDI(seriell) und Controller-Steuerung) oder von zwei getrennten Chips? @Matthias: Der Ansatz hört sich gut an, werde ich mich mal informieren. Danke
Soweit ich verstanden habe, wird der Atmega16u2 als USB Controller unter dem HIDuino Projekt verwendet und kommuniziert seriell mit dem ATmega328. Das ist eher schlecht, da der 328er nur eine Hardware UART Port Schnittstelle hat. D.h. du müsstest mit einer Software Serial Library die MIDI UART Verbindung bewerkstelligen. 31250 Baud sind zwar - auch für einen AVR - recht gemütlich, aber per Software Serial hätte ich meine Bedenken bzgl. Datenstreams wie z.B. SYSEX (abgesehen von der benötigten Buffergröße, da ist bei 3KB Ram auch die Fahnenstange schnell erreicht). Zum Herumprobieren ist die Konfiguration sicher nett, aber ineffizient. Wenn du unbedingt bei AVR bleiben möchtest, wäre ein Arduino Nano (bzw. ein Clone mit einem "echten" Atmega8/16u(!) und nicht mit einem CH340 chip) eine Möglichkeit. Da würde die unnötige Verbindung Atmega16u2 <> Atmega328 wegefallen. Du müssest nur im Datenblatt nachsehen, ob die USB Pins sich nicht mit den Serial Pins decken. Mit deinem Pro Mini könntest du nur einen Midicontroller ohne USB bauen. Wie gesagt, wenn du vor hast mehrere Midi Controller zu bauen, dann rate ich dir dringend den Umstieg auf einen leaflabs maple mini clone. Für 5 Boards zahlt man gerade 18 Euro (Versandkostenfrei) = 3.63 EUR pro Stück. http://www.aliexpress.com/item/5PCS-LOT-leaflabs-Leaf-maple-mini-ARM-STM32-compatibility/1400682373.html (ich bevorzuge die BAITE Modelle) Die Eckdaten sehen dann gleich ganz anders aus: 72MHZ 64/128kB Flash 20KB RAM 7 Timer 3x (!) USART DMA massig Pins mit PWM und ADC http://www.st.com/web/catalog/mmc/FM141/SC1169/SS1031/LN1565/PF189782?sc=internet/mcu/product/189782.jsp Bei meinem YT Beispiel habe ich übrigens ein billiges SPI ILI9341 TFT Display (sogar mit Touchscreen) verwendet, dazu haben wir eine angepasste Library mit DMA Unterstützung, die unglaublich flott und effizient ist. Da könntest du einen Midicontroller mit Touch-TFT plus Sequencer bauen - für den Preis eines originalen Nanos! einziger Drawback: 3.3V da müsste man nur bei der Seriellen MIDI Schnittstelle einen Logic Converter zwischenschalten.
Matthias D. schrieb: > du müsstest mit einer Software Serial > Library die MIDI UART Verbindung bewerkstelligen. Wenn man sie denn haben will. Bei diesem Controller ist das nicht der Fall.
:
Bearbeitet durch User
Clemens L. schrieb: > Wenn man sie denn haben will. Bei diesem Controller ist das nicht der > Fall. Ok, beim ATmega32u4 belegen D+/D- nicht die gleichen Pins wie TX/RX. Lt. Thread hat Stefan dies nur am UNO ausprobiert, d.h. dort ist ja der 32u4 "nur" der Controller für den Atmega328 und die sind seriell verbunden, somit ist gleichzeitig(!) USB-Midi und USB-Seriell nicht möglich (ohne soft serial). Ahilfe würde z.B. ein Arduino Micro als Standalone Lösung schaffen. Die gibt's ab 3.50 auf Ali --> http://www.aliexpress.com/item/New-Pro-Micro-ATmega32U4-5V-16MHz-Replace-ATmega328-for-Arduino-Pro-Mini/2038555516.html Man muss nur aufpassen, dass man nicht so einen mit CH340 "erwischt" aber mein Link dürfte lt. Feedback ok sein...obowohl man um den gleichen Preis nen maple mini bekommt....
:
Bearbeitet durch User
Mit "Controller" meinte ich den MIDI-Controller insgesamt. Das ist nur Poti-zu-USB-MIDI, ohne einen 'echten' MIDI-Port.
Ok, hab ich dann wohl missverstanden, dachte Stefan meinte er möchten einen MIDI Controller bauen, der sowohl a) MIDI seriell und b) MIDI USB kann. Nichtsdestotrotz würde ich, wenn er bei AVR bleibt, den o.g. Micro empfehlen. Zum Rumprobieren geht natürlich auch ein auf HIDUINO geflashter UNO ohne Einschränkung, da müsste halt nur das ganze "Drumherum" (Potis, Schalter, LED's...) am 328er ausgelagert sein, da der 32u nicht die Pins nach außen bringt.
Hallo allerseits, schön von euch mir als Anfänger zu helfen. Da ich wahrscheinlich garnicht erwähnt habe was ich eigentlich vorhabe hier mal mein Plan. Mich nervt es einfach das Softsynth-Plugins immer über die Maus bedient werden müssen also habe ich mir gedacht "Hey bau dir einen Controller". Gelesen,Gegoogelt und fündig geworden das man das einfach mit den Arduino-Boards bauen kann. Arduino Uno bestellt, Potis, LED´s, Widerstände etc.. Schaltung gebaut mit 19 Potis, 3 Schaltern und einer LED, wie beim Plugin. Arduino Programmiert und mit der Hairless MIDISerial und MIDI-OX Software getestet. Die MIDI-Befehle (3 Bytes) erzeugt mein Arduino. Irgendwann wollte ich das natürlich ohne die Hairless MIDISerial Software haben also musste ein USB-Dings her. Erst mal ein USB-MIDI Kabel gekauft und getestet. Jett hätte ich eben gerne das wenn ich mehrere Controller hab diese auch mit einem Logischem Namen in Cubase auftauchen., deßhalb die Lösung mit dem Atmega16u2 was ja sehr einfach ist. MIDI-IN/OUT benötige ich nicht auch kein SysEx. Mein Plan: einen Atmega 8/16u2/4 als USB-Controller und einen Atmega168 oder 328 oder was auch immer zum abfragen der Potis/Schalter und zum ansteuern der LED(s). Somit habe ich einen programmierbaren USB-Controller (Namen uweisbar wie er unter Windows auftauchen soll. Was ja sehr einfach ist mit HIDUINO (firmware einfach neu kompilieren) und einen extra Controller den ich über die Arduino IDE programmieren und flashen kann (Arduino als ISP). Was meint Ihr? Gruß Stefan
Hm. Ich finde das ganze HIDUINO Projekt reichlich kompliziert: Man benötigt einen UNO, wo der USB-Controller (32u4) mit dem USB-Midi stack geflasht wird, der dann mit dem 328er am Board kommuniziert. Um jedoch wieder den 328er zu flashen muss man entweder die Firmware des 32u4 auf "normal" flashen oder man flasht den 328er mittels USBasp dongle (oder was man auch immer verwendet). Macht in der DEV-Phase 3 Geräte. Ein "reiner" 32u4 Betrieb ist nicht vorgesehen. Hab mir das HIDUINO Projekt mal kurz angesehen und bin auf folgendes gestoßen: https://github.com/rkistner/arcore Dies ist ein ähnliches Projekt nur greift es auf "reine" 32u4 Boards wie den Leonardo oder auch - den von mir vorher verlinkten - Micro zurück. D.h. du wärst nur bei einem Board pro Controller und du könntest damit kostengünstig mehrere verschiedene Controller bauen, die auch alle einen anderen USB Namen haben. Für einen reinen Midicontroller sollte die Leistung des 32u4 ausreichen. Potis mit 4051er multiplexen, Schalter/LED's mit welcher Multiplexmethode auch immer. Sollten auch noch genug Ressourcen für ein Display (Nokia 5510 oder klassische 16x2 / 20x4 Matrixdinger (via I2c)) übrig sein - wenn gewünscht. Als Grafikdisplay (128x64) habe ich z.b. ein ST7920 (so gegen 5-7 EUR auf ali) verwendet, braucht überhaupt nur 2 pins. --> Siehe Video meiner Synth Oberfläche (ist auch noch ein zusätzliches OLED dabei): https://www.youtube.com/watch?v=TVV4jb7tQec
Danke Matthias für deine Tipps. Es wird ja nicht auf einem Arduino Board bleiben. Wollte natürlich schon ne eigene Platine machen bzw. evtl. Modular aufbauen, also Mainboard (USB-Controller und Prozessor) und dann Multiplexer für Potis/Schalter etc. und über Platinenverbinder usammenstöpseln. Trotzdem danke für den Tipp mit dem Link werde es mir mal anschauen. HIDUINO Kompliziert...naja..hab gestern 5 Std. rumgemacht bis es gelaufen ist. Aber habe um ersten mal über ISP geflashed und zum ersten mal AVRDude benutzt und zum ersten mal Kompiliert also eigentlich bin ich ein blutiger Anfänger :). Habs aber hinbekommen. Zum Programmieren kann ich ja immer noch mein anderes Arduino Uno Board als ISP-Programmer nutzen (waren bei Ali sehr günstig). Bin halt eher der Typ "Lass den einen Prozessor das eine machen und den anderen das andere". Nicht das der eine 32u4 noch durcheinander kommt wenn er beides (USB und Potis Muxen) machen muss da ja beides in der Schleife laufen muss (denk ich mal, also USB meine ich). Gruß Stefan
glaub mir, nur durch Poti auslesen und ein bisschen USB_MIDI (ohne sysex) wird sich ein 32u4 unglaublich fadisieren :) Eine andere Möglichkeit ist mir auch eingefallen: Ein HIDUINO geflashtes Board als Master und die einzelnen Midicontroller mit einen normalen Pro Mini. Das Ganze als I2c Verbund. Da kannst du so viele Controller anbauen, wie du möchtest. Hatte so etwas mal bei einem Synthesizer, da war jeder Pro Micro eine Stimme als I2c slave und wurden in einem 328er als I2C Master zusammengefasst - quasi als Schaltzentrale. Damit hättest du dein modulares Prinzip mit Vierpolsteckern (GND/VCC/SCK/SCL)
:
Bearbeitet durch User
Ok,Ok........mal langsam bin schon etwas älter:), erst mal langsam anfangen. Ich glaube ich bau mal einen zusammen, ohne Arduino Boards sondern mit eigener Platine, und teste es einfach mal. Die Verbundlösung werde ich mal im Hinterkopf behalten, d.h. aber nur einen USB-Controller und nur ein USB-Device unter Windows oder? Komme halt aus der Zeit wo man noch am Synthi an den Potis rumgeschraubt hat was ich persönlich besser finde als immer nur mit der Maus rumzuklicken. Auch eine VU-Meterbridge über das Mackie Protokoll wäre noch was... :) Aber ich fang mal langsam an.....
Ich würde auch einmal sagen, zuerst mal einen Prototypen bauen und dann siehst du auch gleich, ob's mit der Haptik passt. Ich gebe nur zu bedenken, dass "normale" Potis sich halt die Einstellungen nicht merken. Das ist bei, sag ich mal Cutoff, Reso, ADSR (also 6 Reglern) kein Problem, wenn du aber die Oberfläche eines VSTi Instrumentes nachbaust und 20 Regler hast schon. Dazu gibt es mehrere Lösungsansätze, die meisten werden jedoch daran scheitern, dass du von vielen Plugins keine Rückgabeparameter bekommst. Beispiel (als Idealfall): Du hast einen total simplen VSTi-Synth: Cutoff, Reso, ADSR. Beim Patchwechsel am PC übeträgt er via Midi diese 6 Parameter an den Midicontroller. Somit "weiß" der Controller folgendes: den Parameter-Istzustand (wo steht das Poti physisch) und den Parameter-Sollzustand (vom VSTi-Plugin erhalten) Programmiertechnisch lässt sich dies sehr elegant mittel "takeover" lösen: Das Poti tut solange nichts, bis sich der Parameter-Istzustand mit dem Parameter-Sollzustand deckt, erst dann "greift" das Poti. (Diese Technik hab ich erstmals am Nord Modular in den 2000ern gesehen). Eine weitere Methode wäre die Potis durch Drehimpulsgeber (Encoder) zu ersetzen, ist jedoch ohne LED-Kranz bzw. genauen Displayangaben unspaßig, weil man am Controller nicht weiß, wo man sich befindet. Novation hat IMHO die Sache am elegantesten gelöst gehabt, indem sie die ganzen Plugins in einen eigenen Wrapper (Automap) gelegt haben und somit die volle Kontrolle über alle Parameter hatten (haben?). Apropos Potis: 100nf (Keramik) zwischen Schleifer(=dort wo du es abnimmst) und GND löten. Erspart dir programmiertechnisch einiges an Durchschnittsberechnungen (du willst ja nicht, dass die Werte permanent springen) eine VU-Meterbridge wäre sich eine spannende Aufgabe, dazu kenn ich aber das Mackie-Protokoll zuwenig - ist aber definitiv machbar!
Das mit dem "merken" der Potis ist natürlich klar. An Encoder hab ich auch schon gedacht aber klackert mir u sehr, kein analog Feeling :). Mit den VST´s geb ich dir auch recht müssen natürlich die aktuelle stellung melden. Der Ansatz mit der Nord Modular Technik hört sich interessant an. Geb mal bei Googl "Mackie HUI Protokoll" ein, das zweite Ergebniss ist ein PDF mit der Erklärung der Protokolls. Trotzdem danke für die Vorschläge, werde jetzt mal die Teile bestellen und einen Prototyp bauen. Mit den Arduino Borad funzt es ja schon mal. Jetzt nur noch auf eigene Platine auslagern und testen. Danke für den Tipp mit den Kondensatoren. Gruß
Die Problematik ist auch eine andere: Der DUE ist ein vollkommen überteuertes Stück Hardware, das dazu noch in allen Belangen (leider!) gegen seine Mitstreiter aus der 32Bit Ecke (beziehe mich auf Arduino IDE kompatibel) abstinkt: Sei es Chipkit mit dem Microchip 32MX, der unglaublich gut supportete Teensy oder die Preiskracher von STM (ein STM32F103 maple mini clone kostet gerade mal 4 Euro, ordentliche def-Boards (mit STM32F103VZ) gegen 12 Euro und die ganze STM32F103 Reihe ist via stm32duino vollkommen unterstützt). Das war der Grund warum ich mich vollkommen vom DUE abgewandt habe.
Hab mein UNO für 5,16 bei ebay gekauft(artnr: 381374486073) Hat zwar etwas gedauert kam aber an. :) Beschäftige mich übrigends mit dem Thema seit Oktober 2015, da hab ich meine Arduinos bekommen, von daher hab ich noch nicht viel Erfahrungen mit anderen Boards sammeln können. Werde mich aber mal weiter umschauen was es sonst noch so gibt. Danke
:
Bearbeitet durch User
Sorry, mein voriger Beitrag gehört zu einem gänzlich anderen Thema, hatte nur zu viele Fenster gestern offen. Bzgl. ebay Kauf: Ich hoffe, dass das ein "echter Clone" ist, d.h. das das nicht nur ein Symbolfoto ist und einen CH340 statt einen 32u4 besitzt! Ich würde noch einmal beim Händler nachfragen! Abgesehen davon kann ich nur raten, bei Aliexpress zu bestellen. Im Gegensatz zu EBay existiert dort ein Käuferschutz. Wenn man dort kauft, kommt das Geld zuerst auf ein Aliexpress "Treuhandkonto" und ERST nachdem man die Ware akzeptiert, bekommt man das Geld. Seit 2014 habe ich mehrere Hundert Käufe auf Ali getätigt und hatte in den seltensten Fällen Probleme und immer das Geld zurück bekommen.
:
Bearbeitet durch User
Ja ist ein echter Clon, benutze ihn ja schon :). Bei Ali hab ich auch schon bestellt. Stimmt schon wobei ich bei ebay auch noch nie Probleme hatte.
So..... wollte mich mal wieder zu dem Thema melden. Nachdem ich mir noch schnell ein Belichtungsgerät gebastelt hab, hab ich auch gleich mal mein Prototyp gebaut. Als USB Controller den atmega 16u2 mit eigener Software, so dass es als USB-MIDI Gerät erkannt wird und als Controller für Potis, Schalter etc. ein atmega328P. Was soll ich sagen "Läuft". Im Cubase sehe ich das Teil jetzt als "Name-Controller" und nicht als "MIDI-USB2.0". @ Matthias: Habe deinen Rat befolgt und mir mal Maple Minis bestellt.... :) Danke für eure Tipps Gruß Stefan.
Glückwunsch Stefan! Wenn du Hilfe brauchst mit dem Maple mini, ich bin im stm32duino.com Forum unter "madias" drinnen!
Stefan M. schrieb: > Als USB Controller den atmega 16u2 mit eigener Software, so dass es als > USB-MIDI Gerät erkannt wird und als Controller für Potis, Schalter etc. > ein atmega328P. Was soll ich sagen "Läuft". Im Cubase sehe ich das Teil > jetzt als "Name-Controller" und nicht als "MIDI-USB2.0". Hallo, Ich möchte etwas Ähnliches bauen, allerdings anders herum: MIDI-Controller (fertig gekauft) über USB an eine Selbstbau-Orgel anschließen und umgekehrt auch aus Cubase heraus die Orgel steuern. Beitrag "Analoge Orgel mit USB-MIDI steuern"
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.