Thursday, February 26, 2015

Class notes 2/26: Panning in stereo, languages that interface with Max

Sound travels ~1 ms/foot.  Less than a ms of time difference from one ear to the other, but we can hear that.

Head-related transfer functions HRTF's: head-related filtering, sound will have a slightly different frequency content coming from different locations.  Useful for headphones.

Straight linear crossfade results in it seeming sound is farther away when it's right in the middle--have to compensate for inverse square law.  There's a perceived 3 dB drop in the middle, because there's a 6 dB amplitude drop in the middle.  To account for that, take sqrt of left and right speaker values, and you'd get a more natural sound.  A more efficient way is to look up value in a quarter of a cycle of a cosine wave and assign that to L channel, from sine wave to R channel.  That way, 0-->1 is L to R.  You can use the phase offset inlet (R inlet) of the cycle~ object to achieve that.  Make sure you use a line~ object or rampsmooth~ object to interpolate between different dial settings, if you want to make a panning dial, or else you might get a bunch of clicks.

In real life, panning should result in a Doppler effect.

Within Max, there are a couple ways to use text based programming.  (Max itself is written in C.)

js object--a JavaScript object, but internally you write it in a text-based program.

gen~ object--there's a language called Gen that lets you manipulate every single pixel of a video signal or every single sample of an audio signal

mgraphics--a way to use JavaScript to control graphics

Processing--a Java-like interface for doing 2D graphics

Next week:  Jitter & 3D animation, an introduction

No comments:

Post a Comment