I'm looking at the GNU Radio GMSK modulator block. The Gaussian taps are somehow convolved with a rectangular window with 4 * samples-per-symbol taps owing to the fact for GMSK, the filter spans four symbols. I was wondering if anyone could elaborate why do we convolve the Gaussian taps with the square wave?

self.gaussian_taps = filter.firdes.gaussian(
1,             # gain
samples_per_symbol,    # symbol_rate
bt,            # bandwidth * symbol time
ntaps                  # number of taps
)
self.sqwave = (1,) * samples_per_symbol       # rectangular window
self.taps = numpy.convolve(numpy.array(self.gaussian_taps),numpy.array(self.sqwave))
self.gaussian_filter = filter.interp_fir_filter_fff(samples_per_symbol, self.taps)


Let's say you want to filter a signal $$x[n]$$ through a Gaussian filter with impulse response $$h_g[n]$$ and a Moving Average (the "sqwave") filter with impulse response $$h_s[n]$$. Then the resulting operation is
$$y[n] = h_s[n] * (h_g[n] * x[n]) = (h_s[n] * h_g[n]) * x[n]$$