X-Git-Url: https://git.sesse.net/?p=c64tapwav;a=blobdiff_plain;f=decode.cpp;h=49be647ea2cc67442718f2765e66ff508cd91064;hp=fdc1347e0e124a7297ab4c6ef4a71e644c58f0fd;hb=866751f2909657ee7d62f936e3d2cb2ecb7806fb;hpb=2d875bfb4e11cea397aeb88d9781d8a36079c9a1;ds=sidebyside diff --git a/decode.cpp b/decode.cpp index fdc1347..49be647 100644 --- a/decode.cpp +++ b/decode.cpp @@ -1,32 +1,24 @@ #include #include #include -#include #include #include #include #include #include "interpolate.h" +#include "tap.h" #define BUFSIZE 4096 #define HYSTERESIS_LIMIT 3000 #define SAMPLE_RATE 44100 #define C64_FREQUENCY 985248 -#define TAP_RESOLUTION 8 #define SYNC_PULSE_START 1000 #define SYNC_PULSE_END 15000 #define SYNC_PULSE_LENGTH 378.0 #define SYNC_TEST_TOLERANCE 1.10 -struct tap_header { - char identifier[12]; - char version; - char reserved[3]; - unsigned int data_len; -}; - // between [x,x+1] double find_zerocrossing(const std::vector &pcm, int x) { @@ -42,7 +34,7 @@ double find_zerocrossing(const std::vector &pcm, int x) double upper = x; double lower = x + 1; - while (upper - lower > 1e-6) { + while (lower - upper > 1e-3) { double mid = 0.5f * (upper + lower); if (lanczos_interpolate(pcm, mid) > 0) { upper = mid; @@ -61,6 +53,7 @@ struct pulse { int main(int argc, char **argv) { + make_lanczos_weight_table(); std::vector pcm; while (!feof(stdin)) {