Voice Training Machine 6.111 Final Project By: Masood Qazi Zhongying Zhou Introduction American Idol is a trademark of FOX Introduction Problem z Causes of singing off tune - Cannot hear ‘own’ voice - Shortness of breath - Faulty memory of tune due to background instrumentals z Conventional solution - Practice with tune to commit to memory Relies subjectively on singer’s distinction of pitch New Solution z Visual outputs quantifies degree the singer is off-key z Audio outputs allow user to hear their voice with the synthesized note in real time z Pause feature allows user to perfect singing note by note Project Description: Notes k=11 f A4 = 440 Hz G# k=0 A A# G f n = f A4 • 2 n /12 k = n mod 12 B F# F C E C# D# k=6 D + Audio Interface fforward pause tempo_sel [1:0] Display RGB [23:0] Note Decision reset_sync (global) Music measure[7:0] Reader music_note[3:0] rewind_sync fforward_sync FSM Pulsify pause_sync data[7:0] enable Divider VGA addr [12:0] pause_p Timer line_count[9:0] clk pixel_count[9:0] rewind & expired reset audio_out[15:0] fft_out[7:0] fft_frame singer_note[3:0] en48k time_interval [3:0] DCM x3, 180 EN Select & Add voice[15:0] en48k tone[15:0] music_note[3:0] FFT Debounce/Synchronize headphone audio_out[15:0] bitcount[7:0] clk12p288 D/A tone[15:0] Synthesizer start_timer mic. voice_on tone_on tonev_up/dn outv_up/dn micv_up/dn voice[15:0] A/D ROM Memory ~64kb vga signals AC97: A/D, D/A, 48kHz clk count 1 2 3 4 5 6 7 8 9 10 11 serial_in parallel_out 4’bX 4’b1010 4’b0110 busy FFT Block Diagram FALL2PU fft_frame xk_re[7:0] SQUARE xk_im[7:0] FFT & SUM fft_out[7:0] en48k voice[15:0] xn_index[9:0] start xn_re[15:0] xk_index[9:0] CONTROL FSM MAX fft_frame FSM data[15:0] addr[9:0] RAM singer_note[3:0] Synthesizer music_note[3:0] z z z note to period period[15:0] cyclic counter count[15:0] Explore different waveforms Possible filtering Avoid 3rd harmonic single period waveform tone[15:0] Music Reading / Display Memory Memory – Play Memory – Fast Forward Memory – Pause Music Reader pause_p=0 & expired=1 & rewind=0 & fforward=0 rewind=1 rewind=1 Play fforward=0 fforward=1 Rewind rewind=0 pause_p=1 pause_p=1 Pause pause_p=0 fforward=1 Fforward Display – Block Diagram top_y music_note [3:0] top_x Display d_music rgb_m [23:0] tone [15:9] singer_note [3:0] d_singer rgb_s [23:0] voice [15:9] blank d_fft rgb_f [23:0] To All new_data l_count [9:0] p_count [9:0] fft_out [8:2] RGB [23:0] Display – Monitor Conclusion z We hope to achieve: – – – Less noise pollution Provide authentic feedback to singer about his/her ability Introduce a greater degree of objectivity in competitive singing