Hello, Guest the thread was called15k times and contains 327 replays

last post from TurboMicha at the

Maximal sinnvolle Anzahl an SIDs in einem System?

  • Hello die Musikspezialisten,


    mal eine Frage aus Programmierersicht: Was ist die sinnvolle Höchst-Anzahl an SIDs in einem C64? Ab wann steht nicht mehr genügend Rasterzeit usw, zur Verfügung, um mehr SIDs vernünftig anzusprechen?


    (Jetzt mal ganz abgesehen von der Sinnhaftigkeit und technischen Machbarkeit.)


    Gruß

    kinzi

  • Ab wann steht nicht mehr genügend Rasterzeit usw, zur Verfügung, um mehr SIDs vernünftig anzusprechen?

  • Bei dieser mathematischen Knobelaufgabe mit Maximierungsgrad kann ich dir leider nicht helfen. Aber ich hab mal versuchsweise vier Stück angesprochen mit jeweils drei Stimmen. Das war schon nicht schlecht, fand ich. Man merkte da aber schon das Einknicken vom C-64.


    Vielleicht gibt dir das schon mal eine ungefähre Vorstellung davon, was drinn ist.

  • Ich kann Dir sagen, dass die U64 an der Stelle nicht cheatet. Das 8-Sid-Demo würde auf einen C64 mit 8 SIDs also genau so laufen wie bekannt. Somit ist bekannt, dass man 8 SIDs sinnvoll und vernünftig nutzen kann.

  • markusC64 Prima, danke! Das "Acht-SID-Demo" war mir bisher nicht bekannt, bei mir war bei vier SIDs Schluss. :)

    Aber wieviel ist denn bei dem "Acht-Sid-Demo" noch Luft?

  • Aber wieviel ist denn bei dem "Acht-Sid-Demo" noch Luft?

    Dazu müsste Sokrates etwas sagen können. :-)

  • Was ist die sinnvolle Höchst-Anzahl an SIDs in einem C64? Ab wann steht nicht mehr genügend Rasterzeit usw, zur Verfügung, um mehr SIDs vernünftig anzusprechen?

    Rein aus der Theorie heraus würde ich mutmaßen, dass für die Antwort weitere Bezugspungte notwendig sind. Vermutlich können mehrere SIDs auf einer Adresse geschaltet sein, dann könnte mit einem Schreibzugriff gleichzeitig also mehr als ein SID angesprochen werden (Sinn mal außen vor). Außerdem kommt es darauf an, wie komplex die Klangerzeugung sein soll aka was für ein Player bzw. welche Funktionen eines Players genutzt werden. Im Extremfall reicht schon eine Rasterline für einen SID, das hat aber eben Auswirkungen auf die Sounderzeugung.

  • Ich würde behaupten, dass kommt ganz darauf an, was außer Musik noch passieren soll.

    Die Ausgangsfrage hatte ich jetzt so verstanden, dass es um die gesamte zur Verfügung stehende Rasterzeit geht, die ausschließlich für Klangerzeugung genutzt werden soll. Das kommt bei entsprechendem Aufwand nämlich auch schnell viel zusammen, wenn man allein mal an die 4x oder 8x Speed Titel denkt.

  • Vermutlich können mehrere SIDs auf einer Adresse geschaltet sein, dann könnte mit einem Schreibzugriff gleichzeitig also mehr als ein SID angesprochen werden (Sinn mal außen vor).

    Das ist sinnlos, die klingen dann gleich (besser: spielen das gleiche). Es geht mir um unabhängige SIDs. [EDIT] Ich gebe zu, die Frage war nicht konkret genug gestellt. ;) [/EDIT]

    Außerdem kommt es darauf an, wie komplex die Klangerzeugung sein soll aka was für ein Player bzw. welche Funktionen eines Players genutzt werden. Im Extremfall reicht schon eine Rasterline für einen SID, das hat aber eben Auswirkungen auf die Sounderzeugung.

    Genau das ist der Grund meiner Frage, weil sonst kommen wir auf die Idee von oben, einen Piepser / Furz pro SID. Das ist sinnlos. Es geht um die musikalisch sinnvolle Nutzung. Ich bin weder Musiker noch SID-Programmierer und weiß daher nicht, wie viele Daten pro Sekunde, pro Frame, pro Rasterzeile in den SID geschoben werden, um "ordentlichen Sound" zu machen.


    Mir ist klar, dass das stark variieren kann, aber einen "Mindeststandard" muss es geben, ich will ja dann nicht 100 SIDs haben, die aber nur noch ganze Noten auf einer Stimme spielen können (keine Achtel, ...), weil sie nicht mehr schnell genug "betankt" werden können.

    Ich würde behaupten, dass kommt ganz darauf an, was außer Musik noch passieren soll. Rasterzeit ist nur erheblich, wenn auch dem Bildschirm etwas dargestellt werden soll was zeitkritisch ist.

    Aus meiner Frage heraus: nichts. "Maximum Power" für die SIDs. :)

    Weil dann wird klar: Es können sinnvollerweise x SIDs sein, aber niemals mehr.

    Die Ausgangsfrage hatte ich jetzt so verstanden, dass es um die gesamte zur Verfügung stehende Rasterzeit geht, die ausschließlich für Klangerzeugung genutzt werden soll. D

    Ganz genau. Dass bei einem "Zwölf-SID-Stück" nebenbei dann gar nichts mehr geht - OK. Das ist genau das, was ich dann wissen wollte. Dann "gehen" nämlich 13 ja wohl nicht mehr.

  • Wenn man mal Digi Sounds aussen vor lässt, könnte man die sinnvolle Maximum Zahl dadurch errechnen, wie viele Prozessortakte (Befehle) man für die Ansteuerung benötigt.

    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.

    Wenn man natürlich die Noten geschickt auf die SIDs verteilt, dann werden es natürlich mehr.

    Ich meine mit ner einfachen Logik kannst du sehr leicht 16 SIDs ansteuern.

    Nur wann fällt es dem Ohr auf, dass sie nicht synchron sind?

    Pro Note in SID pro Stimme sind es glaube ich in etwa 40 Befehle.

    Macht im Schnitt 3*40*3 Zyklen.

    Bei grob 1MHz also 0.4ms

    Wenn die 100ms stimmen, sollte man (mit ein bisschen Verlust für die Umschaltlogik etc), 200 SIDs schaffen.


    Aber ggf habe ich da noch nen Gedankenfehler drin.

  • Dann "gehen" nämlich 13 ja wohl nicht mehr.

    Es gibt zumindest 16x Speed Tunes (siehe diesen CSDb-Forumsthread).

    "12" und "13" waren willkürlich gewählte Werte als Beispiel. ;)

  • Wenn man mal Digi Sounds aussen vor lässt, könnte man die sinnvolle Maximum Zahl dadurch errechnen, wie viele Prozessortakte (Befehle) man für die Ansteuerung benötigt.

    Das wäre an der Stelle meine Frage gewesen - dudelt er von alleine, bis man ihn stoppt? Dann steigt die Anzahl der möglichen SIDs ja mit der Langsamkeit der Musik.

  • Aber wieviel ist denn bei dem "Acht-Sid-Demo" noch Luft?

    Dazu müsste Sokrates etwas sagen können. :-)

    In "The tuneful eight" ist keine Luft mehr. Ohne die Effekte wären evlt. zwei weitere SIDs möglich gewesen. Der verwendete Player von Cheesecutter ist aber vergleichseweise langsam. Wir haben Cheesecutter gewählt weil das Tool LMan von der Komposition her die meisten Möglichkeiten gegeben hat und zu Beginn sowieso nur 8 SIDs möglich gewesen wären. Das hat sich erst im Laufe der Entwicklung nach oben entwickelt, da Gideon von der Demo und der Idee sehr angetan war.


    Falls man die SIDs einzeln ansteuerbar haben will benötigt jeder SID $20=32 Byte im Speicher. Das entspricht einer Maximalzahl von 2048 SIDs, dann allerdings ohne Musikdaten und Player. Das sollte sich noch durch Module mit einblendbaren Speicher auch noch erweitern lassen.


    Praktisch sind die Begrenzungen:

    • Einen Musiker finden, der bereit ist so etwas zu machen
    • Soll es auch auf realer Hardware laufen ist das mir derzeit bekannte Limit 14 SIDs, das kann sich natürlich noch nach oben entwickeln
    • Wenn man jeden SID einmal pro Frame aktualisiert gibt es einen hörbaren Versatz zwischen SIDs die am Anfang angesteuert werden und SIDs die am Ende angesteuert werden. LMan hat das bei unserer Demo herausgehört (und zwar real: er hat mich auf hörbare Verbesserungen hingewiesen ohne zu wissen, dass ich da etwas geändert hatte).
  • Das wäre an der Stelle meine Frage gewesen - dudelt er von alleine, bis man ihn stoppt? Dann steigt die Anzahl der möglichen SIDs ja mit der Langsamkeit der Musik.

    Es soll davon ausgegangen werden, dass die x SIDs zur Erzeugung von Mucke verwendet werden, wie sie z. B. in heutigen Demos/Spielen Standard ist, kein Gefiepe oder Gefurze, oder nur ein Dauergeräusch, etc. Die Stimmen sollen auch wirklich genutzt werden, und nicht z. B. nur pro SID eine.


    Mehr SID-Stimmen liefern ja ganz neue Möglichkeiten - "richtige" Akkorde, Halleffekte, mehr Instrumente, ....


    Mir ist klar, dass die Bandbreite da sehr groß ist, je nachdem, wie der Musiker die SIDs nutzen kann/will. Aber ich denke, jemand wie Vincenzo, der das 4-SID-Stück zum "Quad Core"-Demo(*) von Singular Crew komponiert hat sagen würde, bei seinem 4-SID-Stück waren 20 % CPU-Zeit aufgebraucht, könnte man das grob auf 20 SIDs "hochrechnen". Um so eine Betrachtung geht es mir.


    [ (*) Mit ist klar, dass das vier C64 mit je einem SID waren, es existierte aber mal ein Youtube-Video (leider finde ich es nicht mehr :(), in dem er es auf einem Vier-SID-Player auf einem C64 laufen ließ und recorded hat. ]

  • Falls man die SIDs einzeln ansteuerbar haben will benötigt jeder SID $20=32 Byte im Speicher. Das entspricht einer Maximalzahl von 2048 SIDs, d

    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).

    Einen Musiker finden, der bereit ist so etwas zu machen

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

    Soll es auch auf realer Hardware laufen ist das mir derzeit bekannte Limit 14 SIDs, das kann sich natürlich noch nach oben entwickeln

    Interessant, woher kommt dieses Limit?

    Wenn man jeden SID einmal pro Frame aktualisiert gibt es einen hörbaren Versatz zwischen SIDs die am Anfang angesteuert werden und SIDs die am Ende angesteuert werden. LMan hat das bei unserer Demo herausgehört (und zwar real: er hat mich auf hörbare Verbesserungen hingewiesen ohne zu wissen, dass ich da etwas geändert hatte).

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


    Wenn das so ist, dann reduziert sich die vorhandene Zeit ja auf rund 20 ms.

  • Ja, klar, also, keine Soundgrütze! ;-)

    Wenn man sich aber musikalische Arrangements mal ansieht, gibt es Stimmen, die wenig Notenwechsel machen, weil sie lange nachklingen oder im krassesten Fall einen Bordunton spielen. Und in der Zeit, wo so eine Stimme nicht 'angefasst' werden muss, kann man ja mit den andeten mehr machen. Da kommt es dann wirklich auf die Musik selbst an, wieviel maximal möglich ist. Ein wenig wie bei JPEG, da ist das Verhältnis zwischen Kompressionsgrad und Qualität stark materialabhängig.

  • Wenn man sich aber musikalische Arrangements mal ansieht, gibt es Stimmen, die wenig Notenwechsel machen, weil sie lange nachklingen oder im krassesten Fall einen Bordunton spielen. Und in der Zeit, wo so eine Stimme nicht 'angefasst' werden muss, kann man ja mit den andeten mehr machen

    Das ist mir klar, auch als "Nicht-Musiker". :)


    Aber ich denke, dass jemand, der schon viele SID-Tunes gebaut hat und auch schon welche für mehrere SIDs da durchaus aus Erfahrung sagen kann: "Also ich hatte damals noch x ms Zeit übrig bei meinem Zwei-SID-Tune und hätte vielleicht nochmal y ms rausholen können. Mehr als z SIDs kann ich mir nicht vorstellen sinnvoll zu nutzen."


    Um so was geht es mir. Es muss keine exakte, unumstößliche Anzahl auf zwei Kommastellen genau rauskommen. :D