Interface

Die Gruppe Interface realisiert die Verarbeitung und Weitergabe der in den Synthesizer eingespielten Noten sowie der Grundlegenden Bedienbarkeit.

Der Purple Gain Synthesizer erhält eine MIDI-Schnittstelle sowie ein StepSequencer zur Noteneinspielung. Des Weiteren wird in den Synthesizer ein Benutzerinterface implementiert.

Im folgenden werden die einzelnen Bereiche der Interfacegruppe im Bezug auf die Ziele und die Umsetzung vorgestellt.

 

(Blockschaltbild)

 

 

Mikrocontroller

Die wichtigste Aufgabe des Mikrocontroller ist die Verarbeitung des Midi-Signals. Interessant für uns ist die NoteOn- und NoteOff-Nachricht sowie der MIDI-Takt.

Die NoteOn- und NoteOff-Nachricht enthält den musikalischen Notenwert sowie die Velocity. Der Midi-Takt ist vor allem für den StepSequencer relevant, wird aber auch den anderen Gruppen zur Verfügung gestellt. Zum einlesen der MIDI-Nachrichten  ist die USART-Schnittstelle im Interrupt-basierten Betrieb.

Aktuell ist vor allem der Umgang des Mikrocontrollers beim spielen mehrerer Noten interessant. Da der Synthesizer nur einen Notenwert auf einmal verarbeiten kann, wird über den Mikrocontroller die zuletzt gedrückte Taste auf den Notenausgang gelegt, die anderen noch gedrückten Tasten werden abgespielt (neueste zuerst) sobald die zuletzt gedrückte Taste losgelassen wird.

 

Benutzerinterface

Über einen Drehimpulsgeber mit Tastfunktion und einem LCD können von dem Benutzer folgende Menüpunkte aufgerufen werden:

  • Auswahl des MIDI – Kanals
  • Anzeige der gespielten Note/Velocity
  • Auswahl der Wellenform des Voltage controlled Oscillator (VCO)
  • Aktivierung/Deaktivierung des Stepsequenzers
  • Auswahl der Tacktquelle dessen(MIDI / Beats per Minute (BPM)-Zahl direkt)
  • Einstellung der gewünschten Tacktrate

Die verschiedenen Menüpunkte sollten selbsterklärend sein. Die Impulse des Drehimpulsgeber werden mittels Interruptbefehl verarbeitet, d.h. der Mikrocontroller unterbricht den aktuellen Programmablauf und führt die, mit dem Interruptbefehl verknüpfte Funktion, sofort aus.

 

Mainplatine

mainplatine_schaltplan

Die Mainplatine unterteilt sich in folgende Punkte:

  • Spannungsversorgung
  • Mikrocontroller
  • DAC + AMP
  • TP 2. Ordnung
  • BUS
  • Verbindungen zu den anderen Platinen

Spannungsversorgung

Die Spannungsversorgung erfolgt über ein Netzteil, welches mit dem BUS verbunden ist. Dieses liefert +/- 12 V, welche direkt bei den OpAmps verwendet werden.

Die sonstigen Bauteile der Platine benötigen eine Spannungsversorgung von +/- 5 V, was über die L7805 und L7905 realisiert werden. In Tests erwies sich die runterregelung der Spannung um 7 V bei verwendung eines Kühlkörpers als unproblematisch.

Des Weiteren garantieren die Dioden einen Überspannungsschutz.

 

Mikrocontroller

Der Mikrocontroller wird entsprechend dem Schaltplan verbunden. Interessant ist die Programmierung, die später erläutert wird.

 

DAC + AMP

Die Digital-Analog-Wandler wandeln das Digitale Noten und Velocity Signal in einen Spannungswert um. Beide befinden sich in einem Bereich von 0 bis 5 V.

Der AMP ist als Buffer geschaltet und garantiert, das die Bauteile davor vor Strömen geschützt sind und die Signale in der Lage sind eine Last zu treiben.

Die beiden anderen OpAmps des TL074 werden mit dem Pulsweitenmodulation und der Stepsequencernote verbunden, ebenfalls als Buffer.

BUS

Über den Bus wird unter anderem die Spannungsversorgung bereit gestellt,d es weiteren erfolgt heirüber der Datenaustausch zwischen den anderen Projektgruppen.

Für eine genaue Pinbelegung siehe auch:

https://service.projektlabor.tu-berlin.de/benv3/index.php/Attachment/6660-PIN-Belegung-Bus-pdf/

 

Verbindungen zu den anderen Platinen

Über die Pinheader erfolgt eine Verbindung mittels Flachbandkabel zu den 2 weiteren Platinen der Interfacegruppe, die im folgenden erläutert werden

 

Benutzerinterface

lcd_schaltplan

 

StepSequencer

step_sequencer_schaltplan

Der Stepsequencer dient der alternativen Notenwiedergabe zum Midisignal.

Zusammengefasst lässt sich mit dem Stepsequencer eine Notenreihe erzeugen, welche abgespielt wird. Hierbei kann die Tonhöhe über die Potentiometer gesteuert werden und über einen Schalter können Noten aktiviert oder deaktiviert werden.

Der Stepsequencer wird über einen Timer realisiert, der über das Taktsignal des Mikrocontrollers gesteuert wird. Bei einer steigenden Flanke zählt dieser bitweise hoch. Dies heißt das jedem Ausgang ein Bit zugeordnet wird, vom LSB zum MSB. In unserem Aufbau werden 3 Ausgänge verwendet, folglich zählt der Timer von 0 – 7. Über die Ausgänge des Timers werden 2 Multiplexer gesteuert. Diese schalten, je nach Wert den sie vom Timer erhalten, einen bestimmten Ausgang durch. Der erste Multiplexer ist für die Note verantwortlich, gibt folglich einen Spannungswert weiter. Der Spannungswert wird über den Mittelabgriff eines Potis gesteuert, wovon 8 verwendet werden. Folglich wird der Reihe nach ein Poti nach dem anderen auf den Ausgang gesetzt.

Der zweite Multiplexer erhält das selbe Timersignal wie der erste, steuert jedoch nicht den Notenwert sondern das Gatesignal. Dies ist erforderlich, damit man die Noten an- und ausschalten kann. Ein einfaches ‚zudrehen‘ der Potis wäre nicht ausreichend, da auch 0 V einem Notenwert entspricht. Über einen Schalter werden entweder 5 V Gatespannung auf den Ausgang des 2. Multiplexers gelegt, oder dieses Signal wird deaktiviert indem der Schalter in off Stellung ist. Bei dem Gatesignal bedeutet ein Wert von 0 V das keine Note gespielt wird.

Allerdings lässt sich so noch nicht die Notenlänge beeinflussen, da das Gatesignal auf 5 V liegt bis der Timer einen Wert weiter schaltet und somit der Multiplexer auf den nächsten Kanal wechselt. Dies erfolgt aber erst bei der nächsten steigenden Flanke des MIDI_SCK Signals. Um die Notenlänge beeinflussen zu können, wird das Gatesignal des 2. Multiplexer über ein &-Gatter mit dem MIDI_SCK Signal verbunden. Dadurch gelangen nur dann 5 V Gatespannung auf den Ausgang, wenn auch das MIDI_SCK Signal auf 5 V liegt. Verkürzt man die Dauer, die das MIDI_SCK Signal 5 V hat, wird auch die Notenspieldauer verkürzt. Da aber die Frequenz der steigenden Flanken die selbe bleibt, hat dies keinen Einfluss auf den Takt und auf die Schaltfrequenz des Timers.

 

 

Platinen

Im folgenden der Entwurf der Platinen:

 

Mainplatine

Screenshot 2016-06-14 01.09.18

 

Benutzerinterfaceplatine

Screenshot 2016-06-14 01.08.33

 

 

Stepsequencerplatine

Screenshot 2016-06-14 01.07.36