CharlyBeck
- Registriert
- 23.02.14
- Beiträge
- 3.400
- Reaktionen
- 1.286
- Punkte
- 7.579
@CharlyBeck Du bringst hier ein paar Sachen durcheinander.
Eine eindeutige Zuordnung ist nicht das gleiche wie eine Lineare Funktion. Diese hat als Funktionsgraphen genau eine Gerade.
f(x) = m*x + n ist die Grundform der Linearen Funktion ( sagt mir Wikipedia )
Naja, ohne jetzt klugscheissen zu wollen, nur als rache weil ihr mich ins boxhorn gejagt habt:
Der Vorgang, den ein Prozessor macht, wenn er so eine eindeutige zuordnung wie beschrieben auflöst lautet:
zieladresse = elementgrösse * index + startadresse
f(x) = m*x + n
in programmiersrpache sieht das dann z.b. so aus:
y = zuordnung[x];
insofern ist dieser teilaspekt des systems eine lineare funktion. und ich denke genau das hatte kuno ursprünglich gemeint.
da die zordnungstabelle nicht 2 ^ bittiefe gross ist, wird man (vermutlich) wiederrum linear zwischen den 2 am sample anliegenden punkten interpolieren. schon die 2te lineare funktion in dem konstrukt. nicht liniear ist lediglich die generierung der zuordnungstabelle, aber in dem moment wo es eingangsdaten sind, ist es nicht teil des systems.
andersrum könntest du ja auch mit einer exponental funktion, mit den richtigen daten in der richtigen reihenfolge befüttert, eine linie generieren. ist die exponentialfunktion deshalb linear?
und - um noch ein bisschen praxis einfliessen zu lassen - ich glaube ich würde versuchen - wenn ich einen (etwas komplexeren) waveshaper embeded implementieren würde - diese zuordnungstabelle nicht vom selben prozess berechnen lassen, der die samples berechnet werden. die sampleberechung würde dann auf rein linearen funktionen basieren - sehr schnell. lediglich die berechnung der zuorndungstabelle könnte - fast - beliebig komplex sein. die trägheit würde zb zu einigen millisekuden verzögerung nach dem drehen am synthie-knöpfchen bis zur hörbaren beeinflussung des sounds führen. aber in einigen millisekunden + verwaltungsaufwand zum transport der tabelle in den anderen prozess - könnte man dann sicherlich mit splines rumhantieren und trotzdem noch ne gute polyphonie zustande bekommen. und hören tut man das auch nicht. (~23 ms zwischen 2 perkusiven sounds nimmt der mensch als isolierten klang wahr)... reservieren muss man halt einige mips für die vorberechnung der zuordnungstabelle, damit die auch bei voller stimmenauslastung nicht bis zum st nimmerleinstag dauert.
@synthpark : hier haste deinen performanten waveshaper ggf mit polynomzug... in dem paper stehen solche praktikten sicherlich nicht drin, das ist die mathematische grundlage (für die generierung der zuordnungstabelle). aber meistens wird in der implementierung sehr getrickst, um die echtzeitanforderungen erfüllen zu können.
Zuletzt bearbeitet: