Fixed 0.1Hz error in tone key frequencies 146.2, 156.7, and 162.2 (#1427)

* Fixed tone key freq truncation in float->int conversion
* Round integer division when displaying tone key freq
This commit is contained in:
Mark Thompson 2023-08-31 01:04:47 -05:00 committed by GitHub
parent 07be74701f
commit 900086c1c9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 2 additions and 2 deletions

View File

@ -85,7 +85,7 @@ const tone_key_t tone_keys = {
{"Senn. 32.768k", F2Ix100(32768.0)}}; {"Senn. 32.768k", F2Ix100(32768.0)}};
std::string fx100_string(uint32_t f) { std::string fx100_string(uint32_t f) {
return to_string_dec_uint(f / 100) + "." + to_string_dec_uint((f / 10) % 10); return to_string_dec_uint(f / 100) + "." + to_string_dec_uint(((f + 5) / 10) % 10);
} }
float tone_key_frequency(tone_index index) { float tone_key_frequency(tone_index index) {

View File

@ -31,7 +31,7 @@ namespace tonekey {
#define TONE_FREQ_TOLERANCE_CENTIHZ (4 * 100) #define TONE_FREQ_TOLERANCE_CENTIHZ (4 * 100)
#define TONE_DISPLAY_TOGGLE_COUNTER 3 #define TONE_DISPLAY_TOGGLE_COUNTER 3
#define F2Ix100(x) (int32_t)(x * 100.0) #define F2Ix100(x) (int32_t)(x * 100.0 + 0.5) // add 0.5f to round vs truncate during FP->int conversion
using tone_index = int32_t; using tone_index = int32_t;
using tone_key_t = std::vector<std::pair<std::string, uint32_t>>; using tone_key_t = std::vector<std::pair<std::string, uint32_t>>;