240 likes | 494 Views
Preparing to Program in the Audio Industry. Beau Silver, MuE and CS Advisor: Colby Leider. How did programming become important in audio?. electrical engineers wax records, tape machines, analog signal processors computer programmers computed math and research.
E N D
Preparing to Program in the Audio Industry Beau Silver, MuE and CS Advisor: Colby Leider
How did programming become important in audio? • electrical engineers • wax records, tape machines, • analog signal processors • computer programmers • computed math and research
2007 – everything audio is digital • software for recording and signal processing (Pro Tools) • hard drive for storing audio • software devices for reproduction (Ipod)
Matlab • high level programming language • easy audio manipulation • waveread(), wavewrite(), sin(), sound(), filter() • *Matlab Project • no understanding of low level
How does one prepare to program in the audio industry? • Learn format of digital audio files • Learn programming on a large scale • Learn Libraries to perform audio programming
How are audio files stored and manipulated? • continuous waveform -> discrete samples • Nyquist Sampling Theorem • run low pass filter • quantization • sample rate / bit depth
series of 44,100 samples per second with 16 bit depth precision, between -1 and 1 • *run print program
How does one prepare to program in the audio industry? • Learn format of digital audio files • Learn programming on a large scale • Learn Libraries to perform audio programming
How does one program on a large scale? • Dolby • Digidesign • Microsoft • C++ in development software (Visual C++)
Learning C++ and Visual C++ • Hello World • *“Hello World Program” • I/O • Header files • Using Classes • *“Sorting_Classes_Header” program • Using Non-standard Libraries • Overloading • *“FunctionOverloadingPractical Program” • Inheritance • *”Inheritance program”
namespace • Localizes visibilty of names of functions declared within it -> allows the same name in different contexts • class and object • A class is a set of plans that specify how to build an object • An object is an instance of a class • function overloading • Two or more functions can share the same name as long as their parameter declarations are different • Default arguments • Inheritance • Allows to define a general class that can be inherited by a more specific class • Allows for hierarchal classification
How does one prepare to program in the audio industry? • Learn format of digital audio files • Learn programming on a large scale • Learn Libraries to perform audio programming
What libraries are needed to perform audio programming? • Port Audio • http://www.portaudio.com/ • LibSndFile • http://www.mega-nerd.com/libsndfile/
Port Audio • create a sin wave • play it on sound card • allow for easy “sine” function • *Sine wave project
LibSndFile “Sound Pro” • open a sound file • perform simple dsp • write out to a file • Communication I/O -> command line (argv, argc) and scanf • *SoundPro Project
DSP • Gain Change • raise / lower volume of samples • Normalization • raise volume of sound to maximum without clipping • Moving Average Low Pass • remove high frequencies
The future Sound Pro • More processing options • Nice GUI • Available on all platforms
Conclusions: • Audio in 2007 • Programming! Programming! Programming! • How to prepare? • Digital audio • Programming on a large scale • Libaries
The End open for questions…