Last active
March 7, 2025 14:49
-
-
Save Simon-L/60be05ec3a1f95542b9ef31e93ebf553 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "code", | |
"execution_count": 1, | |
"id": "03e8b446-490b-4318-a477-f64a4249df26", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"application/vnd.jupyter.widget-view+json": { | |
"model_id": "8e57398b9bbb492bac56b489d71cb467", | |
"version_major": 2, | |
"version_minor": 0 | |
}, | |
"text/plain": [ | |
"interactive(children=(FloatSlider(value=0.5, description='Vmod_amt', max=1.0, step=0.01), FloatSlider(value=6.…" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
}, | |
{ | |
"data": { | |
"application/vnd.jupyter.widget-view+json": { | |
"model_id": "6d556ab540044520a5fbf2a107952480", | |
"version_major": 2, | |
"version_minor": 0 | |
}, | |
"image/png": "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BEAAAACHIQAGqZiYGD311FOKieHh9qeibc6Mtjkz2ubMaJszo23OjLYJbXQCAQAAcBjOAAIAADgMARAAAMBhCIAAAAAOQwAEAABwGAJgEJo5c6a6dOmi2NhYZWZmavXq1aZLanZTp07V5ZdfrtatWys5OVm33HKLtmzZErDP0aNHNW7cOLVt21atWrXS8OHDVVxcbKhic5577jm5XC49/PDD/nVObpvdu3fr7rvvVtu2bRUXF6c+ffpozZo1/u2WZWnKlCnq0KGD4uLilJWVpW3bthmsuHnU1tZq8uTJSk9PV1xcnLp27apf/vKXAc9CdUrbrFixQjfeeKM8Ho9cLpcWLFgQsL0+7VBaWqrs7GzFx8crMTFRo0ePVmVlZTMeRdM4W9tUV1dr4sSJ6tOnj1q2bCmPx6N77rlHe/bsCXiPcG2bcEMADDJvv/22JkyYoKeeekpr165V3759NXjwYJWUlJgurVktX75c48aN06pVq5STk6Pq6mpdd911OnToxEPvH3nkES1atEjvvvuuli9frj179ui2224zWHXzy8/P1+9+9ztdeumlAeud2jYHDhzQVVddpaioKH3wwQf6/PPP9Zvf/EZt2rTx7zN9+nTNmDFDs2fPVl5enlq2bKnBgwfr6NGjBitvetOmTdOsWbP0yiuvaPPmzZo2bZqmT5+ul19+2b+PU9rm0KFD6tu3r2bOnHna7fVph+zsbG3atEk5OTlavHixVqxYobFjxzbXITSZs7XN4cOHtXbtWk2ePFlr167V+++/ry1btuimm24K2C9c2ybsWAgqV1xxhTVu3Dj/69raWsvj8VhTp041WJV5JSUlliRr+fLllmVZVllZmRUVFWW9++67/n02b95sSbJyc3NNldmsDh48aHXr1s3KycmxfvCDH1gPPfSQZVnObpuJEydaAwcOPON2n89npaamWs8//7x/XVlZmRUTE2P9+c9/bo4Sjbn++uutn/70pwHrbrvtNis7O9uyLOe2jSRr/vz5/tf1aYfPP//ckmTl5+f79/nggw8sl8tl7d69u9lqb2qnts3prF692pJk7dixw7Is57RNOOAMYBA5duyYCgoKlJWV5V/ndruVlZWl3Nxcg5WZV15eLklKSkqSJBUUFKi6ujqgrXr06KFOnTo5pq3GjRun66+/PqANJGe3zcKFC5WRkaHbb79dycnJ6tevn1577TX/9u3bt8vr9Qa0TUJCgjIzM8O+ba688kotXbpUW7dulSStW7dOK1eu1NChQyU5u21OVp92yM3NVWJiojIyMvz7ZGVlye12Ky8vr9lrNqm8vFwul0uJiYmSaJtQEmm6AJywb98+1dbWKiUlJWB9SkqKvvjiC0NVmefz+fTwww/rqquu0iWXXCJJ8nq9io6O9v+jUyclJUVer9dAlc3rrbfe0tq1a5Wfn/+tbU5um6+//lqzZs3ShAkT9Itf/EL5+fl68MEHFR0drVGjRvmP/3R/x8K9bZ544glVVFSoR48eioiIUG1trZ599lllZ2dLkqPb5mT1aQev16vk5OSA7ZGRkUpKSnJUWx09elQTJ07UnXfeqfj4eEm0TSghACLojRs3Ths3btTKlStNlxIUioqK9NBDDyknJ0exsbGmywkqPp9PGRkZ+vWvfy1J6tevnzZu3KjZs2dr1KhRhqsz65133tG8efP05ptvqnfv3iosLNTDDz8sj8fj+LbBuauurtYdd9why7I0a9Ys0+XgPHAJOIi0a9dOERER3+qtWVxcrNTUVENVmTV+/HgtXrxYH330kTp27Ohfn5qaqmPHjqmsrCxgfye0VUFBgUpKSnTZZZcpMjJSkZGRWr58uWbMmKHIyEilpKQ4tm06dOigXr16Bazr2bOndu7cKUn+43fi37HHH39cTzzxhEaMGKE+ffpo5MiReuSRRzR16lRJzm6bk9WnHVJTU7/VMa+mpkalpaWOaKu68Ldjxw7l5OT4z/5JtE0oIQAGkejoaPXv319Lly71r/P5fFq6dKkGDBhgsLLmZ1mWxo8fr/nz52vZsmVKT08P2N6/f39FRUUFtNWWLVu0c+fOsG+ra6+9Vhs2bFBhYaF/ysjIUHZ2tn/ZqW1z1VVXfWu4oK1bt6pz586SpPT0dKWmpga0TUVFhfLy8sK+bQ4fPiy3O/Cf/IiICPl8PknObpuT1acdBgwYoLKyMhUUFPj3WbZsmXw+nzIzM5u95uZUF/62bdumf/7zn2rbtm3Adie3Tcgx3QsFgd566y0rJibGmjt3rvX5559bY8eOtRITEy2v12u6tGZ1//33WwkJCdbHH39s7d271z8dPnzYv899991nderUyVq2bJm1Zs0aa8CAAdaAAQMMVm3Oyb2ALcu5bbN69WorMjLSevbZZ61t27ZZ8+bNs1q0aGG98cYb/n2ee+45KzEx0frrX/9qrV+/3rr55put9PR068iRIwYrb3qjRo2yLrjgAmvx4sXW9u3brffff99q166d9fOf/9y/j1Pa5uDBg9Znn31mffbZZ5Yk68UXX7Q+++wzf0/W+rTDkCFDrH79+ll5eXnWypUrrW7dull33nmnqUNqNGdrm2PHjlk33XST1bFjR6uwsDDg3+aqqir/e4Rr24QbAmAQevnll61OnTpZ0dHR1hVXXGGtWrXKdEnNTtJppz/96U/+fY4cOWI98MADVps2bawWLVpYt956q7V3715zRRt0agB0ctssWrTIuuSSS6yYmBirR48e1pw5cwK2+3w+a/LkyVZKSooVExNjXXvttdaWLVsMVdt8KioqrIceesjq1KmTFRsba1144YXWk08+GfDF7ZS2+eijj07778uoUaMsy6pfO+zfv9+68847rVatWlnx8fHWvffeax08eNDA0TSus7XN9u3bz/hv80cffeR/j3Btm3DjsqyThoEHAABA2OMeQAAAAIchAAIAADgMARAAAMBhCIAAAAAOQwAEAABwGAIgAACAwxAAAQAAHIYACAAA4DAEQAAAAIchAAIAADgMARAAAMBhCIAAAAAOQwAEAABwGAIgAACAwxAAAQAAHIYACAAA4DAEQAAAAIchAAIAADgMARAAAMBhCIAAAAAOQwAEAABwGAIgAACAwxAAAQAAHIYACAAA4DAEQAAAAIchAAIAADgMARAAAMBhCIAAAAAOQwAEAABwGAIgAACAwxAAAQAAHOb/A10P3JTJdMVyAAAAAElFTkSuQmCC", | |
"text/html": [ | |
"\n", | |
" <div style=\"display: inline-block;\">\n", | |
" <div class=\"jupyter-widgets widget-label\" style=\"text-align: center;\">\n", | |
" Figure\n", | |
" </div>\n", | |
" <img src='data:image/png;base64,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BEAAAACHIQAGqZiYGD311FOKieHh9qeibc6Mtjkz2ubMaJszo23OjLYJbXQCAQAAcBjOAAIAADgMARAAAMBhCIAAAAAOQwAEAABwGAJgEJo5c6a6dOmi2NhYZWZmavXq1aZLanZTp07V5ZdfrtatWys5OVm33HKLtmzZErDP0aNHNW7cOLVt21atWrXS8OHDVVxcbKhic5577jm5XC49/PDD/nVObpvdu3fr7rvvVtu2bRUXF6c+ffpozZo1/u2WZWnKlCnq0KGD4uLilJWVpW3bthmsuHnU1tZq8uTJSk9PV1xcnLp27apf/vKXAc9CdUrbrFixQjfeeKM8Ho9cLpcWLFgQsL0+7VBaWqrs7GzFx8crMTFRo0ePVmVlZTMeRdM4W9tUV1dr4sSJ6tOnj1q2bCmPx6N77rlHe/bsCXiPcG2bcEMADDJvv/22JkyYoKeeekpr165V3759NXjwYJWUlJgurVktX75c48aN06pVq5STk6Pq6mpdd911OnToxEPvH3nkES1atEjvvvuuli9frj179ui2224zWHXzy8/P1+9+9ztdeumlAeud2jYHDhzQVVddpaioKH3wwQf6/PPP9Zvf/EZt2rTx7zN9+nTNmDFDs2fPVl5enlq2bKnBgwfr6NGjBitvetOmTdOsWbP0yiuvaPPmzZo2bZqmT5+ul19+2b+PU9rm0KFD6tu3r2bOnHna7fVph+zsbG3atEk5OTlavHixVqxYobFjxzbXITSZs7XN4cOHtXbtWk2ePFlr167V+++/ry1btuimm24K2C9c2ybsWAgqV1xxhTVu3Dj/69raWsvj8VhTp041WJV5JSUlliRr+fLllmVZVllZmRUVFWW9++67/n02b95sSbJyc3NNldmsDh48aHXr1s3KycmxfvCDH1gPPfSQZVnObpuJEydaAwcOPON2n89npaamWs8//7x/XVlZmRUTE2P9+c9/bo4Sjbn++uutn/70pwHrbrvtNis7O9uyLOe2jSRr/vz5/tf1aYfPP//ckmTl5+f79/nggw8sl8tl7d69u9lqb2qnts3prF692pJk7dixw7Is57RNOOAMYBA5duyYCgoKlJWV5V/ndruVlZWl3Nxcg5WZV15eLklKSkqSJBUUFKi6ujqgrXr06KFOnTo5pq3GjRun66+/PqANJGe3zcKFC5WRkaHbb79dycnJ6tevn1577TX/9u3bt8vr9Qa0TUJCgjIzM8O+ba688kotXbpUW7dulSStW7dOK1eu1NChQyU5u21OVp92yM3NVWJiojIyMvz7ZGVlye12Ky8vr9lrNqm8vFwul0uJiYmSaJtQEmm6AJywb98+1dbWKiUlJWB9SkqKvvjiC0NVmefz+fTwww/rqquu0iWXXCJJ8nq9io6O9v+jUyclJUVer9dAlc3rrbfe0tq1a5Wfn/+tbU5um6+//lqzZs3ShAkT9Itf/EL5+fl68MEHFR0drVGjRvmP/3R/x8K9bZ544glVVFSoR48eioiIUG1trZ599lllZ2dLkqPb5mT1aQev16vk5OSA7ZGRkUpKSnJUWx09elQTJ07UnXfeqfj4eEm0TSghACLojRs3Ths3btTKlStNlxIUioqK9NBDDyknJ0exsbGmywkqPp9PGRkZ+vWvfy1J6tevnzZu3KjZs2dr1KhRhqsz65133tG8efP05ptvqnfv3iosLNTDDz8sj8fj+LbBuauurtYdd9why7I0a9Ys0+XgPHAJOIi0a9dOERER3+qtWVxcrNTUVENVmTV+/HgtXrxYH330kTp27Ohfn5qaqmPHjqmsrCxgfye0VUFBgUpKSnTZZZcpMjJSkZGRWr58uWbMmKHIyEilpKQ4tm06dOigXr16Bazr2bOndu7cKUn+43fi37HHH39cTzzxhEaMGKE+ffpo5MiReuSRRzR16lRJzm6bk9WnHVJTU7/VMa+mpkalpaWOaKu68Ldjxw7l5OT4z/5JtE0oIQAGkejoaPXv319Lly71r/P5fFq6dKkGDBhgsLLmZ1mWxo8fr/nz52vZsmVKT08P2N6/f39FRUUFtNWWLVu0c+fOsG+ra6+9Vhs2bFBhYaF/ysjIUHZ2tn/ZqW1z1VVXfWu4oK1bt6pz586SpPT0dKWmpga0TUVFhfLy8sK+bQ4fPiy3O/Cf/IiICPl8PknObpuT1acdBgwYoLKyMhUUFPj3WbZsmXw+nzIzM5u95uZUF/62bdumf/7zn2rbtm3Adie3Tcgx3QsFgd566y0rJibGmjt3rvX5559bY8eOtRITEy2v12u6tGZ1//33WwkJCdbHH39s7d271z8dPnzYv899991nderUyVq2bJm1Zs0aa8CAAdaAAQMMVm3Oyb2ALcu5bbN69WorMjLSevbZZ61t27ZZ8+bNs1q0aGG98cYb/n2ee+45KzEx0frrX/9qrV+/3rr55put9PR068iRIwYrb3qjRo2yLrjgAmvx4sXW9u3brffff99q166d9fOf/9y/j1Pa5uDBg9Znn31mffbZZ5Yk68UXX7Q+++wzf0/W+rTDkCFDrH79+ll5eXnWypUrrW7dull33nmnqUNqNGdrm2PHjlk33XST1bFjR6uwsDDg3+aqqir/e4Rr24QbAmAQevnll61OnTpZ0dHR1hVXXGGtWrXKdEnNTtJppz/96U/+fY4cOWI98MADVps2bawWLVpYt956q7V3715zRRt0agB0ctssWrTIuuSSS6yYmBirR48e1pw5cwK2+3w+a/LkyVZKSooVExNjXXvttdaWLVsMVdt8KioqrIceesjq1KmTFRsba1144YXWk08+GfDF7ZS2+eijj07778uoUaMsy6pfO+zfv9+68847rVatWlnx8fHWvffeax08eNDA0TSus7XN9u3bz/hv80cffeR/j3Btm3DjsqyThoEHAABA2OMeQAAAAIchAAIAADgMARAAAMBhCIAAAAAOQwAEAABwGAIgAACAwxAAAQAAHIYACAAA4DAEQAAAAIchAAIAADgMARAAAMBhCIAAAAAOQwAEAABwGAIgAACAwxAAAQAAHIYACAAA4DAEQAAAAIchAAIAADgMARAAAMBhCIAAAAAOQwAEAABwGAIgAACAwxAAAQAAHIYACAAA4DAEQAAAAIchAAIAADgMARAAAMBhCIAAAAAOQwAEAABwGAIgAACAwxAAAQAAHOb/A10P3JTJdMVyAAAAAElFTkSuQmCC' width=640.0/>\n", | |
" </div>\n", | |
" " | |
], | |
"text/plain": [ | |
"Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"%matplotlib ipympl\n", | |
"import ipywidgets as widgets\n", | |
"import matplotlib.pyplot as plt\n", | |
"import numpy as np\n", | |
"\n", | |
"def lerp(a: float, b: float, t: float) -> float:\n", | |
" return (1 - t) * a + t * b\n", | |
"def inv_lerp(a: float, b: float, v: float) -> float:\n", | |
" return (v - a) / (b - a)\n", | |
"def remap(i_min: float, i_max: float, o_min: float, o_max: float, v: float) -> float:\n", | |
" return lerp(o_min, o_max, inv_lerp(i_min, i_max, v))\n", | |
"\n", | |
"env = [np.pow(1-(x/128), 6) for x in range(128)]\n", | |
"freq_curve = [x for x in range(128)]\n", | |
"freq_curve2 = [x for x in range(128)]\n", | |
"global maxfreq, minfreq\n", | |
"maxfreq = 0\n", | |
"minfreq = 1000\n", | |
"\n", | |
"def calc(amt, Vco, A, B, C, D, E):\n", | |
" global maxfreq, minfreq\n", | |
" for i, v in enumerate(env):\n", | |
" freq_curve[i] = remap(0, 1, lerp(3, 1.8, amt), lerp(4.3, 10, amt), v) - 3.2\n", | |
" freq_curve2[i] = (A * (Vco-3.2) + B) * np.exp(C * freq_curve[i] + (D*0) + E)\n", | |
" freq_curve2[i] = min(freq_curve2[i], 25e3)\n", | |
" maxfreq = max(maxfreq, freq_curve2[i])\n", | |
" minfreq = min(minfreq, freq_curve2[i])\n", | |
"\n", | |
"fig, ax = plt.subplots()\n", | |
"\n", | |
"@widgets.interact(Vmod_amt=(0, 1, 0.01), Vco=(4.5, 12, 0.01), A=(0,8,0.01), B=(0,8,0.01), C=(-1,8,0.01), E=(-8,8,0.01))\n", | |
"def update(Vmod_amt = 0.5, Vco = 6, A = 3.8, B = 1.7, C = 0.2, D = 0, E = 4.0):\n", | |
" global maxfreq, minfreq\n", | |
" maxfreq = 1\n", | |
" minfreq = 10000\n", | |
" calc(Vmod_amt, Vco, A, B, C, D, E)\n", | |
" ax.set_ylim([minfreq, maxfreq])\n", | |
" [l.remove() for l in ax.lines]\n", | |
" ax.plot(freq_curve2, color=\"C1\")\n", | |
" fig.canvas.draw()\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"id": "f3b1d261-244f-4bce-939d-a9a7fad60945", | |
"metadata": {}, | |
"outputs": [], | |
"source": [] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": "Python 3 (ipykernel)", | |
"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.12.6" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 5 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment