From 020a0d55d7ffedf7982edcdbba60e316dc71a0de Mon Sep 17 00:00:00 2001 From: Michael Hayes Date: Tue, 30 Aug 2011 23:21:40 +0000 Subject: [PATCH] Update comments --- extra/tweeter.h | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/extra/tweeter.h b/extra/tweeter.h index 7aa39c5..990997a 100644 --- a/extra/tweeter.h +++ b/extra/tweeter.h @@ -15,10 +15,17 @@ typedef uint8_t tweeter_period_t; typedef uint8_t tweeter_velocity_t; typedef uint8_t tweeter_scale_t; -/* Could calculate scale divisors at run time. 2^(1/2) is approx +/* We could calculate scale divisors at run time. 2^(1/2) is approx 1.0594631. A reasonable rational approximation is 267/252 = - 1.0595238. Let's save memory and provide a macro to compute the - divisors. */ + 1.0595238. + + Let's save memory and provide a macro to compute the + divisors. There is only 8 bits per note so the maximum POLL_RATE + is 255 * 82.41 = 21014 Hz. If we use a lower rate then the divisors + become less accurate, especially at the higher frequencies. For example, + with C5, f = 523 Hz, and if POLL_RATE = 10000, then the divisor is 19 + giving a generated frequency of 526 Hz. +*/ #define TWEETER_DIVISOR(POLL_RATE, FREQ) (POLL_RATE / FREQ + 0.5)