Skip to content

Instantly share code, notes, and snippets.

@shunsukeaihara
Last active September 15, 2018 11:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save shunsukeaihara/1f07d19020254debc78a6fe7f8dc2662 to your computer and use it in GitHub Desktop.
Save shunsukeaihara/1f07d19020254debc78a6fe7f8dc2662 to your computer and use it in GitHub Desktop.
upsampling with biquad low-pass filter
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"%matplotlib inline\n",
"import matplotlib.pyplot as plt\n",
"import math\n",
"import random\n",
"from collections import namedtuple"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"def calc_biquad_filter_coefficients(srate, cutoff, q):\n",
" omega = 2.0 * math.pi * (float(cutoff) / float(srate))\n",
" alpha = math.sin(omega) / (2.0 * q)\n",
" a0 = 1.0 + alpha\n",
" a1 = -2.0 * math.cos(omega)\n",
" a2 = 1.0 - alpha\n",
" b0 = (1.0 - math.cos(omega)) / 2.0\n",
" b1 = 1.0 - math.cos(omega)\n",
" b2 = (1.0 - math.cos(omega)) / 2.0\n",
" return (a0, a1, a2, b0, b1, b2)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"class BiquadBuffer:\n",
" def __init__(self, in1, in2, out1, out2):\n",
" self.in1 = in1\n",
" self.in2 = in2\n",
" self.out1 = out1\n",
" self.out2 = out2\n",
"\n",
"def filtering(signal, coefs, buffer):\n",
" a0, a1, a2, b0, b1, b2 = coefs\n",
" ret = []\n",
" for s in signal:\n",
" output = b0/a0 * s + b1/a0 * buffer.in1 + b2/a0 * buffer.in2 - a1/a0 * buffer.out1 - a2/a0 * buffer.out2;\n",
" buffer.in2 = buffer.in1\n",
" buffer.in1 = s\n",
" buffer.out2 = buffer.out1\n",
" buffer.out1 = output\n",
" ret.append(output)\n",
" return ret"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"def gen_sin_with_noise(sampling_rate, f0, sec):\n",
" swav=[]\n",
" for n in range(int(sampling_rate) * sec):\n",
" s = 1.0 * math.sin(2.0 * math.pi * float(f0) * float(n) / float(sampling_rate))\n",
" swav.append(s)\n",
" return swav"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"signal = gen_sin_with_noise(16000, 440, 5)\n",
"# resampling with 0 padding\n",
"zerolist = [0] * len(signal) * 4\n",
"zerolist[::4] = signal\n",
"signal = zerolist\n",
"signal = [s * 4 for s in signal]"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"coefs = calc_biquad_filter_coefficients(48000, 500, 0.5)\n",
"buffer = BiquadBuffer(0.0, 0.0, 0.0, 0.0)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"filtered = filtering(signal, coefs, buffer)"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x118bd82e8>]"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.plot(zerolist[:200])\n",
"plt.plot(filtered[:200])"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.2"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment