arakula
|||
Nicht ganz so, weil der PPG keine Kommazahlen kann. Hier ist die Logik, wie sie in den PPGs zum Einsatz kommt:Die Interpolation ist eine einfach Überblendung. Stell Dir das wie zwei Osc vor, die jeweils verschiedene Schwingungen zyklisch aus einem ROM abspielen. Die Signale werden mit
Ausgang = Wave_1 + TablePosition * (Wave_2 - Wave_1)
gemischt. "TablePosition" ist dabei eine Kommazahl - der ganzzahlige Teil wird genutzt, um die beiden ROMs zu wählen. Der fraktionale Teil bestimmt das Mischungsverhältnis der beiden gewählten ROMs.
In der Wavetable-Definition stehen Wertepaare: Wellenform im ROM und Position in der Wavetable. Position beginnt bei 0 und endet bei 60.
Beim Laden der Wavetable holt sich der Wave immer zwei Wertepaare (Wellenformen, die an der unteren und oberen Position stehen) und füllt die dazugehörigen Samples in einen Arbeitsbereich, so dass die dazwischen liegenden, zu interpolierenden Wellenformen frei sind. Danach wird rekursiv interpoliert: es wird die Mitte zwischen den beiden Wellenformen bestimmt und diese wird für jedes Sample mit (links+rechts)/2 befüllt. Das wird dann solange mit (links/mitte) und (mitte/rechts) rekursiv weitergespielt, bis keine Wellenformen mehr zu interpolieren sind. Sobald das erreicht ist, werden alle errechneten Wellenformen bis auf die rechte zum PROZ-Board gesendet.
Dann wandert der Wave ein Wertepaar weiter und wiederholt das Spiel, bis er am Ende der Wavetabledefinition angekommen ist.
... ich hoffe, das war verständlich