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
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).
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.
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.
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...
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.
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.
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.
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.
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.
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.
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.
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.
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.
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
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.txthttp://www.fit.vutbr.cz/~arnost/opl/opl3.html
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
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ß!
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).
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.
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.
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.
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.
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 |--+
+---+
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.
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.
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 :-)
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 |--+
+---+
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.
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.
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.
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.
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.
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
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.
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?
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.
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.
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.
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.
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).
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?
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.
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.
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.
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.
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.
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.
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