audio gain, the best update since the rds upgrade
This commit is contained in:
parent
ebd09c5e77
commit
3ead6f0209
|
|
@ -62,7 +62,7 @@ LDFLAGS_Pissb = $(LDFLAGS) -lsndfile -lliquid
|
||||||
$(CC) $(CFLAGS) -c -o pifmrds/waveforms.o pifmrds/waveforms.c
|
$(CC) $(CFLAGS) -c -o pifmrds/waveforms.o pifmrds/waveforms.c
|
||||||
# $(CC) $(CFLAGS) -c -o pifmrds/rds_wav.o pifmrds/rds_wav.c
|
# $(CC) $(CFLAGS) -c -o pifmrds/rds_wav.o pifmrds/rds_wav.c
|
||||||
$(CC) $(CFLAGS) -c -o pifmrds/fm_mpx.o pifmrds/fm_mpx.c
|
$(CC) $(CFLAGS) -c -o pifmrds/fm_mpx.o pifmrds/fm_mpx.c
|
||||||
$(CC) -o pifmrds/rds_wav pifmrds/rds_wav.o pifmrds/rds.o pifmrds/waveforms.o pifmrds/fm_mpx.o -lm -lsndfile
|
#$(CC) -o pifmrds/rds_wav pifmrds/rds_wav.o pifmrds/rds.o pifmrds/waveforms.o pifmrds/fm_mpx.o -lm -lsndfile
|
||||||
$(CXX) $(CXXFLAGS) -Wno-write-strings -o ../pifmrds pifmrds/rds.o pifmrds/waveforms.o pifmrds/pi_fm_rds.cpp pifmrds/fm_mpx.o pifmrds/control_pipe.o -lm -lsndfile -lrt -lpthread -L/opt/vc/lib -lrpitx
|
$(CXX) $(CXXFLAGS) -Wno-write-strings -o ../pifmrds pifmrds/rds.o pifmrds/waveforms.o pifmrds/pi_fm_rds.cpp pifmrds/fm_mpx.o pifmrds/control_pipe.o -lm -lsndfile -lrt -lpthread -L/opt/vc/lib -lrpitx
|
||||||
|
|
||||||
../rpitx: rpitxv1/rpitx.cpp
|
../rpitx: rpitxv1/rpitx.cpp
|
||||||
|
|
|
||||||
|
|
@ -81,7 +81,7 @@ float *alloc_empty_buffer(size_t length) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int fm_mpx_open(char *filename, size_t len, int raw, double preemphasis, int rawSampleRate, int rawChannels, float cutoff_freq) {
|
int fm_mpx_open(char *filename, size_t len, int raw, double preemphasis, int rawSampleRate, int rawChannels, float cutoff_freq, float gain) {
|
||||||
length = len;
|
length = len;
|
||||||
raw_ = raw;
|
raw_ = raw;
|
||||||
|
|
||||||
|
|
@ -131,7 +131,6 @@ int fm_mpx_open(char *filename, size_t len, int raw, double preemphasis, int raw
|
||||||
|
|
||||||
// Create the low-pass FIR filter, with pre-emphasis
|
// Create the low-pass FIR filter, with pre-emphasis
|
||||||
double window, firlowpass, firpreemph , sincpos;
|
double window, firlowpass, firpreemph , sincpos;
|
||||||
double gain=FIR_PHASES/25.0; // Why??? Maybe gain adjustment for preemphais
|
|
||||||
|
|
||||||
// IIR pre-emphasis filter
|
// IIR pre-emphasis filter
|
||||||
// Reference material: http://jontio.zapto.org/hda1/preempiir.pdf
|
// Reference material: http://jontio.zapto.org/hda1/preempiir.pdf
|
||||||
|
|
@ -166,7 +165,7 @@ int fm_mpx_open(char *filename, size_t len, int raw, double preemphasis, int raw
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
printf("Created low-pass FIR filter for audio channels, with cutoff at %.1f Hz\n", cutoff_freq);
|
printf("Created low-pass FIR filter for audio channels, with cutoff at %.1f Hz (gain: %.f\n", cutoff_freq, gain);
|
||||||
|
|
||||||
if( 0 )
|
if( 0 )
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,6 @@
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
extern int fm_mpx_open(char *filename, size_t len, int raw, double preemphasis, int rawSampleRate, int rawChannels, float cutoff_freq);
|
extern int fm_mpx_open(char *filename, size_t len, int raw, double preemphasis, int rawSampleRate, int rawChannels, float cutoff_freq, float gain);
|
||||||
extern int fm_mpx_get_samples(float *mpx_buffer, int drds);
|
extern int fm_mpx_get_samples(float *mpx_buffer, int drds);
|
||||||
extern int fm_mpx_close();
|
extern int fm_mpx_close();
|
||||||
|
|
|
||||||
|
|
@ -87,7 +87,7 @@ static volatile void *map_peripheral(uint32_t base, uint32_t len)
|
||||||
return vaddr;
|
return vaddr;
|
||||||
}
|
}
|
||||||
|
|
||||||
int tx(uint32_t carrier_freq, char *audio_file, uint16_t pi, char *ps, char *rt, float ppm, char *control_pipe, int pty, int *af_array, int raw, int drds, double preemp, int power, int rawSampleRate, int rawChannels, int deviation, int ta, int tp, float cutoff_freq) {
|
int tx(uint32_t carrier_freq, char *audio_file, uint16_t pi, char *ps, char *rt, float ppm, char *control_pipe, int pty, int *af_array, int raw, int drds, double preemp, int power, int rawSampleRate, int rawChannels, int deviation, int ta, int tp, float cutoff_freq, float gaim) {
|
||||||
// Catch all signals possible - it is vital we kill the DMA engine
|
// Catch all signals possible - it is vital we kill the DMA engine
|
||||||
// on process exit!
|
// on process exit!
|
||||||
for (int i = 0; i < 64; i++) {
|
for (int i = 0; i < 64; i++) {
|
||||||
|
|
@ -110,7 +110,7 @@ int tx(uint32_t carrier_freq, char *audio_file, uint16_t pi, char *ps, char *rt,
|
||||||
int data_index = 0;
|
int data_index = 0;
|
||||||
|
|
||||||
// Initialize the baseband generator
|
// Initialize the baseband generator
|
||||||
if(fm_mpx_open(audio_file, DATA_SIZE, raw, preemp, rawSampleRate, rawChannels, cutoff_freq) < 0) return 1;
|
if(fm_mpx_open(audio_file, DATA_SIZE, raw, preemp, rawSampleRate, rawChannels, cutoff_freq, gaim) < 0) return 1;
|
||||||
|
|
||||||
// Initialize the RDS modulator
|
// Initialize the RDS modulator
|
||||||
char myps[9] = {0};
|
char myps[9] = {0};
|
||||||
|
|
@ -222,6 +222,7 @@ int main(int argc, char **argv) {
|
||||||
int raw = 0;
|
int raw = 0;
|
||||||
int drds = 0;
|
int drds = 0;
|
||||||
int power = 7;
|
int power = 7;
|
||||||
|
float gain = 1;
|
||||||
int rawSampleRate = 44100;
|
int rawSampleRate = 44100;
|
||||||
int rawChannels = 2;
|
int rawChannels = 2;
|
||||||
double preemp = 50e-6; //eu
|
double preemp = 50e-6; //eu
|
||||||
|
|
@ -298,9 +299,12 @@ int main(int argc, char **argv) {
|
||||||
} else if(strcmp("-rawsamplerate", arg)==0 && param != NULL) {
|
} else if(strcmp("-rawsamplerate", arg)==0 && param != NULL) {
|
||||||
i++;
|
i++;
|
||||||
rawSampleRate = atoi(param);
|
rawSampleRate = atoi(param);
|
||||||
} else if(strcmp("-cutofffreq", arg)==0 && param != NULL) {
|
} else if(strcmp("-cutofffreq", arg)==0 && param != NULL) {
|
||||||
|
i++;
|
||||||
|
cutofffreq = atoi(param);
|
||||||
|
} else if(strcmp("-audiogain", arg)==0 && param != NULL) {
|
||||||
i++;
|
i++;
|
||||||
cutofffreq = atoi(param);
|
gain = atoi(param);
|
||||||
} else if(strcmp("-power", arg)==0 && param != NULL) {
|
} else if(strcmp("-power", arg)==0 && param != NULL) {
|
||||||
i++;
|
i++;
|
||||||
int tpower = atoi(param);
|
int tpower = atoi(param);
|
||||||
|
|
@ -343,6 +347,6 @@ int main(int argc, char **argv) {
|
||||||
alternative_freq[0] = af_size;
|
alternative_freq[0] = af_size;
|
||||||
int FifoSize=DATA_SIZE*2;
|
int FifoSize=DATA_SIZE*2;
|
||||||
fmmod=new ngfmdmasync(carrier_freq,228000,14,FifoSize, false, gpiopin);
|
fmmod=new ngfmdmasync(carrier_freq,228000,14,FifoSize, false, gpiopin);
|
||||||
int errcode = tx(carrier_freq, audio_file, pi, ps, rt, ppm, control_pipe, pty, alternative_freq, raw, drds, preemp, power, rawSampleRate, rawChannels, deviation, ta, tp, cutofffreq);
|
int errcode = tx(carrier_freq, audio_file, pi, ps, rt, ppm, control_pipe, pty, alternative_freq, raw, drds, preemp, power, rawSampleRate, rawChannels, deviation, ta, tp, cutofffreq, gain);
|
||||||
terminate(errcode);
|
terminate(errcode);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue