blog.bjornroche.com
bjorg: November 2012
http://blog.bjornroche.com/2012_11_01_archive.html
Tuesday, November 27, 2012. Audio IIR v FIR EQs. Digital filters come in two flavors: IIR (or "Infinite Impulse Response") and FIR (or "Finite Impulse Response"). Those complex acronyms may confuse you, so let's shed a little light on the situation by defining both and explaining the differences. Once the filter is "designed" you can actually process audio samples. Once the filter is designed, the filter itself is implemented as difference equations, like this:. Y[i] = a0 * x[i] a1 * x[i-1] . a n. Digita...
blog.bjornroche.com
bjorg: June 2012
http://blog.bjornroche.com/2012_06_01_archive.html
Friday, June 29, 2012. Freeverb: original public domain code by Jezar at Dreampoint. I recently had occasion to use the original Freeverb code by Jezar at Dreampoint. There are several variations on this, including Freeverb 3. A complex GPL library, and a bunch of packages from CCRMA. But these are bloated things, not conducive to my needs for a variety of reasons. It took some digging to find the original, and when I did it was buried in a mailing-list archive. Original Public Domain Freeverb by Jezar.
blog.bjornroche.com
bjorg: Your technical co-founder as a partner, not a builder
http://blog.bjornroche.com/2013/04/your-technical-co-founder-as-partner.html
Sunday, April 28, 2013. Your technical co-founder as a partner, not a builder. One of the things I complained about in my last post. You may think you've already defined the product, you just need someone to build it. If that's really the case, then get yourself a contractor - ain't no shame in that! Ideally, of course, all your employees should feel empowered to have some say over their domain area. In short, the job of a contractor is to build a product to spec on time and on budget. The job of the...
blog.bjornroche.com
bjorg: May 2013
http://blog.bjornroche.com/2013_05_01_archive.html
Thursday, May 30, 2013. The ABCs of PCM (Uncompressed) digital audio. Digital audio can be stored in a wide range of formats. If you are a developer interested in doing anything with audio, whether it's changing the volume, editing chunks out, looping, mixing, or adding reverb, you absolutely must understand the format you are working with. That doesn't mean you need to understand all the details of the file. Compressed and Uncompressed Audio. CD audio is uncompressed and uses a 44,100 Hz sample rate and...
blog.bjornroche.com
bjorg: July 2013
http://blog.bjornroche.com/2013_07_01_archive.html
Sunday, July 21, 2013. Peak Meters, dBFS and Headroom. The level meter from audiofile engineering's. Program accurately shows peak values. Beyond that, there are rarely any specifics. Some peak meters show their output linearly, some show their output in dB. Some use virtual LEDs, some a bar graph. In general, if there is a numeric readout or units associated with the meter, the unit should be dBFS. Now that we know the basics of peak meters, let's figure out how to implement them. Below the mean pressure.
blog.bjornroche.com
bjorg: September 2013
http://blog.bjornroche.com/2013_09_01_archive.html
Saturday, September 21, 2013. Visualizing a Linear Mapping. A linear mapping is simply a linear equation, such as y = mx b. That takes an input, your slider value for example, and gives you back an output. The input is x. And the output is y. The trick is to find the values of m. From the equation above represents the oscillator, and y. Represents the frequency setting. We know two things: we want x=-1. To map to y=200. To map to y=2000. Since our original equation, y = mx b. Had two unknowns ( m.
blog.bjornroche.com
bjorg: Int->Float->Int: It's a jungle out there!
http://blog.bjornroche.com/2009/12/int-float-int-its-jungle-out-there.html
Wednesday, December 2, 2009. Int- Float- Int: It's a jungle out there! Integer .5)/(0x7FFF .5). Float*(0x7FFF .5)-.5. Up to at least 24-bit. Up to at least 24-bit. Up to at least 24-bit. Up to at least 24-bit. At least one high end DSP and A/D/A manufacturer. XO Wave 1.0.3. Obviously, rounding or dithering may be required here. Note that in the case of IO APIs, drivers are often responsible for conversions. The conversions listed here are provided by the API. Libsndfile FAQ goes into detail about this.
blog.bjornroche.com
bjorg: Mapping Parameters
http://blog.bjornroche.com/2013/09/mapping-parameters.html
Saturday, September 21, 2013. Visualizing a Linear Mapping. A linear mapping is simply a linear equation, such as y = mx b. That takes an input, your slider value for example, and gives you back an output. The input is x. And the output is y. The trick is to find the values of m. From the equation above represents the oscillator, and y. Represents the frequency setting. We know two things: we want x=-1. To map to y=200. To map to y=2000. Since our original equation, y = mx b. Had two unknowns ( m.
blog.bjornroche.com
bjorg: Peak Meters, dBFS and Headroom
http://blog.bjornroche.com/2013/07/peak-meters-dbfs-and-headroom.html
Sunday, July 21, 2013. Peak Meters, dBFS and Headroom. The level meter from audiofile engineering's. Program accurately shows peak values. Beyond that, there are rarely any specifics. Some peak meters show their output linearly, some show their output in dB. Some use virtual LEDs, some a bar graph. In general, if there is a numeric readout or units associated with the meter, the unit should be dBFS. Now that we know the basics of peak meters, let's figure out how to implement them. Below the mean pressure.
blog.bjornroche.com
bjorg: August 2012
http://blog.bjornroche.com/2012_08_01_archive.html
Thursday, August 23, 2012. In my last post. I looked at why it's usually better to do EQ (or filtering) in the time domain than the frequency domain as far as audio is concerned, but I didn't spend much time explaining how you might implement a time-domain EQ. That's what I'm going to do now. The Audio EQ Cookbook. By Robert Bristow-Johnson is a great, albeit very terse, description of how to build basic audio EQs. These EQs can be described as second order digital filters, sometimes called " biquads.