|
|
@ -9,7 +9,7 @@ |
|
|
|
#include <sstream> |
|
|
|
#include <iomanip> |
|
|
|
|
|
|
|
#define SAMPLE_FREQ 44200 |
|
|
|
#define SAMPLE_FREQ 42000 |
|
|
|
#define SAMPLE_MAX 4096 |
|
|
|
#define BUFFER_SIZE 256 |
|
|
|
#define BLOCK_SIZE 128 |
|
|
@ -25,8 +25,6 @@ static volatile bool process_block2{ true }; |
|
|
|
// time
|
|
|
|
static u64 inf_phasor{ 0 }; |
|
|
|
|
|
|
|
// misc
|
|
|
|
static volatile int freq = 100; |
|
|
|
|
|
|
|
namespace Heck { |
|
|
|
bool debug_suspend_active = false; |
|
|
@ -69,7 +67,6 @@ namespace Heck { |
|
|
|
void irq1_cb() |
|
|
|
{ |
|
|
|
debug_suspend_continue(); |
|
|
|
freq += 10; |
|
|
|
} |
|
|
|
|
|
|
|
void timer3_cb() |
|
|
@ -159,16 +156,27 @@ namespace Heck { |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
u32 saw(u64 t, float freq_hz) |
|
|
|
{ |
|
|
|
u32 ret{ 0 }; |
|
|
|
u32 samps = hz_to_samps(freq_hz); |
|
|
|
u32 normalizing_factor = SAMPLE_MAX / samps; |
|
|
|
|
|
|
|
ret = t % samps; |
|
|
|
ret *= normalizing_factor; |
|
|
|
|
|
|
|
return ret; |
|
|
|
} |
|
|
|
|
|
|
|
void calculate_audio() |
|
|
|
{ |
|
|
|
// log("calculate_audio time: ");
|
|
|
|
u32 *b = block; |
|
|
|
u64 t = inf_phasor; |
|
|
|
u32 samps = hz_to_samps(freq); |
|
|
|
u32 val{ 0 }; |
|
|
|
|
|
|
|
for (int i = 0; i < BLOCK_SIZE; i++) { |
|
|
|
val = t % samps; |
|
|
|
b[i] = val * 8; |
|
|
|
b[i] = saw(t, 80); |
|
|
|
// b[i] *= saw(t, 20);
|
|
|
|
t++; |
|
|
|
} |
|
|
|
} |
|
|
|