Further Work

Each of the following project phases refines the previous ones, and each produces a useful program:

  1. A generated .MID file with a single note with maximum MIDI Velocity (127).
  2. Raw conversion plus peak normalization of the wavetable: the .MID file has a single note with appropriate velocity.
  3. Automatically split multiple notes into separate samples. Since the notes in a groove are similar, I plan to use auto-correlation to find the split points.
  4. Split each note into separate, normalized frequency bands; SoundFont technology allows additive layering.
  5. Automatic Attack-Decay-Sustain-Release (ADSR) calculation: a “best-fit” envelope is computed for each frequency layer, and the wavetable values are “inverted” according to the ADSR parameters to “flatten” them. At this point, wavetables for the same instrument should be getting very similar to each other.
  6. Principal component analysis: “eigen” layers. This is a technique to find the “characteristic” features of each instrument, as opposed to variations in playing, so that the variations can be controllable by real-time MIDI messages. Multiple notes from the groove files are analyzed to find the common “standard", to be layered with “difference” samples, or other MIDI-controllable parameters.
  7. Real-time filtering by MIDI.
  8. Handling melodic instruments, including pitch and loop points for note length.
  9. Separating out multiple simultaneously playing instruments.
  10. Generating output files in the DownLoadable Sounds (DLS ) (an emerging standard) format, as well as in SoundFonts format.