Hello, Guest the thread was called2.5k times and contains 73 replays

last post from marty at the

Maximal sinnvolle Anzahl an SIDs in einem System?

  • Diesen Ansatz hatte ich auch schon mal, aber das ist so nicht richtig, weil man natürlich einen Multiplexer bauen kann, der auch nur auf einer Adresse tausende SIDs decodieren kann (über weitere I/O-Adressen, die den Multiplexer steuern).

    Ich hatte ja auch eine Möglichkeit für einen Multiplexer genannt.

    Gehen wir mal davon aus, es gäbe jemanden.

    Das halte ich für extrem unwahrscheinlich. Man könnte aber einen Konverter schreiben, der ein vohandenes, komplexes Musikstück entsprechend in SIDs umsetzt.


    Demnächst soll ein 10 SID-Stück erscheinen, bei welchem 10 C64 verwendet und synchronisiert werden sollen:

    Dance of the Sugar Plum Fairy, performed on 10 Commodore 64s

    Die Komposition ist die Umsetzung eines klassisches Stück. Ich nehme an das wurde bewußt so gewählt, um den Aufwand bei der Komposition zu verringern.


    Interessant, woher kommt dieses Limit?

    Ich denke das ist kein Geheimnis mehr: die nächste Ultimate 64 Firmware wird 8 UltiSIDs bereitstellen, in die SID-Sockel passen zwei Stereo-SIDs (z.B. FPGASIDs), zusätzlich kann ein U2+ mit Stereo-SIDs gesteckt werden. Macht zusammen 14 SIDs. Mal sehen, was sich da noch tut in Zukunft...

    Muss man als Musiker jeden SiD einmal pro Frame ansteuern? (Ich muss so bescheuert fragen, ich weiß es wirklich nicht.)

    Muss man nicht. Wäre aber ein nachvollziehbares, messbares Kritierium (wieviele SIDs können pro Frame angesteuert werden?). Und hat natürlich Auswirkungen auf die klanglichen und kompositorischen Möglichkeiten.

  • Die Musik in Zeit der Stille braucht im Schnitt so 14 Rasterzeilen für einen SID (zwei Balken, der eine davon ist das Kopieren der in der Zeropage gepufferten Werte). Die Musik ist nicht ultra-aufwändig, aber das muss sie für viele SIDs vielleicht auch nicht sein. Damit käme man naiv gerechnet auf 312/14 = 22 SIDs. Ich denke man könnte den Player noch ein wenig optimieren für viele SIDs (sprich: ich denke nicht dass das wirklich linear mit der SID-Zahl skaliert). Also 24 wären sicher drin, wenn man sonst nix macht meiner Meinung nach.


    EDIT: und ja, ich denke man muss typischerweise die SID-Register einmal pro Frame updaten, sonst wird der Sound zu statisch (bspw. Filter- oder Pulweitensweeps).


  • Ich denke das ist kein Geheimnis mehr: die nächste Ultimate 64 Firmware wird 8 UltiSIDs bereitstellen, in die SID-Sockel passen zwei Stereo-SIDs (z.B. FPGASIDs), zusätzlich kann ein U2+ mit Stereo-SIDs gesteckt werden. Macht zusammen 14 SIDs. Mal sehen, was sich da noch tut in Zukunft...

    Gut, das ist das technische Limit des U64. In einen C64 kann ich im Prinzip ja beliebig viele reale SIDs einbauen, Gut: "In" den C64 wird irgendwann schwierig das ist mir klar. :P Aber am Expansionport ist viel Platz.


    Danke an alle bisher für die wertvollen Beiträge und Erklärungen. :thumbup:

  • Einige Aspekte würde bisher außer acht gelassen. Je mehr Stimmen / SID vorhanden sind desto seltener müssen doch neue Töne/Wellenformen/Noten gesetzt werden. Man könnte dadurch einfach zwischen den Stimmen hin und her schalten, was kaum Rechenzeit beansprucht. Die Player-Routinen dürften auch ehr auf Speicherplatz als auf Geschwindigkeit optimiert sein, eine Routine mit max. Speicherverbrauch könnte deutlich schneller sein. Bin kein SID-Guru, deshalb alles ohne Pistole. Meine Glaskugel sagt, am Ende limitiert das setzen der Filter pro SID. Das setzen dürfte pro SID bei 6 Bytes liegen, selbst mit Schleife sind es nur 14 Takte pro Byte. Macht 6*14 + Player-Routine / PI * Daumen 200 Takte pro SID bei vollen Filtereinsatz pro Frame. Nach meiner Rechnung sind damit locker 90 SID's möglich. Damit hat man zwar nur 270 Stimmen, aber vielleicht liege ich auch voll daneben.

  • Also wenn ich so viele SIDs zur Verfügung hätte, würde ich als Musiker jeden SID als eigene Stimme verwenden. Das entspricht auch etwa einer Stimme eines "gescheiten" Synthesizers: 3 Oszillatoren, ein Filter. Und natürlich würde ich wenn ich so viele Filter hätte die auch alle fleißig modulieren, ebenso wie auch die Tonhöhe jedes Oszillators. Insofern stimme (sic!) ich nicht mit Acorn überein ;). Oh, und Goattracker ist glaube ich schon extrem auf Rasterzeit ausgelegt, ich bezweifele dass da viel auf Kosten von Speicher zu holen wäre. Und Speicher wird ja auch schnell knapp bei so vielen Stimmen...

  • Gut, das ist das technische Limit des U64.

    Es ist aktuell das Limit mit real existierender Hardware. Klar könnte man da neue Dinge bauen, das würde die Komplexität der Aufgabe natürlich beliebig in die Höhe treiben. Leichter wäre da die Emulation, aber schon bei 8 SIDs kommen da viele Rechner an ihre Grenzen.


    Wenn man nicht alles in einem Frame ansteuern will gibt es kein Limit (abgesehen von prinzipiellen Ressourcen-Thematiken und dem Ende des Universums). Wer solche langezogene Ansteuerung bei Musik mag der sollte mal hier reinschauen: ORGAN²/ASLSP. Der nächste Tonwechsel findet 5. September 2020 statt und das Stück soll im Jahr 2640 enden. :-)


    Oh, und Goattracker ist glaube ich schon extrem auf Rasterzeit ausgelegt,

    Die Abspielroutine von Goattracker ist deutlich schneller als die von Cheesecutter. Nach unseren Messungen hätten wir damit 10 statt 8 SIDs in der Demo ansteuern können. Für einen Versuch die maximal überhaupt mögliche SID-Zahl pro Frame anzusteuern ist das freilich immer noch vieeeeeeel zu langsam.

  • Es ist aktuell das Limit mit real existierender Hardware.

    Das ist in meinen Augen aber kein wirkliches "Limit". Eher ist das der momentan verfügbare "Ausbaustand".


    Ich kann mal eben schnell 16 reale SIDs übereinander löten und nur /CS und AUDIO_OUT separat wegführen; das /CS für jeden einzelnen kann man mit TTL-Standardbauteilen erzeugen. (OK, ich kann kann das nicht, weil ich keine 16 SIDs "vorrätig" habe. :D).


    Aber wenn man deinen Ansatz nochmals nimmt mit den 32 Bytes Adressraum - dann lassen sich in einer Page acht SIDs unterbringen. Real nutzbar sind D4xx, D5xx, D6xx, D7xx, DExx und DFxx, also sechs Pages; macht insgesamt 48 SIDs, die man unterbringen kann, ohne irgendwas Wichtigem im C64 in die Quere zu kommen und ohne Multiplexer.


    Ah, falsch, den VIC-Bereich könnte man auch noch ausdekodieren ... sieben sechs in D0xx und je acht in D1xx, D2xx, D3xx; macht 31 30. Insgesamt also 79 78. Mal sehen, ob das jemand als Herausforderung sieht. :D


    [EDIT] Der VIC-Adress-Bereich ist größer als 32 Bytes. [/EDIT]

  • 1.

    Soviele SIDs hat ein C64.

    Dann habe ich keinen C64, sondern was anderes. :D

  • Ah, falsch, den VIC-Bereich könnte man auch noch ausdekodieren ... sieben sechs in D0xx und je acht in D1xx, D2xx, D3xx; macht 31 30. Insgesamt also 79 78. Mal sehen, ob das jemand als Herausforderung sieht. :D

    In der Nacht im Bett ist mir eingefallen, dass ich noch was übersehen habe - hinter den CIAs ist auch noch "Platz" für 14 Stück, das sind dann insgesamt 92. :bgdev

  • Da das Thema ja auch "sinnvoll" beinhaltet: als Musiker kann ich mir schon noch vorstellen, für 16 SIDs zu komponieren, aber bei mehr wird es glaube ich musikalisch schon eine große Herausforderung. Und sicher auch nur mit dafür spezialisierten Trackern. An dieser Stelle übrigens Hut ab an LMan, denn mit 4 unabhängigen Trackern zu komponieren stelle ich mir echt nervenzerüttend vor.

  • Musikalisch ist das sicherlich zu rechtfertigen. Ein doppelt besetzter Flügel kann potentiell 20-stimmig spielen, eine Gitarre 6-stimmig, ein Dudelsack meist 4-stimmig (2-3 Bordune), und regelmäßig einstimmige Instrumente werden gerne massenhaft orchestriert, um der Instrumentengattung eben doch zu Mehrklängen zu verhelfen.

    Wie weit man, wenn man sowas mit SIDs realisiert, den typischen Klang noch wahrnimmt, und ob das schön ist, wird Geschmackssache sein. ;-)

  • In "The tuneful eight" ist keine Luft mehr. O

    Bin erst heute dazu gekommen, mir mal den Tune anzuhören ... =O:!::!::!:

    Das ist eine ganz neue Dimension ...


    Blöde Frage, weil ich mich damit überhaupt nicht auskenne: Sind da 4-Bit-Samples jetzt auch dabei, oder ist das alles "pure" SID-Musik?

    Jedenfalls sehr beeindruckend.


    Auf welche Adressen wurden die SIDs denn gemappt, aus reiner Neugier? Wäre vielleicht Zeit, sich einen Standard zu überlegen für acht SIDs ... beim U64 nehme ich an ist mal sehr flexibel, beim FPGASID weiß ich es nicht, aber ich denke da an Leute, sie sich wirklich acht "richtige" SIDs übereinander nageln wollen, oder auch acht (oder mehr) SwinSIDs, die sind ja extrem günstig. Da wir man nicht dauernd die Belegung anpassen wollen. Bei den SwniSIDs könnte man auch sehr viele auf kleinem Raum unterbringen.


    Mit einem 74LS138 könnte man die D400-Page schön in acht Bereiche aufteilen, oder auch je zur Hälfte D4xx/D5xx verwenden. Das würde auch mit Zwei-SID-Tunes zusammenpassen, die D420 oder D500 verwenden. Am schönsten wäre nur D4xx komplett, dann wäre es auch mit dem C128 im 128-Mode voll kompatibel.


    DExx/DFxx möchte man vielelicht nicht unbedingt verwenden, weil man sich andere Erweiterungen am Expansionport nicht verbauen will.

  • Wenn alle SIDs in der Lage sein soll, zur gleichen Zeit eine Note anzusteuern, dann darf zwischen angesteuerten Note im ersten SID und im letzten SID nicht zu viel Zeit vergehen. 100ms als Maximum?

    Oder weniger? Das menschliche Ohr soll es ja gleichzeitig wahrnehmen.

    100ms ist schon viel zu viel, das wuerde man deutlich wahrnehmen. Allerdings benoetigt ein kompletter Bildaufbau ja 1 Sek / 50 Frames, also hat man ja eh nur 20 ms zur Verfuegung. Aber selbst das kann man schon wahrnehmen, also je nach Klang kann ein Ton der 20 ms spaeter gespielt wird als ein anderer schon als "nicht mehr ganz genau gleichzeitig" wahrgenommen werden. Besonders bei kurzen, praegnanten Klaengen. Bei Streichern oder sowas ist es weniger kritisch.

  • 20 ms finde ich schon klar zu viel für perkussive Sounds. Kann man natürlich mit leichten Performancekosten durch Shadow-Register vermeiden, die man dann auf einen Schlag in die echten Register kopiert.