I am currently working on a simple sampler that will allow me to load in a wav file and use my MIDI keyboard to play the loaded wav sample at the frequency according to the note played.
Now I need this pitch shifting to be done in real time so I opted to use resampleing to achieve different pitches. I don't care that the sample speeds up or slows down when doing so.
What I am doing is say for example sake I have a wav file of a sine wave at 261.63hz (middle C) and this file has 1000 samples (example). Now I want to resample this sine wave so it plays at 146.83hz. I am dividing the desired frequency of 146.83hz by 440hz which gives me 0.3337. I then divide up the 1000 samples by 0.3337 to get the desired frequency. I will admit I am fairly new to all this but I think I am doing this correctly? This now leaves me with a smaller array of samples that when played gives me a rougher 146.83hz sine wave.
Now the issue is I am getting high frequency noise in the 2k to 20k range which varies on each note played. I think I am suppose to use interpolation to remedy this but I have not figured out how to implement it properly in my code. Do I resample then interpolate the resampled data OR do I resample and add in the interpolated samples between each sample?
I tried linear, cubic and hermite interpolation but neither made a difference in removing the high frequency noise. Though I don't believe I am using them properly. I got the interpolation the code from http://www.musicdsp.org so I'm pretty sure it's correct.
Any help or suggestions would be great.
- The sampling frequency is 44100khz
- The audio output sampling frequency is the same, 44100khz
- I think what you mean by "accesses data outside the 1000 samples" is if I am providing a ghost samples? To be honest for index -1 I am just using the value 0 and for sampleArray.Length + 1 I am using the last value of samepleArray. It's not correct I know. Like I said I am new to resampling.
- Not sure what you mean. I'm using a sine wave as an example but my goal is to use other complex waveforms in the form of recorded sounds like various instruments or sounds.
– djex Jul 27 '19 at 16:17