Eigenentwicklungs-Synthi: OSC Wellenformen vorrendern?

I

iGoA

Registriert
23.01.06
Beiträge
891
Reaktionen
3
Punkte
931
Moin!

Ich arbeite von Zeit zu Zeit an einem eigenen [g=77]VST[/g]-Synthi. Da der Synthi verschiedene Wellenformen anbietet und dieses auch später erweiterbar sein sollten, habe ich mir gedacht, daß ich die jeweilse eine Schwingung in ein größes Array vorberechne. Nun taucht natürlich unweigerlich das Problem auf, daß beispielsweise ein Sinus evtl. ziemlich starke Quantisierungsstörungen aufweist. Dagegen wird soweit ich weiß, gängigerweise mit Interpolation angegangen. Meine Frage wäre nun, ob es nicht ausreicht, wenn man die Wellenform ausreichend groß vorrendert. Also beispielsweise 96000 Samples für eine Schwingung. Was meinen die Experten dazu?
 
mir fallen hier auf anhiebnur eineinhalb pluginbauer ein. zum einen wäre da der bootsy und zum halben male ich, halb weil ich nur mit synthedit arbeite.
auch die digitaltechnologier hat halt ihre grenzen man müst ja die rechenleistung ins unermessliche erhöhen um es immer noch besser zu machen aber sachen wie aliasing und andere schönheitsfehler wird man praktisch nie ganz wegbekommen oder? vorgefertigte wellenformen (nennt man doch wavetable oder) bringen heute viele syths mit. das macht die sache bunter. klassische analoge mit ein paar oscs gibts wie sand am meer, alle mehr oder weniger gut.
zur technischen programmierung wie man mit den 96000 samples verfährt kann ich als syntheditler leider nicht viel sagen.
 
Das "wie" wäre auch kein Thema für mich. So habe ich´s praktisch jetzt schon programmiert. Die Frage war nur, ob es sozusagen "total verwerflich" ist. Denn ich habe hier und dort gelegentlich ein Murren und Motzen gegenüber Synthis mit Wavetable vernommen. Ich vermute halt, daß mit einem ausreichend hochauflösendem Wavetable kein nachteil gegenüber "richtigen" Sinus-generatoren oder ähnlichem besteht. (nur von Software ausgehend! Hardware is eh ein anderes Thema und Glaubenssache)
 
man muss es ja von aussen nicht sehen können...
naja, wenn man viele wellenformen hat sieht mans wohl und wie bringt man den pwm-regler für die square unter?
lass mal sehen und hören wenns komplett ist.
 
Der Predator macht das zB so - die OSCs lassen sich oversamplen (bis 16x). Ich würde vermuten das man schon bei einfachen Wellenformen wie Sägezahn mit Oversampling besser fährt (CPU vs. Quali) als mit Interpolation. Bei Sinus hingegen nicht.
 
ja die meisten machen 4fach oversampling ist der beste kompromiss aus cpu leistung und sound !

warum musst du dich den damit beschäftigen in reaktor zb kann ich die oszis einfach wählen und dann einstellen wie genau der rechnet !
andere prog haben die oszis auch fertig !

vorrendern is quatsch da kannst gleich die fertigen sampelllops nehmen oder fertige wavetables erstellen !

weis zwar nicht was du vorhast du müsstest aber für jede note vorrendern also so 128mal, beim laden des sounds ist das wohl nicht so doll !
und das wichtigste am va das liquid feeling ist weg erstmal !

und bei ner soundänderung im osz mixer muss er wieder neu rendern !

der user mag aber nicht warten wenn das hinkriegst ok !

LG Frank
 
Danke für Eure Antworten!!

@frank:
Neenee, ich rede lediglich davon jeweils eine einzige Schwingung vorzuberechnen. Zum Beispiel eine Sinusschwingung in 96000 Einzelschritten vorberechnen und dann im Speicher halten. Wenn ich dann einen Sinus-OSC brauche, kann ich die Werte einfach nur ausm Speicher lesen (je nach gewünschter [g=349]Frequenz[/g] überspringt man entsprechend viele Schritte) und muss weder Sinus berechnen noch interpolieren. So meine Theorie.
Das hat aber nichts mit dem vorberechnen ganzer Töne zu tun. DANN hättest Du natürlich recht und es wäre total albern.

@digit_al:
Den Pulslängenregler würde ich wahrscheinlich derart realisieren, daß innerhalb einer Periode/Schwingung die vorberechnete Welle entweder zu schnell oder zu langsam durchlaufen wird und am Ende entsprechend entweder abschnitten oder mit dem letzten Wert aufgefüllt wird. Dürfte für Square hinhauen (was mir ja schon reicht). Wie sinnvoll das bei anderen Wellenformen ist, weiß ich nicht, aber vielleicht ist es sogar ein interessanter Effekt.

@bootsy:
Wie geht das mit dem Oversampling bei OSC´s? Und ist das wirklich besser als einfach ne hochauflösende, vorberechnette Einzel-Welle?
 
Habe gerade gelesen, dass größe Lookup Tables den Nachteil haben, daß das Auslesen aus dem Speicher sehr langsam sein soll. Angeblich soll das live berechnen der Wellen sogar schneller sein. Weiß dazu jemand was?
 
wenn du nur eine schwingung berechnest und für die verschiedenen frequenzen dann teile überspringst hast du auch wieder ein unsauberes signal. oder?
 
Und genau daher wollte ich ja einen sehr großen wavetable aufbauen, um mir das interpolieren zu sparen. Ich glaube, bei einem Sinus in 96000 Einzelteilen (oder mehr) sind die unsauberkeiten vernachlässigbar.
 
Ich glaub, ich habe jetzt erst richtig verstanden was du vor hast: Pro Oszillator Wellenform möchtest du eine lookup table vorhalten, die die 96000 Abtastpunkte der Wellenform (ein einziger Wellendurchgang) enthält (zB in 32bit float). Das ist natürlich ne ganze Menge und dein Synth spielt warscheinlich auch nicht nur einen einzigen Osc. Das Verfahren ist nur schnell, wenn alle lookup tables permanent im Cache liegen (ob das so ist kann ich dir nicht sagen).
Entscheidender Punkt ist aber: Das Problem mit der Qualität ist damit noch nicht gelöst. Du mußt trotzdem noch Oversamplen wenn der Osc in die oberen Lagen gepitched wird oder es entsteht Aliasing.
Schau dir doch mal andere Synths genauer an, wie die das lösen. Rapture ist ein z.B. Kandidat oder Zebra2. Zebra2 zB liest Wellenformen mit nur 128 Stützpunkten ein und interpoliert dann.
Das zweite "Qualitätsproblem": Die eine Wellenform klingt natürlich statisch es sei denn du investierst wieder großen Aufwand, die Wellenform dynamisch zu variieren - da entstehen dann auch wieder Harmonische und Aliasing durch das Waveshaping, was kontrolliert werden muß.
Viel weiter kann ich dir da aber auch nicht helfen da ich kein Synth Programmer bin (und es auch nicht werden will), ich habe selbst auch nur einen bescheidenen Anfang mit Effektprogrammierung getan.
Hast du schonmal bei musicdsp.org gestöbert? Deren Forum ist jetzt glaube ich bei kvr, da tummeln sich sicher einige Synth Spezies rum.
 
Vielen Dank für Deine Antwort. Ja, genauso meinte ich das mit dem lookup table per osc-wellenform. Bin jetzt parallel auch bei KVR darüber informiert worden, dass genau das von dir angesprochene Problem mit dem Cache wohl meine Lösung ausscheiden lässt. Mir war überhaupt nicht klar, daß lesen aus dem Speicher so langsam sein kann, daß live Berechnen wieder schneller ist. Werde wohl pro Wellenform doch einen individuellen Algorithmus einsetzen müssen. Auf KVR und musicdsp sind aber reichlich gute Beispiele.
 
Wow! Danke!
 

Ähnliche Themen

M
Antworten
0
Aufrufe
32K
M

Neue Antworten


Oft gelesene Themen

Zurück
Oben