Date: 01/08/2003
To: Steven Ward
From: Robert C. Radcliffe
RE: Automatic Conversion of Audio Files to SoundFont Files
I originally proposed a rather ambitious project to automatically generate SoundFont files from raw audio WAVE files. The project was to proceed in stages with more and more automatic processing and refinement at each step (see the Strategy and Further Work sections). I was in fact able to lay a solid foundation for this project by:
- writing and debugging a Java Program that essentially generates a SoundFont file, and
- using the program to convert a set of audio sample files of the same drum, recorded at different intensities from ppp to fff, to a SoundFont file, with a corresponding smoothly varying MIDI Velocity curve of 1 to 127. This has been done for two different qualities (types of drum hits), Slap and Bass, for samples of a Bendir (Moroccan frame drum). There is more information about these audio samples in the Early Patches section.
I tested the generated SoundFont file by rendering test MIDI files into stereo WAVE files. I used Sound Forge Studio XP to examine and analyze both the original sample files and the output file.
I had to invent schemes for assigning the audio samples to appropriate segments of the MIDI Velocity curve, for determining the correct relative gain of each sample, and for the smooth velocity crossfade of adjacent samples. Most of my time was spent working out these schemes after discarding unworkable variants. My next steps will include automating these assignments (adding code to the program), now that I know how to do them manually.
I stopped working on the program when it had reached a stable state in order to write this final report. However, the program needs to be documented better. It needs to be reorganized somewhat for a better Object-Oriented match with the internal structure of SoundFont files. Finally, interface code will be added for directly reading and analyzing the audio sample WAVE files, for directly writing test MIDI files, for obtaining user-supplied parameters like MIDI Patch Numbers, and for direct generation of the SoundFont file, which is currently done using a utility program. None of these tasks is especially intellectually challenging. Since they are secondary, I am deferring them until later. I will continue to work on the project and publish updates to this web site as I progress.
Here, for reference only, is a link to the original Research Proposal.
Java Language Programming
Goals
Current Accomplishments
Testing
Mapping Sample Files to MIDI Patch Numbers, Note Numbers, and Velocities
Test Samples
MIDI Files
Documentation
Drums
Test File Table
CD-ROM
Web Site
Introduction to MIDI Rendering
The Audio Compositor Program
Help File
Input SF2 File
Input MIDI Files
WAVE Output Files
Batch Processing
Using Sound Forge XP Studio for Analysis
RMS Power Analysis
Input Specification (Text) File
SoundFont Internal Structure
The SF2Comp Program
Documentation File
Batch Processing
Java Source Code
Program Structure
Hard Coded Data During Initial Development
Batch Processing
Further Program Development
All trademarks are the property of their respective owners. SoundFont is a trademark of E-mu Systems, Inc.