Design Project: Big Beat DJ Project Overview
Total Page:16
File Type:pdf, Size:1020Kb
Rensselaer Polytechnic Institute Department of Electrical, Computer, and Systems Engineering ECSE 4560: Signal Processing Design, Spring 2003 Professor: Richard Radke, JEC 7006, 276-6483 Design Project: Big Beat DJ “I never worked a day in my life; I just laid back and let the big beat lead me.” - The Jungle Brothers Project Overview A good techno DJ spins a continuous stream of music by seamlessly mixing one song into the next. This involves not only synchronizing the beats of the songs to be mixed, but also incrementally adjusting the pitches of the songs so that during the transition, neither song sounds unnatural. Your goal in this project is to use signal processing to produce a computerized DJ that can automatically produce a non-stop mix of music given a library of non-synchronized tracks as input. On top of this basic specification, additional points will be given for implementing advanced techniques like sampling, beat juggling and airbeats that make the mix more exciting. At the end of the term, the computer DJs will face off in a Battle for World Supremacy with a library of entirely novel songs. Basic Deliverables To meet the basic design requirement, your group should deliver • An m-file named bpm.m with syntax b = bpm(song) where song is the name of a music .wav file (or the vector of music samples themselves), and b is the estimated number of beats per minute in the specified song. • An m-file named songmix.m with syntax mix = = songmix(song1,song2), where mix is the resultant continuous mix between song1 and song2. This function should call bpm. The transition between songs in the final mix should be smooth, not jerky, and the change in speed of each song near the transition should not be accompanied by a noticeable change in pitch. Listen to a few continuous mixes by professional DJs to get the idea. This function is the heart of the project. • An m-file named dj.m with syntax dj(songlist,mix), where songlist defines a list of an arbitrary number of music .wav files, and mix is a .wav file of the resultant con- tinuous mix between the songs. This function should call mix on appropriate variables. It should also include an algorithm that determines the order in which the songs are mixed (for dramatic effect, or for the best performance of the algorithm). You should apply your algorithms to the music samples made available through the course web page, as well as on examples of your own. In your various reports, be sure to discuss the types of music that your algorithm performs especially well or poorly on, and why. In the beginning, you should test your design on simple songs with similar bpm before getting more ambitious. As discussed in the documentation for the written reports, you need to devise, apply, and dis- cuss methods for assessing the performance of your bpm estimation, order selection, and mixing algorithms. At the least, you should quantitatively evaluate the following issues: 1. Accuracy of the algorithms. How close are the bpm estimates to ground truth? How well do the beats of the songs line up in the mix? Is the transition between songs noticeable? 2. Delay of the algorithms. How much of the song needs to be processed before a decision on bpm can be reached? How long does each song need to be to make a convincing mix? 3. Speed and computational complexity of the algorithms. They should operate quickly enough to be useful, not run overnight. 4. Robustness of the algorithms to changes in the source songs. Does the performance of the algorithms depend on factors such as amplification, quantization, compression, additive noise, etc.? Please refer to the syllabus and ECSE Design Course handouts for the specific content and for- matting of the project proposal, progress report, lab notebook, written report, and oral presentation. It is expected that your design meets (or all-but-meets) the basic specification by the design review at mid-semester. Meeting the basic specification will account for 41 of the 65 points for the technical portion of the grade for your written report. Important note: you are not allowed to use this project as a current or future term project for another class (e.g. ECSE-4540)! Bells and Whistles Additionally, 24 of the 65 points for the technical portion of the grade will be reserved for “bells and whistles”. These are defined as interesting extensions to the basic design. You should imple- ment 3 extensions of the basic design, valued at 8 points each. Here are some ideas to get you started, but you are encouraged to develop your own extensions: • Automatic insertion of samples (from a separate database) at appropriate places in the mix (not just anywhere). Listen to how real mixes use samples, and try and duplicate this effect. • Automatic extraction of catchy elements from the songs to be mixed to be used as samples in the above procedure. • Research and implementation of beat juggling, an artistic way of mixing up the beats. • Research and implementation of airbeats, the strategic removal of beats from a song at certain times for dramatic effect. • Simulation of “scratching” on the songs to be mixed (not just adding a scratching sample). • Good mixing of songs in any user-specified order (instead of sorting them beforehand so adjacent songs have similar beats). • Automatic identification and ranking of good transition points to begin and end crossfades between songs. • A robust watermarking scheme to inaudibly embed useful information (e.g. bpm, locations of good breakpoints) directly into the audio samples to speed up on-the-fly mixing. • Real-time implementation of the design. • Implementation as a plug-in to a media player (e.g. Winamp or Windows Media Player). • Hardware implementation or interface to CD players or turntables. • Extensions to non-electronica or non-Western music. Can your DJ handle the 70’s, 80’s and today? What about the 1670’s? Classical Indian music? You should present your plans for bells and whistles in the project proposal and have some concrete ideas for implementation at the design review. Real-World Considerations Don’t forget to include a well-reasoned cost estimate for the final design you propose. While your job here is to design a set of signal processing algorithms, you should research and estimate the cost of actually implementing your design in a real system. Would it be better to do it in hardware (DSP chips, FPGAs, etc.) or software (laptops with custom or licensed software)? Why? Remember that in a real product, you wouldn’t get to use Matlab for free! Do as complete a job as you can on estimating this cost. Don’t forget to factor in the cost of your labor, and to keep track of the hours you put in on the project! Remember that as a practicing engineer, you should always be aware of the broader impact of your work. Take some time in your report to discuss some of the professional and ethical questions raised by your experience. If you were to actually build this device and sell it, would you be infringing on existing patents? Were you thorough and ethical when it came to finding and citing prior work? Could the algorithms you designed for music-mixing be twisted to serve a more ethically questionable purpose? References and Resources • DJ University (http://dju.prodj.com/courses/club/index.html) has lots of definitions and advice for aspiring DJs. See also “Mixing tips for the professional DJ” at http://www.djprince.net/tips.htm and “Advanced beat mixing tips” at http: //www.dj-tips-and-tricks.com/advanced-mixing-with-turntables. html. These are all linked from the course web page. • CDex (http://www.cdex.n3.net/) is a good tool for ripping CDs or tracks. • Goldwave (http://www.goldwave.com) is a nice, free tool for manipulating audio data. • Good mixes are not hard to come by, but you might consider Fat Boy Slim’s On the Floor at the Boutique, the soundtrack to the movie Groove, Thievery Corporation’s DJ Kicks, etc....