SID Nachbau analog oder digital aus MEGA65

Es gibt 74 Antworten in diesem Thema, welches 14.768 mal aufgerufen wurde. Der letzte Beitrag (28. April 2016 um 16:09) ist von ZeHa.

  • Ich spare mir mal das Zitieren und beantworte die Fragen direkt:

    Boardgroesse soll in etwa so gross wie der SID werden. Es gibt eine sehr kleine Version des FPGA mit gerade mal 8x8mm. Das ist allerdings ein BGA Gehaeuse, welches fast zwangslaeufig eine 4-layer Platine erfordert. Damit wird es dann deutlich teurer. Ist also ein Abwaegen zwischen Kosten und Groesse.

    Panning Register sind eigentlich eine gute IIdee! Muss mal checken, ob das von den Signalpfaden her hinkommen koennte.

    Und was Caer Aisling angeht, da war ich selber verbluefft, wie gut es rauskommt. Allerdings gibt es mittlerweile auch ein paar andere Beispiele, die nicht so dolle sind. Es sind auch noch ein paar echte bugs drin, so gehen z.B. im moment die gemischten Wellenformen nicht mehr, weil ich das was kaputtumgebaut habe... von daher fuehle ich mich momentan eher bei 90% als bei 99% Und die letzten 10% dauern ja bekanntlich nochmal so lange, wie die ersten 90%...

  • Panning Register sind eigentlich eine gute IIdee! Muss mal checken, ob das von den Signalpfaden her hinkommen koennte.

    Ich könnte mir da mehrere Möglichkeiten vorstellen. In der Annahme, daß es ein Dual-SID-Core sein soll.

    1. Möglichkeit: 6 Panning-Register für die ungefilterten Stimmen und 2 weitere für die Filterausgänge. Vorteil wäre der geringere Implementierungsaufwand, da man sich hierbei auf den Mixer beschränken kann.

    2. Möglichkeit: Man baut 4 Filter ein, je einen pro SID und Stereo-Kanal. Die Filter für links und rechts können synchron eingestellt werden. Vorteil: Man könnte das Panning bereits vor dem Filter implementieren, und bräuchte nur 6 Panning-Register, also 3 pro SID, was intuitiver wäre.

    3. Möglichkeit: Man baut 6 Filter ein, für jede SID-Stimme einen eigenen, und implementiert einen Kompatibilitätsmodus, in dem die 3 Filter pro SID jeweils synchron mit den gleichen Filterparametern laufen. Die Panning-Stufe würde dann erst nach den Filtern kommen. Vorteil: Man könnte über zusätzliche Register alle 6 Filter individuell programmierbar machen.


    Auf einem 1:1-Ersatz trifft das sicher alles nicht zu, aber als Dual-SID-Board-Ersatz ist das bestimmt ein nützlicher Bonus. Man müßte halt, je nach benötigten Registern, 1 oder 2 zusätzliche Adressleitungen anschließen, und einen Stereo-Ausgang anbauen.

    Um gleichzeitig Mono, und Stereo-SID kompatibel zu sein, könnte man es so implementieren, daß zunächst alle Stimmen mittig gepannt sind, aber wenn zum ersten mal das Lautstärkeregister des zweiten SIDs beschrieben wird, automatisch die Stimmen des ersten SIDs auf links und die des zweiten SIDs auf rechts eingestellt werden.

    Und natürlich sollten erstmal die letzten Bugs gefixt werden, bevor man anfängt Bonus-Funktionen zu implementieren.

  • Ich habe nie den Wunsch nach einem Stereo SID verstanden. Man will es doch so original wie möglich haben, alles andere wie Turbo, mehr RAM usw. ist doch totaler Quatsch, weil eh kaum einer dafür was entwickelt.

  • Wo sind denn nur die JUNGS und FABRIKEN in der RUSSEREI geblieben, die CHIPS µ für µ abgeschliffen haben ?
    Das Equipment muß doch noch irgendwo eingemottet stehen.

  • Das schöne bei einer digitalen SID-Emulation ist, wie hier schon beschrieben, dass sie überall und jederzeit gleich klingt, eine Superreferenz also. Es macht viel mehr Sinn auf einem ReSID-Tracker wie Goattracker Musik für den SID zu machen als auf einem echten SID, der mit hoher Wahrscheinlichkeit nie so klingt wie ein anderen.

    Hab ich das jetzt richtig verstanden - du schlägst vor, eine Emulation zur "Referenz" zu erheben? Und die echten Geräte sind dann automatisch minderwertig, weil sie eben nicht so klingen wie die "Referenz", oder wie?

    Der echte SID, die feinen Unterschiede, oder auch die großen zwischen den beiden Hauptversionen, die unvermeidlichen Hintergrundgeräusche - das alles sind die Gründe, warum ich Musik auf dem C64 mache. Wenn man die Unterschiede kennt, kann man sie in seinen Stücken berücksichtigen.

    c0z

  • Ich glaube er meint das eher so: Wenn man ein Musikstueck fuer den C64 schreibt, und moechte, dass es auf jedem C64 zumindest "gut" klingt, dann koennte man eine Referenz wie z.B. eine Emulation oder GoatTracker oder eben den bis dahin hoffentlich vollendeten SID-Nachbau hernehmen, und quasi davon ausgehen, dass wenn die Musik auf dieser Emulation gut klingt, dass sie dann auch auf allen anderen SIDs okay klingen wird. Ein bisschen wie bei Studio-Monitor-Lautsprechern - dort gibt es ja auch Modelle, denen nachgesagt werden, dass wenn es auf den Boxen gut klingt, dass es dann ueberall gut klingt ;)

    Man kann sich halt sicher sein, dass man keinen "Ausreisser" hat, also z.B. einen SID mit besonders dumpfen Filtern oder besonders hoher Verzerrung oder Nebengeraeuschen etc. Sondern man hat den digitalen, bundesdeutschen Einheits-Volks-Referenz-SID sozusagen :D

    - neue Spiele für den C64 -
    Bitte melde dich an, um diesen Link zu sehen.Bitte melde dich an, um diesen Link zu sehen.Bitte melde dich an, um diesen Link zu sehen.Bitte melde dich an, um diesen Link zu sehen.

  • Sehr geehrte Freunde der Blasmusik,

    meiner einer hat sich ein großes Projekt umgehängt - hoffentlich wird das auch was! - nämlich das Projekt FatSID - ein Nachbau ähnlich den Projekt SwinSID.

    Es wird immer diskutiert, wie denn jetzt ein SID klingen soll, wo die Unterschiede innerhalb einer Baureihe liegt - also was die Schwankungen im Herstellungsprozess des Chips betrifft oder dessen Alterung.
    Auch darf man nicht vergessen, daß zu den programmierbaren analogen Filtern ja auch zwei Kondensatoren auf dem Board gehören, die auch Toleranzen aufweisen. Ich hab jetzt selbst noch nicht nachgesehen, welche Typen von Kondensatoren da verbaut sind, und welche Alterung da üblich ist. Das kann ja die Grenzfrequnzen der Filter und auch den Q-Faktor stark beeinflussen.

    Wie will ich das Ganze angehen?

    Am Anfang muß eine Analyse-Phase stehen, wo erst mal ganz genau aufgezeichnet wird, wie sich denn der SID verhält.
    Und zu diesem Zwecke muß ein Testprogramm her, das mir definierte Signale liefert.
    A: D.h. Rechteck und Sägezahn-Signale mit unterschiedlichen Lautstärken - ohne programmierte Filter
    Hier kann ich die Wandlerlinearität feststellen, als ob ein Sägezahn eine gerade Steigung hat, oder ob diese 'obenrum etwas zusammengedrückt' ist - also mit leichtem logarthmischem Anteil z.b.
    B: Weiters kann ich feststellen, wie das Verhalten weitergeht, wenn ich alle Drei Voices addiert betrachte.
    C: Wie schaut das Freuqenzverhalten aus - also das Verhalten im Übergangsbereich eines Rechtecksignals (= ein/aus schwingen)
    D: Wie schauen die Zeitkonstanten der programmierbaren ADSR-Kurve aus - ist das abhängig von der Taktfrequenz (Stichwort PAL/NTSC)
    E: Welche Wandlergenauigkeit hat der Spaß (ist pro Voice ein 8-Bit D/A-Wandler verbaut, oder ein Wandler für das addierte Signal,...)
    F: Wie verhalten sich programmierbaren analogen Filter:
    Hier sind je nach Chipversion unterschiedliche Verzerrungen zu erwarten.
    Weil die erste Chipversion fertig werden musste und der Entwickler nicht mehr Zeit von den Chefs bekommen hat ist eben die erste Version so geworden wie sie ist - mit all ihren ungewollten Verzerrungen in den Filtern.
    Da diese Verzerrung von den Spiele-/Demoentwicklern auch so genutzt wurde muß auch ein Nachbau diese Verzerrungen (konfigurierbar) nachbilden können.
    Mit einem Testsignal (Recheck, Sägezahn oder Dreieck) müssen unterschiedlichen Filtervariationen ausgemessen werden (Typ wie Hochpass, Bandpass, Tiefpass; Grenzfrequenz und deren Variation innerhalb eine Baureihe, Unterschiede zwischen unterschiedlichen Baureihen, programmierbare Q-Faktoren)
    Hier sind die größten Unterschiede zu erwarten.

    Damit ich mir aber nicht 100 verschiedene SID-Chips kaufen muß habe ich mir gedacht, daß ich ein C-64-Testprogramm schreibe - ein einfaches Basicprogramm würde eigentlich reichen - und jeder der da mitwirken will soll das an seinem C64 mit seinem SID laufen lassen.
    Das kann dann jeder mit seiner - hofffentlich hochwertigen - Soundkarte im PC aufnehmen und mir das WAV oder FLAC-File zur Auswertung schicken.

    Somit bekommen wir einen großen Überblick über die verschiedensten SID-Chips die in der Welt so rum geistern und deren Variationen.
    Ich denke daß diese Analysephase für alle wichtig ist, die in irgendeiner Weise am Thema SID-Nachbau arbeiten.
    Vielleicht kann ich ein Tool zur automatisierten Analyse basteln, wo dann das Programm feststellt, wie "normgerecht" sich sein SID-Chip verhält, oder ob da generell schon irgendwas im Dreck läuft.

    Ja, was dann den FatSID betrifft: Ich kann noch nichts sagen, welchen MCU oder welche MCUs ich verwenden werde. Es gibt einen Microchip DSPIC, der mit 5V läuft, vielleicht eignet ich dieser für eine authentische Emulation - zumindest was den Sound betrifft. Die zwei Paddle-Register zum Auslesen sind da erst mal nicht so wichtig.
    Ich glaube aber nicht, daß sich hier eine Stereoversion realisieren lässt - dafür hat dieser DSPIC zu wenig bums.

    Vielleicht gelingt eine dual-MCU Version mit einem Atmega (5V oder Xmega mit Levelshifter), der sich um das Lesen der Register kümmert und einem STM32F4 der mit etwas mehr Bums stereotauglich wird und über die letzten drei unbelegten Register im 32-Byte-Block drei L/R-Volume Register für jede Voice implementiert.
    Somit könnte mich nicht nur drei Kanäle links und drei Kanäle rechts implementieren, sondern für jeden der sechs Kanäle die Lautstärke für links und rechts separat einstellen.
    Ich glaub das wäre eine feine Lösung.

    Falls der STM32F4 dann noch immer genug Bums hat, könnte man noch eine Reverb-Funktion basteln mit zwei Registern für Größe und Intensität des Reverb.

    Im Prinzip sind das jetzt mal meine Wunschträume - und vermutlich nicht nur meine, aber jetzt muß ich erst mal wieder auf zwei ersteigerte C64 warten um seit über 25 Jahren wieder mal mit dem SID spielen zu können :smile:

    Anregungen und andere feuchte Wunschträume nehme ich gerne entgegen, garantiere aber erst mal für gar nichts. Umsetzen ist ja schließlich eine andere Sache als Träume.

    Falls das jemand von den ICOMP-Typen liest, die das Reloadedboard gemacht haben und wieder eine neue Version auflegen:
    Es gibt auf dem letzten C64 Reloaded Board einen Stecker für Stero-SID-Extensions. Diese enthält einen zusätzlichen Adresspin für die nächst höhere Adresse um einen StereoSID möglich zu machen. Ich bitte die verantwortlichen für die nächste Version noch den nächsten Adresspin unterzubringen, damit diverse SID-Umbauten den vierfachen Adressbereich bekommen können.

    Thanks,
    WhyLee.

  • Falls das jemand von den ICOMP-Typen liest, die das Reloadedboard gemacht haben und wieder eine neue Version auflegen:
    Es gibt auf dem letzten C64 Reloaded Board einen Stecker für Stero-SID-Extensions. Diese enthält einen zusätzlichen Adresspin für die nächst höhere Adresse um einen StereoSID möglich zu machen. Ich bitte die verantwortlichen für die nächste Version noch den nächsten Adresspin unterzubringen, damit diverse SID-Umbauten den vierfachen Adressbereich bekommen können.


    Änderungswünsche fürs Reloaded Board am besten im richtigen Thread posten!
    Notfalls einen neuen im Unterforum aufmachen:

    Bitte melde dich an, um diesen Link zu sehen.

    Da wird dann eher mitgelesen!

  • Am Anfang muß eine Analyse-Phase stehen, wo erst mal ganz genau aufgezeichnet wird, wie sich denn der SID verhält.

    Bitte melde dich an, um diesen Link zu sehen. ist bekannt?

    10 x=rnd(-1963):fori=1to81:y=rnd(1):next
    20 forj=1to5:printchr$(rnd(1)*16+70);:next
    30 printint(rnd(1)*328)-217

    Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen.

  • nein, ist mir noch nicht bekannt. herzlichen dank für diesen input. ich muß mir das dann reinziehen, wenn ich meine c64er bekomme.
    wäre natürlich super, wenn schon verwertbares material vorliegen würde - zumindest zu einem teil.

  • meiner einer hat sich ein großes Projekt umgehängt - hoffentlich wird das auch was! - nämlich das Projekt FatSID - ein Nachbau ähnlich den Projekt SwinSID.

    Super! Langsam kommt Schwung in die Bude!

    Ich kann Dir versichern, Du weisst noch nicht WIE gross das Projekt ist, dass Du Dir umgehangen hast... ;)

    Die bei Dir unter A...F gestellten Fragen sind allesamt bereits beantwortet worden. Es gab vor einigen zig Jahren mal ein sehr umfangreiches reverse-engineering Projekt rund um Leute wie "alankila" von dem auch das von unseen verlinkte tool ist. Leider mangelt es aber an einer vernuenftigen gebuendelten Dokumentation der Ergebnisse (oder ich habe sie noch nicht gefunden).
    Die Schritte A-F auf deiner Liste koenntest Du also auch per Web-Recherche und vor allem durch Studium diverser source codes (in denen auch viel Doku eingebettet ist) erledigen.

    Die Schlussfolgerungen die alankila und seine Nachfolger daraus gezogen haben, sind in der ReSid library (in VICE integriert) bzw. in JSidPlay2 zu finden. Letztendlich findet sich dort eine sehr exakte Reproduktion des Digitalteils der SIDs und eine Spice Simulation des Analogteils (die Schaltung der Filter ist durch zahlreiche die-shots hinreichend bekannt).

    Du brauchst Das Rad also nicht neu zu erfinden. Das schreibe ich nicht, um Dich zu entmutigen, sondern um Dir sehr viel Forschungsarbeit zu ersparen und Deine Kraefte sinnvoller in die Perfektionierung der Emulation zu buendeln.

    Ich persoenlich habe nach eigenen Forschungsarbeiten beschlossen mein FPGASID-Projekt sehr eng an die ReSID Implementierung zu lehnen. Das habe ich vor allem getan, weil ReSID als die anerkannt beste Emulation gilt (JSIDPlay2 ist fast das gleiche, man merkt dem code an, das beides aus dem gleichen Urschleim stammt). Im FPGA kann man natuerlich nicht alles zu 100% genau so wie in ReSID machen. Manches muss man anders loesen, einiges kann man sogar besser machen (hoehere Sampleraten, mehr Bitaufloesung etc).

    Letztendlich werden subtile Klangunterschiede aber immer in der extremen Bandbreite dessen untergehen, was von SID zu SID an Streuung auftritt. Dessen sollte man sich immer klar sein, wenn man gerade ein irgend einer Mikrooptimierung tueftelt.

  • Ja, was dann den FatSID betrifft: Ich kann noch nichts sagen, welchen MCU oder welche MCUs ich verwenden werde.


    Nimm doch einen PSoC 5LP, hat 5V, digitale und analoge Signalverarbeitung, 80MHz ARM und einen CPLD alles in einem Chip. Bitte melde dich an, um diesen Link zu sehen..

  • Für mich sollte der neue SID so genau wie möglich wie ein existierender klingen. Ich würde da ungern andere Features drin haben wollen. Wenn schon neue Features rein müssen, dann bitte den IC mit der Möglichkeit ausstatten ihn in zwei Modi zu betreiben. Einmal C64 und einmal C65 oder so.

  • Da es inzwischen ja nicht nur vor kurzem beim FPGA-SID Fortschritte gab, sondern aktuell auch beim SwinSID Ultimate, muss ich sagen, bin ich weiterhin sehr optimistisch was die Emulationsfaehigkeit des SID-Chips angeht. Ich denke, in ein paar Jahren duerfte das Thema durch sein. Es wird natuerlich nach wie vor Puristen geben, die das Original bevorzugen, und das finde ich auch vollkommen legitim, aber fuer alle anderen, die darauf nicht gar so viel Wert legen, finde ich es echt super, dass die Emulation inzwischen so nah dran ist, dass viele den Unterschied wahrscheinlich gar nicht mehr wirklich wahrnehmen koennen. Oder selbst wenn sie den Unterschied hoeren, zumindest nicht mehr bestimmen koennen, welches der beiden Hoerbeispiele nun Original und welches Emulation ist.

    Hut ab an alle Entwickler dieser beiden Projekte! :thumbup:

    Hier der aktuelle Soundvergleich vom SwinSID Ultimate: Bitte melde dich an, um diesen Link zu sehen.

    - neue Spiele für den C64 -
    Bitte melde dich an, um diesen Link zu sehen.Bitte melde dich an, um diesen Link zu sehen.Bitte melde dich an, um diesen Link zu sehen.Bitte melde dich an, um diesen Link zu sehen.