Array auf 0 erweitern dürfte klappen. Aber die zwei IF-Abfragen kosten meines Erachtens keine relevante Zeit. Beide Lösungen erscheinen mir sinnvoll.
Wenn ich da etwas ändere, möchte ich mich aber nocheinmal reinarbeiten und verstehen,
was da genau passiert, um dann evtl. eine wirklich elegante und saubere Lösung zu finden.
Vergleich mit deinem Player: Da muss berücksichtigt werden, dass mein Format keinerlei Effekte
unterstützt, ausser Lautstärke. Und diese nicht von 0-63, sondern exponentiell gestuft von 0 bis 7.
Das kommt noch gut hin, aber sobald irgendwo Portamento oder anderes auftritt, sind die Melodien
nicht mehr richtig.
Deshalb lassen sich nur ein Bruchteil der existierenden MODs sauber in ein ZSM umsetzen.
Aber das war ja eben meine Motivation: Von Anfang an wenn ich an die Schaffung eines MOD Players
dachte, war mir die Umsetzung der ganzen Effekte einfach zu viel Aufwand. Und letztlich, weil
ich selber mittlerweile beim Trackern von Musikstücken kaum mehr Effekte als Lautstärke benutze,
habe ich es derart reduziert. So kann auch im Player der interne Puffer der Länge einer Zeile
entsprechen, und braucht nicht, wie bei MODs z.B. auf 1/50tel Sekunde eingestellt sein.
So ergeben sich auch nebenbei kompaktere Patterns, wobei man mehr Effekte auch optional
einbinden könnte ohne dass sich das Format übermäßig aufbläht, aber ich wollte es ja wie
gesagt so halten, dass ich bequem eine Zeilenlänge als internen Puffer haben kann.
Was die vielen Stimmen angeht: Im Gegensatz zu statischen Patterngrößen hat man hier
die Möglichkeit, in einem ZSM einfach wenige Kanäle zu benutzen und zwischendrin
auch mal ganz viele, man muss sich keine Gedanken machen wieviele Kanäle man
benutzt, weil alles dynamisch gehalten wird mit nur so viel Speicherplatz wie
wirklich benötigt.
Gegen das Forken hab ich nix, solange sich nicht irgendwer mit meinen Lorbeeren schmückt ;)
Dass ich das Format nicht weiterentwickle kann ich nicht garantieren, allerdings ist es so
schon ziemlich optimal. Der Converter ist noch erweiterbar, er könnte das ganze Modul
durchsimulieren und abstecken, ob jedes Sample wirklich bis zum Schluss durchgespielt
wird und wenn nicht, dieses entsprechend abschneiden um Speicher zu sparen. Auch könnte
er erkennen, wenn an einem Sample hinten nur Nullen dranhängen oder nur noch leises
Rauschen, kommt schonmal vor, und dieses ebenfalls entfernen.
Neue ZSMs kann ich machen, ich habe ein paar tausend MODs, wovon etwa 75% aber eher Müll sind,
und beim Rest kommt es dann drauf an, wie effektbeladen die sind, d.h. ob sie auch
ohne besondere Effekte noch sinnvoll klingen.
Und dann kommt noch der Musikgeschmack der Allgemeinheit dazu.
Es wimmelt von Techno in der MOD-Szene, bin mir nicht sicher ob das jedem gefällt.
Neue ZSMs machen ist keine Arbeit, höchstens vorher den Converter verbessern...
Die Player Unit ist speziell für ZSMPLAY gespickt mit diversen Abgriffen für die Anzeigen.
Wenn ZSMs später einmal für Spiele verwenden werden, dann kommen diese Abgriffe
alle raus, bis auf wenige einzelne wie die Sync-Sache.
Ich hatte so eine Version der Unit schon gemacht und einige Procedures in Assembler umgeschrieben.