{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"tags": [
"hide_cell"
]
},
"outputs": [],
"source": [
"%matplotlib inline\n",
"import warnings\n",
"warnings.filterwarnings(\"ignore\")\n",
"import numpy, scipy, matplotlib.pyplot as plt, IPython.display as ipd\n",
"import librosa, librosa.display"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"tags": [
"hide_cell"
]
},
"outputs": [],
"source": [
"plt.style.use('seaborn-muted')\n",
"plt.rcParams['figure.figsize'] = (14, 5)\n",
"plt.rcParams['axes.grid'] = True\n",
"plt.rcParams['axes.spines.left'] = False\n",
"plt.rcParams['axes.spines.right'] = False\n",
"plt.rcParams['axes.spines.bottom'] = False\n",
"plt.rcParams['axes.spines.top'] = False\n",
"plt.rcParams['axes.xmargin'] = 0\n",
"plt.rcParams['axes.ymargin'] = 0\n",
"plt.rcParams['image.cmap'] = 'gray'\n",
"plt.rcParams['image.interpolation'] = None"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"[← Back to Index](index.html)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Magnitude Scaling"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Often, the raw amplitude of a signal in the time- or frequency-domain is not as perceptually relevant to humans as the amplitude converted into other units, e.g. using a logarithmic scale."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For example, let's consider a pure tone whose amplitude grows louder linearly. Define the time variable:"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"T = 4.0 # duration in seconds\n",
"sr = 22050 # sampling rate in Hertz\n",
"t = numpy.linspace(0, T, int(T*sr), endpoint=False)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Create a signal whose amplitude grows linearly:"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"amplitude = numpy.linspace(0, 1, int(T*sr), endpoint=False) # time-varying amplitude\n",
"x = amplitude*numpy.sin(2*numpy.pi*440*t)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Listen:"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"tags": [
"hide_input"
]
},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" "
],
"text/plain": [
""
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ipd.Audio(x, rate=sr)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Plot the signal:"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"