Zum Vergrößern klicken
Als wir vor 3 Jahren die Idee entwickelten, den 82er VCS 2 wieder neu aufleben zu lassen, sollte

er eigentlich nur zusätzliche Segmentwave VCOs beinhalten, polyphon und speicherbar werden.

Nun sind die Analogschaltungen fertig, die durch Versuchsplatinen überprüft und optimiert wurden.

Das Ergebnis beinhaltet neben der Segmentwave Synthese eine neue, schon in der letzten

Aktualisierung angedeutete Analogsynthese, die wir " 6-stage Polarity Waveshaping " nennen.

Das Design ist, bis auf Kleinigkeiten, auch abgeschlossen, so das wir nun einen Prototyp aufbauen können.

Da dieser Prototyp in allen Einzelheiten der Serie entsprechen soll, und eine Einzelanfertigung finanziell

ohne weiteres nicht tragbar ist, entschlossen wir uns, die Filter des VCS 2 als 19 Zoll Rack anzubieten.

Das Innenleben des VCS 2 ist extrem aufwendig, so das z.B. für ein Voiceboard 5 doppelseitig bestückte

SMD Leiterplatten in der Größe des Processorboards notwendig sein werden - das macht insgesamt 40

Leiterplatten für eine 8-stimmige Tonerzeugung + 12 Leiterplatten für das Panel und den Prozessor

Dazu kommen u.a. die Kosten für Echtholz, Herstellung und Siebdruck des Panels, Entwicklung eigener

Potiknöpfe / Mod-Räder etc. Nun zu den Hardware-Besonderheiten des VCS 2, beginnend mit dem

Da für die Erzeugung von Obertönen die Pulswellenform sehr geeignet ist, kam mein Bruder

auf die Idee, eine Schaltung zu entwickeln, die es ermöglicht, sechs Pulsbreiten innerhalb

einer Periode zu erzeugen. Diese Pulsbreiten bezeichnen wir als " Stages ", welche aus der

Analyse von Extremwerten und Wendepunkten gewonnen werden.

Jede Stage bietet die einstellbaren Parameter WIDTH, LEVEL und POLARITY, mit denen die

Basisform der Wave gebildet wird. Benachbarte Stages können sich außerdem summieren.

Der eigentliche Clou dabei ist, daß Stages getrennt durch ein Hoch- oder Tiefpass gefiltert

werden können. Mit den zwei zusätzlichen Parametern CUTOFF und FILTERMODE wird die

Gestaltung der Wave beendet. Dabei wird aber nicht etwa eines der VCFs geopfert, vielmehr

verfügt jeder VCO über ein integriertes Filter, welches nur für die Bearbeitung der Polarity

Waveshapes verwendet wird.

Da alle Parameter durch den Prozessor steuerbar sind, können Wavetables angelegt, durch-

fahren oder gemorpht werden. Grade letzeres ist interessant, da durch die Definition einer

Start- und Endwave ein kompletter Wavetable errechnet werden kann.

Die Animation berücksichtig weder das Filtern der Stages ( grün ) und der resultierenden Welle

( rot ), noch zeigt sie Summierungen, trägt aber zum näheren Verständnis dieser Synthese bei.

Desweiteren verfügt jeder VCO über die Standardwellenformen Dreieck, Polarity / Classic

Pulse und Sägezahn, wobei alle Wellenformen zugleich aktiviert werden können.

Hervorzuheben ist, daß für jede dieser Wellenformen eine Suboktave zur Verfügung steht.

Demnach kann jeder VCO zwei Oktaven zugleich erzeugen, wobei die Suboktave ohne

Verfälschung aus der Basisoktave gewonnen wird ( keine Frequenzteilung ).

Außerdem können die VCO's synchronisiert und frequenzmoduliert ( exponentiell

oder linear ) werden, welches auch für Segmentwaves und Polarity Waveshapes gilt.

Von diesem VCF existieren im VCS 2 gleich 2 pro Voice, welche parallel oder seriell betrieben

werden können. Es handelt sich dabei um 12dB Filter, die über die Betriebsarten Tiefpass,

Hochpass, Bandpass, Notch und dem, von meinem Bruder neu entwickelten, " Asymmetrical

Bandpass " verfügen, welcher nur im VCS 2, aber nicht im RELIQUARY vorkommt.

Die spannungssteuerbaren Parameter sind Cutoff Frequency, Emphasis und " Notch Structure ".

Als " Notch Structure " bezeichnen wir das stufenlose Überblenden von Tief- und Hochpass.

Da diese Filter über denselben temperaturkompensierten Expokonverter wie die VCO's

verfügen, besteht die Möglichkeit, sie völlig oktavrein als Sinusoszillatoren zu verwenden.

Näheres unter unserem 19 Zoll Filter RELIQUARY.

Dieses Kammfilter verfügt über 14 Stufen und kann beliebig ( Stage 1-14 ) abgegriffen werden.

Da selbst die Rückkopplungs-Stufe frei wählbar ist, kann dieses Filter über sanfte Phasingeffekte bis

zu "röhrenden" Sounds alles produzieren. Selbstverständlich ist auch hier alles spannungssteuerbar.

Auf unseren Hüllkurven Generator sind wir besonders stolz, da er zwei Eigenschaften

besitzt, die völlig neuartig sind - wir nennen sie " Free Function Select " ( FFS ) und

" Time Segment Control " ( TSC ).

Viele Leute schwärmen z.B. vom Minimoog und sprechen in erster Linie von seinen

VCO's / VCF und schnellen EG's, erkennen aber nicht, daß die Charakteristik einer

Hüllkurve eine immense Bedeutung hat. Wären im Minimoog rein lineare Hüllkurven,

so würden viele seiner Sounds nur noch langweilig klingen.

Deshalb entwickelte mein Bruder einen ADSR Generator, der neben einer hohen

Geschwindigkeit freie lineare, exponentielle und logarithmische Funktionen besitzt,

die getrennt für Attack, Decay und Release einstellbar sind und überblendet werden

können. Dabei handelt es sich aber nicht um "echte", sondern um angenäherte Funk-

tionen, was in einem Hüllkurvengenerator kein Nachteil ist.

Die Animation " Free Function Select " verdeutlicht ( grob ) die Einstellmöglichkeiten.

Als " Time Segment Control " bezeichnen wir die zweite Eigenschaft. Sie ermöglicht,

daß die Hüllkurve in jeder ihrer Phasen ( Attack, Decay, Sustain Level und Release )

ein Gate erzeugt, welches dazu verwendet wird, prozessorgenerierte oder von anderen

Baugruppen erzeugte Steuerspannungen freizuschalten.

Dafür stehen 32 Quellen zur Verfügung, von der eine mittels Multiplexer auf 32 Ziele

geroutet werden kann.

Ein Beispiel: Während der Attackphase wird VCF1 Cutoff von LFO1 Dreieck in einer

beliebigen Intensität moduliert. Die nachfolgende Decayphase deaktiviert diese Ver-

bindung und verändert die Tonhöhe von VCO1 mit einer DCDA - Steuerspannung.

In der Sustainphase könnte man dann z.B. die Notch Structure so verändern, daß

VCF1 und / oder VCF2 von Tief- zu Hochpass überblenden. Danach wäre es möglich,

in der Releasephase VCO1 durch VCO2 zu modulieren.

Diese Steuerspannungen sind unabhängig von der erzeugten ADSR CV, quasi eine

Subhüllkurve mit einem Router, die synchron zur eigentlichen Hüllkurve erzeugt wird.

Da die Hüllkurve retriggerbar ist, kann jede Phase z.B. Hüllkurven resetten oder starten.

Im VCS 2 werden pro Voice 3 analoge LFO's verwendet, die spannungssteuer- und synchronisierbar sind.

Sie erzeugen Sinus, Dreieck, ansteigenden und abfallenden Sägezahn, Polarity Pulse und Stages.

Polarity Pulse entspricht derselben Wellenform des VCOs und sagt aus, daß getrennte Pulsbreiten für

den negativen und positiven Bereich einer Periode definiert werden können.

Stages sind Treppenwellen, bei denen die Stufenanzahl ohne Geschwindigkeits- und Pegeländerung ein-

stellbar ist. Darüber hinaus kann jeder Wellenform ein Offset zugewiesen werden, so das sie entweder im

positiven, negativen Bereich oder nullsymmetrisch arbeitet.

Einige Fotos unserer Versuchsleiterplatten
Ein "Minipanel" mit 12bit Pot ADC VCO mit 6-stage Polarity Waveshaping 2*VCF / 2*VCA ADSR ( nur 1 von 3 bestückt )
Da jedes Voiceboard weit über 128 Steuerspannungen erfordert, kommt für eine 8stimmige Tonerzeugung

eine reine Prozessorsteuerung nicht mehr in Frage, weshalb ich eine autonome Refresh - Matrix entwarf.

Deshalb besitzt jedes Voiceboard einen eigenen 12bit Digital / Analogwandler, der seine Daten aus einem

vom Prozessor unabhängigen RAM bezieht, der zyklisch von einem Counter ausgelesen wird.

Trotzdem kann ( und muß ) der Z80 zu einem beliebigen Zeitpunkt Daten in diesen RAM schreiben können.

Ansonsten funktioniert alles in alter Tradition mittels Multiplexern ( 4051 ) und Spannungsfolgern mit Halte-

kondensatoren. Dieses Prinzip ermöglicht, daß der Prozessor nicht ständig mit dem Auffrischen der

Steuerspannungen beschäftigt ist, sondern einen aktuellen Wert nur ein einziges Mal in den RAM schreibt.

Einige werden jetzt denken, daß 12bit Auflösung nicht ausreichend sind. Allerdings verfügt der VCS 2,

im Gegensatz zu anderen Synthesizern, für einige Parameter über mehrere CV IN, die summiert werden.

So werden z.B. für die Tonhöhe eines VCOs drei Inputs verwendet ( Keyboard, Poti, Prozessor ).

Da die Refresh - Matrix sowieso notwendig ist, da z.B. die Polarity Waveshapes allein 18, durch CV's

gesteuerte, Parameter benötigen ( von den Segmentwaves gar nicht zu sprechen ), konnte ich die

Prozessorsummierung und vor allen Dingen die Verwendung von teueren 16bit DACs vermeiden.

Außerdem kommt ein 10bit Analog / Digitalwandler ( vorher 12bit ) zum Einsatz, der dafür sorgt, daß

ein Poti mit 1024 Schritten gerastert wird und damit keine hörbaren Sprünge beim Drehen auftreten.

Die Potiabfrage geschieht übrigens auch autonom in " Highspeed ", so das der Z80 nur bei dem

Anliegen eines neuen Wertes benachrichtigt wird und nicht mehr ständig den alten mit einem

eventuell neuen Wert vergleichen muß.

Eine weitere Änderung besteht darin, daß nun zwei Z80 Prozessoren verwendet werden, wobei der

Hauptprozessor in erster Linie für die Berechnung der DCDA - Algorithmen / MIDI / Keyboardmodes /

Soundverwaltung verwendet wird, während der zweite für alle Panel - Elemente ( Potis, Taster,

hauptsächlich Display ) verantwortlich ist.

Soweit zur Prozessorsteuerung, nun zu den Matrizen.

Für die Flexibilität eines Synthesizers ist ja nicht nur die Anzahl der Baugruppen,

sondern auch deren Verbindungsmöglichkeiten ausschlaggebend.

Deshalb verzichtete ich auf jegliche starre Verbindungen und überlegte, wie man

aus dem VCS 2 ohne großen Hardwareaufwand einen Modulsynthesizer machen

könnte, dessen Verbindungen durch den Prozessor aktiviert werden können.

Die herkömmliche Methode mit 4066 Switches ( Schalt ICs ) kam nur begrenzt in

Frage, da für jede Verbindung ein seperater Abschwächer vorhanden sein sollte.

Damit wäre der Hardwareaufwand zu massiv.

Die Lösung bestand im splitten und umleiten des Eingangssignals mit Multiplexern.

Um einen Abschwächer pro Kanal zu realisieren, wird ein 8bit DAC als Digital

Controlled Attenuator für je 16 Kanäle benutzt, der seine Daten aus einem eigenen

RAM bezieht, auf den der Prozessor zugreifen kann.

Da die Matrix zyklisch durchlaufen wird, liegen mit 50kHz gerasterte Signale mit

seperater Abschwächung an den Ausgängen der Multiplexer an.

Weil dieses System modular ist und mit jeweils 16 Kanälen erweitert werden kann,

sind auch mehr als die bereits verhandenen 256 Kanäle machbar.

Ein Nachteil dieser Matrix besteht darin, daß Transienten ( schnelle Einschwing-

vorgänge ) durch die Rasterung verloren gehen, weshalb eine zweite Matrix existiert.

Diese Matrix wird direkt durch die Potis und Taster des Panels programmiert

und entspricht einem normalen Ein- und Ausschalten der Verbindungen mittels

elektronischer Schalter ( 4066 ).

Diese Verbindungen sind fest vorgegeben und können nicht geroutet werden.

Sie entsprechen der herkömmlichen VCO - VCF - VCA Struktur, wurden aber

auch um musikalisch relevante Verbindungen erweitert.

Der Vorteil liegt in einer ungerasterten Signalführung, um Transienten zu

schützen ( wie Kabelverbindungen ) und einer intuitiven Programmierung über

Potis und Taster ( direkter Zugriff ).

Nachteile liegen in der begrenzten Verbindungsanzahl und darin, daß jede

Gruppe nur über einen einzigen Abschwächer ( in diesem Fall ein VCA ) verfügt.

Die Programmierung der DCDA Routinen mußte ich mehrmals überdenken,

da ich einige Punkte in der Erweiterbarkeit übersah und einzelne Module

miteinander inkompatibel waren, was zum Absturz des Systems führte.

Diese Probleme sind nun gelöst und die ersten Module funktionieren.

-

Die Module:

WAVEFORMER - Erzeugung von digitalen Hüllkurven / LFOs

ATTENUATOR - Abschwächer

SAMPLE & HOLD - hält die zugeführte Steuerspannung mittels Takt vom

DATA SEQUENCER - Erzeugung von Step CVs und / oder GATEs

ARITHMETICAL - bildet die Summe, Differenz, Produkt, Quotient zweier CVs

ROUTER - ermöglicht das Umleiten / Splitten von CVs und / oder GATEs

-

Die mögliche Maximalgeschwindigkeit / Auflösung einzelner Module wird noch

getestet, jedoch tendiere ich zu einer Reduzierung zugunsten der Anzahl parallel

aktivierbarer Module. Da die benötigte Rechenzeit für Module unterschiedlich

hoch ist, können z.B. nur 2-3 Waveformer pro Voice aktiviert werden, während

die Anzahl anderer Module, z.B. Data Sequencer, bei ca. 6-8 liegen kann.

Die Graphik zeigt den ersten Entwurf einer Benutzeroberfläche.

Noch einige Worte zum Betriebssystem ( eigentlich nur für Programmierer interessant )
Als ich damals die ersten Routinen programmierte, mußte ich natürlich ein Hauptprogramm entwickeln, welches

zur Einbindung und Steuerung sämtlicher Unterprogramme nötig ist. Nachdem ich einige Wochen verschiedene

Algorithmen entwarf, kam ich auf eine extrem einfache Lösung.

Dieses Hauptprogramm nannte ich den " Task Scanner ", welcher nur 47 Bytes lang ist und die komplette

Steuerung aller Unterprogramme übernimmt. Darüber hinaus bietet er eine Prioritätssteuerung.

Das Prinzip des Task Scanners beruht darauf, daß mehrere Bytes zyklisch nach gesetzten Bits durchsucht

werden. Diese Bits repräsentieren abzuarbeitende Aufgaben ( Tasks ) und können von allen Unterprogrammen

gesetzt oder gelöscht werden. Die Haupttätigkeit des Prozessors liegt also im Erkennen einzelner Bits.

Sobald ein Bit erkannt wurde, wird aus einer Tabelle die Sprungadresse ( einzelne 16bit Addition ) errechnet.

Dieses Unterprogramm kann nun von sich aus für andere Subroutinen oder für sich selbst Bits setzen oder

löschen. Falls z.B. eine Berechnung beendet wurde, schreibt das Unterprogramm das Ergebnis in einen

Zwischenspeicher, aktiviert für die Auswertung das nächste Programm und deaktiviert sich selbst, bis es

durch andere Unterprogramme wieder aufgerufen wird. Das gleiche gilt natürlich auch für Interrupts.

Dieses Prinzip ermöglicht also auch preämtives Multitasking und eine völlig unproblematische Erweiterung.

Bei der Prioritätssteuerung werden die Bytes nicht linear geprüft ( 1,2,3,4 etc. ) sondern Byte 1 wird immer

wiederholt ( 1,2,1,3,1,4 etc. ). Die Bits des ersten Bytes sind für relativ zeitkritische Routinen reserviert.

Desweiteren kann das Betriebssystem jederzeit aktualisiert werden, da nur die Basis MIDI I/O Routinen

und die Daten für das Display im ROM gespeichert sind. Jede OS Version wird im RAM gespeichert

und kann mit einem MIDI fähigen Computer als Sysex z.B. über das Internet aktualisiert werden.

Außerdem habe ich vor, den VCS 2 mit einer USB Schnittstelle auszurüsten, da höchstwahrscheinlich

MIDI bald durch USB ersetzt wird. Ein PC Editor mit einer Obertonanalyse von Samples, Konvertierung

in Segmentwaves und 6-stage Polarity Waveshapes ist geplant, liegt allerdings in ferner Zukunft.

zu " Projekte "