iSing Voice HarmonizerCyril Lan, Jessie Li, Darren YinOverview1. Read in voice signal through microphone2. Read in harmonics through keys on keyboard3. FFT to detect pitch of voice signal4. Pitch shift N copies of voice signal for each of the N keys pressed on keyboard5. Inverse FFT to get back pitch shifted signals, blend, and output!Overall Block DiagramFast Fourier Transform ModuleFast Fourier Transform ButterflyFast Fourier Transform - Bit shiftingStage 1LCIRC 2CBA ACB------------------000 000 = 0001 100 = 4010 001 = 1011 101 = 5100 010 = 2101 110 = 6110 011 = 3111 111 = 7Stage 2LCIRC 1CBA BAC------------------000 000 = 0001 010 = 2010 100 = 4011 110 = 6100 001 = 1101 011 = 3110 101 = 5111 111 = 7Stage 3LCIRC 0CBA CBA------------------000 000 = 0001 001 = 1010 010 = 2011 011 = 3100 100 = 4101 101 = 5110 110 = 6111 111 = 7Butterfly Module - Optimizing for speedCPU DescriptionPitch ShiftingPitch Shifting ModuleModule takes in target frequency played on keyboard and shifts sung note frequency to match keyboard frequency. Apply Phase Vocoder Algorithm to produce pitch shifted signalPhase Vocoder Algorithm3 Stages: Analysis, Processing, SynthesisAnalysis: Apply Hanning window to extract a small frame of time domain signal with most of the energy focused around DC component.Processing: Apply a DFT to divide up the frequency spectrum into a series of discrete bins each with magnitude and phase information. Since the frequency components of the signal may not coincide exactly with the bin frequencies, we need to calculate the true frequencies associated with the bins.Phase Vocoder (cont.)After calculating the true bin frequencies using phase offsets, a new spectrum is obtained.Synthesis: Apply Inverse FFT to obtain time domain signal for a particular frame and multiply with window to smooth out the signal.Add the windowed signals together to reconstruct the entire time domain signal.Timeline11/25: Finalize implementation details and implement midi controller module. Have skeleton code for other modules.12/4: Finish implementing FFT, Pitchshifter, and CPU modulesWeek of 12/5 – 12/9: Integration
View Full Document