Tube-Town Forum

Technik => Tech-Talk Design & Konzepte => Thema gestartet von: Germy am 22.04.2016 09:42

Titel: MIDI Controller für 3 Byte-Befehle
Beitrag von: Germy am 22.04.2016 09:42
Moin Ihr Lieben,

jeder von Euch kennt das Problem: Hat man mehr als drei Kanäle in einem Amp und jede Menge an schaltbaren Optionen,

kommt der Punkt, wo man über MIDI nachdenken muss.

Die Lösung von Dirk hier im Shop finde ich schon einmal genial.

Warum? Es ist extrem schwer eine Universallösung für dieses Problem anzubieten, da vieles sich nur über Softwareänderungen realisieren

lässt. Das Dirk nicht auch diesen Service anbieten kann, ist mehr als logisch. Der MIDI Controller hier im Shop bietet für den Preis schon

sehr viel an Möglichkeiten und deckt sicher 95% der Anwendungen ab.

Ich habe nun das Problem gehabt, dass ich eventuell auch 3-Byte-Befehle verarbeiten muss um z.B. ein Volumepedal über MIDI zu

betreiben. Also bin ich vor 2 Jahren angefangen und habe mich nach 30 Jahren mal wieder in die digitale Welt begeben.

Die Foren in diesem Bereich sind nicht immer erschöpfend, denn die Freunde des Bit und Byte sind nicht so..... ich sag es mal vorsichtig ..

nett und geben oft nur Tips oder Hinweise die entweder in Sackgassen führen oder helfen einem nur mit Fragmenten des eigentlichen

Themas. Was MIDI angeht wird die Welt ohnehin sehr dünn. Da ich nicht mehr die Lust habe (oder zu doof bin  :facepalm:) CC+ zu

verstehen, habe ich es mit mit BASCOM als Programmiersprache versucht. Als µP kam nach langer Überlegung nur noch der ATmega32

zur Auswahl, da er über jede Menge Ports verfügt und ich nicht nachher an Erweiterungen stricken muss oder irgendwelche Encoder

für Tastaturen verwenden muss. Nach vielen versuchen auf Rasterplatine (ich hasse das so!!!) habe ich nun die erste Version eines MIDI

Controllers fertig. Er verfügt über einen Anschluss für ein LCD-Display und besitzt einen Treiber für 8 Relais an Bord. Da ich ohnehin immer

über stabilisierte 5Volt in meinen Netzteilen verfüge, habe ich die Stabilisierung weggelassen. Insgesamt habe ich 14 Eingänge, die

universal beschaltet werden können. Eine weitere Version (Corne brachte mich drauf ..... hätte ihn ja gleich fragen können!  :help: ) ist in

Arbeit, bei der die Platine als MIDI-Empfänger oder als Sender benutzt werden kann. Das spart PCB und wird billiger.

Hier die ersten Ergebnisse.

Gruß Germy
Titel: Re: MIDI Controller für 3 Byte-Befehle
Beitrag von: Dirk am 22.04.2016 09:59
Hallo,

ganz verstehe ich das Posting nicht. Das ist jetzt eine Vorstellung des Projektes oder geht es um ein grundsätzliches Problem mit der Verarbeitung der MIDI Befehle ?
Warum ein neues Board erstellt wurde ist mir nicht ganz klar. Ging es rein um das Display ?
Das Board aus dem MIDI-Switcher kann man bei Bedarf ebenfalls um programmieren und ob nun 2 Byte oder 3 Byte pro MIDI Msg verarbeitet werden ist recht egal.

Gruß, Dirk

PS: MIDI ist zwar Oldschool, aber wenn man bedenkt wie lang es sich schon in dieser Version hält... Respekt. Das liegt vermutlich auch daran, dass man sich erst einmal ordentlich Gedanken zu der Konzeption machen musste bevor es umgesetzt wurde.
Titel: Re: MIDI Controller für 3 Byte-Befehle
Beitrag von: Germy am 22.04.2016 11:35
Hallo,

ganz verstehe ich das Posting nicht. Das ist jetzt eine Vorstellung des Projektes oder geht es um ein grundsätzliches Problem mit der Verarbeitung der MIDI Befehle ?
Warum ein neues Board erstellt wurde ist mir nicht ganz klar. Ging es rein um das Display ?
Das Board aus dem MIDI-Switcher kann man bei Bedarf ebenfalls um programmieren und ob nun 2 Byte oder 3 Byte pro MIDI Msg verarbeitet werden ist recht egal.

Gruß, Dirk

PS: MIDI ist zwar Oldschool, aber wenn man bedenkt wie lang es sich schon in dieser Version hält... Respekt. Das liegt vermutlich auch daran, dass man sich erst einmal ordentlich Gedanken zu der Konzeption machen musste bevor es umgesetzt wurde.

Lieber Dirk,

ich dachte, dass dieses Thema einige Mitglieder des Forums interessieren könnte. Wenn Du aber der Meinung bist, dass es überflüssig ist, so werde ich selbstverständlich schließen.

Gruß Germy
Titel: Re: MIDI Controller für 3 Byte-Befehle
Beitrag von: Dirk am 22.04.2016 11:50
ich dachte, dass dieses Thema einige Mitglieder des Forums interessieren könnte. Wenn Du aber der Meinung bist, dass es überflüssig ist, so werde ich selbstverständlich schließen.

Nein, ist also eine Projektvorstellung.

Mal eine Frage zum Display: braucht man das wirklich ? Ich hatte am Anfang auch die Idee ein Display bei dem Midi-Switcher einzusetzen aber ich habe mich dann dagegen entschlossen, weil ich es für überflüssig erachte habe und man auch auf den deutlich grösseren µC sinnvollerweise hätte gehen müssen.

Gruß, Dirk


Titel: Re: MIDI Controller für 3 Byte-Befehle
Beitrag von: Germy am 22.04.2016 12:33
Mir war es lieber ein Display zu verwenden, damit ich sehe, was passiert.

Vom Design her wirkt das bei einem Tube-Amp etwas komisch und ich habe noch keine richtige Ahnung wie ich das vernünftig in der Front vom Chassis unterbringe. Ich habe mit extra ein 8 x 2 Display besorgt, damit es nicht so erschlagend wirkt. Da ich bei mit den MIDI-Kanal einstellen kann, hatte ich schon Probleme ohne Display zu arbeiten. Ein BDC Codierschalter auf der Platine wäre sicher auch noch eine Lösung gewesen, aber dann hätte ich wieder 4 Ports verbraucht.

Den ATmega32 habe ich auch deshalb genommen, damit ich nicht mit Ports sparen muss.

Zu den 3 Byte Befehlen:

Wenn man aus dem ATmega ein DAC haben will, z.B um ein regelbares Volume zu realisieren (mit einem VTL geht das), gibt es zwei Möglichkeiten ohne PWM.

1. Man benutzt ein I2C DAC, dann benötigt man nur 2 Ports, aber braucht einen Baustein mehr.

2. Man benutzt 8 Ports (0-7) und legt einfach ein Array aus Widerständen dahinter. Sehr einfache Möglichkeit. Man hätte dann von

0-255 zu regeln. MIDI sieht ohnehin nur von 0 - 127 vor - also kein Problem. Da ich keine Audiosignale verarbeite, kann ich auch das

Quantisierungsrauschen vernachlässigen.

Gruß Germy

Titel: Re: MIDI Controller für 3 Byte-Befehle
Beitrag von: Dirk am 22.04.2016 14:49
Jetzt kommt etwas Licht ins Dunkel: Dir geht es mit den "3-Byte" Befehlen nicht in erster Linie um die poplige Verarbeitung, also ControlerChange statt ProgramChange sondern Du willst wirklich damit "analoge" Bausteine, in diesem Fall einen Optokoppler, ansteuern. Finde ich interessant ! Habe ich noch nicht ausprobiert, welcher I2C Wandler hattest Du raus gesucht ?

Gruß, Dirk
Titel: Re: MIDI Controller für 3 Byte-Befehle
Beitrag von: Germy am 22.04.2016 15:58
Ich habe mir gestern ein paar PCF8591 bestellt. Natürlich aus China, denn nur da bekomme ich die guten original Phillips. Hinter dem Ausgang muss man noch einen Treiber packen, denn die 20 mA Belastbarkeit sind doch etwas gering.

Mit einem I2C könnte das natürlich auch mit 3-Byte-Befehlen mit Deinem Bausatz klappen.

Noch ein Wort zu MIDI.

Ich gehöre ja zu der Generation, die noch versucht hatte mit 40-poligen Flachbandkabeln und einem SinclarZX81 dem Moog zu neuem Leben zu verhelfen. Als die MIDI-Norm geschaffen wurde, trafen sich alle bekannten Entwickler der Synthi-Scene zu einem Kongress und entwickelten gemeinsam diese Norm. Gut, die Buchse war eine Fehlentscheidung, aber das Datenformat war einfach genial und perfekt strukturiert. Diese Zusammenarbeit war nicht nur für die Firmen fruchtbar, sondern auch für die gesamte Musikscene und deren Kreativität. Für 6,00DM Bauteileaufwand konnte man nun sich eine MIDI-Interface für den C64 selber stricken. Mit dem Atari ST wurde die Welt schon größer. Roland Jupiter 4 habe ich damals noch selbst mit einem MIDI-Kit aus USA umgerüstet.

Für so einfache Steuerungsaufgaben, wie des Schalten von ein paar Relais oder Übertragen eines Volume oder Wah-Pedals ist MIDI

völlig ausreichend und doch sehr Störungsempfindlich.

Gruß Germy
Titel: Re: MIDI Controller für 3 Byte-Befehle
Beitrag von: Dirk am 22.04.2016 16:02
völlig ausreichend und doch sehr Störungsempfindlich.

Störungsempfindlich ? Wo hast Du Probleme gehabt ?

Gruß, Dirk
Titel: Re: MIDI Controller für 3 Byte-Befehle
Beitrag von: Germy am 22.04.2016 16:03
Ich meinte natürlich unempfindlich  :facepalm:

Mit I2C kann man natürlich auch ein LCD-Display betreiben ohne 6 Ports zu verbrauchen.

LCD-I2C Adaptermodul mit PCF8574P wäre da eine Möglichkeit. Wäre doch eine feine Erweiterung.

Gruß Germy
Titel: Re: MIDI Controller für 3 Byte-Befehle
Beitrag von: Stone am 22.04.2016 17:41
Hallo Germy

Vielen Dank für die Vorstellung.

Ich denke, es ging nicht darum, eine andere Lösung in Frage zu stellen, sondern eine weitere zu präsentieren ... :)  :topjob:

Sofern die Möglichkeit besteht, würde ich gern einen Aufbau erwerben - Display ist nicht zwangsläufig ntowendig, würde mich aber in punkto Preis generell auch interessieren.

Besteht die Möglichkeit, einen Aufbau zu bekommen?

Gruß, Stone
Titel: Re: MIDI Controller für 3 Byte-Befehle
Beitrag von: Athlord am 22.04.2016 20:54
Hi Germy,
sehr interessant.
Ich verwende ja immer die Midi-OEM von Diezel.
Kann man Deine auch als Basis für einen Footkontroller verwenden?
Da macht das Display dann auch richtig Sinn...  ;)
Gruß
Jürgen
Titel: Re: MIDI Controller für 3 Byte-Befehle
Beitrag von: Germy am 23.04.2016 00:10
Hi Jürgen,

Als Footcontroller eignet sich diese Platine noch nicht, aber die nächste ist eine Universallösung mit der man senden und empfangen realisieren kann.

Im Anhang ein Schaltplan für einen Footcontroller mit Display.

Gruß Germy
Titel: Re: MIDI Controller für 3 Byte-Befehle
Beitrag von: Athlord am 23.04.2016 07:45
Moin Germy,
Danke..
Gruß
Jürgen
Titel: Re: MIDI Controller für 3 Byte-Befehle
Beitrag von: corne am 23.04.2016 09:37
Guten Morgen liebe Bastler  :gutenmorgen:

Ich hätte zu dem Thema auch gleich mal noch eine Frage:
Und zwar habe ich mir mit Hilfe Germy's Platine und ein paar kleinen Mods darauf zuerst mal einen MIDI-Sender gebaut um in die Programmierung einzusteigen. Gesendet habe ich auch schon erfolgreich, und zwar an Dirks Platine, die ich mir zu Testzwecken auch bestellt hatte. Klappt alles wunderbar, ich kann auf Dirks Platine die Eingänge nach belieben wählen und speichern und die Speicherplätze per Midi wieder abrufen.
Kann ich auch Befehle per Midi senden, die mir auf Dirks Platine einzelne Funktionen, speziell die Ausgänge 5-8 schalten ? (toggeln)
Ziel: Ich möchte Speicherplatz xy aufrufen, und dann z.b. per Midi-Controller eine Sonderfunktion (z.B. FX-Loop oder Master A/B) im Betrieb schalten können.
Brauche ich hierfür 3Byte ? Muss ich den Empfänger umprogrammieren ?
Vielen Dank für Euren Input  ;D
gruss, corne
Titel: Re: MIDI Controller für 3 Byte-Befehle
Beitrag von: Germy am 23.04.2016 10:29
Moin Corne,

warum speicherst Du das nicht im Sender ab?

Lass doch die Schaltfunktionen im Empfänger, wie sie sind. Das geht dann natürlich mit 2-Byte Befehlen.

Dazu benötigst Du nur ein und aus (1 - 0).

3-Byte-Befehle sind Controller-Befehle die einen Wert 0-127 mitsenden die den Parameter der analogen Einstellung darstellen.

Gruß Germy

Titel: Re: MIDI Controller für 3 Byte-Befehle
Beitrag von: corne am 23.04.2016 10:51
Moin Germy,

Was nützt es mir denn, die Werte im Sender zu speichern, wenn ich einen Controller haben will, den ich universal auch an andere Amps mit anderen Funktionen anstöpseln will ? Ok, man könnte im Sender sagen, pro Amp eine Bank, macht 127 Amps mit jeweils 127 Speicherplätzen.
Aber das non plus ultra ist das nicht ...

So wie ich das sehe, komme ich um eine Empfänger-Programmierung nicht drum herum ... klar, dann reichen auch 2 Byte.
schönes Wochenende und gute Besserung @germy
Titel: Re: MIDI Controller für 3 Byte-Befehle
Beitrag von: Germy am 23.04.2016 11:05
Hi Corne,

danke, aber alles wieder Ok.

Dann musst Du wohl in den sauren Apfel beißen und den Empfänger komplett neu programmieren.

Gruß Germy
Titel: Re: MIDI Controller für 3 Byte-Befehle
Beitrag von: Dirk am 23.04.2016 20:13
Kann ich auch Befehle per Midi senden, die mir auf Dirks Platine einzelne Funktionen, speziell die Ausgänge 5-8 schalten ? (toggeln)

Derzeit nicht. Dieser Punkt wurde schon mehrfach angefragt, doch leider bin ich nicht nicht dazu gekommen, diesen um zu setzen.
Bei dem normalen Midi-Switcher mach dieses Funktion auch nur Sinn bei den Ausgängen 5-8 (ok, könnte man drüber streiten), bei der Looper-Version eigentlich bei allen Ausgängen.
Realisiert wird dies mit CC-Befehlen, also Controler Change und dann einem Wert wobei ein Wert grösser als 64 = EIN und ein Wert kleiner 65 = AUS bedeutet. Zumindest in der Theorie.
Die Frage die sich hierbei stellt ist, welche Controller man hierfür verwendet. Controller 7 z.B. ist Lautstärke per Midi-Definition. Könnte man nehmen für Ausgang 7, da in dem Midi-Switcher Lautstärke kein Thema ist. Wie das bei anderen Herstellern realisiert wurde und welche Controller Verwendung finden kann ich leider nicht sagen, da ich so tief noch nicht in die Details gegangen bin, aber so wie beschrieben wird es grundsätzlich gemacht.

Ggf. kann hierzu jemand anderes mehr sagen oder ein paar Vorschläge geben. Nicht alles was auch in der Praxis umgesetzt wurde muss auch gut sein.

Programmtechnisch lässt sich das sogar recht schnell und einfach realisieren - sofern man die Definition der Controller zu den Ausgängen fest vorgibt. Und ja, hier sind 3 Byte im Spiel. Siehe https://de.wikipedia.org/wiki/Musical_Instrument_Digital_Interface - Abschnitt Controller

Gruß, Dirk



Titel: Re: MIDI Controller für 3 Byte-Befehle
Beitrag von: carlitz am 25.04.2016 13:08
Hallo,

gerade für einen Foot Controller zur Steuerung einzelner Amp Funktionen (Boost an/aus, Bright an/aus, Tube/Silikon Gleichrichter) macht es viel mehr Sinn CC Messages zu verwenden.

Ich habe dies in meinen Amps auch gemacht und die Funktionen entsprechend im Controller abgelegt (welcher dann auch mit der TT Platine funktioniert).

@Dirk: Überleg doch mal, ob Du evtl. eine Variante der Platine in das Programm aufnimmst, welche so etwas dann anbietet.
Titel: Re: MIDI Controller für 3 Byte-Befehle
Beitrag von: Nils H. am 25.04.2016 13:50
Das gerät jetzt zwar leicht OT, aber für Floorboards, die keine CC senden können, macht es unter Umständen Sinn, dass der Empfänger sowohl auf CC als auch auf PC hört. Man muss mit den PCs halt alle möglichen Kombinationen abdecken. Bei einem "dummen" Looper ohne Presets mit vielen Loops sicher schwierig, aber für größere Loopersysteme empfiehlt sich eh ein etwas schlauerer Controller als einer, der nur dumm PCs senden kann. Oder eben ein schlauer Looper mit Presetsystem (mein eigener Looper gehört zur Gruppe der "dummen", der hört nur auf CCs und kann keine Presets speichern).

Im Falle meines letzten Amps habe ich das wie folgt programmiert: Der Amp reagiert auf 6 PCs (0 bis 5) und ruft darüber die sechs möglichen Kombinationen ab (Clean, Crunch und Lead mit zwei Mastern). Andererseits habe ich sechs CCs hinterlegt, auf die der Amp reagiert:

- je einen CC für Clean, Crunch, Lead, Wert über 63 bedeutet Kanal aktivieren, Wert <= 63 wird ignoriert; das ist für MIDI-Controller, die Tastergruppen bilden können, und für den Fußschalter, den ich noch bauen will, der für jeden Kanal einen Taster haben soll.
- zusätzlich zwei "Toggle"-CCs, die arbeiten wie ein angeschlossener Stereo-Fußschalter: Crunch On (Wert über 63)/Off (<=63) und Lead On/Off (dito)
- und schließlich ein "Toggle"-CC, um zwischen den zwei Mastern umzuschalten.

Die CCs habe ich frei gewählt. Es gibt ja die oben genannte Standardzuordnung, an die ich mich aber meines Wissens nach nur halten muss, wenn mein Gerät GM-kompatibel sein soll. Ansonsten kann ich machen, was ich will

Viele MIDI-Looper benutzen CCs ab 80 für die Loops (ich hab's bei meinem Midilooper auch so gemacht, nutze also 80 bis 91 für die 12 Loops und 92 bis 97 für die sechs Schaltausgänge)), aber Vorschriften, was man benutzen "darf" oder "muss" gibt es mWn nicht. Die GCX-Looper z.B. nutzen zwei CC-Bereiche (80+ für toggle/latching, irgendwas in die 90er für momentary), um die Loops entweder momentary oder latching schalten zu können.

Gruß, Nils
Titel: Re: MIDI Controller für 3 Byte-Befehle
Beitrag von: Germy am 25.04.2016 19:15
Moin Niels,

wäre schön, mal eine eigene Norm dafür zu schaffen. Ich bin dabei! Dann wäre man ja kompatibel.

Gruß Germy
Titel: Re: MIDI Controller für 3 Byte-Befehle
Beitrag von: Dirk am 25.04.2016 20:17
Laut Midi-spec sind die CC 20-31,52-63 und 80-90 Kandidaten und 102-119 komplett frei (wobei ich nicht weiss, ob diese auch von den Floorboards unterstützt werden). Man könnte somit in dem Midi-Switcher die Ausgänge 5-8 auf die CC 85-88 legen und diese dann per CC ein und ausschalten, unabhängig vom Preset.
Weiterhin könne man die Ausgänge 1-4, welche für die jeweiligen Kanäle gedacht sind, auf die CC 81-84 legen, womot dann ebenfalls eine direkte Kanalumschaltung im jeweiligen Preset selbst möglich wäre (also ohne ein neues Preset an zu wählen). Beim Looper-µC würde dann CC 81-88 zu einem Toggel des jeweiligen Ausgangs führen.
Wäre das eine sinnige Lösung für euch oder liege ich mit meiner Denke falsch ? Wie schon geschrieben ist die Umsetzung im Programm kein grosses Problem, aher dass ich kein Floorboard habe welches CC senden kann...

Gruß, Dirk


Titel: Re: MIDI Controller für 3 Byte-Befehle
Beitrag von: Nils H. am 25.04.2016 22:07
Falls Du eine Windowsmaschine mit Midiinterface hast: Schau Dir mal Midi-Ox an. Das benutze ich zum Testen, da kannst Du unter View->Control Panel beliebige CCs mit beliebigen Werten senden. In der Liste findet sich dann auch noch mal die General Midi Zuodrnung der CCs (84 ist da für Portamento reserviert). Wie gesagt, ich glaube, das spielt in der Welt der Midi-Floorboards und Looper aber eh keine Rolle.
Titel: Re: MIDI Controller für 3 Byte-Befehle
Beitrag von: Germy am 26.04.2016 06:05
Jo, MIDI-OX ist super!! Da sieht man, was man tut.

Das Hilfsmittel schlechthin.  :topjob:

Es wäre ja schön, wenn man mal eine Tabelle aufstellt, wo man was bei den freien Kanälen läßt. Mute, FX-on-off, etc.

Ich habe auch die freien benutzt.

Gruß Germy
Titel: Re: MIDI Controller für 3 Byte-Befehle
Beitrag von: corne am 26.04.2016 07:11
moin jungs,

ja Dirk, die Idee fänd ich echt gut. deine platine ist schon wirklich ein toller bausatz, aber durch dieses feature würde das nochmal richtig aufgewertet werden  ;)

und ja, Tabelle wäre gut. Warum schaffen wir nicht unseren eigenen Standard ? Tragen wir alle Funktionen zusammen die uns einfallen was geschalten werden könnte, und dann vergeben wir die CCs.
Mir fallen folgende ein:
FX ON/OFF,
Master A/B,
Reverb ON/OFF,
Boost ON/OFF.

gruss, corne