Initial Draft 1 Computer Systems Project Proposal I. Title of the Project The development of a Transient-based Audio Timestretching algorithm II. Problem Statement. An Introduction to the Purpose and Scope of the Research Project The purpose of an audio timestretching algorithm is to alter the perceived speed of an audio file without changing the pitch, introducing artifacts, or generally altering any other aspect of the file. III. Purpose. What is the subject of the project; what are the goals; what is the project about? Why is the project worth doing; why is it a good topic for the Computer Systems Lab? Who will be interested in the results; how can the results be applied? A timestretching algorithm requires not only quality but efficiency - an additional aim of my project is to introduce flexibility, in the form of features that, for example, allow the user to stretch audio to correspond to a set of provided MIDI events. Digital Signal Processing is a very processing-dependent field, and the computer systems lab will allow me to develop my algorithm without worrying about any hardware issues. Also, a timestretching algorithm is most useful on the platform of a computer. Any musician who works with recorded audio will value an improvement in audio timestretching technology. IV. Scope of Study. Describe the overall bounds of the work that will be involved, e.g., the research or data that will be required, and the relationships and variables that will need to be programmed, the expected results, etc. [Hints: Most students have a hard time finishing their projects because of the complexities they encounter. So you may have to narrow down your research/project objectives. You need to be specific about what you want to develop. Try drawing a boundary around the area of study that you think you can finish. You may have to select a more modest piece of your original project idea to work on.] I will need to first develop the necessary audio infrastructure to build this algorithm upon - then will come developing an initial version of the algorithm, testing, and then continual revision. I will likely omit a port to the VST plugin format, unless I find that I have time. V. Background and review of current literature/research in this area. Demonstrate that you know the background of your topic. What kinds of research have been done before in this area? How have others gone about trying to solve the problems you want to tackle? Where is the "state of the art" today? In what ways may your approach build on and vary from previous work that has been done in your project area? If you wanted to bring another student up to date on what you're doing, what would be the most important thing to read or website(s) to look at for information? Start thinking about a bibliography: all references in this background and literature review section should be in your bibliography, but not everything that will be in your bibliography needs to be included here. Most current timestretching algorithms use transient detection in one way or another. They also use extremely optimized frequency-domain processing to achieve smooth and fast results. I have no access to the current top audio timestretching algorithms, since they tend to be expensive and their techniques un-published. VI. Procedure and Methodology. You should show that you clearly understand your task, have a logical time plan, say, by the research, design, programming, sub-testing and testing phases of your project. Show that you have identified the resources that you will need. What are the tasks and sub-tasks that will have to be accomplished to meet your objectives? What materials and programming language(s)/tools will be necessary? What graphics will be needed? What data will be needed and how will they be collected? What method or processes will be used to test and analyze the data? What error analyses will be performed on the gathered data? I will need to figure out how to use JUCE on Linux - if I can't figure that out, I will need to work almost entirely from home. JUCE provides the core graphics, audio and interface functions that I will need. Then I will need to build an extremely basic version of what could be called timestretching and test it out - then I'll implement and experiment with transient detection, frequency-domain analysis, and whatever comes to mind. When I find that my algorithm seems to be working, I'll test it with a variety of materials and note the results, which I will use to improve the algorithm. VII. Expected Results & Value to Others What results do you expect to obtain from your project? How will the final results and analyses be presented (including visuals such as graphs and charts)? What contributions can these results give to future researchers? What time frame do you think you will need to accomplish the identified tasks and subtasks? What form will be used as a work breakdown of your individual tasks, and how they interrelate, for planning and tracking your work, e.g. PERT Network(s) or Task Chart(s)? I will make my results available for free to all, unless they're really really good, in which case I'll give other options more consideration - in any case, I will share at least some of the knowledge I will have gained about what an audio timestretching algorithm needs to do. The year may not be enough to perfect the algorithm, but I think I can get the infrastructure up and running within the semester, after which the actual algorithm coding will go by much faster.