MCV876 Controller Update: Unterschied zwischen den Versionen

Aus Synthesizer Wiki
Zur Navigation springen Zur Suche springen
KKeine Bearbeitungszusammenfassung
Zeile 154: Zeile 154:


Fertige Files zum runterladen und selber brennen gibt es, wenn die Software fertig getestet ist, "Beta-Tester" werden über das Forum bzw. per Mail versorgt.
Fertige Files zum runterladen und selber brennen gibt es, wenn die Software fertig getestet ist, "Beta-Tester" werden über das Forum bzw. per Mail versorgt.
Der Datei-Konverter, der eine mit der [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2725 Entwicklungsumgebung] erzeugte Binär-Datei ([http://de.wikipedia.org/wiki/Intel_HEX Intel .hex Format]) in ein Sys-Ex File für ein Software-Update über Midi umwandelt, findet sich hier: [[MCV876_Controller_Update:_File_Converter]]

Version vom 23. Juni 2011, 20:16 Uhr

ATMEGA88 CPU für MCV876 Midi Interface

WARNUNG: Dieser Artikel ist in Arbeit und kann sich jederzeit deutlich ändern.

Das Projekt ist zwar schon recht weit fortgeschritten (sprich: die Software tut, was sie soll), die Dokumentation ist aber derzeit Baustelle und unvollständig.


Worum geht’s?

Das Midi-Interface MCV876 von Marc Bareille hat im Original einen PIC-Controller. Der muss aus Rechenleistungs- und Speichergründen in Assembler programmiert werden, was Wartung und Pflege erschwert.

Hier wird ein alternativer Controller für die gleiche Hardware beschrieben. Mit dem Atmel ATMEGA 88 steht ein halbwegs Pinkompatibler Controller zur Verfügung, der komfortabel in C programmiert werden kann. Um diesen Controller auf der für den PIC gedachten Platine verwenden zu können, ist ein Adapter-Sockel nötig. Die Software für den ATMEGA ist einiger Hinsicht kompatibel zum Original-Controller. Allerdings ist es kein 100% Clone, einige Funktionen der PIC-Software sind mir auch verborgen geblieben.

Deshalb kann es sehr gut sein, dass die Funktionen abweichen. Diese Beschreibung bezieht sich ausschließlich auf die Software für den ATMEL Controller. Der Controller wurde mit Blick auf dem Einsatz im Semtex XL (und vergleichbare Mono-Synths) entwickelt, für andere Einsatzfälle mögen Systementscheidungen daher nicht optimal sein. Die Software ist unter der GPL veröffentlicht. Als Entwicklungsumgebung kommt das (kostenlos verfügbare) ATMEL AVR Studio 4 zum Einsatz. Ist der Controller einmal mit einem Bootlader versehen worden, ist ein Software-Update über Midi im Gerät möglich. Damit kann man mit komplett kostenlos verfügbarer ToolChain und ohne (Programmier-) Hardware eigene Codeänderungen einpflegen.

Ausstattungsmerkmale

Die Beschreibung ist für das komplette Interface, d.h. MCV876 Platine (bzw. der entsprechende Teil auf der SEMTEX-XL Platine) mit dem ATMEGA88 Controller.

Hardware

4 Spannungsausgänge (CV) von 0-10V

6 Gate Ausgänge 0 auf 5V schaltend.

1 LED „Universalanzeige“

1 Taster.

Midi-Eingang

Midi-Thru Ausgang

(Es gibt keinen Midi-Ausgang, das Interface kann also nicht ausgelesen werden. )

Funktionsübersicht – Standardbelegung

Das Interface kann zwar (über Midi und Sys-Ex Befehle) durchaus unterschiedlich konfiguriert werden. Zunächst aber die Standardbelegung. Die ist einkanalig und monophon.


CV 1 Tonhöhe (Noten) Gate 1 Note-ON
CV 2 Velocity Gate 2 CC 18
CV 3 Mod Wheel Gate 3 CC 19
CV 4 Pitch Bend Gate 4 CC 20
Gate 5 Midi Start/Stop
Gate 6 Midi Clock /6 (entsprechend 16-tel)


CV 1 und Gate 1 sind die Standardausgänge für den Tonhöhen. und Gate-Eingang des Synths. Die CV ist für 1V/Oktave ausgelegt. CV2 ist die Anschlagstärke und geht von 0-5V. CV3 ist der Pitchbender, in Mittelstellung liegen hier 5V an, es geht von 0...10V. CV4 ist das Modulationsrad, von 0 (Ruhestellung) bis 5V.

Bedienung

Im „Normalbetrieb“ gibt es gar nichts zu Bedienen, das Interface setzt eben Midi auf CV & Gate um.

Die Leuchtdiode

Leuchtet, solange eine Note (=ein Gate) eingeschaltet ist. Nach dem Einschalten blinkt sie dreimal, um anzuzeigen, dass der Controller lebt.

Midi-Kanalwahl

Um den Midi Kanal neu Einzustellen die Taste vom Interface drücken, bis die LED leuchtet. Dann eine Note mit dem gewünschten Kanal am Keyboard spielen. Das Interface stellt sich auf diesen Kanal ein. Die LED blinkt drei mal, um das permanente Abspeichern des Kanals anzuzeigen.

Grund-Note einstellen

Die „tiefste Note“, also die Note, bei der das Interface 0 V ausgibt, wird ganz ähnlich wie der Kanal eingestellt. Taste drücken, bis die LED angeht, dann gewünschte tiefste Note spielen. Die LED blinkt drei mal, um das permanente Abspeichern der Note anzuzeigen. Controller für CV3 einstellen Taste drücken, bis die LED angeht, dann einen Controller bewegen. Dieser Controller wird dem dritten Steuerspannungsausgang zugewiesen. Die LED blinkt drei mal, um das permanente Abspeichern des Controllers anzuzeigen. (Wo das jetzt hier zum dritten mal leicht unterschiedlich steht: die finstere Wahrheit ist, das jedes mal die komplette Konfiguration gespeichert wird. )

Alle Noten aus

Taste kurz drücken. Dann werden alle Noten auf „aus“ gesetzt und die Controller auf 0 zurückgestellt. Da Midi immer nur Datenänderungen überträgt, kann es schon mal zu hängenden Noten und schief stehenden Controllern kommen. Dann hilft ein kurzer Druck auf die Taste. Das Interface selber sollte das bei korrektem Midi-Datenstrom allerdings niemals alleine fertigbringen. Nur ist nicht jeder Midi-Datenstrom immer korrekt.

Active Sense

Das Interface wertet Active-Sense Nachrichten aus. Erzeugt der Controller (bzw. das sendende Midi-Interface) Active-Sense und zieht man dann das Midi-Kabel ab, werden (nach 330ms) alle Noten ausgeschaltet. Roland und Edirol senden das eher mal, die andern eher nicht.

Service Funktionen

Wird die Taste beim Einschalten festgehalten, kann man zwei Service-Funktionen wählen:

Bootlader

Wird die Taste beim Einschalten festgehalten und gleich (ähm ... Reaktionszeit eines Dinosauriers ist auch ok... ) losgelassen, wenn die Leuchtdiode zu blinken anfängt, dann kommt man direkt in den "Bootlader", das ist ein spezielles Programm, mit dem man ein Software-Update über Midi einspielen kann. Das braucht man nur, wenn etwas schief gegangen ist (mehr dazu im Abschnitt über Software bauen und eintwickeln). Normalerweise kann man ein Update einfach aufspielen. Im Bootlader blinkt die Leuchtdiode zwei mal kurz, dann etwas Pause. Das kann durch erneuten Tastendruck, oder Aus- und Einschalten abgebrochen werden.

Einstellungen zurücksetzen

Wird die Taste beim Einschalten sehr lange festgehalten (knapp 10 Sekunden, bis das Geblinke aufhört), dann werden die Einstellungen des Interfaces gelöscht und auf den Standard zurückgestellt. (Monophon, Midi-Kanal 1)

Erweiterte Einstellungen

Der Controller ist Sys-Ex-Kompatibel zum PIC-Controller des MCV876, er lässt sich daher mit dem gleichen PC-Programm einstellen.

Bei der Programmierung wird der Midi-Kanal ignoriert, man kann also nur ein Interface diesen Typs zur Zeit (oder mehrere genau gleich) konfigurieren. Damit die Konfiguration permanent bleibt, muss sie gespeichert werden (Chip-Symbol drücken, LED am Interface blinkt 3 mal. )

Es werden 3 grundsätzliche Betriebsarten (Mode) unterschieden: Mono (default). 1 Kanal Monophon.

Multi 2. 2 Kanal Monophon

Multi 4. 4 Kanal Monophon

Die weiteren Kanäle werden über den nächsten oder die drei nächsten Midi-Kanäle angesteuert. (Sollte man dabei Kanäle „über 16“ bekommen, kann man diese nicht ansteuern. )

Im DAC-Feld kann für jede CV (=jeden Steuerspannungs-Ausgang) gewählt werden, wie er gesteuert wird.

Ist das CC-Feld aus (nicht grün), dann wird eine Tonhöhenspannung erzeugt. Im „Mono“ Mode ist das ggfls. 4 mal die gleiche, in Multi2 gehören DAC 1 und 2 zum ersten und DAC 3 und 4 zum 2. Midi-Kanal. In Multi 4 gehört jeder DAC zu einem Midi-Kanal.

Ist das PB-Feld aktiv, wird der Pitch-Bend Wert auf die Ausgangsspannung addiert.

Ist das VL-Feld aktiv, wird die Anschlagstärke (Velocity) auf die Ausgangsspannung addiert.

Ist das CC-Feld aktiv, wird der eingestellte Controller als Grundwert genommen, und nicht die Tonhöhe.

Das 5V-Feld schaltet im Tonhöhen-Modus die Ausgabe so um, das ein auf 5V Full-Scale skalierter Wandler 1V/Oktave macht. Das sind dann nur 5 Oktaven, aber doppelt so viele Bits, d.h. die Töne treffen besser.

Im CC-Modus werden die Ccs auf 5V skaliert, nicht auf 10V. Da sie nur 7bittig sind ist das ausreichend, oft sinnvoller skaliert, und dadurch das es einige „Additionen“ gibt generell eher sinnvoll.

Die Gates 1-4 sind den Tonhöhenkanälen fest zugeordnet, gibt ein DAC eine Tonhöhe aus, ist das zugehörige Gate auch Note an/aus.

Ist der DAC auf CC gestellt, kann der Gate-Ausgang einem Controller zugewiesen werden, das Gate ist an, wenn der Controller über den Wert gestellt wird, der bei Tresh.(hold) eingestellt ist.

Duration und Gate 5 im „Triggers“-Feld haben keine Funktion. (Wenn mir dazu was sinnvolles einfällt, dann ändert sich das noch..)

Unter Midi-Clock wird eingestellt, was Gate 6 erzeugt. Midi-Clock sind 24 Ticks pro Viertel-Note. (6=16tel, 12=8tel, 24=1/4) Gate 5 ist immer Midi-Start/Stop.

Hardware

Verwendet wird ein ATMEGA 88. Der ist gut erhältlich, nicht all zu teuer (um 3.60€) und für die Anwendung ausreichend. Er hat einen getrennten und schütztbaren Bootlader-Bereich und kann (Bootlader-)Code ausführen, während er den Anwenndungs-Programmspeicher ändert. Das ist sehr hilfreich, um beim Update über Midi eine unproblematische Handhabung zu erzielen.

Der Atmel Controller ist nicht völlig pinkompatibel programmierbar, daher ist ein Adaptersockel nötig.

So kann der Sockel aussehen

Oben ist ein normaler 28-poliger DIL-Sockel, unten sind zwei 14 polige Stecksockel von Fischer. ( Conrad 187607 ) (Die drei extra-Pins zur Seite braucht man nicht, die sind nur Anschluss für meinen Debugger.)

Der Verdrahtungplan:

Die Pins mit den grünen = werden 1:1 aneinander gelötet, bei den roten X werden die Pins am Sockel weg gekniffen und die Verbindung wird mit einem Draht hergestellt.

Software

Der Quelltext für die Controller-Software findet sich hier MCV876_Controller_Update:_Source_Code.

Fertige Files zum runterladen und selber brennen gibt es, wenn die Software fertig getestet ist, "Beta-Tester" werden über das Forum bzw. per Mail versorgt.


Der Datei-Konverter, der eine mit der Entwicklungsumgebung erzeugte Binär-Datei (Intel .hex Format) in ein Sys-Ex File für ein Software-Update über Midi umwandelt, findet sich hier: MCV876_Controller_Update:_File_Converter