MTEC-397 Research Project

Date: 01/08/2003

To:   Steven Ward

From: Robert C. Radcliffe

RE:   Automatic Conversion of Audio Files to SoundFont™ Files

 

Summary

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:

  1. writing and debugging a Java Program that essentially generates a SoundFont file, and
  2. 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.

Proposal

Here, for reference only, is a link to the original Research Proposal.

Introduction

Strategy

Java Language Programming

Goals

Current Accomplishments

Testing

Mapping Sample Files to MIDI Patch Numbers, Note Numbers, and Velocities

Test Files

Test Samples

MIDI Files

What is Early Patches?

Documentation

Drums

Test File Table

CD-ROM

Web Site

Rendering SF2 plus MIDI to WAVE

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

Creating SoundFonts

Input Specification (Text) File

SoundFont Internal Structure

The SF2Comp Program

Documentation File

Batch Processing

Java Program

Java Source Code

Program Structure

Hard Coded Data During Initial Development

Batch Processing

Further Program Development

Further Work

Bibliography and Web Links

 

All trademarks are the property of their respective owners. “SoundFont” is a trademark of E-mu Systems, Inc.