Added FM modulator.

dev
ha7ilm 2015-10-31 15:42:17 +00:00
rodzic 0800e4f431
commit fb5899f087
4 zmienionych plików z 1105 dodań i 0 usunięć

14
csdr.c
Wyświetl plik

@ -1562,6 +1562,20 @@ int main(int argc, char *argv[])
}
}
if(!strcmp(argv[1],"fmmod_fc"))
{
if(!sendbufsize(initialize_buffers())) return -2;
float last_phase = 0;
for(;;)
{
FEOF_CHECK;
FREAD_R;
last_phase = fmmod_fc(input_buffer, (complexf*)output_buffer, the_bufsize, last_phase);
FWRITE_C;
TRY_YIELD;
}
}
if(!strcmp(argv[1],"none"))
{
return 0;

Plik diff jest za duży Load Diff

Wyświetl plik

@ -834,6 +834,20 @@ void add_dcoffset_cc(complexf* input, complexf* output, int input_size)
for(int i=0;i<input_size;i++) qof(output,i)=qof(input,i)/2;
}
float fmmod_fc(float* input, complexf* output, int input_size, float last_phase)
{
float phase=last_phase;
for(int i=0;i<input_size;i++)
{
phase+=input[i]*PI;
while(phase>PI) phase-=2*PI;
while(phase<=-PI) phase+=2*PI;
iof(output,i)=cos(phase);
qof(output,i)=sin(phase);
}
return phase;
}
/*
______ _ ______ _ _______ __
| ____| | | | ____| (_) |__ __| / _|

Wyświetl plik

@ -163,6 +163,7 @@ void apply_fir_fft_cc(FFT_PLAN_T* plan, FFT_PLAN_T* plan_inverse, complexf* taps
void gain_ff(float* input, float* output, int input_size, float gain);
void add_dcoffset_cc(complexf* input, complexf* output, int input_size);
float fmmod_fc(float* input, complexf* output, int input_size, float last_phase);
void convert_u8_f(unsigned char* input, float* output, int input_size);
void convert_f_u8(float* input, unsigned char* output, int input_size);