PreFFTizer Sampler
Verfasst: 27. Februar 2011, 00:37
Momentan bin ich hier auf einem ziemlichen FFT-Trip. Dabei schwebt mir folgendes vor bzw. da sitz ich dran: Ein polyphoner (aber nicht multitimbraler) Sampleplayer, der ein .wav nimmt und gleich in eine fft-Tabelle streamt, von der aus dann abgespielt wird - Tempo, Pitch und Formanten unabhängig steuerbar.
Die Struktur eines ersten, lauffähigen Prototypen sieht so aus:
Aus einer Lookup-Table wird direkt beim Öffnen des Ensembles oder aber beim Samplewechsel das Sample in den prefftizer gestreamt und von da in Tabellen verwaltet. Eine Play-Cell schickt entsprechend der gespielten Taste die Daten in die inverse FFT. Momentan passiert dahinter noch nichts außer einer Amplituden-adsr.
Hauptproblem ist die Latenz (um die ein bisschen zu verringern das Prestreaming, alternativ könnt ich mal die kleinere fft ausprobieren). Die cpu-Last ist natürlich recht hoch, aber moderat. Bei 4 Stimmen lastet das Ensemble meinen Yorkfield hier (also einen Kern davon) zu um die 10% aus.
Der nächste Schritt wird sein, eine dritte Tabelle für Partial-Frequenzen anzulegen und (die Idee kam mir gestern) die Interpolation der Audio-Tabellen zu nutzen, indem auf X die Zeit und auf Y die Partial-Nummer gelistet wird.
---
Grundlage ist dieser (in nächster Version fast fertige, Ensemble im Anhang, nur bei 22.05 kHz gut, sonst matscht der Bass wegen der fft-Größe) Pitchshifter hier, der im Stretch so ziemlich an seine Grenzen stößt (mit einer preFFT kann man ein Signal recht brauchbar bis 0 runterfrieren, direkt von der .wav auslesend ist das zwar möglich aber zumindest im Reaktor unverhältnismäßig aufwendig) und natürlich zum Spielen nicht so der Hit ist bzw. schlichtweg unbrauchbar (da jag ich immer nur ganze Songs durch, der Focus liegt auf dem Formantshifter bzw. hätt ich gern einen richtigen Stimm-Veränderer-Shift (angedeutet ist das im "Twisted Shift")).
Die Struktur eines ersten, lauffähigen Prototypen sieht so aus:
Aus einer Lookup-Table wird direkt beim Öffnen des Ensembles oder aber beim Samplewechsel das Sample in den prefftizer gestreamt und von da in Tabellen verwaltet. Eine Play-Cell schickt entsprechend der gespielten Taste die Daten in die inverse FFT. Momentan passiert dahinter noch nichts außer einer Amplituden-adsr.
Hauptproblem ist die Latenz (um die ein bisschen zu verringern das Prestreaming, alternativ könnt ich mal die kleinere fft ausprobieren). Die cpu-Last ist natürlich recht hoch, aber moderat. Bei 4 Stimmen lastet das Ensemble meinen Yorkfield hier (also einen Kern davon) zu um die 10% aus.
Der nächste Schritt wird sein, eine dritte Tabelle für Partial-Frequenzen anzulegen und (die Idee kam mir gestern) die Interpolation der Audio-Tabellen zu nutzen, indem auf X die Zeit und auf Y die Partial-Nummer gelistet wird.
---
Grundlage ist dieser (in nächster Version fast fertige, Ensemble im Anhang, nur bei 22.05 kHz gut, sonst matscht der Bass wegen der fft-Größe) Pitchshifter hier, der im Stretch so ziemlich an seine Grenzen stößt (mit einer preFFT kann man ein Signal recht brauchbar bis 0 runterfrieren, direkt von der .wav auslesend ist das zwar möglich aber zumindest im Reaktor unverhältnismäßig aufwendig) und natürlich zum Spielen nicht so der Hit ist bzw. schlichtweg unbrauchbar (da jag ich immer nur ganze Songs durch, der Focus liegt auf dem Formantshifter bzw. hätt ich gern einen richtigen Stimm-Veränderer-Shift (angedeutet ist das im "Twisted Shift")).