ultra-simple FFT intro
-
ChewingAluminumFoil ChewingAluminumFoil https://www.kvraudio.com/forum/memberlist.php?mode=viewprofile&u=248970
- KVRist
- Topic Starter
- 73 posts since 28 Jan, 2011 from Scottsdale, AZ
I used the single C file smbPitchShift.c from dspdimension.com in a VST. It required no changes at all and built 1st time and sounded good. It's WOL (wide open license).
I'm an FFT noob but if anyone wants to get their feet wet with FFT, this seems like it might be a good low-friction place to start.
http://www.denniscronin.net/dsp/vst.html
CAF
I'm an FFT noob but if anyone wants to get their feet wet with FFT, this seems like it might be a good low-friction place to start.
http://www.denniscronin.net/dsp/vst.html
CAF
-
- KVRian
- 1265 posts since 9 Sep, 2005 from Oulu, Finland
Note that the smbpitchshift code will be completely broken if there are multiple instances of a VST plugin using the code. (Due to the static variables involved.)
- KVRAF
- 7362 posts since 9 Jan, 2003 from Saint Louis MO
I don't think that's true. There's no mechanism for sharing that memory across different DLLs.
-
- KVRAF
- 3388 posts since 29 May, 2001 from New York, NY
Xenakios is right. The statics in smbPitchShift will be shared across instances of the same plugin.
- KVRAF
- 7362 posts since 9 Jan, 2003 from Saint Louis MO
Huh, surprising. Good thing I tend to write in a more object-oriented way and wouldn't run into this, because I wouldn't have guessed.
-
- KVRist
- 194 posts since 13 Oct, 2012
I experimented a bit with smbPitchShift for PitchedDelay (also rewrote it into a class which isn't very hard) but I didn't pursue it any further as the code is rather slow and the pitching doesn't sound that good (at least if used in a feedback loop like in PitchedDelay).
I attached the code for the class but it also uses some JUCE classes (namely HeapBlock and ScopedPointer) and FFTReal for FFT. HeapBlock and ScopedPointer can be replaced with pointers and manual new/delete, FFTReal is available here.
I attached the code for the class but it also uses some JUCE classes (namely HeapBlock and ScopedPointer) and FFTReal for FFT. HeapBlock and ScopedPointer can be replaced with pointers and manual new/delete, FFTReal is available here.
You do not have the required permissions to view the files attached to this post.