CS 591 Project Ideas

advertisement
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.
Download