Forum: Mikrocontroller und Digitale Elektronik Creative-Soudcips mit AVR zu Synth recyclen?


von Wiesolator (Gast)


Lesenswert?

Servus!

Ich habe hier etliche Soundblaster-Soundkarten mit dem OPL und 
umgebenden Bausteinen herumliegen. Mein Gedanke war nun aus diesen alten 
Bauteilen als Klangerzeuger einen interessanten FM-basierenden 
Synthesizer mit nachfolgendem VCA/VCF zu konstruieren, der mittels AVR 
angesteuert wird. Mein Hauptproblem besteht eigentlich darin, das ich 
keinerlei Datenblätter der bestehenden IC's finden konnte.

Die Bauteile der verfügbaren Karten für das Projekt sind:

- CT 1748A   Advanced Signal Processor?
- CT 1745A   Mixer-Chip?
- CT 1741    DSP?
- CT 1747    OPL
- CT 1703    8/16-Bit AD-/DA-Wandler (Codec)

Falls jemand Datenblätter und Register-Beschreibungen besitzt wäre ich 
sehr froh, wenn ich diese einsehen könnte. Die Idee hatte mich schon 
etliche Jahre gereizt, und im Web wurde ich nirgends fündig zu diesen 
Bauteilen.

MfG Wolfgang

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Wiesolator schrieb:
> Ich habe hier etliche Soundblaster-Soundkarten mit dem OPL und
> umgebenden Bausteinen herumliegen.

PCI oder ISA?

von Wiesolator (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Knut Ballhause

Die beiden Soundblaster die ich hier eben liegen habe sind 
ISA-Steckplätze. Ist aber vom Konzept relativ gleichgültig, da ich die 
IC's auf eine eigene geätzte Platine umsetzen wollte (s.o).

von PeterM (Gast)


Lesenswert?

Coole Idee, ich hab euch noch ISA SB Karten. Aber um einen Guten Sound 
rauszuholen musste man damals ein 2 oder 4MB Soundfontfile in die Karte 
laden.

von krumeltee (Gast)


Lesenswert?

Einfacher wirds werden, wenn du die Karten so wie sie sind verwendest, 
der ISA Bus ist relativ einfach.

Und Datenblätter gibts, schau dir an wie ISA funzt, wie die Karten 
verdrahtet sind und dann Programmieren wie am PC.

Aber wie gesagt, verwende sie so wie sie sind.

von Rolf M. (rmagnus)


Lesenswert?

Wiesolator schrieb:
> Falls jemand Datenblätter und Register-Beschreibungen besitzt wäre ich
> sehr froh, wenn ich diese einsehen könnte.

Register-Beschreibungen sollten sich in einem alten PC-Intern oder so 
finden lassen.

von Schlumpfine (Gast)


Lesenswert?

Eigentlich kann man immer bei Fragen zu MIDI oder Synths auf 
www.ucapps.de verweisen. Der Mann dort hat etwas derartiges bereits 
gebaut, nur mit PIC als Antrieb (MIDIbox FM). In dessen Software kann 
man sich sicher die eine oder andere Information besorgen...

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Du solltest einen AVR mit externem Speicherinterface benutzen und mit 
ein bisschen simpler Hardware direkt ein/zwei ISA Slots andocken. Hier 
ist was für den Soundblaster 16:
http://pdos.csail.mit.edu/6.828/2005/readings/hardware/SoundBlaster.pdf
Und noch einer:
http://homepages.cae.wisc.edu/~brodskye/sb16doc/sb16doc.html

Falls Verwirrung aufkommt - der originale Soundblaster hatte den ISA 
Slot für 8088 Systeme ('8bit'), genau wie der Soundblaster Pro (mit LS 
Regler am Slotblech).Deine scheinen beide zumindest 16er zu sein.

PeterM schrieb:
> Aber um einen Guten Sound
> rauszuholen musste man damals ein 2 oder 4MB Soundfontfile in die Karte
> laden.

Wer will denn schon einen tollen Sound - das ist heute viel einfacher zu 
machen :-) Nee,nee - wenn schon dann bitte Adlib Musike, hehehe.
Aber man könnte natürlich MIDI Voices aus ner SD Karte in den Wave 
Speicher schaufeln.

von User (Gast)


Lesenswert?

Wenn du nicht gerade eine mit EMU8000 hast sind diese Karten praktisch 
nur ADCs+DACs mit einem mehr oder weniger guten OPL3-Synth.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Soweit ich mich erinnere, ist der CT1748 pin- und codekompatibel zum 
AD1848 - ein 16 bit Stereo Audio ADC und DAC. Verwende ich hier in einem 
kleinen Retro-Projekt mit TMS32C025 DSP.

von Wiesolator (Gast)


Lesenswert?

Servus,

bin wirklich erfreut über die zahlreichen Beiträge, hatte da jetzt nicht 
so viel Feedback erwartet. Danke dafür!

Ich möchte etwas genauer werden weil die Antworten doch sehr vielfältig 
ausfielen. Zum einen ist mit MIDIBox FM bekannt, im Grunde hatte ich das 
selbe vor, nur mit diesem OPL-Chip. Die ganze Karte anzubinden war nicht 
meine Absicht, eher nur möglichst wenige Komponenten aus der 
Soundblaster. Dort eben primär der OPL-Chip den ich auf eine eigene 
Platine umtopfen wollte. Die Kontrolle sollte per AVR geschehen, also 
die Register des OPL zu bedienen. Eine Soundblaster-Adaption um den 
originalen Sound zu errechen sollte es ebenso nicht sein, eher eine 
Erzeugung von komplexen FM-Grundsounds als Oszillator. Diese wollte ich 
auf der neuen Platine durch ein VCF (24dB-Moog-Tiefpass-Filter) 
schicken, wie auch in der Amplitude (VCA / OTA) modulieren. Das Ganze 
eben als Sound-Kaskaden neuer Sounds bzw. als monophoner Synthesizer per 
MIDI.

Die verlinkte Dokumentation von Matthias hatte die Bauteile der Karten 
genauer beschrieben. Der einzigste IC der dort nicht genauer 
dokumentiert ist, ist eben leider der OPL-Chip (Creative CT 1747) der 
mich jedoch zentral interessiert. Daher denke ich wird es im ersten 
Schritt am besten sein, die Leiterplatte zu analysieren, um das Pinning 
und die Grundbeschaltung am OPL herauszufinden. Über die ISA-Belegung 
bekomme ich da evtl. schon brauchbare Informationen.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Wiesolator schrieb:
> ist eben leider der OPL-Chip (Creative CT 1747)

Wie ich die Jungs einschätze, ist der Chip voll kompatibel zum Yamaha. 
Und dafür gibt es einiges im Netz:
http://www.oplx.com/
http://en.wikipedia.org/wiki/Yamaha_YM3812

Es wird nur interessant sein, herauszufinden, obs nun der OPL, der OPL2 
oder gar der OPL3 Chip ist.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Matthias Sch. schrieb:
> Wie ich die Jungs einschätze, ist der Chip voll kompatibel zum Yamaha.
> Und dafür gibt es einiges im Netz:

Fällt Dir das komplett andere Gehäuse auf? Selbst wenn ein 
Original-Yamaha-Chip dort hineingebaut wurde, braucht man noch die 
ganzen anderen Leitungen und deren Funktion, sowie die Spezifikationen, 
um den Custom-Chip vernünftig ansteuern zu können. Da ich selber schon 
mal vor dem Versuch stand, eine derartige Karte zu recyclen, kann ich 
von spärlicher bis gar keiner Information diesbezüglich im Netz 
berichten. Bleibt nur das Tracen der Karte und die Hoffnung, so viele 
Leitungen wie möglich zu identifizieren. Kaputt machen kann man den Chip 
aber trotzdem recht schnell.

von Wiesolator (Gast)


Lesenswert?

Erste Resultate um den OPL-Chip habe ich mittlerweile im Layout 
herausgefunden. Der OPL-Chip ist in den gesamten umgebenden Chipsätzen 
angebunden. Scheint daher mit seinen 100 Pins nebenbei auch der zentrale 
Chipsatz zu sein, der die gesamte Karte steuert. Im Flussdiagramm schien 
der FM-Synthesizer ein eigenständiges Modul zu sein, bin daher gespannt 
ob man Chancen hat ihn einzelstehend in Betrieb zu bekommen.

Informationen hatte ich ebenso keine gefunden, daher war meine eingangs 
genannte Frage mit Datenblättern in die Runde. Denke aber das es sich 
dabei um einen OPL-3-Chipsatz handelt. Wie ich zeitlich dazu komme 
versuche, ich meine Aufzeichnungen der Hardware hier zu veröffentlichen. 
Habe es bisher alles bei der Analyse auf Papier skizziert.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Knut Ballhause schrieb:
> Fällt Dir das komplett andere Gehäuse auf? Selbst wenn ein
> Original-Yamaha-Chip dort hineingebaut wurde, braucht man noch die
> ganzen anderen Leitungen und deren Funktion, sowie die Spezifikationen,
> um den Custom-Chip vernünftig ansteuern zu können.

Das bezog sich lediglich auf die Programmierung der FM-Synthese. Das CT 
da noch einen ASIC mit reinbaut, um gleich Bustreiber und 
Adressdekodierung mitzulösen, ist aus deren Sicht logisch, das 
verringert den Aufwand an Bauteilen und brauchen tut mans ja eh. Wie ich 
oben schon mal schrieb, halte ich die Anbindung über den ISA Bus für die 
einfachste Methode, um die Karten zum Leben zu erwecken.

von Wusel D. (stefanfrings_de)


Lesenswert?

Die meisten Soundkarten sind kompatibel zur Soundblaster 16, welche 
vollständig doumentiert ist. Ich hatte damals zu DOS Zeiten die Doku bei 
Creative Labs gekauft, habe sie aber leider nicht mehr.

Die Soundblaster 16 enthält wiederum einen OPL Synthesizer, der voll 
kompatibel zur Adlib Karte ist, die wiederum gut dikumentiert ist.

Wenn DU also eine Soundblaster 16 kompatible ISA Karte hast, dann sollte 
es leicht sein, die nötige Doku zu finden.

von User (Gast)


Lesenswert?

Eventuell ist es einfacher, einen YMF-262 und einen YAC-512 zu besorgen, 
oder eine Soundkarte die beides mitbringt. Bei den integrierten 
FM-Synths hat Creative ein eigenes Süppchen gekocht, die hören sich 
anders an.

von Wiesolator (Gast)


Angehängte Dateien:

Lesenswert?

Die angekündigte Ausarbeitung meiner Leiterplatten-Analyse habe ich nun 
soweit fertig. Der CT1747-Chip in seiner Umgebung befindet sich im 
Anhang des Posts.

Die zugehörigen IC-Bezeichnungen der CT2770 SB16-Karte:

U4  Bus IO
U6  PAL16L8 (CD-ROM)
U8  CT1745A   Mixer
U9  CT1741    DSP
U13 TDA1387   Dual-DAC 16-Bit
U16 CT1703    AD-/DA-Conv.
U19 Bus IO

von Wiesolator (Gast)


Angehängte Dateien:

Lesenswert?

Habe jetzt die Leiterplatte in den wichtigen Teilen die interessieren 
dokumentiert. Die Schaltung ist als Anhang im PDF-Format. In der Grafik 
des vorhergehenden Beitrags habe ich allerdings noch Fehler beim 
erstellen der Schaltung festgestellt.

@User, ich wollte nicht die anderen Bausteine verwenden, einfach 
deshalb, da es dort schon fertiges am Start gibt. Möchte einfach sehen 
wie weit man diesen Baustein zum Laufen bekommt, und ob es überhaupt 
möglich ist. Neue Wege schaden bekanntlich nie, und evtl. ist es auch 
für andere mit selbem Interesse von Nutzen.

@Matthias Sch., der interne Verwaltungsteil der Peripherie wird 
vermutlich noch ein Problem werden. Vor allem weiß ich nicht ob man den 
DSP (CT1741) einfach weglassen kann. Der DAC scheint meiner Ansicht nach 
nur über den TDA1387 realisiert zu sein. Testen kann ich die Hardware 
für Messungen leider nicht, habe keinen alten Rechner mit ISA 
herumliegen. Genauso weiß ich nicht wie die IRQ-, DACK- und 
DRQ-Leitungen genau verwaltet werden. Das muß ich noch im Web 
herausfinden.

Eine offensichtlich brauchbare Dokumentation über die OPL-Register habe 
ich jedoch mittlerweile gefunden:

http://bespin.org/~qz/pc-gpe/adlib.txt
http://www.fit.vutbr.cz/~arnost/opl/opl3.html

von Wiesolator (Gast)


Angehängte Dateien:

Lesenswert?

Bin nun weitergekommen mit dem OPL-Chip. Die Platine der Soundblaster16 
(Model CT2770) habe ich als Trägerplatine verwendet damit ich vorerst 
nichts Ätzen muß. Weiterhin wurden alle Bauteile entfernt die keinen 
späteren Nutzen haben und etwas modifiziert. Als µC wurde hier nun ein 
Arduino-Board aufgesetzt, das die Signale und 5V bereitstellt.

Derzeitige Verbindungen:

- Datenbus D0-D7 auf AVR-Port PA0 bis PA7
- A0 und A1 an AVR Port PC0 und PC1 (Base+0 bis Base+3)
- Reserve für evtl. Versuche mit A2 und A3 (nicht nötig)
- /IOR udn /IOW-Leitung mit PullUp an AVR Port PC4 und PC5
- AEN-Leitung an AVR PC6
- Reset-Leitung an AVR PC7

Nur die Adressleitungen A0 und A1 habe ich an den µC gelegt. Die darauf 
folgenden Adressleitungen wurden direkt gegen GND und PullUp's gelegt. 
So habe ich die Basisadresse von 220 Hex festgelegt mit dem Bereich 220h 
bis 223h (OPL-Register). Binär A9 bis A0: 01001000xx

von User (Gast)


Lesenswert?

01 0010 00xx wäre 12xh.
Du brauchst 10 0010 00xx.

von Wiesolator (Gast)


Lesenswert?

Danke für den Hinweis, hatte mich da verschrieben. Im Foto sieht man die 
beiden PullUp's (4k7) am Kontakt recht gut, das passt so auf 220h.

von Wiesolator (Gast)


Angehängte Dateien:

Lesenswert?

Der CT1747 OPL3-Chip hat nun Lebenszeichen in Form von FM-Sound 
abgegeben. Die Schaltung ist nun soweit bereinigt und vereinfacht. Den 
Schaltplan habe ich auch gezeichnet, liegt hier im Beitrag zum Download 
bereit. Der Test-Code für eigene Versuche ist als Bascom-Code ebenfalls 
beigefügt.

Der OPL-Chip wurde in Adresse 220h parametriert, und über A1 (IO-Port 
221h-Base und 223h-Extended) angesprochen. Lesezugriffe machen keinen 
weiteren Sinn, die Timer sind nicht weiter interesant, da der AVR so 
oder so genug eigene Resourcen dafür hat. Der OPL-Chip wird daher nur 
noch im Write-Modus angesprochen, was die Hardware nochmals deutlich 
vereinfacht.

Das anfänglichen Problem die ich hatte basierte auf dem 16-Bit Datenbus. 
Die Register werden aber in Register, definierter Pause, Daten 
angesprochen. Dafür in 8-Bit-Modus, sollte man auch im beigefügen 
finalen Schaltplan sehr gut erkennen.

Da der Chipsatz nun geknackt ist, bin ich einmal gespannt ob es nun 
Projekte mit diesem OPL-Chip gibt. Die Basis für eigene Anwendungen ist 
ja nun geschaffen. Viel Spaß!

von Wiesolator (Gast)


Angehängte Dateien:

Lesenswert?

Ein kleiner Nachtrag, hatte wie ich eben sehe im Chaos eine Vorversion 
meiner Schaltung erwischt. Die A0-Leitung war da noch nicht auf den AVR 
verbunden, ist aber wichtig für die korrekte Register-Adressierung!

Die Adressierung geschieht über 220h = Register, 221h = Daten bzw. 
OPL3-Extended 222h = Register, 223h = Daten. Somit wird auf insgesamt 
vier IO-Ports zugegriffen, das funktioniert aber mit einer einzelnen 
A1-Adresse nicht, dazu benötigt man A0 UND A1! Der Code dagegen passt, 
das war die richtige Version.

Kleine Anmerkung: Die Bauteile sind von der Soundblaster16 zu entnehmen, 
dann passen die Werte der Bauteile soweit (vor allem die der 
Kapazitäten).

von Rolf D. (rolfdegen)


Lesenswert?

Hi Wolfgang

Cooles Project :) Kann ein schneller AVR Xmega einen OPL3-Chip emulieren 
?

Gruß Rolf

von Wiesolator (Gast)


Lesenswert?

Meines Wissens gibt es bereits ein Projekt das einen OPL3-Chip emuliert. 
Ein AVR (selbst ein XMEGA) reicht aber für die volle Stimmenanzahl unter 
Garantie bei weitem nicht aus, da müßte schon ein ARM oder sonstiger 
schneller Prozessor herhalten.

von Wiesolator (Gast)


Lesenswert?

Meine bisherigen Erkentnisse bezüglich des CT1747 OPL-Chip's sind nun 
weiter

fortgeschritten.

Ich werde nun nach reiflicher Überlegung den OPL-Chip im 'Four-operator 
Melodic and Percussion Mode' einsetzen:

  => sechs 4-Operator-Voices       => auf linken  DAC-Kanal
  => drei  2-Operator-Voices       => auf linken  DAC-Kanal
  => fünf  Drums (BD/SD/TT/CY/HH)  => auf rechten DAC-Kanal

Danach folgen später die Filter (VCF's) und Attunatoren (VCA's).

Meine bisherigen Erkentnisse bezüglich des CT1747 OPL-Chip's sind nun 
weiter fortgeschritten.

Ich werde nun nach reiflicher Überlegung den OPL-Chip im 'Four-operator 
Melodic and Percussion Mode' einsetzen:

  => sechs 4-Operator-Voices       => auf linken  DAC-Kanal
  => drei  2-Operator-Voices       => auf linken  DAC-Kanal
  => fünf  Drums (BD/SD/TT/CY/HH)  => auf rechten DAC-Kanal

Danach folgen später die Filter (VCF's) und Attunatoren (VCA's).

Die Voices und Operatoren liegen damit in den Kanälen des OPL-Chip wie 
folgt:

    |  0   1   2 |   BD  SD  TT  CY  HH    |  9  10  11 | 15  16  17
----+------------+-------------------------+------------+------------
OP1 |  0   1   2 |   12  16  14  17  13    | 18  19  20 | 30  31  32
OP2 |  3   4   5 |   15                    | 21  22  23 | 33  34  35
OP3 |  6   7   8 |                         | 24  25  26 |
OP4 |  9  10  11 |                         | 27  28  29 |
----+------------+-------------------------+------------+------------
    | 4-Operator |Base/Snare/Tom/Camb/HiHat| 4-Operator | 2-Operator
    |   Voice    |          Drums          |   Voice    |   Voice
----+------------+-------------------------+------------+------------
    |   Left-Ch  |        Right-Ch         |  Left-Ch   |  Left-Ch
----+------------+-------------------------+------------+------------

Jeder Operator hat einen umfangreichen Parametersatz, der grundlegend 
aus den folgenden

Parametern besteht:

  => Envelope Attack   0...15    invers
  => Envelope Decay    0...15    invers
  => Envelope Sustain  0...15    1:1
  => Envelope Attack   0...15    invers
  => Modulation FM     0...1     on/off
  => Modulation AM     0...1     on/off
  => Operator-Level    0...64    invers (Attunation)
  => Waveform          0...7     Sine    |SineHalf   |SineAbs|SinePulse
                                 SineEven|AbsSineEven|Square |SquareDiff

Jeder Kanal hat für die betreffenden Operatoren des Kanals weitere 
Parameter:

  => Key On            0...1     Note ein
  => Oktave            0...7
  => Tune              0...1023
  => Feedback          0...7     Feedback-Level
  => Panorama          0...3     Off/Left/Right/Center
  => Synthese          0...1     0=FM / 1=AM

Im Anhang habe ich meine aktuelle Tabelle als PDF angehängt. Ich 
benötigte zuerst einmal vor größeren Programmiertätigkeiten eine saubere 
Liste der nötigen Parameter. Die ist nun vorhanden soweit ich sie 
zusammentragen konnte.

Einige Fragen abweichend von der 2-Operatoren-Parametrierung werfen aber 
noch Fragen auf:
Wie die 4-Operatoren in ihrer Parametrierung genau funktionieren. Es 
gibt dort nicht nur die beiden Typen AM und FM, sondern gleich vier 
Typen: FM/FM, AM/FM, FM/AM und AM/FM!
Mit einem Bit ist nur ein 2-Operator-Modell parametrierbar, da ich mich 
aber im OPL3-Modus im 4-Operatoren-Modell befinde, fehlt mir das zweite 
Bit. Meine Vermutung ist das die Parameter in den drei folgenden Kanälen 
genau dieses zweite Bit bereitstellen. Wie das aber genau funktioniert 
kann ich bei bestem Willen nicht genau erraten. Es ist alles sehr 
verworren, da die Operator-Konstellationen auch keine brauchbaren 
Resultate ergeben. Evtl. weiß da jemand etwas genaueres, ansonsten muß 
ich mir das in längerenn Versuchsreihen aus dem OPL-Chip herausmessen.

von Wiesolator (Gast)


Angehängte Dateien:

Lesenswert?

Es hat etwas nicht richtig geklappt. Der Anhang der Register fehlte auf 
die ich verwiesen hatte. Hier ist er nun ebenfalls im PDF-Format.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Das sieht doch schon sehr gut aus. Gratuliere! Bei den Operator 
Konstellationen kann ich dir leider nicht helfen, die kenne ich aber gut 
aus meinem DX7. Da gibt es alle möglichen Patches, indem der eine 
Operator den anderen moduliert. Beim DX7 insgesamt 32 verschiedene 
Konstellationen aus 6 Operatoren.
Die Modulation wird vermutlich mittels der ADSR Parameter (Attack Decay 
Sustain Release) bestimmt. (Ich glaube, da hast du einen kleinen Fehler, 
zweimal kommt Attack vermutlich nicht vor)
Ein systematisches Vorgehen ist bei den 4-Operator Patches sinnvoll. 
Dreh einen Operator auf und klingel die Patches durch. Aufmalen. Dann 
dreh den nächsten auf usf. Auf diesem Bild sieht man die Konfigurationen 
des DX7 als kleine Kästchen über den Folientasten:
http://3.bp.blogspot.com/-NBk0J2rorQo/TuJcbjKQJMI/AAAAAAAABqY/cPnIP2jpJ54/s1600/Yamaha%2BDX7%2BMk%2B1.jpg

So ähnlich kannst du dir das bei dir auch vorstellen. Tut mir leid, das 
es so winzig ist, vllt. findest du noch ein grösseres Bild.

von Wiesolator (Gast)


Lesenswert?

Ja das ist ein Fehler, sollte Release heißen. Nicht der einzigste 
Fehler, hier gieng beim Posten soweit alles grundlegend schief was so 
schief gehen kann.

Mit Operatoren bin ich sehr gut vertraut, auch in eigenen Projekten 
(habe schon immer mein kleines Studio und programmiere eigene Sounds). 
Das "durchklingeln" war nun meine Strategie falls hier keiner etwas 
genaueres weiß. Dauert nur eben etwas länger, weil man nicht genau sieht 
woran man eben genau dreht. Man sieht dort nur die mögliche Reaktion 
darauf.

von Wiesolator (Gast)


Lesenswert?

Habe da noch eine kleine Idee wegen der Voices. Ich dachte nun einfach 
auf sechs 4-OP-Voices und sechs 2-OP-Voices zu gehen und die Drums nicht 
zu verwenden. Klangen nach etlicher Schrauberei nicht befriedigend außer 
im Basedrum.

Dann hätte ich Unisono, Monophon wie auch Polyphon als Betriebsart 
idealer kombiniert. Daraus könnte man die folgenden skizzierten 
Operator-Modelle in 6-OP-Voices aufbauen (einfach beide Kanäle 
gleichzietig antriggern). Sechs der Modelle wären dann parallel in 
diesem OPL-Chip realisierbar. Jede Abart davon ist ja durch Level 0 am 
Operator-Output parametrierbar.

-----------------------------------------------
1.) FM/FM + FM (0-0-0)
-----------------------------------------------
  +---+   +---+   +---+   +---+
  | A |-->| B |-->| C |-->| D |--+-->
  +---+   +---+   +---+   +---+  |
                  +---+   +---+  |
                  | E |-->| F |--+
                  +---+   +---+
-----------------------------------------------
2.) FM/FM + AM (0-0-1)
-----------------------------------------------
  +---+   +---+   +---+   +---+
  | A |-->| B |-->| C |-->| D |--+-->
  +---+   +---+   +---+   +---+  |
                          +---+  |
                          | E |--+
                          +---+  |
                          +---+  |
                          | F |--+
                          +---+
-----------------------------------------------
3.) FM/AM + FM (0-1-0)
-----------------------------------------------
                  +---+   +---+
                  | A |-->| B |--+-->
                  +---+   +---+  |
                  +---+   +---+  |
                  | C |-->| D |--+
                  +---+   +---+  |
                  +---+   +---+  |
                  | E |-->| F |--+
                  +---+   +---+
-----------------------------------------------
4.) FM/AM + AM (0-1-1) ähnlich 7
-----------------------------------------------
                  +---+   +---+
                  | A |-->| B |--+-->
                  +---+   +---+  |
                  +---+   +---+  |
                  | C |-->| D |--+
                  +---+   +---+  |
                          +---+  |
                          | E |--+
                          +---+  |
                          +---+  |
                          | F |--+
                          +---+
-----------------------------------------------
5.) AM/FM + FM (1-0-0)
-----------------------------------------------
                          +---+
                          | A |--+-->
                          +---+  |
          +---+   +---+   +---+  |
          | B |-->| C |-->| D |--+
          +---+   +---+   +---+  |
                  +---+   +---+  |
                  | E |-->| F |--+
                  +---+   +---+
-----------------------------------------------
6.) AM/FM + AM (1-0-1)
-----------------------------------------------
                          +---+
                          | A |--+-->
                          +---+  |
          +---+   +---+   +---+  |
          | B |-->| C |-->| D |--+
          +---+   +---+   +---+  |
                          +---+  |
                          | E |--+
                          +---+  |
                          +---+  |
                          | F |--+
                          +---+
-----------------------------------------------
7.) AM/AM + FM (1-1-0) ähnlich 4
-----------------------------------------------
                          +---+
                          | A |--+-->
                  +---+   +---+  |
                  | B |-->| C |--+
                  +---+   +---+  |
                          +---+  |
                          | D |--+
                          +---+  |
                  +---+   +---+  |
                  | E |-->| F |--+
                  +---+   +---+
-----------------------------------------------
8.) AM/AM + AM (1-1-1)
-----------------------------------------------
                          +---+
                          | A |--+-->
                          +---+  |
                  +---+   +---+  |
                  | B |-->| C |--+
                  +---+   +---+  |
                          +---+  |
                          | D |--+
                          +---+  |
                          +---+  |
                          | E |--+
                          +---+  |
                          +---+  |
                          | F |--+
                          +---+

von Tom W. (Gast)


Lesenswert?

Da scheint ja wirklich was zu wachsen! Gibt es schon was zu hören?

>base drum
Bass Drum

Base Jumper! :-)

Ich hatte mich damals auch mit der Progammierung von Sounds befasst, 
liess es dann aber, weil es heute Besseres gibt. Mit DSPs kanns Du 
hunderte Stimmen beliebiger Komplexität anlegen.

von Wiesolator (Gast)


Lesenswert?

BassDrum, ja, altes Leiden... schreibe das schon immer falsch :)

Wie schon erwähnt habe ich "besseres" gerade genug. Mir geht es eher 
darum, diesen Chip zu neuen Soundqualitäten zu erwecken, als da auf der 
dicken Schiene zu fahren. Kommt ja später noch ein Filter (VCF) und 
Attunator (VCA) dahinter wie bei diversen anderen Hybriden. Auch wenn FM 
filterähnliche Sounds produzieren kann, habe ich mir das für dieses 
Projekt als Ziel gesetzt gehabt. Der OPL soll nacher nur einen 
Oszillator (DCO) bilden. So kann ich das FM-Spektrum vor allem gegen 
Resonanz interessant nacharbeiten. Zuerst geht es mir aber darum die 
Parameter sinvoll im AVR zu verwalten, auch in Hinsicht auf spätere 
Presets im EEPROM.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Thomas Werner schrieb:
> Mit DSPs kanns Du
> hunderte Stimmen beliebiger Komplexität anlegen.

Da gehen übrigens die Meinungen weit auseinander. Für Sampler gilt das 
sicher, aber gerade die FM/Operator Synthese von Yamaha ist schwer 
nachzubilden, vor allem bei glockenähnlichen Sounds, die in den 80ern 
beim DX7 so bekannt waren. Man kann so etwas sicher auch in einem DSP 
implementieren, aber wenn man die OPL Chips sowieso gerade da hat, ist 
es sicherlich lohnend, damit zu experimentieren.

Wiesolator schrieb:
> -----------------------------------------------
> 1.) FM/FM + FM (0-0-0)
> -----------------------------------------------

Das sieht doch alles sehr gut aus! Sieht mir so aus, als hättest du die 
Patches schon gut geknackt :-)

von Wiesolator (Gast)


Lesenswert?

Das mit der Nachbildung ist so eine Geschichte, da hat Mathias wirklich 
Ahnung und auch Recht. Eine Nachbildung hat diese kreischende Artifakte 
(Aliasing), die eine echte FM nicht hat, gerade in den krummen 
Multiplikatoren wie z.B. 7:3.

Die Operator-Modelle sind nicht 6-er Operatoren im Chip, ich habe die 
nur so hingetüftelt um aus insgesamt 3 Kanälen welche zu erhalten. Das 
Maximum beim OPL3 ist bekanntlich 4-OP (auf 2 Kanälen). Das einzigste 
was ich etwas schade finde, ist das man in der Architektur keine zwei 
(oder mehr) Modulatoren auf einen Carrier setzen kann, aber denke damit 
kann man auch sehr gut leben.

So z.B:
           Mod     Carrier
          +---+     +---+
          | A |--+--| C |-->
          +---+  |  +---+
          +---+  |
          | B |--+
          +---+

von Tom W. (Gast)


Lesenswert?

Matthias Sch. schrieb:
> Man kann so etwas sicher auch in einem DSP
> implementieren, aber wenn man die OPL Chips sowieso gerade da hat, ist
> es sicherlich lohnend, damit zu experimentieren.
Zweifelsfrei. Yamaha hat ja einen grossen Schritt getan mit dem FM 
Synthese und sich das sogar patentieren lassen, soweit mir bekannt.

So ganz habe ich nie verstanden, waraum die "musikalisch" so im Vorteil 
sind.

Wäre aber mal interessant, einen solchen Chip nachzubauen.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Thomas Werner schrieb:
> So ganz habe ich nie verstanden, waraum die "musikalisch" so im Vorteil
> sind.

Der Kniff ist eigentlich nur,das du , wie du auch an Wiesolators 
Tabellen siehst, jeden Operator mit einer eigenen ADSR Hüllkurve belegen 
kannst, und dann die Operatoren in den Patches aufeinander modulieren 
kannst. Bei z.B. einer Glocke macht ein Operator nur das 'Pitch', einer 
ein leichtes Vibrato und die beiden, die damit moduliert werden, 
erzeugen dann den Ringmodulatorsound. Wenn noch Operatoren übrig sind, 
nimmst du die dann fürs An- und Abschwellen der schwingenden Glocke als 
LF Generator.
Wenn man bereit ist, einen Sound dahingehend zu analysieren und das auf 
das Operatormodell anzuwenden, kannst du nahezu beliebige Sounds 
kreieren, allerdings kommt man schnell vom Hundersten ins Tausendste :-)
In den 80ern gab es z.B. einen täuschend echten Steinway (wirklich!) auf 
dem DX7. Ich war mit meinem RAM Cartridge schon zur Stelle, aber der 
Keyboarder wollte nicht, das ich ihn mir kopiere :-(
Ich hab den DX7 bis heute und obwohl es noch der Mark I ist, freue ich 
mich jedesmal an seinen klaren mächtigen Sounds.

von Wiesolator (Gast)


Lesenswert?

Ein kleines Video zu deinen Ausführungen habe ich gefunden:

http://www.youtube.com/watch?v=ZETltDe_Jhc

Dort spielt er solch einen Sound auf dem DX7 an. Kannst ihn ja gerne 
einmal anfragen ob er sein Patch preisgibt.

von Michael W. (Gast)


Lesenswert?

Einfach mal unter dem Video auf 'mehr anzeigen' klicken. Dort ist der 
komplette Patch gelistet...

von Wiesolator (Gast)


Lesenswert?

Das hatte ich nach posten dann auch gesehen, da war es aber leider schon 
geschrieben. Bin einmal gespannt ob er es probiert, ich habe leider 
keinen DX7 mehr zum probieren. Ich habe nur noch den Casio VZ-10M als 
FM-Synth (8 Operatoren). Der ist etwas anders in der Architektur.

Ich hatte mir aber Gedanken gemacht wegen des Filters. Bin nun zu dem 
Entschluss gekommen, das ich einen Shruti-1 von Mutable als 
Filterplatine einsetze. Evtl. wäre es so auch später möglich eine neue 
obere Platine mit AVR, OPL3, Display, Taster und LED's zu tüfteln die 
darauf passt. Vorerst nehme ich aber einen meiner Shruti's auseinander, 
und hole mir nur die Filterplatine heraus mit dem MK4-Filter. zudem ist 
dort auch der VCA gleich enthalten. Die 'Schnittstelle' ist PWM 1-Bit.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Wiesolator schrieb:
> Bin einmal gespannt ob er es probiert

Da der DX7 allerdings im Proberaum steht, dauerts etwas. Patch 
ausdrucken und mitnehmen und dann mit der Sch**s Folientastatur 
einnageln...
So wie ich den Kommentar verstehe, klingt der Bösendorfer aber nur in 
der untersten Oktave richtig. Ich lass' es euch aber wissen, wenn ich 
den Sound drin habe und werde mal was aufnehmen.

Wiesolator schrieb:
> Die 'Schnittstelle' ist PWM 1-Bit.

Das klingt ein wenig nach einem analogen Filter mit 'Switched 
Capacitor'. Die alten MF10 ICs könnte man heute prima mit einem AVR im 
CTC Mode kontrollieren, die arbeiten mit einer variablen Steuerfrequenz. 
Aber PWM macht ja auch jeder AVR mit links.

von Wiesolator (Gast)


Lesenswert?

Super, bin mal gespannt, ich denke lt. Text ist es auch der tiefe 
Bereich, aber er hat das ein bischen verwirrend geschrieben.

Das Filterboard hat kein SC-Filter. Das ist ein echtes Filter mit OTA's. 
Die PWM ist nur der (1-Bit) DAC per RC-Tiefpass, der eine Analogspannung 
(Steuerspannung VCF/VCA) erzeugt. Reicht vorerst ja auch aus mit 8-Bit 
(256 Stufen). Das sind die Filterboards, ich habe auch noch ein altes 
das dort gar nicht steht, das nehme ich. Spart mir am geplanten 
MOOG-Filter die Supply mit +/-15V:
http://mutable-instruments.net/shruthi-filters

von Wiesolator (Gast)


Angehängte Dateien:

Lesenswert?

Zum Register-Management habe ich nun noch eine Tabelle angefertigt. 
Diese bezieht sich auf alle Register und definiert die Anordnung im 
polyphonen Spielmodus. Die Kombination von 2-OP + 4-OP ergibt meine 
6-OP's die ich oben bereits in den Typen 1 bis 8 aufgezeigt hatte.

Im polyphonen Modus werden die Register reihum aktualisiert und genutzt, 
so das in der Summe sechs Stimmen zur Verfügung stehen. Im monophonen 
Modus wird nur eine Voice genutzt, oder über Detune bis zu sechs 
simultane Voices.

von Tom W. (Gast)


Lesenswert?

Hoi! Kriegen wir dann einen Bösendorfer zum Selbbaupreis? :-)

Bei den Youtube-Sachen muss man immer etwas Aufpassen, kann auch sein, 
dass das gefaked ist. Hat jemand mit DX 7 den patch mal probiert?

von Wiesolator (Gast)


Lesenswert?

Das Bösendorfer ist nicht mein Interesse, ich tüftle nun nach einer 
kleinen Sommerpause weiter an der eigenen OPL-Hauptplatine auf dem 
Filterboard. Dort habe ich in Eagle bereits grob die Dimensionen und 
Bauteile nachgebaut und platziert.
An der I/U-Wandlung nach den DAC tüftle ich aber noch genauer, da ich 
nur GND und +5V verwenden will. Einen OPAmp will ich nicht einsetzen, 
der würde nur eine negative Spannung benötigen. Daher habe ich weiterhin 
auf NPN-Tansistoren für die I/U-Wandlung gesetzt. Das was es etwas 
schwieriger gestaltet ist, das ich die Platine wie gewohnt selbst ätzen 
will. Wird also nicht ganz so einfach wie ein Platinenservice werden. 
Ziel war es für mich derzeit, den Shruti im originalen Gehäuse mit dem 
Filterboard als Basis zu verwenden.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Wiesolator schrieb:
> Einen OPAmp will ich nicht einsetzen,
> der würde nur eine negative Spannung benötigen.

Es gibt single supply OpAmps, die Rail to Rail können, den OPA343 zum 
Beispiel und seine mehrköpfige Familie.

von Jürgen S. (engineer) Benutzerseite


Lesenswert?

Kriegt man davon mal was zu hören?

von Wiesolator (Gast)


Lesenswert?

Ein OpAmp in positiver Supply bei 0V bis +5V bringt mir recht wenig als 
Strom-Stammungswandler. Der müßte am positiven Eingang an GND befinden, 
am negativen Eingang mit Gegenkopplung auf Out. Daher der Gedanke mit 
dem NPN dessen Emitter gegen GND hängt udn die Basis einfach den Strom 
über einen Widerstand an +5V verstärkt. Der DAC liefert unter voller 
Amplitude ca. 1mA je Kanal. Da fehlt mir noch eine findige Lösung die 
Verstärkung am Transistor exakt zu reduzieren. Ich brauche nur einen der 
Kanäle (Links oder Rechts), da ich es so oder so durch den VCF schicke. 
Der Pan (Register im OPL) ist am OPL Links-Mitte-Rechts organisiert, den 
setze ich fest auf Mitte. Falls alle Stricke reisen muß ich eben von der 
unteren Platine (Filterboard) die -5V die dort erzeugt werden über eine 
Leitung hochführen, und mit OpAmp arbeiten. Davon wollte ich aber in 
erster Linie nicht Gebrauch machen, da ich das steckbar haben will wie 
die originale.

@Juergen S. das wollte ich als nettes Video zum Schluss machen, denke 
das wird die Shruti-Fangemeinde auch interessieren.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Wiesolator schrieb:
> Ein OpAmp in positiver Supply bei 0V bis +5V bringt mir recht wenig als
> Strom-Stammungswandler.

Wie sieht denn Deine Ausgangsbeschaltung jetzt aus? Ich kann mir aus 
Deinen Beschreibungen momentan nur schwer etwas vorstellen, was aber 
auch an mir liegen kann ;-). Aber ich bin ziemlich überzeugt davon, dass 
sich auch eine Lösung für einfache Versorgung und ohne 
Hock-Strecksprünge erreichen lässt. Wenn Du die Schaltung nicht posten 
möchtest, schick mir ´ne PN.

von Wiesolator (Gast)


Angehängte Dateien:

Lesenswert?

Danke für die Antwort, ich habe die beiden Varianten in Abb.1 und Abb.2 
als Grundlage ordentlich gezeichnet. Die erste wäre der Fall mit 
negativer Spannungsversorung die ich nur im Nortfall verwenden wollte, 
die zweite ist die mit NPN-Transistor. Selbst einer mit kleinster 
Verstärkung liefert mir da eine Stromverstärkung von meinetwegen 100, 
was den maximalen Strom aus dem DAC von 1mA bereits auf 100mA an Rc 
ansteigen lässt. Würde unsinnig Ström ziehen, und eine 
Lautsprecherendstufe wollte ich wirklich nicht bauen. Das ist eben noch 
irgendwie optimaler hinzubekommen.

Der Strom aus dem DAC ist nur gegen GND korrekt in der Dynamik, daher 
muß es gegen GND arbeiten. Versuche mit 2,5V als positiver Eingang waren 
klanglich ein Dissaster (übelste Nichtlinearitäten und verschobener 
Nullpunkt). Der DAC-Out hat in Ruhe ca. 4V. Es handelt sich dabei um den 
TDA1387 von der originalen Soundkarte.

Habe vom Shruti-Synthesizer auch ein Foto gemacht, dort sieht man das 
vordere Board, das entwerfe ich eben neu als Leiterplatte mit dem 
OPL-Chip. Die Grundplatine im Gehäude ist die Filterplatine auf die 
meine nacher anstatt der vorderen gesteckt wird. Dort kommen +5V und GND 
nach oben, wie auch die Control-Voltages an Filter Cutoff, Resonanz, VCA 
und eben auch Audio (dort kommt der DAC bei mir ins Spiel).

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Wenn der OV ein SingleSupply OV wie der OPA340 ist, benötigt er keine 
negative Spannung. Da Eingänge sowie Ausgänge bis sehr nahe an die 
Versorgung schwingen können, sollte auch die erreichbare Dynamik hoch 
genug sein. Wie weit reicht die maximale Aussteuerungsmöglichkeit des 
TDA1387, gemessene Werte?

von Wiesolator (Gast)


Lesenswert?

Nicht ganz richtig, der negative Eingang ist schon korrekt auf 0V, das 
wäre mit einem RailToRail oder auch einem Feld-Wald-Wiesen SingleRail 
wie dem LM358 (bis auf seine miese Bandbreite) möglich. Problem ist das 
die Gegenkopplung über den Widerstand den Strom in eine negative 
Spannung umsetzt. Damit arbeitet der OpAmp am Ausgang rechnerisch mit 0 
bis -5V und das passt eben nicht.
Setze ich aber die Spannung am positiven Eingang auf 2,5V, dann verhält 
sich der Strom am DAC nicht mehr richtig. Das würde theoretisch 
funktionieren, in der Praxis geht es leider nicht. Dann hätte ich 
maximal ca. +-2,5V Ausgangsbereich am OpAmp. Das kracht aber, und es 
ensteht eine hohe Verzerrung im Sound. Das war mein Versuch wie ich ihn 
eben auf der Platine gelötet hatte. Für Tests OK, aber nacher eben total 
unbrauchbar.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Und wenn Du den Strom aus dem DAC einfach durch einen Festwiderstand 
nach Masse schickst? Dann stellt sich doch am DAC-Ausgang eine Spannung 
proportional zum Strom ein. Die greifst Du hochohmig mit einem OV als 
Puffer ab. Daran schließt Du dann Dein Filter oder was auch immer an.

von Wiesolator (Gast)


Angehängte Dateien:

Lesenswert?

Diese Variante hatte ich am Anfang genutzt um den Output am DAC bei der 
Inbetriebnahme zu prüfen. Wenn ich da einen Sinus ausgebe ist er 
verzerrt und hat in der FFT plötzlich Obertöne die er nicht haben darf. 
Die Ursache habe ich dann auch schnell gefunden, im Datenblatt steht es 
extra im Kleingedruckten, das der Iout gegen GND abfließen muß. Mit 
einem Widerstand schiebt es aber je nach DAC-Wert die Spannung nach 
oben, so das ein Offset entsteht, der die Auslenkung der Amplitude 
nichtlinear bedämpft (ähnlich wie ein Verstärker im übersteuerten 
Betrieb). Im Inneren ist es in etwa so beschrieben, das es sich um einen 
Kondensator handelt (Bias mit ext. ca. 1µF), der seine Ladung über den 
Out immer direkt gegen GND abgeben muß. Bei jeder Wandlung wird er eben 
wieder geladen und gibt so eben eine konstante Ladungsmenge aus. Daher 
wohl auch in allen Applikationen die ich im Web finden konnte nur mit 
OpAmp und symmetrischer Supply. Habe die Prinzipschaltung aus dem 
Datenblatt angehängt.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Wiesolator schrieb:
> Die Ursache habe ich dann auch schnell gefunden, im Datenblatt steht es
> extra im Kleingedruckten, das der Iout gegen GND abfließen muß. Mit
> einem Widerstand schiebt es aber je nach DAC-Wert die Spannung nach
> oben, so das ein Offset entsteht, der die Auslenkung der Amplitude
> nichtlinear bedämpft (ähnlich wie ein Verstärker im übersteuerten
> Betrieb).

Dann mach den Arbeitswiderstand, der an Masse liegt, kleiner. Wenn der 
DAC einen dem Samplewert proportionalen Strom ausgibt, so muss dieser in 
einem (passenden) Widerstand in eine (passende) Spannung umgewandelt 
werden.

Alternativ nutze einen anderen DAC, beispielsweise den CS4344.

von Wiesolator (Gast)


Lesenswert?

Ich wollte eigentlich die vorhandenen Bauteile verwenden, macht auch 
Sinn wenn sie schon auf der Spenderplatine bereits vorhanden sind. Das 
mit dem kleineren Widerstand und nichtinvertierendem OpAmp teste ich 
aber noch, möchte da die entstehenden Störgeräusche und Verzerrungen 
erst einmal real erproben bevor ich den Teil endgültig auf der Platine 
route.

von Audiomann (Gast)


Lesenswert?

Mich würde - auch nach der langen Zeit - wirklich mal interessieren, ob 
der TE das in die Realität umgesetzt hat. Tönt da etwas, was man anhören 
könnte? Ich wäre besonders an der FM-Synthese interessiert.

von Jürgen S. (engineer) Benutzerseite


Lesenswert?

Audiomann schrieb:
> Mich würde - auch nach der langen Zeit - wirklich mal
> interessieren, ob
> der TE das in die Realität umgesetzt hat.

Wahrscheinlich eher nicht, auch das steht ja noch aus:

Wiesolator schrieb:
> @Juergen S. das wollte ich als nettes Video zum Schluss machen, denke
> das wird die Shruti-Fangemeinde auch interessieren.

Mit den OPL3 wird aber an anderer Stelle fleißig gebaut! Auch 
Nachbildungen gibt es, wobei man sehr hoch auflösen und richtig gut 
überabtasten muss, um da hinzukommen. Der Grund liegt in den Faltungen 
der Frequenzen, die entsprechende spektrale Komponenten zur Folge haben, 
mit nur 48kHz geht nicht alles, wie ich auch lernen musste. Die 
Grundfunktion ist aber - gerade mit DSPs- leicht abzubilden:
http://96khz.org/htm/fmsynthesis.htm

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
Noch kein Account? Hier anmelden.