BASS LINE IMPROVISATION USING
The interdisciplinary field of computer music combines music composition, digital audio, and computer science to create both electronic and authentic sounding instruments as well as scores for them. As powerful computer systems become easier to afford, the need for affordable computer music software rises. Various researchers have developed many sound synthesis software systems over the years, including Csound and Cmusic. Our focus was on using RTcmix, a real-time version of CMIX written in C/C++, to create an instrument (here instrument is either an effects processor or sound synthesizer) that generates an interactive bass line to a given chord. CMIX is a package of sound-processing, synthesizing, modification and mixing programs that can be used by other programs to manipulate pre-recorded sound or to create new sounds. RTcmix in addition to adding real-time capabilities to CMIX also adds the ability of reading sound data through TCP sockets as well as a scorefile (program written in a C-like language that runs the instruments). We successfully tested these capabilities and others under the Linux operating system after our installation and with some email interaction with the developers.
RTcmix comes with a program called hist.c that, among other algorithms, implements the Fast Fourier Transform (FFT) to separate the fundamental frequency from the partial frequencies. We implemented the FFT as an instrument that takes digitized sound input from an electric piano connected to the computer microphone jack. Buffers of the sound data, stored in memory as arrays, are run through the FFT in real time to determine what pitch was played (the fundamental frequency). We also created another instrument that, given a chord read from a file (e.g. C Major 7th), plays an accompanying bass line. For each retrieved chord, the bass line starts at the root of the chord and then plays other chord tones. Combining these two instruments resulted in an instrument that takes a pitch input from the piano and then plays an accompanying bass line that contains chord tones as well as echoes of the piano pitches.
Several issues still need to be worked on including the timing of the bass line. Presently, the instrument retrieves a certain number of samples from the input, computed from the product of a user-specified duration and sampling rate. This duration however needs to be synchronized with the duration of the bass line. A more thorough description of this work with sound samples is available on the web.
(Supported by the Shultz Foundation)