CS 591 Project Ideas Pitch and Tempo Shifting. Pitch and tempo are linked in a signal: if you decrease the tempo (say by duplicating each sample), then you lower the pitch, and vice versa. Audio editors such as Adobe Audition and Audacity allow you to separate these two: you can slow down or speed up a signal without changing the pitch, or raise/lower the pitch without changing the tempo (these are useful when transcribing music, or playing along). In this project I would like you to create a program that provides this functionality by resampling the signal. Digital Implementation of Guitar Pedals. Guitar pedals provide a bewildering variety of effects (as filters) for modifying the basic timbre of the electric guitar. For this project I would like someone to pick an interesting set of effects (e.g., frequency modulation, flanging, distortion, reverb, etc.) and investigate how to implement these with a C program. Searching for frequencies. The DFT/FFT can be used to detect frequency components of a given signal, however, if we pick a window size and sample rate, we are pretty much stuck with a range and sequence of frequencies. This seems a little clunky: why not phrase the whole thing as search? Assume that you have the data (the input signal) and you are searching for the component waveforms and their amplitudes. You are allowed to change anything except for the sample rate, which is fixed by the original file. You are not bounded by time, and can iteratively examine the file with different window sizes and different window functions (Hann, etc.). Design a program to optimally search for frequency components along these lines. Synthesis. We only scratched the surface of synthesis techniques, and there is a lot to still be investigated, even if we want to restrict our attention to things we can do in a few weeks with a C program! For this project, I would like to to take the synthesis lectures a couple of steps forward, and investigate other techniques for musical synthesis and provide a library of C functions (modules) which can be hooked together to do reasonable synthesis tasks. At the end I would like to hear some kind of composition or sound track. Extend Homework Three. One of the points of homework three was that the Fourier Transform is lossy, and the synthesis method also introduces distortion into the transformation of the signal to frequency domain and back. For this project, I would like you to work on this more, trying different window sizes, different windowing functions, and tuning the various parameters to see how well you can reproduce a particular signal. Sine Wave and Phasor Calculator. I would have liked to give a homework assignment in which you played around with the visual representation of phasors and sine waves, understanding how they behave when you multiply and add them. But it seemed difficult to do with the various web sites that showed bits and pieces of these processes. For this project, I would like you to create an GUI and graphical display that allows the user to input various frequencies in various phases, add them and multiply them, and see the results. If this works well, I’ll use it in future offerings of this course. Beat Tracking and Swing. I am very interested in understanding the manner in which “swing,” the modification of duple time towards triple time, has taken place in jazz and blues in the 20th century. For this project, you would need to use one of the libraries of audio processing functions, at least to get the beat tracking, and then investigate the exact timing of selected melodies from various eras to understand how they divide up the beat. Does it change with tempo? With style? With each performer in a single band? Pitch Measurement. Chromatic tuners are very common these days, every guitarist has one! The theory of how to measure the fundamental frequency is fairly well established; for this project I would like you to read a survey paper I have on the various techniques, and implement a couple of them to evaluation how well they work. Melody Tracking. For this project I would like you to create a graphical display that tracks the pitch of a melody. You do not need to do beat tracking, just to create a graph of frequency vs time. There are several challenges to this, including the elimination of spurious overtones. However, I think it is possible to do something interesting in two weeks. Autotuner. Autotuners (such as provided by Logic Pro) are becoming ubiquitous in in pop music and even on stage! For this project I would like you to write a program which takes an audio file with a simple melody and “correct” the pitches. The basic idea is to break the signal into windows, measure the dominant pitch, and then adjust it by changing the frequency (as in the Pitch shifting project above). Create your own MIDI interpreter. MIDI is a language for creating music which allows you to specify musical events such as note onsets, decay, etc. at various pitches and timbres. For this project, I would like you to create your own small MIDlike language and an interpreter. Basically, each line of your input file should specify when the event takes place, what the event is, and the parameters. Then you must synthesize a signal based on this specification. Research Paper. If you are really not interested in implementing a piece of audio code, I can live with a research paper on a topic to be mutually decided between us. Be forewarned that this is not the easy way out, as you will need to put as much time into this as into any other project, and a reasonable implementation is typically 2030 hours worth of work. I’ll suggest some additional project ideas at the lecture on Thursday overviewing MIR research.