Discussions

For now, I'm putting everything on one page, with the intention to categorize it later.

Soundfonts
Crates for handling soundfonts:
 * https://docs.rs/soundfont/latest/soundfont/ (only parses `.sf*` files, and doesn't actually do any audio decoding)
 * https://docs.rs/fluidlite/latest/fluidlite/

Pitch/frequency of the resulting output is too high

 * Check to verify that the sample rate of your file matches the sample rate of the output
 * Make sure that the channel count is being taken into consideration. If you are reading a mono WAV file as if it were stereo, the resulting output will be an octave higher (double the frequency) and twice as fast (half as long)

Output amplitude is too small/large

 * Make sure the numeric type is correct (i.e. not an f32 when you should be using an i16)

Realtime Programming

 * http://www.rossbencina.com/code/real-time-audio-programming-101-time-waits-for-nothing

Trig function ranges
Traditionally, sine functions will have a period of 2π, but (allegedly) in many implementations of sine, the input is scaled to make the range from 0.0 to 1.0. If possible, it would make more sense to just make your initial phase range from 0.0 to 1.0 and use a sine function that doesn't do the rescaling to save two multiplications. The performance benefit of this is pretty minimal.

Graph processing
https://fgiesen.wordpress.com/2018/03/05/a-whirlwind-introduction-to-dataflow-graphs/