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
Wiesolator schrieb: > Ich habe hier etliche Soundblaster-Soundkarten mit dem OPL und > umgebenden Bausteinen herumliegen. PCI oder ISA?
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).
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.
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.
Wenn du nicht gerade eine mit EMU8000 hast sind diese Karten praktisch nur ADCs+DACs mit einem mehr oder weniger guten OPL3-Synth.
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.txt http://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
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.
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.
Es hat etwas nicht richtig geklappt. Der Anhang der Register fehlte auf die ich verwiesen hatte. Hier ist er nun ebenfalls im PDF-Format.
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.
Einfach mal unter dem Video auf 'mehr anzeigen' klicken. Dort ist der komplette Patch gelistet...
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.