I am writing a GR C++ program I would like to do a simple rate resampling
and I don't need to use any FIR filters. Is there a Null Tap or a pass
through filter I could use? Would some form of this work?

upsample_audio = gr_make_rational_resampler_base_fff(44100, 8000,
std::vector<float>(1,0));


In python you can simply fill in None for the taps:

self.blks2_rational_resampler_xxx_1 = blks2.rational_resampler_ccc(
            interpolation=channel_rate,
            decimation=pre_channel_rate,
            taps=None,
            fractional_bw=None,
        )


Which uses the following code in block2 - I can't figure out what grc.gcd
is though or how to call it from C++:

def design_filter(interpolation, decimation, fractional_bw):


    if fractional_bw >= 0.5 or fractional_bw <= 0:
        raise ValueError, "Invalid fractional_bandwidth, must be in (0,
0.5)"

    beta = 5.0
    trans_width = 0.5 - fractional_bw
    mid_transition_band = 0.5 - trans_width/2

    taps = gr.firdes.low_pass(interpolation,                     # gain
                              1,                                 # Fs
                              mid_transition_band/interpolation, # trans
mid point
                              trans_width/interpolation,         #
transition width
                              gr.firdes.WIN_KAISER,
                              beta                               # beta
                              )

    return taps

and is called this way:

        if taps is None and fractional_bw is None:
            fractional_bw = 0.4

        d = gru.gcd(interpolation, decimation)
        interpolation = interpolation // d
        decimation = decimation // d

        if taps is None:
            taps = design_filter(interpolation, decimation, fractional_bw)
_______________________________________________
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Reply via email to