├── AC_01_Basics_Multirate.ipynb ├── AC_02_FilterBanks1.ipynb ├── AC_03_FilterBanks2.ipynb ├── AC_03b_FilterBanks3.ipynb ├── AC_04_psychoAcoustics.ipynb ├── AC_05_psychoAcousticsModels.ipynb ├── AC_06_PQMF_FilterBank.ipynb ├── README.md ├── audio ├── fantasy-orchestra.wav └── test3.wav ├── binder ├── del.txt ├── environment.yml └── postBuild ├── fb2048t1023d512bbitcs.mat ├── images ├── Lecture6-10.png ├── Lecture6-6.png ├── Lecture6-7.png ├── Lecture6-8.png ├── Lecture6-9.png ├── ac_01_modulation.png ├── ac_02_audioCoders.png ├── ac_03_critc1.png ├── ac_04_01_psycho1.png ├── ac_04_02_structureEar.png ├── ac_04_03_cochlea.png ├── ac_04_04_cochlea2.png ├── ac_04_05_corti.png ├── ac_04_06_preprocessing.png ├── ac_04_07_preprocessing2.png ├── ac_04_08_basilarMembrane.png ├── ac_04_09_frequency.png ├── ac_04_10_threshold.png ├── ac_04_11_threshold2.png ├── ac_04_12_threshold_age.png ├── ac_04_13_threshold_age2.png ├── ac_04_14_loudness.png ├── ac_04_15_loudness_scale.png ├── ac_04_16_groupin.jpg ├── ac_04_16_groupin.png ├── ac_04_17_bandwidth.png ├── ac_04_18_bark.png ├── ac_04_19_broadnoise.png ├── ac_04_20_narrownoise.png ├── ac_04_21_narrownoise2.png ├── ac_04_22_LpHpnoise2.png ├── ac_04_23_pureTone.png ├── ac_04_24_complexTone.png ├── ac_04_25_inBand.png ├── ac_04_25_tonality.png ├── ac_04_26_spreadingF.png ├── ac_04_27_maskingBands.png ├── ac_04_28_temporal.png ├── ac_04_critc2.png ├── ac_05_01_ltq.png ├── ac_05_02_pemo.png ├── ac_05_downsamplint.png ├── ac_06_01_blockdiagramAC.jpg ├── ac_06_02_mpeg1BlockDiag.jpg ├── ac_06_02_mpeg3BlockDiag.jpg ├── ac_06_04_mpegHeader.jpg ├── ac_06_05_FaMetraix.jpg ├── ac_06_06_FsMetraix.jpg ├── ac_06_07_hybrid1.jpg ├── ac_06_08_hybrid2.jpg ├── ac_06_09_hybrid3.jpg ├── ac_06_10_hybrid4.jpg ├── ac_06_11_hybrid5.jpg ├── ac_06_12_hybrid6.jpg ├── ac_06_13_bitstream.jpg ├── ac_06_14_decoder.jpg ├── ac_06_15_flowchart.jpg ├── ac_06_16_layer3Diag.jpg ├── ac_06_upsampling.png ├── ac_07_analysis.png ├── ac_08_synthesis.png ├── ac_09_fb.png ├── ac_10_bandpass_ny.png ├── ac_11_bandpass_ny2.png ├── ac_12_noble.png ├── ac_13_noble2.png ├── ac_14_poly1.png ├── ac_15_poly2.png ├── ac_16_poly3.png ├── ac_17_polyA1.png ├── ac_18_polyS1.png ├── ac_19_polyS2.png ├── ac_20_synth.png ├── ac_21_synth2.png ├── ac_22_synth3.png ├── ac_23_exH.png ├── ac_24_dft.png ├── ac_25_dftMatrix.png ├── ac_26_dct4.png ├── ac_27_dct4_1.png ├── ac_28_freq_shift.png ├── ac_29_freq_shift2.png ├── ac_30_window.png ├── ac_31_windowRect.png ├── ac_32_polyphaseAnalysis.png ├── ac_33_polyphaseAnalysis2.png ├── ac_34_mdct_inv.png ├── ac_35_mdct_synth.png ├── ac_36_faMatA.png ├── ac_37_faMatA1.png ├── ac_38_mdct_PR.png ├── ac_39_sinWindow.png ├── ac_40_sineWindowFR.png ├── ac_41_sineWinIR.png ├── ac_42_sineWinFR.png ├── ac_43_delayMat.png ├── ac_44_delayMat2.png ├── ac_45_ldfbEx.png ├── ac_46_blockSwit.png ├── ac_47_blockSwit2.png ├── ac_48_blockSwit3.png ├── ac_49_blockSwit4.png ├── ac_50_blockSwit5.png ├── ac_51_qmf.png ├── ac_52_qmf2.png ├── ac_53_qmf3.png ├── ac_54_qmf4.png ├── ac_55_pqmf1.png ├── ac_56_pqmf2.png ├── ac_header.png └── rise_tread_quantizers.png └── seminars ├── README.md ├── all_ws22_seminars_intro.ipynb └── nbgrader_config.py /AC_03b_FilterBanks3.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": { 6 | "id": "sLQU8Pa7F82Y" 7 | }, 8 | "source": [ 9 | "
\n", 10 | " \n", 11 | "
\n", 12 | "\n", 13 | "### Prof. Dr. -Ing. Gerald Schuller
Jupyter Notebook: Renato Profeta\n", 14 | "\n", 15 | "[Applied Media Systems Group](https://www.tu-ilmenau.de/en/applied-media-systems-group/)
\n", 16 | "[Technische Universität Ilmenau](https://www.tu-ilmenau.de/)" 17 | ] 18 | }, 19 | { 20 | "cell_type": "markdown", 21 | "metadata": { 22 | "id": "7GNOqVWjF82c" 23 | }, 24 | "source": [ 25 | "# Filter Banks III\n", 26 | "\n", 27 | "## Lecture Video:\n", 28 | "\n", 29 | "https://youtu.be/yMAKglgGi90\n" 30 | ] 31 | }, 32 | { 33 | "cell_type": "code", 34 | "execution_count": null, 35 | "metadata": { 36 | "hide_input": true, 37 | "id": "nNLy84iBF82c", 38 | "outputId": "222097b2-c61b-4e6c-cc93-91a89dfad501" 39 | }, 40 | "outputs": [ 41 | { 42 | "data": { 43 | "text/html": [ 44 | "\n" 45 | ], 46 | "text/plain": [ 47 | "" 48 | ] 49 | }, 50 | "metadata": {}, 51 | "output_type": "display_data" 52 | } 53 | ], 54 | "source": [ 55 | "%%html\n", 56 | "" 57 | ] 58 | }, 59 | { 60 | "cell_type": "markdown", 61 | "metadata": { 62 | "hide_input": false, 63 | "scrolled": true, 64 | "id": "f11DJqFUF82h" 65 | }, 66 | "source": [ 67 | "## Block Switching" 68 | ] 69 | }, 70 | { 71 | "cell_type": "code", 72 | "execution_count": null, 73 | "metadata": { 74 | "hide_input": true, 75 | "id": "GdPEAYliF82h", 76 | "outputId": "6549bcbc-b4cc-4736-dc9f-e0c469cd3319" 77 | }, 78 | "outputs": [ 79 | { 80 | "name": "stdout", 81 | "output_type": "stream", 82 | "text": [ 83 | "https://onlinelibrary.wiley.com/doi/book/10.1002/0470041978\n" 84 | ] 85 | }, 86 | { 87 | "data": { 88 | "text/html": [ 89 | "\n", 90 | " \n", 97 | " " 98 | ], 99 | "text/plain": [ 100 | "" 101 | ] 102 | }, 103 | "execution_count": 15, 104 | "metadata": {}, 105 | "output_type": "execute_result" 106 | } 107 | ], 108 | "source": [ 109 | "from IPython.display import IFrame\n", 110 | "print('https://onlinelibrary.wiley.com/doi/book/10.1002/0470041978')\n", 111 | "IFrame('https://ieeexplore.ieee.org/book/8039676', width=900, height=400)\n" 112 | ] 113 | }, 114 | { 115 | "cell_type": "markdown", 116 | "metadata": { 117 | "hide_input": false, 118 | "id": "gB-HI_KZF82i" 119 | }, 120 | "source": [ 121 | " - **Problem:** In audio coding, Pre-echoes appear before transients.\n", 122 | " - reason: blocks too long.\n", 123 | "\n", 124 | "
\n", 125 | " \n", 126 | "
\n", 127 | "\n", 128 | " - **Approach:** for fast changing signals use block switching to lower number of subbands.\n", 129 | "\n", 130 | "
\n", 131 | " \n", 132 | "
" 133 | ] 134 | }, 135 | { 136 | "cell_type": "markdown", 137 | "metadata": { 138 | "id": "WYBjZiI6F82i" 139 | }, 140 | "source": [ 141 | "### Accomodate Overlap-Add for Block Switching" 142 | ] 143 | }, 144 | { 145 | "cell_type": "markdown", 146 | "metadata": { 147 | "hide_input": false, 148 | "id": "yReWU_CyF82i" 149 | }, 150 | "source": [ 151 | "
\n", 152 | " \n", 153 | "
\n", 154 | "
\n", 155 | "
\n", 156 | " \n", 157 | "
\n" 158 | ] 159 | }, 160 | { 161 | "cell_type": "markdown", 162 | "metadata": { 163 | "id": "CRQ_EXXMF82j" 164 | }, 165 | "source": [ 166 | "### Block Switching" 167 | ] 168 | }, 169 | { 170 | "cell_type": "markdown", 171 | "metadata": { 172 | "hide_input": false, 173 | "id": "Oa3aM1g-F82j" 174 | }, 175 | "source": [ 176 | " - Sequence of windows for switching the number of sub-bands.\n", 177 | " - Shorter windows $\\rightarrow$ better resolution.\n", 178 | "\n", 179 | "
\n", 180 | " \n", 181 | "
\n" 182 | ] 183 | }, 184 | { 185 | "cell_type": "code", 186 | "execution_count": null, 187 | "metadata": { 188 | "hide_input": true, 189 | "id": "isFeHmpSF82j", 190 | "outputId": "c3a3f451-163c-4d37-e41f-1eeec8e9e37b" 191 | }, 192 | "outputs": [ 193 | { 194 | "data": { 195 | "text/html": [ 196 | "\n", 197 | " \n", 204 | " " 205 | ], 206 | "text/plain": [ 207 | "" 208 | ] 209 | }, 210 | "execution_count": 16, 211 | "metadata": {}, 212 | "output_type": "execute_result" 213 | } 214 | ], 215 | "source": [ 216 | "IFrame(\"https://ccrma.stanford.edu/~pdelac/422/project/report.html\",width=900, height=400)" 217 | ] 218 | }, 219 | { 220 | "cell_type": "markdown", 221 | "metadata": { 222 | "id": "U0Ap4ryoF82k" 223 | }, 224 | "source": [ 225 | "## Wavelets, QMF (Quadradutre Mirror Filter) Filter Banks" 226 | ] 227 | }, 228 | { 229 | "cell_type": "code", 230 | "execution_count": null, 231 | "metadata": { 232 | "hide_input": true, 233 | "id": "uhhU2QxPF82k", 234 | "outputId": "57a93857-68c3-44da-d7fb-32b85927ecf2" 235 | }, 236 | "outputs": [ 237 | { 238 | "data": { 239 | "text/html": [ 240 | "\n" 241 | ], 242 | "text/plain": [ 243 | "" 244 | ] 245 | }, 246 | "metadata": {}, 247 | "output_type": "display_data" 248 | } 249 | ], 250 | "source": [ 251 | "%%html\n", 252 | "" 253 | ] 254 | }, 255 | { 256 | "cell_type": "markdown", 257 | "metadata": { 258 | "hide_input": false, 259 | "id": "szGTPcQgF82k" 260 | }, 261 | "source": [ 262 | " - Iterate 2-band system.\n", 263 | " - See also: Wavelet Packets (more general)\n", 264 | " - **Problem:** Aliasing propagation reduces frequency selectivity!\n", 265 | " - Important in image coding, but no big role in Audio Coding.\n", 266 | "\n", 267 | "
\n", 268 | " \n", 269 | "
\n" 270 | ] 271 | }, 272 | { 273 | "cell_type": "markdown", 274 | "metadata": { 275 | "id": "1ArvCd5xF82k" 276 | }, 277 | "source": [ 278 | "### How to Obtain a Two Band Filter Bank" 279 | ] 280 | }, 281 | { 282 | "cell_type": "markdown", 283 | "metadata": { 284 | "id": "rplw4u8GF82l" 285 | }, 286 | "source": [ 287 | " - Application: QMF filter banks, Wavelets, ...\n", 288 | " - Analysis polyphase for a 2-band filter bank:\n", 289 | "\n", 290 | " $$\\large\n", 291 | " H(z)=\n", 292 | " \\begin{bmatrix}\n", 293 | " H_{0,0}(z) & H_{0,1}(z) \\\\\n", 294 | " H_{1,0}(z) & H_{1,1}(z)\n", 295 | " \\end{bmatrix}\n", 296 | " $$\n", 297 | "
\n", 298 | " - **Observe:** $H_{0,0}(z)$ contains the even coefficients of the low pass filter, and $H_{1,0}(z)$ its odd coefficients.\n", 299 | " - Accordingly for the high pass filter.\n", 300 | " - Given the analysis filters, the synthesis filters can be obtained by inverting the analysis polyphase matrix:\n", 301 | "\n", 302 | " $$\\large\n", 303 | " H^{-1}(z) = \\dfrac{1}{Det(H(z))}\n", 304 | " \\begin{bmatrix}\n", 305 | " H_{1,1}(z) & -H_{0,1}(z) \\\\\n", 306 | " -H_{1,0}(z) & H_{0,0}(z)\n", 307 | " \\end{bmatrix}\n", 308 | " $$\n", 309 | "
\n", 310 | "\n", 311 | " - **Observe:** If the analysis filters have a finite impulse response (FIR), and the synthesis is desired to also be FIR, the **determinant** of the polyphase matrix needs to be a **constant or a delay**!\n", 312 | "\n", 313 | " $$\\large\n", 314 | " det(H(z)) = H_{1,1}(z)H_{0,0}(z)-H_{0,1}(z)H_{1,0}(z) \\\\ = \\text{const or delay}$$\n", 315 | "
\n", 316 | " - **Observe:** This is the output of the lower band of the filter bank if the input signal is:\n", 317 | "\n", 318 | " $$\\large\n", 319 | " x(z) = \\left \\lfloor H_{1,1}(z), -H_{0,1} \\right \\rfloor $$\n", 320 | "\n", 321 | " - Hence the determinant can be formulated as a **convolution**.\n", 322 | " - This input is the high band filter coefficients, with the sign of the even coefficients flipped and switched places with the odd coefficients.\n", 323 | " - Since this represents a critically sampled filter bank, the result represents **every second sample** of the convolution of the low band filter with the correspondingly modified high band filter.\n", 324 | " - This modified high band filter is a low band filter (every second sample sign flipped).\n", 325 | " - The desired output of this downsampled convolution is a single pulse (corresponding to a constant or a delay), hence flat in frequency.\n", 326 | " - Another interpretation: correlation of the 2 signals, where the even lags that appear after downsampling are zero, except for the one pulse." 327 | ] 328 | }, 329 | { 330 | "cell_type": "markdown", 331 | "metadata": { 332 | "hide_input": false, 333 | "id": "3OYelFV4F82l" 334 | }, 335 | "source": [ 336 | "## QMF (Quadrature Mirror Filter)" 337 | ] 338 | }, 339 | { 340 | "cell_type": "markdown", 341 | "metadata": { 342 | "id": "0-WsMfkLF82l" 343 | }, 344 | "source": [ 345 | " - This suggests a simple design strategy:\n", 346 | " - Design a low pass filter for analysis and synthesis.\n", 347 | " - Obtain the high pass filters by flipping the low pass filters every second coefficient.\n", 348 | " \n", 349 | "$$\\begin{array}\n", 350 | "\\text{analysis FB:} & h_1(n)=(-1)^nh_0(n) & n=0,1,...,N-1 \\\\\n", 351 | "\\text{synth. low pass:} & g_0(n)=h_0(n) & \\\\\n", 352 | "\\text{synth. FB high pass:} & g_1(n)=-h_1(n) &\n", 353 | "\\end{array}$$\n", 354 | "\n", 355 | " - This is an early two band filter bank: QMF, Quadrature Mirror Filter (Croisier, Esteban, Galand, 1976)\n", 356 | " - For more than 2 bands: GQMF (Cox, 1986), PQMF\n", 357 | "\n", 358 | " - Sign flipping to obtain the high band filter leads to the polyphase components:\n", 359 | "
\n", 360 | "$$\\large\n", 361 | "H_{0,1}(z) = H_{0,0}(z) \\\\\n", 362 | "\\large\n", 363 | "H_{1,1}(z) = -H_{1,0}(z)\n", 364 | "$$
\n", 365 | "\n", 366 | " - The resulting determinant is:\n", 367 | "\n", 368 | "$$\\large\n", 369 | "det(H(z))=H_{1,1}(z)H_{0,0}(z)-H_{0,1}(z)H_{1,0}(z) \\\\\n", 370 | "\\large\n", 371 | "=-2H_{0,1}(z)H_{0,0}(z)$$\n", 372 | "\n", 373 | " - **Observe:** This cannot be made a constant or delay for finite polynomials of order 1 or greater, hence no PR for finite length filters!\n", 374 | " - The QMF accounts for the sign flipping in the determinant equation.\n", 375 | " - But not for the trading places of even and odd coefficients.\n", 376 | " - Hence: **No Perfect Reconstruction** (only for simple Haar and IIR filters)\n", 377 | " - High stopband attenuation needed to keep reconstruction error small.\n", 378 | " - Numerical optimization to obtain:\n", 379 | "\n", 380 | " $$\\large\n", 381 | " \\left |H_0\\left(e^{j\\omega}\\right)\\right |^2 + \\left |H_1\\left(e^{j\\omega}\\right)\\right |^2 \\approx 1$$\n", 382 | "
\n", 383 | "
\n", 384 | " \n", 385 | "
\n", 386 | "\n", 387 | "
\n", 388 | " \n", 389 | "
\n", 390 | "\n", 391 | " - QMF: Example with Impulse Response of Length 96\n", 392 | "
\n", 393 | "\n", 394 | "
\n", 395 | " \n", 396 | "
" 397 | ] 398 | }, 399 | { 400 | "cell_type": "markdown", 401 | "metadata": { 402 | "hide_input": false, 403 | "id": "WUyVgY05F82m" 404 | }, 405 | "source": [ 406 | "### CQMF: Conjugate QMF" 407 | ] 408 | }, 409 | { 410 | "cell_type": "code", 411 | "execution_count": null, 412 | "metadata": { 413 | "hide_input": true, 414 | "id": "0-B8GWlXF82m", 415 | "outputId": "2e8600c3-e4a5-4c46-e176-29ae0db1eebc" 416 | }, 417 | "outputs": [ 418 | { 419 | "data": { 420 | "text/html": [ 421 | "\n" 422 | ], 423 | "text/plain": [ 424 | "" 425 | ] 426 | }, 427 | "metadata": {}, 428 | "output_type": "display_data" 429 | } 430 | ], 431 | "source": [ 432 | "%%html\n", 433 | "" 434 | ] 435 | }, 436 | { 437 | "cell_type": "markdown", 438 | "metadata": { 439 | "hide_input": false, 440 | "id": "xwx71GcQF82m" 441 | }, 442 | "source": [ 443 | " - To also accommodate for the trading places of odd and even coefficients, a natural choice is to also reverse the temporal order of the synthesis filter.\n", 444 | "\n", 445 | " $$\\large\n", 446 | " h_1(n) = -n_0(L-1-n)(-1)^n$$\n", 447 | "
\n", 448 | " - With L: filter length, and $g_0(n) = h_0(n) \\quad g_1(n) = - h_1(n)$\n", 449 | " - Introduced e.g. by Smith, Barnwell, 1984\n", 450 | "
\n", 451 | "\n", 452 | "\n", 453 | " - For the polyphase components this means:\n", 454 | "\n", 455 | " $$\\large\n", 456 | " \\begin{array}{ccc}\n", 457 | " H_{0,1} & = & -z^{\\frac{L}{2}}H_{0,0}(z^{-1}) \\\\\n", 458 | " H_{1,1} & = & z^{\\frac{L}{2}}H_{1,0}(z^{-1})\n", 459 | " \\end{array}$$\n", 460 | "\n", 461 | " - And the input for our determinant calculation is:\n", 462 | "\n", 463 | " $$\\large\n", 464 | " x(z) = z^{-\\frac{L}{2}} \\left \\lfloor H_{1,0}(z^{-1}), H_{0,0}(z^{-1}) \\right \\rfloor$$\n", 465 | "
\n", 466 | " - This corresponds exactly to the time reversed low band filter!\n", 467 | "\n", 468 | " - Let's define:\n", 469 | "\n", 470 | " $$\\large\n", 471 | " A(z) = H_{1,0}(z^{-1})H_{0,0}(z) $$\n", 472 | "\n", 473 | " - The determinant is now:\n", 474 | "\n", 475 | " $$\\large\n", 476 | " det(H(z)) = H_{1,1}(z)H_{0,0}(z)-H_{0,1}(z)H_{1,0}(z) \\\\\n", 477 | " \\large\n", 478 | " = z^{-\\frac{L}{2}} (A(z)+A(z^{-1}))$$
\n", 479 | " - **Observe:** This can be a constant if all even coefficients of A(z) are zero, except for the center coefficient!\n", 480 | " - **Remember:** the determinant was the output of the low band with this input.\n", 481 | " - Hence: Every second sample of the convolution of the low band filter with its time reversed version.\n", 482 | " - This is equal to **every second value** of the **autocorrelation** function of the l**ow band filter**!\n", 483 | " - Determinant is a constant or a delay: only one sample of this downsampled autocorrelation function (all even coefficients) can be unequal zero (most even coefficients are zero).\n", 484 | " - The Determinant is a constant means:\n", 485 | " - The 0th autocorrelation coefficient is a constant (unequal 0), and all other even coefficients must be zero.\n", 486 | " - Called Nyquist filter property.\n", 487 | "\n", 488 | "\n", 489 | " - In other terms: Define P(z) as the z-transform of this autocorrelation function, the **Power Spectrum**:\n", 490 | "\n", 491 | " $$\\large\n", 492 | " P(z) := H_0(z) \\cdot H_0(z^{-1})$$\n", 493 | "\n", 494 | " - Then all nonzero coefficients of P(z) are the 0th coefficient and the odd coefficients.\n", 495 | " - As a result:\n", 496 | "\n", 497 | " $$\\large\n", 498 | " P(z) + P(-z) = const$$\n", 499 | "\n", 500 | " - The odd coefficients cancel.\n", 501 | " - Frequency reversal $\\rightarrow$ (P(-z))\n", 502 | " - This is also called the halfband filter property.\n", 503 | " \n", 504 | " \n", 505 | " - Design approach: Design P(z) accordingly, then H(z)" 506 | ] 507 | }, 508 | { 509 | "cell_type": "markdown", 510 | "metadata": { 511 | "id": "5l3-4-w-F82n" 512 | }, 513 | "source": [ 514 | "## Pseudo-QMF (PQMF)" 515 | ] 516 | }, 517 | { 518 | "cell_type": "code", 519 | "execution_count": null, 520 | "metadata": { 521 | "hide_input": true, 522 | "id": "RFR_kIjaF82n", 523 | "outputId": "e147dcb4-5c9b-468a-eeb9-9c6e86ff58df" 524 | }, 525 | "outputs": [ 526 | { 527 | "data": { 528 | "text/html": [ 529 | "\n" 530 | ], 531 | "text/plain": [ 532 | "" 533 | ] 534 | }, 535 | "metadata": {}, 536 | "output_type": "display_data" 537 | } 538 | ], 539 | "source": [ 540 | "%%html\n", 541 | "" 542 | ] 543 | }, 544 | { 545 | "cell_type": "markdown", 546 | "metadata": { 547 | "scrolled": true, 548 | "id": "HkkEQp4bF82n" 549 | }, 550 | "source": [ 551 | " - So far we only had 2 subband QMF filter banks.\n", 552 | " - Only for the 2-band case we get perfect reconstruction (in the CQMF case).\n", 553 | " - The PQMF extents the QMF approach to N>2 subbands.\n", 554 | " - But it has only \"Near Perfect Reconstruction\", meaning a reconstruction error by the filter bank.\n", 555 | " - It is modulated filter band (like the MDCT), using a baseband prototype filter h(n) (a lowpass).\n", 556 | " - Its analysis filters are given by the impulse responses (L being the length of the impulse response):\n", 557 | "\n", 558 | " $$\\large\n", 559 | " H_k(n) = h(n) \\cos \\left( \\dfrac{\\pi}{N} \\cdot (k+0.5)(n+0.5-\\dfrac{L}{2}+(-1)^k\\dfrac{\\pi}{4} \\right)$$\n", 560 | "\n", 561 | " - It is an (almost) **orthogonal filter bank**, which means that the synthesis filter impulse responses are simply the time inverses of the analysis impulse responses:\n", 562 | "\n", 563 | " $$\\large\n", 564 | " g_k(n)=h_k(n)(L-1-n)$$\n", 565 | "\n", 566 | " - Its baseband prototype filters h(n) are now designed such that aliasing cancels between adjacent neighbouring bands:\n", 567 | "\n", 568 | " $$\\large\n", 569 | " \\left| H(e^{j\\Omega}) \\right|^2 + \\left| H \\left(e^{j\\left(\\frac{\\pi}{N}-\\Omega\\right)}\\right) \\right|^2 = 1 \\\\\n", 570 | " \\large\n", 571 | " \\text{for } 0 < |\\Omega| < \\frac{\\pi}{2N}\n", 572 | " $$\n", 573 | "\n", 574 | " - Beyond the adjacent bands, the attenuation should go towards infinity:\n", 575 | "\n", 576 | " $$\\large\n", 577 | " \\left| H(e^{j\\Omega}) \\right|^2 = 0, \\text{for } |\\Omega| > \\frac{\\pi}{N}$$\n", 578 | "\n", 579 | "\n", 580 | " - This leads to **\"Near Perfect Reconstruction\"** (there is a **reconstruction error**).\n", 581 | " - The PQMF filter bank is used in MPEG1/2 Layer I,II and III. There it has N=32 subbands and filter length L=512.\n", 582 | " - Also used in MPEG 4 for so-called SBR (Spectral Band Replication) and for parametric sourround coding. There it has N=32 or N=64 subbands, and filter length L=320 or L=640." 583 | ] 584 | }, 585 | { 586 | "cell_type": "markdown", 587 | "metadata": { 588 | "scrolled": false, 589 | "id": "H_f3MSorF82n" 590 | }, 591 | "source": [ 592 | "### PQMF used in MPEG4" 593 | ] 594 | }, 595 | { 596 | "cell_type": "markdown", 597 | "metadata": { 598 | "id": "YBvCrrrQF82o" 599 | }, 600 | "source": [ 601 | " - Impulse response of the baseband prototype (the window), with N=64 and L=640\n", 602 | "\n", 603 | "
\n", 604 | "
\n", 605 | " \n", 606 | "
\n", 607 | "
\n", 608 | "\n", 609 | " - Frequency response of the baseband prototype (the window)\n", 610 | "\n", 611 | "
\n", 612 | "
\n", 613 | " \n", 614 | "
\n", 615 | "
" 616 | ] 617 | } 618 | ], 619 | "metadata": { 620 | "kernelspec": { 621 | "display_name": "Python 3", 622 | "language": "python", 623 | "name": "python3" 624 | }, 625 | "language_info": { 626 | "codemirror_mode": { 627 | "name": "ipython", 628 | "version": 3 629 | }, 630 | "file_extension": ".py", 631 | "mimetype": "text/x-python", 632 | "name": "python", 633 | "nbconvert_exporter": "python", 634 | "pygments_lexer": "ipython3", 635 | "version": "3.7.8" 636 | }, 637 | "livereveal": { 638 | "rise": { 639 | "height": "90%", 640 | "width": "90%" 641 | }, 642 | "scroll": true, 643 | "theme": "beige", 644 | "transition": "zoom" 645 | }, 646 | "colab": { 647 | "provenance": [] 648 | } 649 | }, 650 | "nbformat": 4, 651 | "nbformat_minor": 0 652 | } -------------------------------------------------------------------------------- /AC_04_psychoAcoustics.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": { 6 | "id": "QUS6HvQhIc0P" 7 | }, 8 | "source": [ 9 | "
\n", 10 | " \n", 11 | "
\n", 12 | "\n", 13 | "### Prof. Dr. -Ing. Gerald Schuller
Jupyter Notebook: Renato Profeta\n", 14 | "\n", 15 | "[Applied Media Systems Group](https://www.tu-ilmenau.de/en/applied-media-systems-group/)
\n", 16 | "[Technische Universität Ilmenau](https://www.tu-ilmenau.de/)" 17 | ] 18 | }, 19 | { 20 | "cell_type": "markdown", 21 | "metadata": { 22 | "id": "VLt8qyCYIc0Q" 23 | }, 24 | "source": [ 25 | "# Psychoacoustics, Physiological Effects\n", 26 | "\n", 27 | "##Lecture Video:\n", 28 | "\n", 29 | "https://youtu.be/tz1Rj0xNDAU\n" 30 | ] 31 | }, 32 | { 33 | "cell_type": "code", 34 | "execution_count": null, 35 | "metadata": { 36 | "hide_input": true, 37 | "id": "krGo3N7hIc0Q", 38 | "outputId": "7fc2fe22-6015-4c34-c639-45bc20cdb8e9" 39 | }, 40 | "outputs": [ 41 | { 42 | "data": { 43 | "text/html": [ 44 | "\n" 45 | ], 46 | "text/plain": [ 47 | "" 48 | ] 49 | }, 50 | "metadata": {}, 51 | "output_type": "display_data" 52 | } 53 | ], 54 | "source": [ 55 | "%%html\n", 56 | "" 57 | ] 58 | }, 59 | { 60 | "cell_type": "markdown", 61 | "metadata": { 62 | "id": "fRHMrcw-Ic0R" 63 | }, 64 | "source": [ 65 | "## Block Diagram of a Perceptual Audio Encoder" 66 | ] 67 | }, 68 | { 69 | "cell_type": "markdown", 70 | "metadata": { 71 | "hide_input": false, 72 | "id": "i9b6i7_lIc0R" 73 | }, 74 | "source": [ 75 | "
\n", 76 | " \n", 77 | "
" 78 | ] 79 | }, 80 | { 81 | "cell_type": "markdown", 82 | "metadata": { 83 | "hide_input": false, 84 | "scrolled": true, 85 | "id": "OwPlH6-jIc0R" 86 | }, 87 | "source": [ 88 | "## Structure of the Human Ear" 89 | ] 90 | }, 91 | { 92 | "cell_type": "code", 93 | "execution_count": null, 94 | "metadata": { 95 | "hide_input": true, 96 | "id": "DK1M2NGvIc0R", 97 | "outputId": "5b517beb-7d68-402a-abc9-0b01fa9653d7" 98 | }, 99 | "outputs": [ 100 | { 101 | "data": { 102 | "text/html": [ 103 | "\n" 104 | ], 105 | "text/plain": [ 106 | "" 107 | ] 108 | }, 109 | "metadata": {}, 110 | "output_type": "display_data" 111 | } 112 | ], 113 | "source": [ 114 | "%%html\n", 115 | "" 116 | ] 117 | }, 118 | { 119 | "cell_type": "markdown", 120 | "metadata": { 121 | "hide_input": false, 122 | "id": "oFjgkZkRIc0R" 123 | }, 124 | "source": [ 125 | "
\n", 126 | " \n", 127 | " Quelle: Ars Auditus; http://www.dasp.uni-wuppertal.de/index.php?id=57, 2010\n", 128 | "
\n", 129 | "\n", 130 | " - eardrum – transforms sound wave into vibrations\n", 131 | " - ossicular bones - transfer the mechanical vibrations to the cochlea\n", 132 | " - cochlear structure - induces traveling waves along the length of the basilar membrane\n", 133 | " - neural receptors - connected along the length of the basilar membrane\n", 134 | " - convert these traveling into chemical and electrical signals" 135 | ] 136 | }, 137 | { 138 | "cell_type": "markdown", 139 | "metadata": { 140 | "id": "DW0mVrhiIc0R" 141 | }, 142 | "source": [ 143 | "### Cochlea" 144 | ] 145 | }, 146 | { 147 | "cell_type": "markdown", 148 | "metadata": { 149 | "id": "c_q0JloGIc0R" 150 | }, 151 | "source": [ 152 | "
\n", 153 | " \n", 154 | "
\n", 155 | "\n", 156 | " - cochlea of a 5 month old fetus:\n", 157 | " - spiral-shaped, fluid-filled structure\n", 158 | " - contains the coiled basilar membrane\n", 159 | " - blue arrow $\\rightarrow$ oval window\n", 160 | " - yellos arrow $\\rightarrow$ round window\n", 161 | "\n", 162 | "
\n", 163 | " \n", 164 | "
" 165 | ] 166 | }, 167 | { 168 | "cell_type": "markdown", 169 | "metadata": { 170 | "id": "jWHcIUPJIc0R" 171 | }, 172 | "source": [ 173 | "### Organ of Corti" 174 | ] 175 | }, 176 | { 177 | "cell_type": "markdown", 178 | "metadata": { 179 | "id": "mLYC1LbZIc0S" 180 | }, 181 | "source": [ 182 | "
\n", 183 | " \n", 184 | "
\n", 185 | "\n", 186 | " - organ of corti of a guinea pig\n", 187 | " - white bar = 20 μm\n", 188 | "\n", 189 | " - $\\approx$ 3500 IHC and $\\approx$ 12000 OHC at humans.\n", 190 | " - hair cells convert fluid motion into electrical impulses in auditory nerve." 191 | ] 192 | }, 193 | { 194 | "cell_type": "code", 195 | "execution_count": null, 196 | "metadata": { 197 | "hide_input": true, 198 | "id": "U2LG-K_zIc0S", 199 | "outputId": "f5e4e0aa-9786-4219-cdc5-5ef4f9aac604" 200 | }, 201 | "outputs": [ 202 | { 203 | "name": "stdout", 204 | "output_type": "stream", 205 | "text": [ 206 | "https://acoustics.org/pressroom/httpdocs/146th/mountain.htm\n" 207 | ] 208 | }, 209 | { 210 | "data": { 211 | "text/html": [ 212 | "\n", 213 | " \n", 220 | " " 221 | ], 222 | "text/plain": [ 223 | "" 224 | ] 225 | }, 226 | "execution_count": 3, 227 | "metadata": {}, 228 | "output_type": "execute_result" 229 | } 230 | ], 231 | "source": [ 232 | "from IPython.display import IFrame\n", 233 | "print('https://acoustics.org/pressroom/httpdocs/146th/mountain.htm')\n", 234 | "IFrame('https://acoustics.org/pressroom/httpdocs/146th/mountain.htm', width=900, height=600)\n" 235 | ] 236 | }, 237 | { 238 | "cell_type": "code", 239 | "execution_count": null, 240 | "metadata": { 241 | "hide_input": true, 242 | "id": "dw2fLW6pIc0S", 243 | "outputId": "80b7c79d-9c09-4ce2-e217-de2a633342c1" 244 | }, 245 | "outputs": [ 246 | { 247 | "name": "stdout", 248 | "output_type": "stream", 249 | "text": [ 250 | "http://147.162.36.50/cochlea/cochleapages/overview/history.htm\n" 251 | ] 252 | }, 253 | { 254 | "data": { 255 | "text/html": [ 256 | "\n", 257 | " \n", 264 | " " 265 | ], 266 | "text/plain": [ 267 | "" 268 | ] 269 | }, 270 | "execution_count": 4, 271 | "metadata": {}, 272 | "output_type": "execute_result" 273 | } 274 | ], 275 | "source": [ 276 | "from IPython.display import IFrame\n", 277 | "print('http://147.162.36.50/cochlea/cochleapages/overview/history.htm')\n", 278 | "IFrame('http://147.162.36.50/cochlea/cochleapages/overview/history.htm', width=900, height=600)" 279 | ] 280 | }, 281 | { 282 | "cell_type": "code", 283 | "execution_count": null, 284 | "metadata": { 285 | "hide_input": true, 286 | "id": "3riaab5PIc0S", 287 | "outputId": "718e6420-c35e-403d-86b6-510ec897fc7f" 288 | }, 289 | "outputs": [ 290 | { 291 | "data": { 292 | "text/html": [ 293 | "\n" 294 | ], 295 | "text/plain": [ 296 | "" 297 | ] 298 | }, 299 | "metadata": {}, 300 | "output_type": "display_data" 301 | } 302 | ], 303 | "source": [ 304 | "%%html\n", 305 | "" 306 | ] 307 | }, 308 | { 309 | "cell_type": "markdown", 310 | "metadata": { 311 | "id": "n_1h_ChPIc0S" 312 | }, 313 | "source": [ 314 | "## Preprocessing of Sound in the Peripheral System" 315 | ] 316 | }, 317 | { 318 | "cell_type": "code", 319 | "execution_count": null, 320 | "metadata": { 321 | "hide_input": true, 322 | "id": "9AK714dpIc0S", 323 | "outputId": "f75e27cb-1c3e-4c45-d8a2-8308a8157993" 324 | }, 325 | "outputs": [ 326 | { 327 | "data": { 328 | "text/html": [ 329 | "\n" 330 | ], 331 | "text/plain": [ 332 | "" 333 | ] 334 | }, 335 | "metadata": {}, 336 | "output_type": "display_data" 337 | } 338 | ], 339 | "source": [ 340 | "%%html\n", 341 | "" 342 | ] 343 | }, 344 | { 345 | "cell_type": "markdown", 346 | "metadata": { 347 | "hide_input": false, 348 | "id": "Cv3mjM_GIc0S" 349 | }, 350 | "source": [ 351 | " - frequency selectivity of the basilar membrane\n", 352 | "
\n", 353 | "
\n", 354 | " \n", 355 | " Source: http://cochlearimplanthelp.com/journey/choosing-a-cochlear-implant/electrodes-and-channels/\n", 356 | "
\n", 357 | "
\n", 358 | "
\n", 359 | " - traveling wave envelopes occur in response to an acoustic tone complex containing e.g. sinusoids of 400 Hz, 1600 Hz and 6400 Hz\n", 360 | " - peak responses for each sinusoid are localized along the membrane surface, with each peak occurring at a particular distance from the oval window (cochlear \"input\")\n", 361 | "
\n", 362 | "
\n", 363 | " \n", 364 | " Source: Yuli You \"Audio Coding Theory and Applications\" \n", 365 | "
\n", 366 | "
" 367 | ] 368 | }, 369 | { 370 | "cell_type": "markdown", 371 | "metadata": { 372 | "id": "OLIwPId9Ic0S" 373 | }, 374 | "source": [ 375 | "## Information Processing in the Auditory System" 376 | ] 377 | }, 378 | { 379 | "cell_type": "markdown", 380 | "metadata": { 381 | "hide_input": false, 382 | "id": "jB4NDR95Ic0S" 383 | }, 384 | "source": [ 385 | " - basilar membrane as a filter bank\n", 386 | " - bank of highly overlapping bandpass filters\n", 387 | " - the magnitude responses are asymmetric and nonlinear (level dependent)\n", 388 | " - non-uniform bandwidth, and the bandwidths increase with increasing frequency\n", 389 | "\n", 390 | "
\n", 391 | " \n", 392 | "
\n" 393 | ] 394 | }, 395 | { 396 | "cell_type": "markdown", 397 | "metadata": { 398 | "id": "OW9MRJGYIc0S" 399 | }, 400 | "source": [ 401 | "## Sound Perception" 402 | ] 403 | }, 404 | { 405 | "cell_type": "markdown", 406 | "metadata": { 407 | "hide_input": false, 408 | "id": "Fcgpd_e3Ic0S" 409 | }, 410 | "source": [ 411 | "### Frequency and Level Range of Human Hearing" 412 | ] 413 | }, 414 | { 415 | "cell_type": "code", 416 | "execution_count": null, 417 | "metadata": { 418 | "hide_input": true, 419 | "id": "fbeA2vZOIc0S", 420 | "outputId": "e6d32a78-f9fb-4eed-90c5-5c703010d3ba" 421 | }, 422 | "outputs": [ 423 | { 424 | "data": { 425 | "text/html": [ 426 | "\n" 427 | ], 428 | "text/plain": [ 429 | "" 430 | ] 431 | }, 432 | "metadata": {}, 433 | "output_type": "display_data" 434 | } 435 | ], 436 | "source": [ 437 | "%%html\n", 438 | "" 439 | ] 440 | }, 441 | { 442 | "cell_type": "markdown", 443 | "metadata": { 444 | "hide_input": false, 445 | "id": "H_R4fOFvIc0S" 446 | }, 447 | "source": [ 448 | "
\n", 449 | " \n", 450 | "
\n" 451 | ] 452 | }, 453 | { 454 | "cell_type": "markdown", 455 | "metadata": { 456 | "id": "VGJyJeXnIc0S" 457 | }, 458 | "source": [ 459 | "### Threshold in Quiet or the Absolute Threshold" 460 | ] 461 | }, 462 | { 463 | "cell_type": "markdown", 464 | "metadata": { 465 | "id": "YGFg-MgzIc0S" 466 | }, 467 | "source": [ 468 | " - Hearing threshold of 100 persons with normal hearing for\n", 469 | " sine tones (50% curve is the median).\n", 470 | "
\n", 471 | "
\n", 472 | " \n", 473 | "
\n", 474 | "
\n", 475 | "\n", 476 | " - Approximations:\n", 477 | "\n", 478 | " $$\\large\n", 479 | " \\dfrac{L_{T_q}}{dB} = 3.64 \\left( \\frac{f}{kHz} \\right)^{-0.8} - \\exp \\left( -0.6\\left(\\dfrac{f}{kHz}-3.3\\right)^2\\right)\n", 480 | " + 10^{-3}\\left(\\dfrac{f}{kHz}\\right)^4\n", 481 | " $$\n", 482 | "
\n", 483 | "
\n", 484 | " \n", 485 | "
\n", 486 | "\n" 487 | ] 488 | }, 489 | { 490 | "cell_type": "markdown", 491 | "metadata": { 492 | "id": "wRIpMn7wIc0S" 493 | }, 494 | "source": [ 495 | "### Hearing Threshold and Age" 496 | ] 497 | }, 498 | { 499 | "cell_type": "markdown", 500 | "metadata": { 501 | "id": "Nn1wjHwcIc0T" 502 | }, 503 | "source": [ 504 | " - Average pure-tone audiograms in dB Hearing Loss in (a) men and (b) women grouped by their age in decades (the parameter is age group in years). The extended high-frequency range is zoomed for clarity.\n", 505 | "\n", 506 | "
\n", 507 | "
\n", 508 | " \n", 509 | "
\n", 510 | "\n", 511 | "\n", 512 | " - Pure-tone threshold standard deviation of all participants as a function of frequency (the parameter is age in 10-year groups).\n", 513 | "\n", 514 | "
\n", 515 | "
\n", 516 | " \n", 517 | "
\n", 518 | "\n", 519 | "\n" 520 | ] 521 | }, 522 | { 523 | "cell_type": "code", 524 | "execution_count": null, 525 | "metadata": { 526 | "hide_input": true, 527 | "scrolled": false, 528 | "id": "Bdis6LDsIc0T", 529 | "outputId": "972cb69a-6847-45f7-8115-2e90238e127c" 530 | }, 531 | "outputs": [ 532 | { 533 | "name": "stdout", 534 | "output_type": "stream", 535 | "text": [ 536 | "http://newt.phys.unsw.edu.au/jw/hearing.html\n" 537 | ] 538 | }, 539 | { 540 | "data": { 541 | "text/html": [ 542 | "\n", 543 | " \n", 550 | " " 551 | ], 552 | "text/plain": [ 553 | "" 554 | ] 555 | }, 556 | "execution_count": 6, 557 | "metadata": {}, 558 | "output_type": "execute_result" 559 | } 560 | ], 561 | "source": [ 562 | "from IPython.display import IFrame\n", 563 | "print('http://newt.phys.unsw.edu.au/jw/hearing.html')\n", 564 | "IFrame('http://newt.phys.unsw.edu.au/jw/hearing.html', width=900, height=600)" 565 | ] 566 | }, 567 | { 568 | "cell_type": "markdown", 569 | "metadata": { 570 | "id": "g-MgzwIwIc0T" 571 | }, 572 | "source": [ 573 | "## Loudness" 574 | ] 575 | }, 576 | { 577 | "cell_type": "code", 578 | "execution_count": null, 579 | "metadata": { 580 | "hide_input": true, 581 | "id": "0ZwZvhGWIc0T", 582 | "outputId": "1686c450-8b69-45f4-915e-fc707b7b8d2d" 583 | }, 584 | "outputs": [ 585 | { 586 | "data": { 587 | "text/html": [ 588 | "\n" 589 | ], 590 | "text/plain": [ 591 | "" 592 | ] 593 | }, 594 | "metadata": {}, 595 | "output_type": "display_data" 596 | } 597 | ], 598 | "source": [ 599 | "%%html\n", 600 | "" 601 | ] 602 | }, 603 | { 604 | "cell_type": "markdown", 605 | "metadata": { 606 | "id": "IPU0WePeIc0T" 607 | }, 608 | "source": [ 609 | " - Loudness LeveL:\n", 610 | " - **Loudness N:** psychological concept to describe the magnitude of an auditory sensation, the loudness of a sound (measured in 'sone')\n", 611 | " - **loudness level $L_N$** of a sound is measured in **'phon'**\n", 612 | " - **$L_N$** of a sound is the sound pressure of a 1 kHz tone which is as loud as the sound\n", 613 | " - 1 sone is equivalent to 40 phons, which is defined as the loudness level of a pure 1 kHz tone at $L_N$ 40 dB SPL.\n", 614 | " \n", 615 | " \n", 616 | " - Equal-Loudness Level Contours:\n", 617 | " - Equal loudness contours of pure tone sin a free sound field.\n", 618 | " - The parameter is expressed in **loudness level**, $L_N$, and loudness, N. Can be observed:\n", 619 | " - The sensitivity of the human ear -a function of frequency\n", 620 | " - The most sensitive to sounds around 2–4 kHz\n", 621 | " \n", 622 | "
\n", 623 | "
\n", 624 | " \n", 625 | "
\n", 626 | "\n", 627 | " - Loudness Scale:\n", 628 | " - aim: double the number of units on this scale means magnitude of sensation is doubled\n", 629 | "
\n", 630 | " $\\rightarrow$ relation between loudness level $L_N$ and the loudness N (rule of thumb):\n", 631 | " $$2 \\cdot N \\hat{=} L_N + 10 phon $$\n", 632 | " - one potential experiment:\n", 633 | "
\n", 634 | " listen to a sound with $L_{N_1}$ 1and then adjust the same sound until
\n", 635 | " $N_2 = 2 \\cdot N_1$, then compare $L_{N_1}$ and $L_{N_2}$\n", 636 | " \n", 637 | "
\n", 638 | "\n", 639 | "
\n", 640 | " " 641 | ] 642 | }, 643 | { 644 | "cell_type": "markdown", 645 | "metadata": { 646 | "id": "pUTP_mjHIc0T" 647 | }, 648 | "source": [ 649 | "## Critical Bands" 650 | ] 651 | }, 652 | { 653 | "cell_type": "markdown", 654 | "metadata": { 655 | "id": "44I8yBZgIc0T" 656 | }, 657 | "source": [ 658 | "### Frequency Grouping in Human Hearing" 659 | ] 660 | }, 661 | { 662 | "cell_type": "code", 663 | "execution_count": null, 664 | "metadata": { 665 | "hide_input": true, 666 | "id": "2baXU1qjIc0T", 667 | "outputId": "3cea42ac-162f-4700-d985-559e0bd00b88" 668 | }, 669 | "outputs": [ 670 | { 671 | "data": { 672 | "text/html": [ 673 | "\n" 674 | ], 675 | "text/plain": [ 676 | "" 677 | ] 678 | }, 679 | "metadata": {}, 680 | "output_type": "display_data" 681 | } 682 | ], 683 | "source": [ 684 | "%%html\n", 685 | "" 686 | ] 687 | }, 688 | { 689 | "cell_type": "markdown", 690 | "metadata": { 691 | "id": "ran2uei9Ic0U" 692 | }, 693 | "source": [ 694 | " - Different interpretations that produce the same segmentation:\n", 695 | " - Constant distance in the Cochlea\n", 696 | " - By using tones under the threshold in quiet, their intensity add up in a critical band and are now audible\n", 697 | " - Tones in a critical band above the threshold in quiet: their energy adds up\n", 698 | " - Formula for the width of the critical bands:\n", 699 | " - for frequencies < 500 Hz: Constant 100Hz width\n", 700 | " - for frequencies > 500 Hz: 0.2*frequency\n", 701 | " \n", 702 | "
\n", 703 | "\n", 704 | " : Zwicker, Fastl “Psychoacoustics Facts and Models”, p.159 \n", 705 | "
\n", 706 | " \n", 707 | " - Critical bandwidth as a function of frequency, that quantifies the cochlear filter passbands.\n", 708 | " - Approximations for low and high frequency ranges are indicated by broken lines." 709 | ] 710 | }, 711 | { 712 | "cell_type": "markdown", 713 | "metadata": { 714 | "hide_input": false, 715 | "id": "XR1NgPqDIc0U" 716 | }, 717 | "source": [ 718 | "#### Excursus - Critical Bands and Loudness" 719 | ] 720 | }, 721 | { 722 | "cell_type": "markdown", 723 | "metadata": { 724 | "id": "Wnkun5QNIc0U" 725 | }, 726 | "source": [ 727 | " - Spectral effects -influence of bandwidth:\n", 728 | " - bandwidth of the signals plays an important role\n", 729 | " - sound level also influence loudness level\n", 730 | " - $\\rightarrow$ total sound intensity (SPL) have to be constant to measure loudness as function of bandwidth\n", 731 | " - $\\rightarrow$ critical bandwidth\n", 732 | " \n", 733 | "
\n", 734 | "\n", 735 | "
" 736 | ] 737 | }, 738 | { 739 | "cell_type": "markdown", 740 | "metadata": { 741 | "hide_input": false, 742 | "id": "1GlKuCjoIc0U" 743 | }, 744 | "source": [ 745 | "### Bark Scale" 746 | ] 747 | }, 748 | { 749 | "cell_type": "markdown", 750 | "metadata": { 751 | "id": "Vd7KjZEwIc0X" 752 | }, 753 | "source": [ 754 | " - Critical-band concept used in many models and hypothesis
\n", 755 | " $\\rightarrow$ unit was defined leading to so-called critical-band rate scale\n", 756 | " - scale ranging from 0 –24, unit \"Bark\"\n", 757 | " - relation between z and f is important for understanding many characteristics of human ear\n", 758 | "\n", 759 | "
\n", 760 | "\n", 761 | "
\n", 762 | "\n", 763 | " - Critical-band concept used in many models and hypotheses
\n", 764 | " $\\rightarrow$ unit was defined leading to so-called critical-band rate scale\n", 765 | " - scale ranging from 0 –24, unit \"Bark\"(after Zwicker)\n", 766 | " - One Bark corresponds to one critical band\n", 767 | " - Attempt to approximate critical bands with formulas:\n", 768 | "\n", 769 | "Critical Bandrate *z*:\n", 770 | "\n", 771 | "$$\\large\n", 772 | "\\dfrac{z}{Bark} = 13 \\arctan \\left( 0.76 \\cdot \\dfrac{f}{kHz} \\right) + 3.5 \\cdot \\arctan \\left( \\dfrac{f}{7.5kHz}\\right)^2$$\n", 773 | "\n", 774 | "Critical Bandwidth:\n", 775 | "\n", 776 | "$$\\large\n", 777 | "\\Delta f_b = 25 + 75 \\left( 1 + 1.4 \\left( \\dfrac{f}{kHz} \\right)^2 \\right)^{0.69} $$" 778 | ] 779 | }, 780 | { 781 | "cell_type": "markdown", 782 | "metadata": { 783 | "hide_input": false, 784 | "id": "1_Ttjj1iIc0X" 785 | }, 786 | "source": [ 787 | "## Masking" 788 | ] 789 | }, 790 | { 791 | "cell_type": "markdown", 792 | "metadata": { 793 | "id": "8qT9jd63Ic0X" 794 | }, 795 | "source": [ 796 | " - data compression:\n", 797 | " - exploitation of perception in critical bands with reference to the threshold in quiet is not enough\n", 798 | "\n", 799 | "\n", 800 | " - Basic principle:\n", 801 | " - a **test signal**, called a **maskee** is placed at the center frequency of the critical bandwidth.\n", 802 | " - one **masking signal**, called **masker** (equal power and distance from maskee).\n", 803 | " - If the $P_{maskee}$ is weak relative to the total power of the maskers $\\rightarrow$ the test signal is not audible $\\rightarrow$ test signal is masked\n", 804 | " - In order for the test signal to become audible, its power has to be raised to above a certain level – **masking threshold**.\n", 805 | " " 806 | ] 807 | }, 808 | { 809 | "cell_type": "code", 810 | "execution_count": null, 811 | "metadata": { 812 | "hide_input": true, 813 | "id": "rgZDxq3QIc0X", 814 | "outputId": "1f026406-acc4-47e5-cf5e-e62d433633bd" 815 | }, 816 | "outputs": [ 817 | { 818 | "data": { 819 | "text/html": [ 820 | "\n" 821 | ], 822 | "text/plain": [ 823 | "" 824 | ] 825 | }, 826 | "metadata": {}, 827 | "output_type": "display_data" 828 | } 829 | ], 830 | "source": [ 831 | "%%html\n", 832 | "" 833 | ] 834 | }, 835 | { 836 | "cell_type": "markdown", 837 | "metadata": { 838 | "hide_input": false, 839 | "id": "Iq0qNMrgIc0X" 840 | }, 841 | "source": [ 842 | "### Masking of Pure Tones by Noise -Broad-Band Noise" 843 | ] 844 | }, 845 | { 846 | "cell_type": "markdown", 847 | "metadata": { 848 | "hide_input": false, 849 | "id": "qOjDdpqdIc0X" 850 | }, 851 | "source": [ 852 | " - Broad-band noise:\n", 853 | " - white noise from 20 Hz 20 - 20kHz.\n", 854 | "\n", 855 | "
\n", 856 | "
\n", 857 | " \n", 858 | " Zwicker, Fastl \"Psychoacoustics - Facts and Models\", 2nd Edition, 1999. \n", 859 | "
\n", 860 | "
\n", 861 | "\n", 862 | "\n", 863 | " - masking threshold for pure tones masked by broad band noise of different levels.\n", 864 | " - uniform masking noise (UMN) by equalization of the 10 dB per decade slope.\n" 865 | ] 866 | }, 867 | { 868 | "cell_type": "markdown", 869 | "metadata": { 870 | "id": "y7uzxBCfIc0X" 871 | }, 872 | "source": [ 873 | "### Masking of Pure Tones by Noise -Narrow-Band Noise" 874 | ] 875 | }, 876 | { 877 | "cell_type": "code", 878 | "execution_count": null, 879 | "metadata": { 880 | "hide_input": true, 881 | "id": "lkyt4N_BIc0X", 882 | "outputId": "e6e89ec3-60f5-4f5a-9bbb-be9ebf82358b" 883 | }, 884 | "outputs": [ 885 | { 886 | "data": { 887 | "text/html": [ 888 | "\n" 889 | ], 890 | "text/plain": [ 891 | "" 892 | ] 893 | }, 894 | "metadata": {}, 895 | "output_type": "display_data" 896 | } 897 | ], 898 | "source": [ 899 | "%%html\n", 900 | "" 901 | ] 902 | }, 903 | { 904 | "cell_type": "markdown", 905 | "metadata": { 906 | "hide_input": false, 907 | "id": "7JeEJ2ajIc0X" 908 | }, 909 | "source": [ 910 | " - narrow-band noise:\n", 911 | " - noise with a bandwidth equal or smaller than critical bandwidth\n", 912 | " \n", 913 | "
\n", 914 | "
\n", 915 | " \n", 916 | " Zwicker, Fastl \"Psychoacoustics - Facts and Models\", 2nd Edition, 1999. \n", 917 | "
\n", 918 | "
\n", 919 | " \n", 920 | " \n", 921 | " - threshold of pure tones masked by narrow-band noise for different centre frequencies.\n", 922 | " - difference between maximum of masked threshold and test tone level.\n", 923 | "\n", 924 | "
\n", 925 | "
\n", 926 | " \n", 927 | "
\n", 928 | "
\n", 929 | "\n", 930 | " - dependence of masked threshold on level of narrow-band noise.\n", 931 | " - dips at higher levels $\\rightarrow$ nonlinear effects (difference noise caused by interactions between test tone and noise) " 932 | ] 933 | }, 934 | { 935 | "cell_type": "markdown", 936 | "metadata": { 937 | "scrolled": true, 938 | "id": "3X-LvA9kIc0X" 939 | }, 940 | "source": [ 941 | "### Masking of Pure Tones by Low-Pass or High-Pass Noise" 942 | ] 943 | }, 944 | { 945 | "cell_type": "code", 946 | "execution_count": null, 947 | "metadata": { 948 | "hide_input": true, 949 | "id": "fOxdmuObIc0X", 950 | "outputId": "3e3d89ca-7b98-44de-f0de-127964f00941" 951 | }, 952 | "outputs": [ 953 | { 954 | "data": { 955 | "text/html": [ 956 | "\n" 957 | ], 958 | "text/plain": [ 959 | "" 960 | ] 961 | }, 962 | "metadata": {}, 963 | "output_type": "display_data" 964 | } 965 | ], 966 | "source": [ 967 | "%%html\n", 968 | "" 969 | ] 970 | }, 971 | { 972 | "cell_type": "markdown", 973 | "metadata": { 974 | "scrolled": false, 975 | "id": "lki9wVQFIc0X" 976 | }, 977 | "source": [ 978 | "
\n", 979 | " \n", 980 | "
" 981 | ] 982 | }, 983 | { 984 | "cell_type": "markdown", 985 | "metadata": { 986 | "id": "xsPMGHv7Ic0X" 987 | }, 988 | "source": [ 989 | "### Masking of Pure Tones by Pure Tone" 990 | ] 991 | }, 992 | { 993 | "cell_type": "code", 994 | "execution_count": null, 995 | "metadata": { 996 | "hide_input": true, 997 | "id": "QPAMkou7Ic0X", 998 | "outputId": "ecd61adf-d01e-4ffa-9935-52f89e458b51" 999 | }, 1000 | "outputs": [ 1001 | { 1002 | "data": { 1003 | "text/html": [ 1004 | "\n" 1005 | ], 1006 | "text/plain": [ 1007 | "" 1008 | ] 1009 | }, 1010 | "metadata": {}, 1011 | "output_type": "display_data" 1012 | } 1013 | ], 1014 | "source": [ 1015 | "%%html\n", 1016 | "" 1017 | ] 1018 | }, 1019 | { 1020 | "cell_type": "markdown", 1021 | "metadata": { 1022 | "id": "_3ha4EGxIc0X" 1023 | }, 1024 | "source": [ 1025 | " - pure tone:\n", 1026 | " - single frequency\n", 1027 | " \n", 1028 | "
\n", 1029 | "
\n", 1030 | " \n", 1031 | "
\n", 1032 | "
\n", 1033 | "\n", 1034 | " - 1 kHz masking tone with level of 80 dB.\n", 1035 | " - threshold for 'detection of anything'\n", 1036 | "\n", 1037 | "\n", 1038 | " - Difficulties:\n", 1039 | " - beats (hatching)\n", 1040 | " - masker and difference tone (stippling)" 1041 | ] 1042 | }, 1043 | { 1044 | "cell_type": "markdown", 1045 | "metadata": { 1046 | "id": "4J2eM7KCIc0X" 1047 | }, 1048 | "source": [ 1049 | "### Masking of Pure Tone by Complex Tones" 1050 | ] 1051 | }, 1052 | { 1053 | "cell_type": "code", 1054 | "execution_count": null, 1055 | "metadata": { 1056 | "hide_input": true, 1057 | "id": "LgIalpVrIc0Y", 1058 | "outputId": "a151be3a-e337-412e-f28c-73ed064287fb" 1059 | }, 1060 | "outputs": [ 1061 | { 1062 | "data": { 1063 | "text/html": [ 1064 | "\n" 1065 | ], 1066 | "text/plain": [ 1067 | "" 1068 | ] 1069 | }, 1070 | "metadata": {}, 1071 | "output_type": "display_data" 1072 | } 1073 | ], 1074 | "source": [ 1075 | "%%html\n", 1076 | "" 1077 | ] 1078 | }, 1079 | { 1080 | "cell_type": "markdown", 1081 | "metadata": { 1082 | "id": "phAgTafgIc0Y" 1083 | }, 1084 | "source": [ 1085 | " - complex tone:\n", 1086 | " - fundamental tone with its harmonics\n", 1087 | " \n", 1088 | "
\n", 1089 | "
\n", 1090 | " \n", 1091 | " Zwicker, Fastl \"Psychoacoustics - Facts and Models\", 2nd Edition, 1999. \n", 1092 | "
\n", 1093 | "
\n", 1094 | "\n", 1095 | "\n", 1096 | " - threshold of pure tones masked by a complex tone with 200 Hz fundamental frequency and nine harmonics.\n" 1097 | ] 1098 | }, 1099 | { 1100 | "cell_type": "markdown", 1101 | "metadata": { 1102 | "id": "nmnpfvyKIc0Y" 1103 | }, 1104 | "source": [ 1105 | "### Tonality" 1106 | ] 1107 | }, 1108 | { 1109 | "cell_type": "code", 1110 | "execution_count": null, 1111 | "metadata": { 1112 | "hide_input": true, 1113 | "id": "Sg4cfq6XIc0Y", 1114 | "outputId": "c7ed3ee5-475e-4a0b-ec20-cfc39b06d794" 1115 | }, 1116 | "outputs": [ 1117 | { 1118 | "data": { 1119 | "text/html": [ 1120 | "\n" 1121 | ], 1122 | "text/plain": [ 1123 | "" 1124 | ] 1125 | }, 1126 | "metadata": {}, 1127 | "output_type": "display_data" 1128 | } 1129 | ], 1130 | "source": [ 1131 | "%%html\n", 1132 | "" 1133 | ] 1134 | }, 1135 | { 1136 | "cell_type": "markdown", 1137 | "metadata": { 1138 | "id": "kmoOb850Ic0Y" 1139 | }, 1140 | "source": [ 1141 | " - Tonality index $\\alpha$:\n", 1142 | " - noisy signal: $\\alpha =0$\n", 1143 | " - tonal signal: $\\alpha =1$\n", 1144 | " - System theory:\n", 1145 | " - Sharp spectral lines = Signal is periodic = Signal is predictable.\n", 1146 | " - Approximation: If the signal is predictable then it should be periodic.\n", 1147 | " - Therefore we can use prediction to approximate if a signal is tonal (by periodicity).\n", 1148 | " - Example:\n", 1149 | "
\n", 1150 | " \n", 1151 | "
\n", 1152 | "
\n" 1153 | ] 1154 | }, 1155 | { 1156 | "cell_type": "markdown", 1157 | "metadata": { 1158 | "id": "XNS-2zhVIc0Y" 1159 | }, 1160 | "source": [ 1161 | "### Masking - Spreading Function" 1162 | ] 1163 | }, 1164 | { 1165 | "cell_type": "code", 1166 | "execution_count": null, 1167 | "metadata": { 1168 | "hide_input": true, 1169 | "id": "5HnVi5veIc0Y", 1170 | "outputId": "7585da84-96e4-40b6-d249-32606a86e4a0" 1171 | }, 1172 | "outputs": [ 1173 | { 1174 | "data": { 1175 | "text/html": [ 1176 | "\n" 1177 | ], 1178 | "text/plain": [ 1179 | "" 1180 | ] 1181 | }, 1182 | "metadata": {}, 1183 | "output_type": "display_data" 1184 | } 1185 | ], 1186 | "source": [ 1187 | "%%html\n", 1188 | "" 1189 | ] 1190 | }, 1191 | { 1192 | "cell_type": "markdown", 1193 | "metadata": { 1194 | "id": "NYMYDB2sIc0Y" 1195 | }, 1196 | "source": [ 1197 | "
\n", 1198 | "
\n", 1199 | " \n", 1200 | "
\n", 1201 | "
" 1202 | ] 1203 | }, 1204 | { 1205 | "cell_type": "markdown", 1206 | "metadata": { 1207 | "id": "BEkiRlpPIc0Y" 1208 | }, 1209 | "source": [ 1210 | "### Calculating the Masking Threshold" 1211 | ] 1212 | }, 1213 | { 1214 | "cell_type": "markdown", 1215 | "metadata": { 1216 | "id": "GUf7nnD5Ic0Y" 1217 | }, 1218 | "source": [ 1219 | " - Comparison of the signal level to Masking Threshold:\n", 1220 | "\n", 1221 | "$$\\large\n", 1222 | "\\dfrac{O_f(i)}{dB} = \\alpha (14.5+i) + (1+\\alpha)\\cdot \\alpha_v$$\n", 1223 | "\n", 1224 | "$$\\large\n", 1225 | "\\alpha_v = -2 - 2.05 \\arctan \\left( \\dfrac{f}{4kHz} \\right) - 0.75 \\arctan \\left( \\dfrac{f^2}{2.56 kHz^2} \\right)$$\n", 1226 | "\n", 1227 | "where $\\alpha \\dots$ Tonality index, $\\alpha_v \\dots$ Noise Coefficient\n", 1228 | "\n", 1229 | " - Approxitamtion:\n", 1230 | "\n", 1231 | "$$\\large\n", 1232 | "\\dfrac{O_f(i)}{dB} = \\alpha(14.5+i) + (1 - \\alpha)\\cdot 5.5 $$\n", 1233 | "\n", 1234 | " - Simultaneous Masking Threshold\n", 1235 | "\n", 1236 | " $$\\large\n", 1237 | " T(f) = 10^{\\frac{L_s(f)- O_f(i)}{10}}$$\n", 1238 | "\n", 1239 | " where $L_s(f) \\dots$ Sound Pressure Level, $O_f{i} \\dots$ Distance to Masking Threshold" 1240 | ] 1241 | }, 1242 | { 1243 | "cell_type": "markdown", 1244 | "metadata": { 1245 | "id": "rOTB8x2iIc0Y" 1246 | }, 1247 | "source": [ 1248 | "### In-Band Making" 1249 | ] 1250 | }, 1251 | { 1252 | "cell_type": "code", 1253 | "execution_count": null, 1254 | "metadata": { 1255 | "hide_input": true, 1256 | "id": "k8dtMTupIc0Y", 1257 | "outputId": "98201bbb-59a4-4a64-bfbb-522559a2d819" 1258 | }, 1259 | "outputs": [ 1260 | { 1261 | "data": { 1262 | "text/html": [ 1263 | "\n" 1264 | ], 1265 | "text/plain": [ 1266 | "" 1267 | ] 1268 | }, 1269 | "metadata": {}, 1270 | "output_type": "display_data" 1271 | } 1272 | ], 1273 | "source": [ 1274 | "%%html\n", 1275 | "" 1276 | ] 1277 | }, 1278 | { 1279 | "cell_type": "markdown", 1280 | "metadata": { 1281 | "id": "JtTQrarxIc0Z" 1282 | }, 1283 | "source": [ 1284 | "
\n", 1285 | " \n", 1286 | " Zolzer, \"Digital Audio Signal Processig\" \n", 1287 | "
\n", 1288 | "\n" 1289 | ] 1290 | }, 1291 | { 1292 | "cell_type": "markdown", 1293 | "metadata": { 1294 | "id": "sPW8i47zIc0Z" 1295 | }, 1296 | "source": [ 1297 | "### Masking Neighboring Bands" 1298 | ] 1299 | }, 1300 | { 1301 | "cell_type": "markdown", 1302 | "metadata": { 1303 | "id": "6V1qKtbKIc0Z" 1304 | }, 1305 | "source": [ 1306 | " - spread of masking due to the non-linearity of auditory filters\n", 1307 | " - resulting masking threshold = sum of power of neighbouring spreading functions-\n", 1308 | " - here: value at intersection of neighbouringspreading functions taken\n", 1309 | "
\n", 1310 | "
\n", 1311 | " \n", 1312 | " Zolzer, \"Digital Audio Signal Processig\" \n", 1313 | "
\n", 1314 | "
\n", 1315 | "\n", 1316 | "\n", 1317 | "$$\\large\n", 1318 | "S_1 = 27 \\cdot \\dfrac{dB}{Bark}$$\n", 1319 | "\n", 1320 | "$$\\large\n", 1321 | "S_2 = 24 + 0.23 \\left( \\dfrac{f}{kHz} \\right)^{-1} - 0.2 \\cdot \\dfrac{L_s(f)}{dB} \\dfrac{dB}{Bark}$$" 1322 | ] 1323 | }, 1324 | { 1325 | "cell_type": "markdown", 1326 | "metadata": { 1327 | "id": "HLKDi0fmIc0Z" 1328 | }, 1329 | "source": [ 1330 | "### Temporal Masking Effects" 1331 | ] 1332 | }, 1333 | { 1334 | "cell_type": "code", 1335 | "execution_count": null, 1336 | "metadata": { 1337 | "hide_input": true, 1338 | "id": "Nsf894d2Ic0Z", 1339 | "outputId": "eefb566e-78d9-4bf0-c487-deab6bac6a91" 1340 | }, 1341 | "outputs": [ 1342 | { 1343 | "data": { 1344 | "text/html": [ 1345 | "\n" 1346 | ], 1347 | "text/plain": [ 1348 | "" 1349 | ] 1350 | }, 1351 | "metadata": {}, 1352 | "output_type": "display_data" 1353 | } 1354 | ], 1355 | "source": [ 1356 | "%%html\n", 1357 | "" 1358 | ] 1359 | }, 1360 | { 1361 | "cell_type": "markdown", 1362 | "metadata": { 1363 | "id": "sTWvui3SIc0Z" 1364 | }, 1365 | "source": [ 1366 | " - Post-Masking: corresponds to decay in the effect of the masker $\\rightarrow$ expected\n", 1367 | " - Pre-Masking: appears during time before masker is switched on:\n", 1368 | " - Quick build-up time for loud maskers\n", 1369 | " - Slower build-up time for faint test sounds\n", 1370 | " - Frequency resolution $\\leftrightarrow$ Blurringing time\n", 1371 | " - Frequency resolution in the ear $\\rightarrow$ Masking in time\n", 1372 | " - Because of in-ear fast processing between quiet to loud signals, we get Pre-Echoes\n", 1373 | " - Pre-Masking: 1-5 ms\n", 1374 | " - Post-Masking: ~100ms\n", 1375 | " \n", 1376 | "
\n", 1377 | " \n", 1378 | " Zwicker. Fastl \"Psychoacoustics Facts and Models\" \n", 1379 | "
\n", 1380 | " " 1381 | ] 1382 | }, 1383 | { 1384 | "cell_type": "code", 1385 | "execution_count": null, 1386 | "metadata": { 1387 | "id": "rxKc0xheIc0Z" 1388 | }, 1389 | "outputs": [], 1390 | "source": [] 1391 | } 1392 | ], 1393 | "metadata": { 1394 | "kernelspec": { 1395 | "display_name": "Python 3", 1396 | "language": "python", 1397 | "name": "python3" 1398 | }, 1399 | "language_info": { 1400 | "codemirror_mode": { 1401 | "name": "ipython", 1402 | "version": 3 1403 | }, 1404 | "file_extension": ".py", 1405 | "mimetype": "text/x-python", 1406 | "name": "python", 1407 | "nbconvert_exporter": "python", 1408 | "pygments_lexer": "ipython3", 1409 | "version": "3.7.8" 1410 | }, 1411 | "livereveal": { 1412 | "rise": { 1413 | "height": "90%", 1414 | "width": "90%" 1415 | }, 1416 | "scroll": true, 1417 | "theme": "beige", 1418 | "transition": "zoom" 1419 | }, 1420 | "colab": { 1421 | "provenance": [] 1422 | } 1423 | }, 1424 | "nbformat": 4, 1425 | "nbformat_minor": 0 1426 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Audio Coding Video Tutorials and Python Notebooks 2 |

3 | 4 |

5 | 6 | #### Prof. Dr. -Ing. Gerald Schuller
Jupyter Notebooks and Videos: Renato Profeta 7 | [Applied Media Systems Group](https://www.tu-ilmenau.de/en/applied-media-systems-group/)
8 | [Technische Universität Ilmenau](https://www.tu-ilmenau.de/) 9 | 10 | # Content 11 | ## 01 Basics of Multirate Signal Processing:
[![NBViewer](https://badgen.net/badge/Launch/on%20NBViewer/blue?icon=terminal)](https://nbviewer.jupyter.org/github/GuitarsAI/AudioCodingTutorials/blob/master/AC_01_Basics_Multirate.ipynb)[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/GuitarsAI/AudioCodingTutorials/master?filepath=AC_01_Basics_Multirate.ipynb)[![Google Colab](https://badgen.net/badge/Launch/on%20Google%20Colab/black?icon=terminal)](https://colab.research.google.com/github/TUIlmenauAMS/AudioCoding_Tutorials/blob/master/AC_01_Basics_Multirate.ipynb)[![Youtube](https://badgen.net/badge/Launch/on%20YouTube/red?icon=terminal)](https://youtu.be/Tp96ICZ_pMg) 12 | 13 | - Sampling 14 | - Sampling a Discrete Time Signal 15 | - Downsampling 16 | - Upsampling 17 | - Real-Time Python Example: Sampling 18 | - Effects in the z-Domain 19 | - Modulation 20 | - Real-Time Python Example: Modulating a Speech Signal 21 | - Mid-rise and Mid-tread quantization 22 | - Real-Time Python Example: Quantization 23 | 24 | ## 02 Filter Banks I :
[![NBViewer](https://badgen.net/badge/Launch/on%20NBViewer/blue?icon=terminal)](https://nbviewer.jupyter.org/github/GuitarsAI/AudioCodingTutorials/blob/master/AC_02_FilterBanks1.ipynb)[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/GuitarsAI/AudioCodingTutorials/master?filepath=AC_02_FilterBanks1.ipynb)[![Google Colab](https://badgen.net/badge/Launch/on%20Google%20Colab/black?icon=terminal)](https://colab.research.google.com/github/TUIlmenauAMS/AudioCoding_Tutorials/blob/master/AC_02_FilterBanks1.ipynb)[![Youtube](https://badgen.net/badge/Launch/on%20YouTube/red?icon=terminal)](https://youtu.be/Zk8Oum6LtUc) 25 | 26 | - Filter Banks 27 | - Downsampling 28 | - Upsampling 29 | - Filter Bank Structure 30 | - Perfect Reconstruction 31 | - Analysis Filter Bank 32 | - Synthesis Filter Bank 33 | - Polyphase 34 | - Transforms as Filter Banks 35 | - Real-Time Python Examples 36 | 37 | ## 03 Filter Banks II :
[![NBViewer](https://badgen.net/badge/Launch/on%20NBViewer/blue?icon=terminal)](https://nbviewer.jupyter.org/github/GuitarsAI/AudioCodingTutorials/blob/master/AC_03_FilterBanks2.ipynb)[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/GuitarsAI/AudioCodingTutorials/master?filepath=AC_03_FilterBanks2.ipynb)[![Google Colab](https://badgen.net/badge/Launch/on%20Google%20Colab/black?icon=terminal)](https://colab.research.google.com/github/TUIlmenauAMS/AudioCoding_Tutorials/blob/master/AC_03_FilterBanks2.ipynb)[![Youtube](https://badgen.net/badge/Launch/on%20YouTube/red?icon=terminal)](https://youtu.be/f1ykTtvWkwM) 38 | 39 | - Modulated Filter Banks - Extending the DCT 40 | - Modulated Filter Banks 41 | - Frequency Shifts 42 | - The Window Function 43 | - Fast Implementation: Analysis Polyphase Matrix 44 | - The MDCT Filter Bank 45 | - Graphical Interpretation of Analysis Matrix 𝐹𝑎 46 | - MDCT, Perfect Reconstruction 47 | - MDCT Filter Banks, Sine Window 48 | - Sine-Window Frequency Response 49 | - MDCT, Advantages 50 | - MDCT Filter Banks, Impulse Responses 51 | - MDCT Filter Banks, Frequency Responses 52 | - MDCT: Python Examples 53 | - MDCT Fast Implementation 54 | - Extending the Length of the MDCT 55 | - Zero-Delay Matrix 56 | - Maximum-Delay Matrix 57 | - Design Method 58 | - Real-Time Example 59 | 60 | ## 03b Filter Banks III :
[![NBViewer](https://badgen.net/badge/Launch/on%20NBViewer/blue?icon=terminal)](https://nbviewer.jupyter.org/github/GuitarsAI/AudioCodingTutorials/blob/master/AC_03b_FilterBanks3.ipynb)[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/GuitarsAI/AudioCodingTutorials/master?filepath=AC_03b_FilterBanks3.ipynb)[![Google Colab](https://badgen.net/badge/Launch/on%20Google%20Colab/black?icon=terminal)](https://colab.research.google.com/github/TUIlmenauAMS/AudioCoding_Tutorials/blob/master/AC_03b_FilterBanks3.ipynb)[![Youtube](https://badgen.net/badge/Launch/on%20YouTube/red?icon=terminal)](https://youtu.be/eLHqX6qZcX4) 61 | 62 | - Block Switching 63 | - Wavelets, QMF (Quadradutre Mirror Filter) Filter Banks 64 | - QMF (Quadrature Mirror Filter) 65 | - CQMF: Conjugate QMF 66 | - Pseudo-QMF (PQMF) 67 | - PQMF used in MPEG4 68 | 69 | ## 04 Psychoacoustics :
[![NBViewer](https://badgen.net/badge/Launch/on%20NBViewer/blue?icon=terminal)](https://nbviewer.jupyter.org/github/GuitarsAI/AudioCodingTutorials/blob/master/AC_04_psychoAcoustics.ipynb)[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/GuitarsAI/AudioCodingTutorials/master?filepath=AC_04_psychoAcoustics.ipynb)[![Google Colab](https://badgen.net/badge/Launch/on%20Google%20Colab/black?icon=terminal)](https://colab.research.google.com/github/TUIlmenauAMS/AudioCoding_Tutorials/blob/master/AC_04_psychoAcoustics.ipynb)[![Youtube](https://badgen.net/badge/Launch/on%20YouTube/red?icon=terminal)](https://youtu.be/Dp9NhFShaPM) 70 | 71 | - Block Diagram of a Perceptual Audio Encoder 72 | - Structure of the Human Ear 73 | - Cochlea 74 | - Organ of Corti 75 | - Preprocessing of Sound in the Peripheral System 76 | - Information Processing in the Auditory System 77 | - Sound Perception 78 | - Frequency and Level Range of Human Hearing 79 | - Threshold in Quiet or the Absolute Threshold 80 | - Hearing Threshold and Age 81 | - Loudness 82 | - Critical Bands 83 | - Frequency Grouping in Human Hearing 84 | - Excursus - Critical Bands and Loudness 85 | - Bark Scale 86 | - Masking 87 | - Masking of Pure Tones by Noise -Broad-Band Noise 88 | - Masking of Pure Tones by Noise -Narrow-Band Noise 89 | - Masking of Pure Tones by Low-Pass or High-Pass Noise 90 | - Masking of Pure Tones by Pure Tone 91 | - Masking of Pure Tone by Complex Tones 92 | - Tonality 93 | - Masking - Spreading Function 94 | - Calculating the Masking Threshold 95 | - In-Band Making 96 | - Masking Neighboring Bands 97 | - Temporal Masking Effects 98 | 99 | ## 05 Psychoacoustics Models :
[![NBViewer](https://badgen.net/badge/Launch/on%20NBViewer/blue?icon=terminal)](https://nbviewer.jupyter.org/github/GuitarsAI/AudioCodingTutorials/blob/master/AC_05_psychoAcousticsModels.ipynb)[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/GuitarsAI/AudioCodingTutorials/master?filepath=AC_05_psychoAcousticsModels.ipynb)[![Google Colab](https://badgen.net/badge/Launch/on%20Google%20Colab/black?icon=terminal)](https://colab.research.google.com/github/TUIlmenauAMS/AudioCoding_Tutorials/blob/master/AC_05_psychoAcousticsModels.ipynb)[![Youtube](https://badgen.net/badge/Launch/on%20YouTube/red?icon=terminal)](https://youtu.be/CulE7VNtf5Q) 100 | 101 | - Spreading Function: Python Example 102 | - Masking Neighboring Bands Non-Linear Superposition 103 | - Bark Scale Approximations: 104 | - Zwicker&Terhard 105 | - Traunmueller 106 | - Schröder 107 | - Bark Scale Approximations: Comparisons 108 | - Bark Scale Mapping 109 | - Mapping from Bark scale back to Linear 110 | - Hearing Threshold in Quiet 111 | - The Complete Psycho-Acoustic Model 112 | - Physical Models of Hearing 113 | 114 | ## 06 PQMF Filter Bank, MPEG-1 / MPEG-2 BC Audio :
[![NBViewer](https://badgen.net/badge/Launch/on%20NBViewer/blue?icon=terminal)](https://nbviewer.jupyter.org/github/GuitarsAI/AudioCodingTutorials/blob/master/AC_06_PQMF_FilterBank.ipynb)[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/GuitarsAI/AudioCodingTutorials/master?filepath=AC_06_PQMF_FilterBank.ipynb)[![Google Colab](https://badgen.net/badge/Launch/on%20Google%20Colab/black?icon=terminal)](https://colab.research.google.com/github/TUIlmenauAMS/AudioCoding_Tutorials/blob/master/AC_06_PQMF_FilterBank.ipynb)[![Youtube](https://badgen.net/badge/Launch/on%20YouTube/red?icon=terminal)](https://youtu.be/yiPMDqBT7qk) 115 | 116 | - The Basic Paradigm of T/F Domain Audio Coding 117 | - MPEG Audio Standardization Philosophy 118 | - MPEG 1/2 119 | - MPEG-1 Audio 120 | - The main building blocks 121 | - MPEG Audio - Short Description of the Layers 122 | - Block Diagram MPEG-1 Layer 1 123 | - Block diagram Layer-3 124 | - Example for the Time/Frequency Resolution for the 2-Stage Layer III Coder 125 | - MPEG - Layer-1, -2 and -3 Compression: Header 126 | - The Pseudo-Quadrature-Mirror Filter Bank (PQMF) 127 | - PQMF Definition 128 | - PQMF Reformulation 129 | - PQMF Design 130 | - Python Example Optimization 131 | - PQMF Optimization 132 | - Optimization Function 133 | - Python Example 134 | - Unity Condition 135 | - PQMF Polyphase Implementation 136 | - Hybrid Filter Bank & Aliasing 137 | - Problem of Aliasing in a Cascaded Filter Bank 138 | - Aliasing Reduction Structure (MP3) 139 | - MPEG Audio - Layer-3: Bitstream 140 | - MPEG-1 Audio Decoder 141 | - MPEG Audio – General Decoder Structure 142 | - MPEG - Audio Decoder Process (1) Layer-3 Decoder flow chart 143 | - MPEG - Audio Decoder Process Layer-3 Decoder Diagramm 144 | - Annex: Abbreviations and Companies 145 | 146 | # YouTube Playlist 147 | [![Youtube](https://badgen.net/badge/Launch/on%20YouTube/red?icon=terminal)](https://www.youtube.com/playlist?list=PL6QnpHKwdPYjRWkWLswWmxFrDmj6leRwh) 148 | 149 | # Requirements 150 | Please check the following files at the 'binder' folder: 151 | - environment.yml 152 | - postBuild 153 | 154 | # Note 155 | Examples requiring a microphone will not work on remote environments such as Binder and Google Colab. 156 | -------------------------------------------------------------------------------- /audio/fantasy-orchestra.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/audio/fantasy-orchestra.wav -------------------------------------------------------------------------------- /audio/test3.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/audio/test3.wav -------------------------------------------------------------------------------- /binder/del.txt: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /binder/environment.yml: -------------------------------------------------------------------------------- 1 | name: TU_Tutorials 2 | channels: 3 | - conda-forge 4 | - defaults 5 | dependencies: 6 | - python= 7 | - numpy 8 | - scipy 9 | - matplotlib 10 | - scikit-learn 11 | - sympy 12 | - bokeh 13 | - librosa 14 | - notebook 15 | - jupyter_nbextensions_configurator 16 | - jupyter_contrib_nbextensions 17 | - widgetsnbextension 18 | - rise 19 | - ipywidgets 20 | - pyaudio 21 | - plotly=3.10.0 22 | - nodejs 23 | 24 | 25 | -------------------------------------------------------------------------------- /binder/postBuild: -------------------------------------------------------------------------------- 1 | jupyter contrib nbextension install --user 2 | jupyter nbextension enable --py widgetsnbextension 3 | jupyter nbextension enable python-markdown/main 4 | jupyter trust *.ipynb 5 | jupyter nbextension enable hide_input/main 6 | -------------------------------------------------------------------------------- /fb2048t1023d512bbitcs.mat: -------------------------------------------------------------------------------- 1 | -6.9165606e-02 -7.0128792e-02 -7.1104122e-02 -7.2091428e-02 -7.3090544e-02 -7.4101301e-02 -7.5123531e-02 -7.6157067e-02 -7.7201740e-02 -7.8257385e-02 -7.9323840e-02 -8.0401145e-02 -8.1489539e-02 -8.2589266e-02 -8.3700560e-02 -8.4823335e-02 -8.5957187e-02 -8.7101701e-02 -8.8256473e-02 -8.9421444e-02 -9.0596894e-02 -9.1783118e-02 -9.2980396e-02 -9.4188625e-02 -9.5407323e-02 -9.6635988e-02 -9.7874140e-02 -9.9121695e-02 -1.0037897e-01 -1.0164630e-01 -1.0292401e-01 -1.0421215e-01 -1.0551050e-01 -1.0681884e-01 -1.0813695e-01 -1.0946488e-01 -1.1080299e-01 -1.1215161e-01 -1.1351108e-01 -1.1488154e-01 -1.1626286e-01 -1.1765494e-01 -1.1905768e-01 -1.2047116e-01 -1.2189568e-01 -1.2333154e-01 -1.2477902e-01 -1.2623818e-01 -1.2770882e-01 -1.2919076e-01 -1.3068380e-01 -1.3218793e-01 -1.3370336e-01 -1.3523027e-01 -1.3676888e-01 -1.3831957e-01 -1.3988291e-01 -1.4145948e-01 -1.4304979e-01 -1.4465271e-01 -1.4626543e-01 -1.4788511e-01 -1.4950920e-01 -1.5114266e-01 -1.5279793e-01 -1.5448777e-01 -1.5622467e-01 -1.5801472e-01 -1.5985765e-01 -1.6175289e-01 -1.6369988e-01 -1.6569810e-01 -1.6774712e-01 -1.6984650e-01 -1.7199578e-01 -1.7419447e-01 -1.7644199e-01 -1.7873779e-01 -1.8108129e-01 -1.8347197e-01 -1.8590934e-01 -1.8839290e-01 -1.9092217e-01 -1.9349662e-01 -1.9611570e-01 -1.9877886e-01 -2.0148553e-01 -2.0423519e-01 -2.0702730e-01 -2.0986134e-01 -2.1273678e-01 -2.1565308e-01 -2.1860967e-01 -2.2160600e-01 -2.2464151e-01 -2.2771564e-01 -2.3082786e-01 -2.3397760e-01 -2.3716433e-01 -2.4038748e-01 -2.4364647e-01 -2.4694072e-01 -2.5026964e-01 -2.5363267e-01 -2.5702924e-01 -2.6045880e-01 -2.6392079e-01 -2.6741463e-01 -2.7093971e-01 -2.7449545e-01 -2.7808123e-01 -2.8169648e-01 -2.8534060e-01 -2.8901303e-01 -2.9271319e-01 -2.9644047e-01 -3.0019430e-01 -3.0397406e-01 -3.0777916e-01 -3.1160900e-01 -3.1546298e-01 -3.1934048e-01 -3.2324091e-01 -3.2716366e-01 -3.3110812e-01 -3.3507370e-01 -3.3905979e-01 -3.4306578e-01 -3.4709106e-01 -3.5113500e-01 -3.5519698e-01 -3.5927639e-01 -3.6337262e-01 -3.6748508e-01 -3.7161315e-01 -3.7575622e-01 -3.7991367e-01 -3.8408487e-01 -3.8826921e-01 -3.9246606e-01 -3.9667479e-01 -4.0089479e-01 -4.0512543e-01 -4.0936611e-01 -4.1361620e-01 -4.1787510e-01 -4.2214220e-01 -4.2641687e-01 -4.3069848e-01 -4.3498640e-01 -4.3927998e-01 -4.4357861e-01 -4.4788169e-01 -4.5218864e-01 -4.5649884e-01 -4.6081170e-01 -4.6512657e-01 -4.6944282e-01 -4.7375981e-01 -4.7807694e-01 -4.8239360e-01 -4.8670921e-01 -4.9102318e-01 -4.9533491e-01 -4.9964379e-01 -5.0394924e-01 -5.0825066e-01 -5.1254744e-01 -5.1683900e-01 -5.2112475e-01 -5.2540409e-01 -5.2967643e-01 -5.3394119e-01 -5.3819776e-01 -5.4244556e-01 -5.4668401e-01 -5.5091258e-01 -5.5513069e-01 -5.5933781e-01 -5.6353337e-01 -5.6771681e-01 -5.7188755e-01 -5.7604504e-01 -5.8018873e-01 -5.8431811e-01 -5.8843265e-01 -5.9253183e-01 -5.9661514e-01 -6.0068204e-01 -6.0473202e-01 -6.0876454e-01 -6.1277911e-01 -6.1677529e-01 -6.2075262e-01 -6.2471066e-01 -6.2864890e-01 -6.3256683e-01 -6.3646392e-01 -6.4033965e-01 -6.4419355e-01 -6.4802522e-01 -6.5183425e-01 -6.5562024e-01 -6.5938278e-01 -6.6312143e-01 -6.6683576e-01 -6.7052534e-01 -6.7418978e-01 -6.7782870e-01 -6.8144173e-01 -6.8502852e-01 -6.8858869e-01 -6.9212191e-01 -6.9562781e-01 -6.9910605e-01 -7.0255629e-01 -7.0597819e-01 -7.0937143e-01 -7.1273566e-01 -7.1607059e-01 -7.1937592e-01 -7.2265137e-01 -7.2589663e-01 -7.2911150e-01 -7.3229579e-01 -7.3544934e-01 -7.3857198e-01 -7.4166345e-01 -7.4472336e-01 -7.4775135e-01 -7.5074706e-01 -7.5371027e-01 -7.5664096e-01 -7.5953909e-01 -7.6240461e-01 -7.6523742e-01 -7.6803732e-01 -7.7080410e-01 -7.7353757e-01 -7.7623762e-01 -7.7890425e-01 -7.8153746e-01 -7.8413722e-01 -7.8670349e-01 -7.8923614e-01 -7.9173506e-01 -7.9420012e-01 -7.9663131e-01 -7.9902866e-01 -8.0139226e-01 -8.0372215e-01 -8.0601840e-01 -8.0828107e-01 -8.1051023e-01 -8.1270593e-01 -8.1486824e-01 -8.1724319e-01 -8.1937905e-01 -8.2152127e-01 -8.2366927e-01 -8.2582249e-01 -8.2798034e-01 -8.3014227e-01 -8.3230769e-01 -8.3447603e-01 -8.3664674e-01 -8.3881922e-01 -8.4099287e-01 -8.4316703e-01 -8.4534105e-01 -8.4751429e-01 -8.4968616e-01 -8.5185617e-01 -8.5402384e-01 -8.5618867e-01 -8.5835008e-01 -8.6050746e-01 -8.6266014e-01 -8.6480751e-01 -8.6694899e-01 -8.6908411e-01 -8.7121239e-01 -8.7333336e-01 -8.7544656e-01 -8.7755162e-01 -8.7964812e-01 -8.8173567e-01 -8.8381374e-01 -8.8588169e-01 -8.8793887e-01 -8.8998463e-01 -8.9201856e-01 -8.9404046e-01 -8.9605015e-01 -8.9804744e-01 -9.0003198e-01 -9.0200330e-01 -9.0396089e-01 -9.0590426e-01 -9.0783300e-01 -9.0974674e-01 -9.1164514e-01 -9.1352784e-01 -9.1539454e-01 -9.1724497e-01 -9.1907887e-01 -9.2089598e-01 -9.2269600e-01 -9.2447866e-01 -9.2624363e-01 -9.2799064e-01 -9.2971940e-01 -9.3142970e-01 -9.3312130e-01 -9.3479396e-01 -9.3644751e-01 -9.3808179e-01 -9.3969665e-01 -9.4129196e-01 -9.4286751e-01 -9.4442306e-01 -9.4595838e-01 -9.4747322e-01 -9.4896742e-01 -9.5044089e-01 -9.5189354e-01 -9.5332530e-01 -9.5473608e-01 -9.5612580e-01 -9.5749437e-01 -9.5884173e-01 -9.6016779e-01 -9.6147247e-01 -9.6275568e-01 -9.6401735e-01 -9.6525744e-01 -9.6647596e-01 -9.6767294e-01 -9.6884839e-01 -9.7000230e-01 -9.7113461e-01 -9.7224528e-01 -9.7333427e-01 -9.7440162e-01 -9.7544742e-01 -9.7647179e-01 -9.7747485e-01 -9.7845662e-01 -9.7941708e-01 -9.8035619e-01 -9.8127393e-01 -9.8217037e-01 -9.8304573e-01 -9.8390022e-01 -9.8473404e-01 -9.8554731e-01 -9.8634009e-01 -9.8711242e-01 -9.8786435e-01 -9.8859600e-01 -9.8930759e-01 -9.8999933e-01 -9.9067143e-01 -9.9132406e-01 -9.9195736e-01 -9.9257145e-01 -9.9316647e-01 -9.9374261e-01 -9.9430011e-01 -9.9483923e-01 -9.9536021e-01 -9.9586326e-01 -9.9634855e-01 -9.9681625e-01 -9.9726653e-01 -9.9769962e-01 -9.9811581e-01 -9.9851539e-01 -9.9889865e-01 -9.9926585e-01 -9.9961720e-01 -9.9995293e-01 -1.0002732e+00 -1.0005784e+00 -1.0008688e+00 -1.0011446e+00 -1.0014061e+00 -1.0016537e+00 -1.0018876e+00 -1.0021080e+00 -1.0023153e+00 -1.0025096e+00 -1.0026913e+00 -1.0028608e+00 -1.0030183e+00 -1.0031641e+00 -1.0032986e+00 -1.0034219e+00 -1.0035344e+00 -1.0036363e+00 -1.0037279e+00 -1.0038096e+00 -1.0038817e+00 -1.0039445e+00 -1.0039983e+00 -1.0040433e+00 -1.0040798e+00 -1.0041082e+00 -1.0041287e+00 -1.0041416e+00 -1.0041472e+00 -1.0041460e+00 -1.0041380e+00 -1.0041235e+00 -1.0041029e+00 -1.0040764e+00 -1.0040444e+00 -1.0040070e+00 -1.0039646e+00 -1.0039175e+00 -1.0038660e+00 -1.0038101e+00 -1.0037503e+00 -1.0036867e+00 -1.0036196e+00 -1.0035493e+00 -1.0034760e+00 -1.0034000e+00 -1.0033216e+00 -1.0032408e+00 -1.0031579e+00 -1.0030732e+00 -1.0029868e+00 -1.0028990e+00 -1.0028101e+00 -1.0027202e+00 -1.0026295e+00 -1.0025382e+00 -1.0024463e+00 -1.0023541e+00 -1.0022618e+00 -1.0021695e+00 -1.0020776e+00 -1.0019861e+00 -1.0018953e+00 -1.0018051e+00 -1.0017157e+00 -1.0016275e+00 -1.0015408e+00 -1.0014560e+00 -1.0013736e+00 -1.0012938e+00 -1.0012165e+00 -1.0011415e+00 -1.0010687e+00 -1.0009980e+00 -1.0009296e+00 -1.0008635e+00 -1.0007997e+00 -1.0007382e+00 -1.0006790e+00 -1.0006220e+00 -1.0005673e+00 -1.0005147e+00 -1.0004644e+00 -1.0004162e+00 -1.0003703e+00 -1.0003266e+00 -1.0002851e+00 -1.0002456e+00 -1.0002083e+00 -1.0001730e+00 -1.0001397e+00 -1.0001084e+00 -1.0000793e+00 -1.0000521e+00 -1.0000268e+00 -1.0000034e+00 -9.9998182e-01 -9.9996193e-01 -9.9994379e-01 -9.9992740e-01 -9.9991276e-01 -9.9989982e-01 -9.9988850e-01 -9.9987870e-01 -9.9987033e-01 -9.9986334e-01 -9.9985773e-01 -9.9985347e-01 -9.9985055e-01 -9.9984893e-01 -9.9984852e-01 -9.9984924e-01 -9.9985099e-01 -9.9985374e-01 -9.9985746e-01 -9.9986213e-01 -9.9986772e-01 -9.9987420e-01 -9.9988145e-01 -9.9988940e-01 -9.9989796e-01 -9.9990705e-01 -9.9991664e-01 -9.9992669e-01 -9.9993717e-01 -9.9994804e-01 -9.9995926e-01 -9.9997080e-01 -9.9998261e-01 -9.9999466e-01 -9.9999047e-01 -9.9999683e-01 -1.0000025e+00 -1.0000075e+00 -1.0000115e+00 -1.0000147e+00 -1.0000168e+00 -1.0000178e+00 -1.0000177e+00 -1.0000162e+00 -1.0000133e+00 -1.0000089e+00 -1.0000029e+00 -9.9999502e-01 -9.9998526e-01 -9.9997344e-01 -9.9995950e-01 -9.9994335e-01 -9.9992491e-01 -9.9990406e-01 -9.9988064e-01 -9.9985450e-01 -9.9982546e-01 -9.9979342e-01 -9.9975828e-01 -9.9971995e-01 -9.9967836e-01 -9.9963336e-01 -9.9958476e-01 -9.9953239e-01 -9.9947606e-01 -9.9941562e-01 -9.9935099e-01 -9.9928209e-01 -9.9920881e-01 -9.9913101e-01 -9.9904851e-01 -9.9896110e-01 -9.9886860e-01 -9.9877083e-01 -9.9866770e-01 -9.9855909e-01 -9.9844489e-01 -9.9832495e-01 -9.9819907e-01 -9.9806707e-01 -9.9792877e-01 -9.9778400e-01 -9.9763264e-01 -9.9747457e-01 -9.9730966e-01 -9.9713776e-01 -9.9695865e-01 -9.9677214e-01 -9.9657802e-01 -9.9637613e-01 -9.9616635e-01 -9.9594854e-01 -9.9572258e-01 -9.9548829e-01 -9.9524546e-01 -9.9499387e-01 -9.9473330e-01 -9.9446358e-01 -9.9418458e-01 -9.9389617e-01 -9.9359823e-01 -9.9329057e-01 -9.9297298e-01 -9.9264521e-01 -9.9230704e-01 -9.9195830e-01 -9.9159885e-01 -9.9122857e-01 -9.9084731e-01 -9.9045491e-01 -9.9005113e-01 -9.8963574e-01 -9.8920851e-01 -9.8876926e-01 -9.8831784e-01 -9.8785410e-01 -9.8737791e-01 -9.8688907e-01 -9.8638736e-01 -9.8587257e-01 -9.8534446e-01 -9.8480285e-01 -9.8424760e-01 -9.8367856e-01 -9.8309559e-01 -9.8249850e-01 -9.8188707e-01 -9.8126105e-01 -9.8062022e-01 -9.7996441e-01 -9.7929347e-01 -9.7860729e-01 -9.7790573e-01 -9.7718860e-01 -9.7645569e-01 -9.7570676e-01 -9.7494157e-01 -9.7415996e-01 -9.7336179e-01 -9.7254694e-01 -9.7171528e-01 -9.7086664e-01 -9.7000080e-01 -9.6911754e-01 -9.6821664e-01 -9.6729793e-01 -9.6636129e-01 -9.6540661e-01 -9.6443377e-01 -9.6344262e-01 -9.6243294e-01 -9.6140453e-01 -9.6035717e-01 -9.5929072e-01 -9.5820506e-01 -9.5710010e-01 -9.5597572e-01 -9.5483178e-01 -9.5366809e-01 -9.5248446e-01 -9.5128071e-01 -9.5005669e-01 -9.4881231e-01 -9.4754748e-01 -9.4626211e-01 -9.4495605e-01 -9.4362916e-01 -9.4228125e-01 -9.4091216e-01 -9.3952178e-01 -9.3811003e-01 -9.3667687e-01 -9.3522221e-01 -9.3374596e-01 -9.3224795e-01 -9.3072803e-01 -9.2918605e-01 -9.2762191e-01 -9.2603555e-01 -9.2442693e-01 -9.2279601e-01 -9.2114269e-01 -9.1946688e-01 -9.1776845e-01 -9.1604728e-01 -9.1430331e-01 -9.1253653e-01 -9.1074692e-01 -9.0893447e-01 -9.0709910e-01 -9.0524070e-01 -9.0335916e-01 -9.0145435e-01 -8.9952625e-01 -8.9757493e-01 -8.9560043e-01 -8.9360284e-01 -8.9158210e-01 -8.8953810e-01 -8.8747072e-01 -8.8537981e-01 -8.8326536e-01 -8.8112745e-01 -8.7896615e-01 -8.7678153e-01 -8.7457362e-01 -8.7234238e-01 -8.7008775e-01 -8.6780971e-01 -8.6550825e-01 -8.6318347e-01 -8.6083544e-01 -8.5846424e-01 -8.5606991e-01 -8.5365245e-01 -8.5121187e-01 -8.4874817e-01 -8.4626140e-01 -8.4375164e-01 -8.4121901e-01 -8.3866359e-01 -8.3608546e-01 -8.3348471e-01 -8.3086139e-01 -8.2821559e-01 -8.2554737e-01 -8.2285678e-01 -8.2014386e-01 -8.1740866e-01 -8.1465129e-01 -8.1187190e-01 -8.0907063e-01 -8.0624764e-01 -8.0340306e-01 -8.0053703e-01 -7.9764969e-01 -7.9474115e-01 -7.9181155e-01 -7.8886098e-01 -7.8588954e-01 -7.8289732e-01 -7.7988448e-01 -7.7685119e-01 -7.7379764e-01 -7.7072400e-01 -7.6763045e-01 -7.6451713e-01 -7.6138419e-01 -7.5823180e-01 -7.5506007e-01 -7.5186912e-01 -7.4865904e-01 -7.4542996e-01 -7.4218207e-01 -7.3891568e-01 -7.3563111e-01 -7.3232866e-01 -7.2900853e-01 -7.2567081e-01 -7.2231559e-01 -7.1894297e-01 -7.1555313e-01 -7.1214634e-01 -7.0872290e-01 -7.0528308e-01 -7.0182712e-01 -6.9835523e-01 -6.9486761e-01 -6.9136447e-01 -6.8784598e-01 -6.8431234e-01 -6.8076371e-01 -6.7720027e-01 -6.7362226e-01 -6.7002993e-01 -6.6642358e-01 -6.6280346e-01 -6.5916981e-01 -6.5552286e-01 -6.5186279e-01 -6.4818983e-01 -6.4450420e-01 -6.4080618e-01 -6.3709604e-01 -6.3337405e-01 -6.2964048e-01 -6.2589560e-01 -6.2213968e-01 -6.1837300e-01 -6.1459582e-01 6.1080519e-01 6.0700691e-01 6.0319907e-01 5.9938188e-01 5.9555555e-01 5.9172033e-01 5.8787646e-01 5.8402422e-01 5.8016386e-01 5.7629567e-01 5.7241997e-01 5.6853700e-01 5.6464698e-01 5.6075010e-01 5.5684662e-01 5.5293682e-01 5.4902096e-01 5.4509935e-01 5.4117230e-01 5.3724010e-01 5.3330299e-01 5.2936121e-01 5.2541505e-01 5.2146482e-01 5.1751080e-01 5.1355332e-01 5.0959273e-01 5.0562928e-01 5.0166311e-01 4.9769444e-01 4.9372344e-01 4.8975042e-01 4.8577576e-01 4.8179989e-01 4.7782324e-01 4.7384613e-01 4.6986876e-01 4.6589134e-01 4.6191410e-01 4.5793730e-01 4.5396124e-01 4.4998625e-01 4.4601267e-01 4.4204080e-01 4.3807095e-01 4.3410340e-01 4.3013848e-01 4.2617650e-01 4.2221774e-01 4.1826252e-01 4.1431114e-01 4.1036395e-01 4.0642117e-01 4.0248311e-01 3.9855002e-01 3.9462228e-01 3.9070017e-01 3.8678404e-01 3.8287427e-01 3.7897115e-01 3.7507496e-01 3.7118595e-01 3.6730442e-01 3.6343070e-01 3.5956517e-01 3.5570817e-01 3.5186012e-01 3.4802133e-01 3.4419206e-01 3.4037251e-01 3.3656296e-01 3.3276372e-01 3.2897509e-01 3.2519750e-01 3.2143126e-01 3.1767672e-01 3.1393411e-01 3.1020373e-01 3.0648585e-01 3.0278077e-01 2.9908883e-01 2.9541034e-01 2.9174570e-01 2.8809518e-01 2.8445912e-01 2.8083774e-01 2.7723136e-01 2.7364031e-01 2.7006492e-01 2.6650549e-01 2.6296238e-01 2.5943594e-01 2.5592637e-01 2.5243396e-01 2.4895902e-01 2.4550180e-01 2.4206263e-01 2.3864174e-01 2.3523948e-01 2.3185617e-01 2.2849201e-01 2.2514733e-01 2.2182244e-01 2.1851761e-01 2.1523309e-01 2.1196916e-01 2.0872611e-01 2.0550423e-01 2.0230374e-01 1.9912491e-01 1.9596805e-01 1.9283339e-01 1.8972121e-01 1.8663174e-01 1.8356525e-01 1.8052198e-01 1.7750214e-01 1.7450599e-01 1.7153372e-01 1.6858561e-01 1.6566182e-01 1.6276261e-01 1.5988821e-01 1.5703881e-01 1.5421464e-01 1.5141579e-01 1.4864269e-01 1.4589513e-01 1.4317342e-01 1.4047804e-01 1.3780924e-01 1.3516681e-01 1.3255103e-01 1.2996215e-01 1.2739984e-01 1.2486482e-01 1.2235700e-01 1.1987634e-01 1.1742338e-01 1.1499827e-01 1.1260058e-01 1.1023089e-01 1.0788876e-01 1.0557464e-01 1.0328876e-01 1.0103106e-01 9.8801770e-02 9.6600944e-02 9.4428431e-02 9.2284445e-02 9.0168821e-02 8.8081205e-02 8.6022143e-02 8.3991858e-02 8.1990483e-02 8.0017267e-02 7.8073091e-02 7.6157640e-02 7.4270281e-02 7.2411268e-02 7.0580229e-02 6.8778183e-02 6.7004695e-02 6.5259636e-02 6.3542616e-02 6.1854455e-02 6.0193794e-02 5.8561235e-02 5.6956676e-02 5.5379942e-02 5.3831363e-02 5.2310565e-02 5.0816801e-02 4.9350977e-02 4.7912398e-02 4.6500416e-02 4.5115796e-02 4.3758107e-02 4.2426868e-02 4.1122484e-02 3.9844484e-02 3.8592350e-02 3.7366608e-02 3.6166506e-02 3.4991884e-02 3.3843335e-02 3.2719479e-02 3.1621110e-02 3.0546815e-02 2.9497427e-02 2.8472172e-02 2.7470167e-02 2.6492524e-02 2.5539354e-02 2.4609688e-02 2.3702740e-02 2.2818090e-02 2.1956010e-02 2.1116222e-02 2.0298948e-02 1.9502943e-02 1.8728200e-02 1.7974832e-02 1.7242612e-02 1.6530885e-02 1.5839862e-02 1.5167979e-02 1.4516448e-02 1.3883511e-02 1.3270597e-02 1.2675961e-02 1.2099840e-02 1.1541580e-02 1.1002162e-02 1.0479034e-02 9.9733525e-03 9.4849156e-03 9.0134165e-03 8.5570094e-03 8.1174666e-03 7.6939132e-03 7.2851388e-03 6.8908907e-03 6.5117244e-03 6.1466648e-03 5.7955570e-03 5.4582332e-03 5.1343265e-03 4.8233550e-03 4.5252095e-03 4.2394526e-03 3.9655967e-03 3.7034261e-03 3.4528184e-03 3.2133170e-03 2.9847819e-03 2.7667353e-03 2.5588908e-03 2.3610510e-03 2.1726406e-03 1.9935106e-03 1.8232610e-03 1.6619513e-03 1.5081735e-03 1.3637997e-03 1.2266359e-03 1.0969144e-03 9.7474027e-04 8.6087196e-04 7.5224408e-04 6.4952873e-04 5.5356815e-04 4.6108541e-04 3.7550668e-04 2.9317409e-04 2.1499051e-04 5.7139224e-06 2.3524135e-06 -1.5742557e-06 -5.9616524e-06 -1.0705343e-05 -1.5700896e-05 -2.0843877e-05 -2.6029854e-05 -3.1154393e-05 -3.6113061e-05 -4.0803374e-05 -4.5167646e-05 -4.9192990e-05 -5.2868466e-05 -5.6182115e-05 -5.9098458e-05 -6.1558502e-05 -6.3502233e-05 -6.4869994e-05 -6.5610383e-05 -6.5680258e-05 -6.5036832e-05 -6.3639670e-05 -6.1502369e-05 -5.8692561e-05 -5.5280227e-05 -5.1328533e-05 -4.6743887e-05 -4.1275940e-05 -3.4667528e-05 -2.6680152e-05 -1.7504606e-05 -7.7609750e-06 1.9119885e-06 1.0908962e-05 1.9393470e-05 2.8297887e-05 3.8588014e-05 5.1199358e-05 6.6370625e-05 8.3643720e-05 1.0253025e-04 1.2255522e-04 1.4355132e-04 1.6565900e-04 1.8903206e-04 2.1382235e-04 2.4013662e-04 2.6803651e-04 2.9758169e-04 3.2883078e-04 3.6181820e-04 3.9655412e-04 4.3304770e-04 4.7130901e-04 5.1136953e-04 5.5328221e-04 5.9710091e-04 6.4288052e-04 6.9069968e-04 7.4066077e-04 7.9286719e-04 8.4742005e-04 9.0436785e-04 9.6370641e-04 1.0254293e-03 1.0895313e-03 1.1560383e-03 1.2250066e-03 1.2964941e-03 1.3705597e-03 1.4472839e-03 1.5267690e-03 1.6091185e-03 1.6944336e-03 1.7827675e-03 1.8741250e-03 1.9685091e-03 2.0659252e-03 2.1664386e-03 2.2701739e-03 2.3772584e-03 2.4878170e-03 2.6019129e-03 2.7195482e-03 2.8407226e-03 2.9654387e-03 3.0937752e-03 3.2258868e-03 3.3619314e-03 3.5020632e-03 3.6463484e-03 3.7947652e-03 3.9472879e-03 4.1038949e-03 4.2646552e-03 4.4297279e-03 4.5992763e-03 4.7734606e-03 4.9523658e-03 5.1360023e-03 5.3243771e-03 5.5175001e-03 5.7154446e-03 5.9183472e-03 6.1263474e-03 6.3395823e-03 6.5581341e-03 6.7820305e-03 7.0112967e-03 7.2459601e-03 7.4860963e-03 7.7318298e-03 7.9832868e-03 8.2405916e-03 8.5038203e-03 8.7730004e-03 9.0481576e-03 9.3293198e-03 9.6165689e-03 9.9100410e-03 1.0209874e-02 1.0516205e-02 1.0829113e-02 1.1148620e-02 1.1474747e-02 1.1807516e-02 1.2147005e-02 1.2493346e-02 1.2846672e-02 1.3207115e-02 1.3574750e-02 1.3949599e-02 1.4331677e-02 1.4721005e-02 1.5117659e-02 1.5521769e-02 1.5933467e-02 1.6352886e-02 1.6780104e-02 1.7215150e-02 1.7658050e-02 1.8108831e-02 1.8567567e-02 1.9034371e-02 1.9509362e-02 1.9992656e-02 2.0484326e-02 2.0984401e-02 2.1492909e-02 2.2009881e-02 2.2535387e-02 2.3069538e-02 2.3612448e-02 2.4164227e-02 2.4724948e-02 2.5294647e-02 2.5873358e-02 2.6461115e-02 2.7057984e-02 2.7664067e-02 2.8279463e-02 2.8904272e-02 2.9538560e-02 3.0182359e-02 3.0835702e-02 3.1498619e-02 3.2171182e-02 3.2853497e-02 3.3545670e-02 3.4247808e-02 3.4959978e-02 3.5682206e-02 3.6414518e-02 3.7156940e-02 3.7909538e-02 3.8672412e-02 3.9445665e-02 4.0229399e-02 4.1023679e-02 4.1828531e-02 4.2643982e-02 4.3470058e-02 4.4306815e-02 4.5154337e-02 4.6012706e-02 4.6882009e-02 4.7762315e-02 4.8653683e-02 4.9556168e-02 5.0469829e-02 5.1394721e-02 5.2330903e-02 5.3278430e-02 5.4237360e-02 5.5207750e-02 5.6189658e-02 5.7183142e-02 5.8188262e-02 5.9205083e-02 6.0233682e-02 6.1274133e-02 6.2326511e-02 6.3390867e-02 6.4467226e-02 6.5555616e-02 6.6656061e-02 6.7768624e-02 6.8893399e-02 7.0030485e-02 7.1179975e-02 7.2341927e-02 7.3516357e-02 7.4703282e-02 7.5902719e-02 7.7114721e-02 7.8339373e-02 7.9576766e-02 8.0826987e-02 8.2090091e-02 8.3366103e-02 8.4655049e-02 8.5956952e-02 8.7271856e-02 8.8599823e-02 8.9940916e-02 9.1295197e-02 9.2662717e-02 9.4043513e-02 9.5437624e-02 9.6845085e-02 9.8265941e-02 9.9700237e-02 1.0114802e-01 1.0260935e-01 1.0408424e-01 1.0557274e-01 1.0707485e-01 1.0859062e-01 1.1012008e-01 1.1166328e-01 1.1322028e-01 1.1479113e-01 1.1637586e-01 1.1797446e-01 1.1958693e-01 1.2121326e-01 1.2285349e-01 1.2450766e-01 1.2617582e-01 1.2785804e-01 1.2955436e-01 1.3126483e-01 1.3298952e-01 1.3472847e-01 1.3648174e-01 1.3494054e-04 3.6652048e-05 -2.8390545e-05 -6.0587020e-05 -6.0337157e-05 -2.8040737e-05 3.5902459e-05 1.3109265e-04 2.5713006e-04 4.1361489e-04 6.0014739e-04 8.1632775e-04 1.0617562e-03 1.3360330e-03 1.6387584e-03 1.9695325e-03 2.3279556e-03 2.7136278e-03 3.1261495e-03 3.5651209e-03 4.0301421e-03 4.5208133e-03 5.0367349e-03 5.5775070e-03 6.1427298e-03 6.7320036e-03 7.3449286e-03 7.9811050e-03 8.6401330e-03 9.3216128e-03 1.0025145e-02 1.0750329e-02 1.1496766e-02 1.2264055e-02 1.3051798e-02 1.3859593e-02 1.4687042e-02 1.5533745e-02 1.6399301e-02 1.7283311e-02 1.8185376e-02 1.9105095e-02 2.0042069e-02 2.0995898e-02 2.1966182e-02 2.2952521e-02 2.3954516e-02 2.4971767e-02 2.6003874e-02 2.7050436e-02 2.8111056e-02 2.9185332e-02 3.0272865e-02 3.1373255e-02 3.2486103e-02 3.3611008e-02 3.4747571e-02 3.5895393e-02 3.7054072e-02 3.8223210e-02 3.9402406e-02 4.0591261e-02 4.1789376e-02 4.2996349e-02 4.4211782e-02 4.5435275e-02 4.6666428e-02 4.7904841e-02 4.9150115e-02 5.0401850e-02 5.1659645e-02 5.2923102e-02 5.4191819e-02 5.5465398e-02 5.6743439e-02 5.8025542e-02 5.9311307e-02 6.0600335e-02 6.1892225e-02 6.3186578e-02 6.4482994e-02 6.5781073e-02 6.7080416e-02 6.8380623e-02 6.9681294e-02 7.0982029e-02 7.2282429e-02 7.3582093e-02 7.4880622e-02 7.6177616e-02 7.7472675e-02 7.8765399e-02 8.0055390e-02 8.1342246e-02 8.2625568e-02 8.3904957e-02 8.5180013e-02 8.6450335e-02 8.7715524e-02 8.8975181e-02 9.0228905e-02 9.1476297e-02 9.2716956e-02 9.3950484e-02 9.5176480e-02 9.6394545e-02 9.7604280e-02 9.8805284e-02 9.9997157e-02 1.0117950e-01 1.0235191e-01 1.0351399e-01 1.0466534e-01 1.0580556e-01 1.0693425e-01 1.0805101e-01 1.0915545e-01 1.1024716e-01 1.1132573e-01 1.1239078e-01 1.1344190e-01 1.1447869e-01 1.1550076e-01 1.1650769e-01 1.1749910e-01 1.1847459e-01 1.1943374e-01 1.2037617e-01 1.2130148e-01 1.2220926e-01 1.2309911e-01 1.2397064e-01 1.2482344e-01 1.2565711e-01 1.2647126e-01 1.2726548e-01 1.2803938e-01 1.2879256e-01 1.2952461e-01 1.3023514e-01 1.3092374e-01 1.3159003e-01 1.3223358e-01 1.3285402e-01 1.3345093e-01 1.3402392e-01 1.3457259e-01 1.3509653e-01 1.3559535e-01 1.3606866e-01 1.3651603e-01 1.3693709e-01 1.3733143e-01 1.3769865e-01 1.3803834e-01 1.3835012e-01 1.3863357e-01 1.3888831e-01 1.3911392e-01 1.3931002e-01 1.3947620e-01 1.3961206e-01 1.3971720e-01 1.3979122e-01 1.3983372e-01 1.3984430e-01 1.3982257e-01 1.3976811e-01 1.3968054e-01 1.3955946e-01 1.3940445e-01 1.3921514e-01 1.3899110e-01 1.3873195e-01 1.3843728e-01 1.3810669e-01 1.3773979e-01 1.3733617e-01 1.3689544e-01 1.3641719e-01 1.3590103e-01 1.3534655e-01 1.3475336e-01 1.3412105e-01 1.3344923e-01 1.3273750e-01 1.3198545e-01 1.3119269e-01 1.3035882e-01 1.2948344e-01 1.2856641e-01 1.2761399e-01 1.2663874e-01 1.2565354e-01 1.2467091e-01 1.2369590e-01 1.2272601e-01 1.2175845e-01 1.2079049e-01 1.1982103e-01 1.1885067e-01 1.1788004e-01 1.1690979e-01 1.1594036e-01 1.1497201e-01 1.1400498e-01 1.1303952e-01 1.1207566e-01 1.1111328e-01 1.1015220e-01 1.0919230e-01 1.0823368e-01 1.0727670e-01 1.0632177e-01 1.0536923e-01 1.0441924e-01 1.0347167e-01 1.0252641e-01 1.0158337e-01 1.0064272e-01 9.9704907e-02 9.8770406e-02 9.7839666e-02 9.6912790e-02 9.5989528e-02 9.5069615e-02 9.4152801e-02 9.3239173e-02 9.2329155e-02 9.1423186e-02 9.0521683e-02 8.9624612e-02 8.8731482e-02 8.7841782e-02 8.6955021e-02 8.6071124e-02 8.5190437e-02 8.4313322e-02 8.3440125e-02 8.2570820e-02 8.1705008e-02 8.0842272e-02 7.9982210e-02 7.9124768e-02 7.8270231e-02 7.7418903e-02 7.6571075e-02 7.5726811e-02 7.4885944e-02 7.4048298e-02 7.3213695e-02 7.2381961e-02 7.1552918e-02 7.0726389e-02 6.9902199e-02 6.9080171e-02 2 | -------------------------------------------------------------------------------- /images/Lecture6-10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/Lecture6-10.png -------------------------------------------------------------------------------- /images/Lecture6-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/Lecture6-6.png -------------------------------------------------------------------------------- /images/Lecture6-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/Lecture6-7.png -------------------------------------------------------------------------------- /images/Lecture6-8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/Lecture6-8.png -------------------------------------------------------------------------------- /images/Lecture6-9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/Lecture6-9.png -------------------------------------------------------------------------------- /images/ac_01_modulation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_01_modulation.png -------------------------------------------------------------------------------- /images/ac_02_audioCoders.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_02_audioCoders.png -------------------------------------------------------------------------------- /images/ac_03_critc1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_03_critc1.png -------------------------------------------------------------------------------- /images/ac_04_01_psycho1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_04_01_psycho1.png -------------------------------------------------------------------------------- /images/ac_04_02_structureEar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_04_02_structureEar.png -------------------------------------------------------------------------------- /images/ac_04_03_cochlea.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_04_03_cochlea.png -------------------------------------------------------------------------------- /images/ac_04_04_cochlea2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_04_04_cochlea2.png -------------------------------------------------------------------------------- /images/ac_04_05_corti.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_04_05_corti.png -------------------------------------------------------------------------------- /images/ac_04_06_preprocessing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_04_06_preprocessing.png -------------------------------------------------------------------------------- /images/ac_04_07_preprocessing2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_04_07_preprocessing2.png -------------------------------------------------------------------------------- /images/ac_04_08_basilarMembrane.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_04_08_basilarMembrane.png -------------------------------------------------------------------------------- /images/ac_04_09_frequency.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_04_09_frequency.png -------------------------------------------------------------------------------- /images/ac_04_10_threshold.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_04_10_threshold.png -------------------------------------------------------------------------------- /images/ac_04_11_threshold2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_04_11_threshold2.png -------------------------------------------------------------------------------- /images/ac_04_12_threshold_age.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_04_12_threshold_age.png -------------------------------------------------------------------------------- /images/ac_04_13_threshold_age2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_04_13_threshold_age2.png -------------------------------------------------------------------------------- /images/ac_04_14_loudness.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_04_14_loudness.png -------------------------------------------------------------------------------- /images/ac_04_15_loudness_scale.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_04_15_loudness_scale.png -------------------------------------------------------------------------------- /images/ac_04_16_groupin.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_04_16_groupin.jpg -------------------------------------------------------------------------------- /images/ac_04_16_groupin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_04_16_groupin.png -------------------------------------------------------------------------------- /images/ac_04_17_bandwidth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_04_17_bandwidth.png -------------------------------------------------------------------------------- /images/ac_04_18_bark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_04_18_bark.png -------------------------------------------------------------------------------- /images/ac_04_19_broadnoise.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_04_19_broadnoise.png -------------------------------------------------------------------------------- /images/ac_04_20_narrownoise.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_04_20_narrownoise.png -------------------------------------------------------------------------------- /images/ac_04_21_narrownoise2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_04_21_narrownoise2.png -------------------------------------------------------------------------------- /images/ac_04_22_LpHpnoise2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_04_22_LpHpnoise2.png -------------------------------------------------------------------------------- /images/ac_04_23_pureTone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_04_23_pureTone.png -------------------------------------------------------------------------------- /images/ac_04_24_complexTone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_04_24_complexTone.png -------------------------------------------------------------------------------- /images/ac_04_25_inBand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_04_25_inBand.png -------------------------------------------------------------------------------- /images/ac_04_25_tonality.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_04_25_tonality.png -------------------------------------------------------------------------------- /images/ac_04_26_spreadingF.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_04_26_spreadingF.png -------------------------------------------------------------------------------- /images/ac_04_27_maskingBands.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_04_27_maskingBands.png -------------------------------------------------------------------------------- /images/ac_04_28_temporal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_04_28_temporal.png -------------------------------------------------------------------------------- /images/ac_04_critc2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_04_critc2.png -------------------------------------------------------------------------------- /images/ac_05_01_ltq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_05_01_ltq.png -------------------------------------------------------------------------------- /images/ac_05_02_pemo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_05_02_pemo.png -------------------------------------------------------------------------------- /images/ac_05_downsamplint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_05_downsamplint.png -------------------------------------------------------------------------------- /images/ac_06_01_blockdiagramAC.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_06_01_blockdiagramAC.jpg -------------------------------------------------------------------------------- /images/ac_06_02_mpeg1BlockDiag.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_06_02_mpeg1BlockDiag.jpg -------------------------------------------------------------------------------- /images/ac_06_02_mpeg3BlockDiag.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_06_02_mpeg3BlockDiag.jpg -------------------------------------------------------------------------------- /images/ac_06_04_mpegHeader.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_06_04_mpegHeader.jpg -------------------------------------------------------------------------------- /images/ac_06_05_FaMetraix.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_06_05_FaMetraix.jpg -------------------------------------------------------------------------------- /images/ac_06_06_FsMetraix.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_06_06_FsMetraix.jpg -------------------------------------------------------------------------------- /images/ac_06_07_hybrid1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_06_07_hybrid1.jpg -------------------------------------------------------------------------------- /images/ac_06_08_hybrid2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_06_08_hybrid2.jpg -------------------------------------------------------------------------------- /images/ac_06_09_hybrid3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_06_09_hybrid3.jpg -------------------------------------------------------------------------------- /images/ac_06_10_hybrid4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_06_10_hybrid4.jpg -------------------------------------------------------------------------------- /images/ac_06_11_hybrid5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_06_11_hybrid5.jpg -------------------------------------------------------------------------------- /images/ac_06_12_hybrid6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_06_12_hybrid6.jpg -------------------------------------------------------------------------------- /images/ac_06_13_bitstream.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_06_13_bitstream.jpg -------------------------------------------------------------------------------- /images/ac_06_14_decoder.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_06_14_decoder.jpg -------------------------------------------------------------------------------- /images/ac_06_15_flowchart.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_06_15_flowchart.jpg -------------------------------------------------------------------------------- /images/ac_06_16_layer3Diag.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_06_16_layer3Diag.jpg -------------------------------------------------------------------------------- /images/ac_06_upsampling.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_06_upsampling.png -------------------------------------------------------------------------------- /images/ac_07_analysis.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_07_analysis.png -------------------------------------------------------------------------------- /images/ac_08_synthesis.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_08_synthesis.png -------------------------------------------------------------------------------- /images/ac_09_fb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_09_fb.png -------------------------------------------------------------------------------- /images/ac_10_bandpass_ny.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_10_bandpass_ny.png -------------------------------------------------------------------------------- /images/ac_11_bandpass_ny2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_11_bandpass_ny2.png -------------------------------------------------------------------------------- /images/ac_12_noble.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_12_noble.png -------------------------------------------------------------------------------- /images/ac_13_noble2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_13_noble2.png -------------------------------------------------------------------------------- /images/ac_14_poly1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_14_poly1.png -------------------------------------------------------------------------------- /images/ac_15_poly2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_15_poly2.png -------------------------------------------------------------------------------- /images/ac_16_poly3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_16_poly3.png -------------------------------------------------------------------------------- /images/ac_17_polyA1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_17_polyA1.png -------------------------------------------------------------------------------- /images/ac_18_polyS1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_18_polyS1.png -------------------------------------------------------------------------------- /images/ac_19_polyS2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_19_polyS2.png -------------------------------------------------------------------------------- /images/ac_20_synth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_20_synth.png -------------------------------------------------------------------------------- /images/ac_21_synth2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_21_synth2.png -------------------------------------------------------------------------------- /images/ac_22_synth3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_22_synth3.png -------------------------------------------------------------------------------- /images/ac_23_exH.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_23_exH.png -------------------------------------------------------------------------------- /images/ac_24_dft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_24_dft.png -------------------------------------------------------------------------------- /images/ac_25_dftMatrix.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_25_dftMatrix.png -------------------------------------------------------------------------------- /images/ac_26_dct4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_26_dct4.png -------------------------------------------------------------------------------- /images/ac_27_dct4_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_27_dct4_1.png -------------------------------------------------------------------------------- /images/ac_28_freq_shift.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_28_freq_shift.png -------------------------------------------------------------------------------- /images/ac_29_freq_shift2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_29_freq_shift2.png -------------------------------------------------------------------------------- /images/ac_30_window.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_30_window.png -------------------------------------------------------------------------------- /images/ac_31_windowRect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_31_windowRect.png -------------------------------------------------------------------------------- /images/ac_32_polyphaseAnalysis.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_32_polyphaseAnalysis.png -------------------------------------------------------------------------------- /images/ac_33_polyphaseAnalysis2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_33_polyphaseAnalysis2.png -------------------------------------------------------------------------------- /images/ac_34_mdct_inv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_34_mdct_inv.png -------------------------------------------------------------------------------- /images/ac_35_mdct_synth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_35_mdct_synth.png -------------------------------------------------------------------------------- /images/ac_36_faMatA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_36_faMatA.png -------------------------------------------------------------------------------- /images/ac_37_faMatA1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_37_faMatA1.png -------------------------------------------------------------------------------- /images/ac_38_mdct_PR.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_38_mdct_PR.png -------------------------------------------------------------------------------- /images/ac_39_sinWindow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_39_sinWindow.png -------------------------------------------------------------------------------- /images/ac_40_sineWindowFR.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_40_sineWindowFR.png -------------------------------------------------------------------------------- /images/ac_41_sineWinIR.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_41_sineWinIR.png -------------------------------------------------------------------------------- /images/ac_42_sineWinFR.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_42_sineWinFR.png -------------------------------------------------------------------------------- /images/ac_43_delayMat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_43_delayMat.png -------------------------------------------------------------------------------- /images/ac_44_delayMat2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_44_delayMat2.png -------------------------------------------------------------------------------- /images/ac_45_ldfbEx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_45_ldfbEx.png -------------------------------------------------------------------------------- /images/ac_46_blockSwit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_46_blockSwit.png -------------------------------------------------------------------------------- /images/ac_47_blockSwit2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_47_blockSwit2.png -------------------------------------------------------------------------------- /images/ac_48_blockSwit3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_48_blockSwit3.png -------------------------------------------------------------------------------- /images/ac_49_blockSwit4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_49_blockSwit4.png -------------------------------------------------------------------------------- /images/ac_50_blockSwit5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_50_blockSwit5.png -------------------------------------------------------------------------------- /images/ac_51_qmf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_51_qmf.png -------------------------------------------------------------------------------- /images/ac_52_qmf2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_52_qmf2.png -------------------------------------------------------------------------------- /images/ac_53_qmf3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_53_qmf3.png -------------------------------------------------------------------------------- /images/ac_54_qmf4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_54_qmf4.png -------------------------------------------------------------------------------- /images/ac_55_pqmf1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_55_pqmf1.png -------------------------------------------------------------------------------- /images/ac_56_pqmf2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_56_pqmf2.png -------------------------------------------------------------------------------- /images/ac_header.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/ac_header.png -------------------------------------------------------------------------------- /images/rise_tread_quantizers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUIlmenauAMS/AudioCoding_Tutorials/bfbd8771984de576a4175221c8b459313db13c2f/images/rise_tread_quantizers.png -------------------------------------------------------------------------------- /seminars/README.md: -------------------------------------------------------------------------------- 1 | # Audio Coding Seminars 2 | 3 | - Seminar 01: Introduction
4 | colab 5 | nbviewer 6 | -------------------------------------------------------------------------------- /seminars/all_ws22_seminars_intro.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "source": [ 6 | "# AMS TUI Seminars Introduction" 7 | ], 8 | "metadata": { 9 | "id": "zrxOpr_oxb-t" 10 | } 11 | }, 12 | { 13 | "cell_type": "markdown", 14 | "metadata": { 15 | "id": "ROoAWqqQ48zR" 16 | }, 17 | "source": [ 18 | "# General Information" 19 | ] 20 | }, 21 | { 22 | "cell_type": "markdown", 23 | "metadata": { 24 | "id": "YY5XD3Vs48zS" 25 | }, 26 | "source": [ 27 | " - Instructors:
Dr. Muhammad Imran -\n", 28 | "muhammad.imran@tu-ilmenau.de
Renato Profeta - renato.profeta@tu-ilmenau.de\n", 29 | " - Seminars will be either in presence, or online. Some seminars will ONLY be online.\n", 30 | " - We will discuss the format of the seminars (presence/online) to see what suits us best.\n", 31 | " - For the online seminars we will use `Jitsi` and the link to the jitsi room is available at the course page in Moodle.\n", 32 | " - Each seminar has to be done from one seminar to the next.\n", 33 | " - Check the course page constantly for changes in dates, format, materials updates, etc.\n" 34 | ] 35 | }, 36 | { 37 | "cell_type": "markdown", 38 | "metadata": { 39 | "id": "Nj-f-Ffi48zT" 40 | }, 41 | "source": [ 42 | "## Registration" 43 | ] 44 | }, 45 | { 46 | "cell_type": "markdown", 47 | "metadata": { 48 | "hide_input": true, 49 | "id": "cEInhtMW48zT" 50 | }, 51 | "source": [ 52 | "To register for the seminars you MUST fill the form below. Only this way we can create your account in our `nbgrader` system with the correct information." 53 | ] 54 | }, 55 | { 56 | "cell_type": "code", 57 | "execution_count": null, 58 | "metadata": { 59 | "cellView": "form", 60 | "hide_input": true, 61 | "id": "oZnZaUpo48zT", 62 | "outputId": "6b7598cd-ac5b-4a81-c744-1d0574efbdee", 63 | "scrolled": false, 64 | "colab": { 65 | "base_uri": "https://localhost:8080/", 66 | "height": 1000 67 | } 68 | }, 69 | "outputs": [ 70 | { 71 | "output_type": "display_data", 72 | "data": { 73 | "text/plain": [ 74 | "" 75 | ], 76 | "text/html": [ 77 | "Registration Form\n", 78 | "\n" 79 | ] 80 | }, 81 | "metadata": {} 82 | } 83 | ], 84 | "source": [ 85 | "#@title\n", 86 | "%%html\n", 87 | "Registration Form\n", 88 | "" 89 | ] 90 | }, 91 | { 92 | "cell_type": "markdown", 93 | "metadata": { 94 | "id": "Za6AE48g48zV" 95 | }, 96 | "source": [ 97 | "Only after submitting your response, we will be able to register you in our system and share the exchange folder in Nextcloud that is used to fetch and submit assignments." 98 | ] 99 | }, 100 | { 101 | "cell_type": "markdown", 102 | "metadata": { 103 | "id": "dezNC0hF48zX" 104 | }, 105 | "source": [ 106 | "# Requirements" 107 | ] 108 | }, 109 | { 110 | "cell_type": "markdown", 111 | "metadata": { 112 | "id": "OTD99nz148zY" 113 | }, 114 | "source": [ 115 | " - For these seminars you MUST use LINUX. It's not possible to submit the assignments using a different operating system.\n", 116 | " - At the Applied Media Systems Group we use Ubuntu. If you want to use a different Linux flavor you are on your own. If you use Ubuntu we can try to help you in case you have problems.\n", 117 | " - The assignments are to be solved using `Python` and `Jupyter Notebooks`.\n", 118 | " - The assignments are retrived and submitted using `nbgrader` and `NextCloud`." 119 | ] 120 | }, 121 | { 122 | "cell_type": "markdown", 123 | "metadata": { 124 | "id": "LuvHxXhWgQUi" 125 | }, 126 | "source": [ 127 | "## Jitsi" 128 | ] 129 | }, 130 | { 131 | "cell_type": "markdown", 132 | "metadata": { 133 | "id": "BJc2FaG4gQUi" 134 | }, 135 | "source": [ 136 | "- `Jitsi`is a collection of free and open-source multiplatform voice, video conferencing and instant messaging applications for the web platform, Windows, Linux, macOS, iOS and Android.\n", 137 | "- You find the link to our Jitsi channel at the course Moodle's page." 138 | ] 139 | }, 140 | { 141 | "cell_type": "markdown", 142 | "metadata": { 143 | "id": "DVEi2WpV48zY" 144 | }, 145 | "source": [ 146 | "## Linux" 147 | ] 148 | }, 149 | { 150 | "cell_type": "markdown", 151 | "metadata": { 152 | "id": "-fa_qqI948zY" 153 | }, 154 | "source": [ 155 | "There are basically 3 options how you can use Linux:\n", 156 | " - Main operating system.\n", 157 | " - Dual Boot.\n", 158 | " - Virtual Machine." 159 | ] 160 | }, 161 | { 162 | "cell_type": "markdown", 163 | "metadata": { 164 | "id": "8bJ4yW1P48zZ" 165 | }, 166 | "source": [ 167 | "### Main operating system" 168 | ] 169 | }, 170 | { 171 | "cell_type": "markdown", 172 | "metadata": { 173 | "id": "JomqPimG48zZ" 174 | }, 175 | "source": [ 176 | "Install Ubuntu" 177 | ] 178 | }, 179 | { 180 | "cell_type": "markdown", 181 | "metadata": { 182 | "id": "fw7-aFxC48zZ" 183 | }, 184 | "source": [ 185 | "### Dual Boot" 186 | ] 187 | }, 188 | { 189 | "cell_type": "markdown", 190 | "metadata": { 191 | "hide_input": false, 192 | "id": "5lcFVbng48za" 193 | }, 194 | "source": [ 195 | "Install Ubuntu alongside Windows: Dual Boot" 196 | ] 197 | }, 198 | { 199 | "cell_type": "markdown", 200 | "metadata": { 201 | "id": "usT4zq7b48zb" 202 | }, 203 | "source": [ 204 | "### VirtualBox" 205 | ] 206 | }, 207 | { 208 | "cell_type": "markdown", 209 | "metadata": { 210 | "hide_input": false, 211 | "id": "9cSpWrxA48zb" 212 | }, 213 | "source": [ 214 | "Install Ubuntu on a Virtual Machine" 215 | ] 216 | }, 217 | { 218 | "cell_type": "markdown", 219 | "metadata": { 220 | "id": "-XZDYuT-48zc" 221 | }, 222 | "source": [ 223 | "## Python" 224 | ] 225 | }, 226 | { 227 | "cell_type": "markdown", 228 | "metadata": { 229 | "id": "uTm4KcDA48zd" 230 | }, 231 | "source": [ 232 | " - We use `Python`in the course Videocoding. \n", 233 | " - If you are not familiar with `Python` you should start getting familiar with it as fast as possible.\n", 234 | " - I can recommend two tutorials:\n", 235 | " - Very Basic of Python Tutorial: A very basic python tutorial to get you started, very short in a cheat-sheet style.\n", 236 | " - Basics of Digital Audio Signal Processing and Machine Learning using Python: This is a from zero to hero series in which we learn fundamentals of Audio DSP and Machine Learning for Audio side-by-side with learning Python Programming and vice-versa " 237 | ] 238 | }, 239 | { 240 | "cell_type": "code", 241 | "execution_count": null, 242 | "metadata": { 243 | "cellView": "form", 244 | "hide_input": true, 245 | "id": "IhYHo49x48zd", 246 | "outputId": "80111bd8-4123-4223-a081-9c9285580a39" 247 | }, 248 | "outputs": [ 249 | { 250 | "data": { 251 | "text/html": [ 252 | "Basics for Digital Audio Signal Processing and Machine Learning for Audio\n", 253 | "
\n", 254 | "\n" 255 | ], 256 | "text/plain": [ 257 | "" 258 | ] 259 | }, 260 | "metadata": {}, 261 | "output_type": "display_data" 262 | } 263 | ], 264 | "source": [ 265 | "#@title\n", 266 | "%%html\n", 267 | "Basics for Digital Audio Signal Processing and Machine Learning for Audio\n", 268 | "
\n", 269 | "" 270 | ] 271 | }, 272 | { 273 | "cell_type": "markdown", 274 | "metadata": { 275 | "id": "JtM-Lh2Y48ze" 276 | }, 277 | "source": [ 278 | "- Python comes preinstalled in Ubuntu.\n", 279 | "- However, I highly recommend that you use a `Virtual Environment`.\n", 280 | "- I recommend basically two types of `Virtual Environments`:\n", 281 | " - `Conda:`Package, dependency and environment management for any language - Python, R, Ruby, Lua, Scala, Java, JavaScript, C/ C++, FORTRAN, and more.`\n", 282 | " - `venv:`Allow you to manage separate python package installations for different projects.\n", 283 | "- `Anaconda:` A very nice solution that combines a Python distribution, dependency and enviromnet management using `conda` and preinstalled `Python` packages.\n", 284 | " " 285 | ] 286 | }, 287 | { 288 | "cell_type": "code", 289 | "execution_count": null, 290 | "metadata": { 291 | "hide_input": true, 292 | "cellView": "form", 293 | "id": "B6GrL3q8gQUo", 294 | "outputId": "44464436-2318-446e-9df2-01f169cbc67e" 295 | }, 296 | "outputs": [ 297 | { 298 | "data": { 299 | "text/html": [ 300 | "Installing Anaconda on Ubuntu 20.04 and Creating a Conda Environment\n", 301 | "
\n", 302 | "\n" 303 | ], 304 | "text/plain": [ 305 | "" 306 | ] 307 | }, 308 | "metadata": {}, 309 | "output_type": "display_data" 310 | } 311 | ], 312 | "source": [ 313 | "#@title\n", 314 | "%%html\n", 315 | "Installing Anaconda on Ubuntu 20.04 and Creating a Conda Environment\n", 316 | "
\n", 317 | "" 318 | ] 319 | }, 320 | { 321 | "cell_type": "markdown", 322 | "metadata": { 323 | "id": "Wz2il7VH48ze" 324 | }, 325 | "source": [ 326 | "## Jupyter Notebooks" 327 | ] 328 | }, 329 | { 330 | "cell_type": "markdown", 331 | "metadata": { 332 | "hide_input": true, 333 | "id": "E3a79NC_48zf" 334 | }, 335 | "source": [ 336 | " - We use `Jupyter Notebooks` in the course Videocoding.\n", 337 | " - The `Jupyter Notebook:`is a web-based interactive computing platform. The notebook combines live code, equations, narrative text, visualizations, ...\n", 338 | " - Installing `Jupyter Notebooks` depends on the `Virtual Environment`that you chose:\n", 339 | " - Installation using `venv` or without a virtual environment.\n", 340 | " - Installation using `Anaconda`.\n", 341 | " - If you are not familiar with `Jupyter Notebooks`I can recommend the following tutorials: Introduction to `Google Colab` for Research. (The first 3 Tutorials).\n", 342 | " - `Google Colab`is a cloud solution based on `Jupyter Notebooks`. There are a few differences but the basic concepts are the same.\n", 343 | " " 344 | ] 345 | }, 346 | { 347 | "cell_type": "code", 348 | "execution_count": null, 349 | "metadata": { 350 | "cellView": "form", 351 | "hide_input": true, 352 | "id": "NspRBreI48zf", 353 | "outputId": "2ca1d9d9-f7f1-4073-ac90-543c42bdb566" 354 | }, 355 | "outputs": [ 356 | { 357 | "data": { 358 | "text/html": [ 359 | "Introduction to `Google Colab` for Research.\n", 360 | "
\n", 361 | "\n" 362 | ], 363 | "text/plain": [ 364 | "" 365 | ] 366 | }, 367 | "metadata": {}, 368 | "output_type": "display_data" 369 | } 370 | ], 371 | "source": [ 372 | "#@title\n", 373 | "%%html\n", 374 | "Introduction to `Google Colab` for Research.\n", 375 | "
\n", 376 | "" 377 | ] 378 | }, 379 | { 380 | "cell_type": "markdown", 381 | "metadata": { 382 | "id": "gfcWYxvu48zf" 383 | }, 384 | "source": [ 385 | "## NextCloud" 386 | ] 387 | }, 388 | { 389 | "cell_type": "markdown", 390 | "metadata": { 391 | "id": "CSpLxDzt48zg" 392 | }, 393 | "source": [ 394 | " - `Nextcloud` is a suite of client-server software for creating and using file hosting services.\n", 395 | " - As a student at TU Ilmenau you have access to the TU Ilmenau NextCloud." 396 | ] 397 | }, 398 | { 399 | "cell_type": "markdown", 400 | "metadata": { 401 | "id": "NTAYeshu48zg" 402 | }, 403 | "source": [ 404 | "### Mounting a TUI Nextcloud folder in your Ubuntu system" 405 | ] 406 | }, 407 | { 408 | "cell_type": "code", 409 | "source": [ 410 | "#@title\n", 411 | "%%html\n", 412 | " Accessing Nextcloud files using WebDAV \n", 413 | "
\n", 414 | "" 415 | ], 416 | "metadata": { 417 | "colab": { 418 | "base_uri": "https://localhost:8080/", 419 | "height": 353 420 | }, 421 | "cellView": "form", 422 | "id": "Qc79NXP3NH1B", 423 | "outputId": "54aaaf0f-7dde-4efe-b7a6-fabc7e598c16" 424 | }, 425 | "execution_count": 1, 426 | "outputs": [ 427 | { 428 | "output_type": "display_data", 429 | "data": { 430 | "text/plain": [ 431 | "" 432 | ], 433 | "text/html": [ 434 | " Accessing Nextcloud files using WebDAV \n", 435 | "
\n", 436 | "\n" 437 | ] 438 | }, 439 | "metadata": {} 440 | } 441 | ] 442 | }, 443 | { 444 | "cell_type": "markdown", 445 | "source": [ 446 | "To get access to our shared Nextcloud server, we can mount it in Ubuntu linux. If you setup a new\n", 447 | "Ubuntu, it will aks you if you want to connect to Nextcloud, and if yes, it will do this for you\n", 448 | "automatically. If you have an existing Ubuntu, you can use the following steps,\n", 449 | "according to:\n", 450 | "https://docs.nextcloud.com/server/20/user_manual/en/files/access_webdav.html\n" 451 | ], 452 | "metadata": { 453 | "id": "glU8GCW1y_vA" 454 | } 455 | }, 456 | { 457 | "cell_type": "markdown", 458 | "metadata": { 459 | "id": "uRH6Im3n48zg" 460 | }, 461 | "source": [ 462 | "(replace “schuller” by your user name)\n", 463 | "\n", 464 | "sudo apt install davfs2\n", 465 | "\n", 466 | "sudo usermod -aG davfs2 schuller\n", 467 | "\n", 468 | "mkdir ~/nextcloud_mount\n", 469 | "\n", 470 | "mkdir ~/.davfs2\n", 471 | "\n", 472 | "sudo cp /etc/davfs2/secrets .davfs2/secrets\n", 473 | "\n", 474 | "sudo chown schuller:schuller .davfs2/secrets\n", 475 | "\n", 476 | "chmod 600 ~/.davfs2/secrets\n", 477 | "\n", 478 | "cd .davfs2/\n", 479 | "\n", 480 | "gedit secrets &\n", 481 | "\n", 482 | "In the editor, append Nextcloud mount point (directory) and Nextcloud user name:\n", 483 | "/home/schuller/nextcloud_mount gschull\n", 484 | "\n", 485 | "sudo gedit /etc/fstab\n", 486 | "\n", 487 | "In the editor, append (Nextcloud server path, mount point, options, one line):\n", 488 | "https://cloud.tu-ilmenau.de/remote.php/dav/files/gschull/ /home/schuller/nextcloud_mount davfs\n", 489 | "user,rw,auto 0 0\n", 490 | "\n", 491 | "\n", 492 | "cd #back to home directory\n", 493 | "\n", 494 | "mount nextcloud_mount #mount nextcloud\n", 495 | "\n", 496 | "cd nextcloud_mount #should be now in mounted Nextcloud\n", 497 | "\n", 498 | "\\#When done, unmount with:\n", 499 | "\n", 500 | "umount ~/nextcloud_moun\n" 501 | ] 502 | }, 503 | { 504 | "cell_type": "markdown", 505 | "metadata": { 506 | "id": "lOv9sqTQ48zg" 507 | }, 508 | "source": [ 509 | "## NBgrader" 510 | ] 511 | }, 512 | { 513 | "cell_type": "markdown", 514 | "metadata": { 515 | "id": "ohWz1r_v48zg" 516 | }, 517 | "source": [ 518 | " - We will use `nbgrader` for managing and evaluating students homeworks.\n", 519 | " - The `nbgrader:`is a tool that facilitates creating and grading assignments in the Jupyter notebook.\n", 520 | " - Installing `nbgrader` depends on the `Virtual Environment`that you chose:\n", 521 | " - Installation using `venv`, without a virtual environment or using `conda`." 522 | ] 523 | }, 524 | { 525 | "cell_type": "code", 526 | "execution_count": null, 527 | "metadata": { 528 | "hide_input": true, 529 | "cellView": "form", 530 | "id": "9AnwYE1FgQUr", 531 | "outputId": "4c2b15e2-ff2d-43db-f84c-0c825ee2cb33" 532 | }, 533 | "outputs": [ 534 | { 535 | "data": { 536 | "text/html": [ 537 | "Installing NBGrader\n", 538 | "
\n", 539 | "\n" 540 | ], 541 | "text/plain": [ 542 | "" 543 | ] 544 | }, 545 | "metadata": {}, 546 | "output_type": "display_data" 547 | } 548 | ], 549 | "source": [ 550 | "#@title\n", 551 | "%%html\n", 552 | "Installing NBGrader\n", 553 | "
\n", 554 | "" 555 | ] 556 | }, 557 | { 558 | "cell_type": "markdown", 559 | "source": [ 560 | "### Configuring NBGrader to use Nextcloud Exchange Folder" 561 | ], 562 | "metadata": { 563 | "id": "3HPGDXasNwhi" 564 | } 565 | }, 566 | { 567 | "cell_type": "code", 568 | "source": [ 569 | "#@title\n", 570 | "%%html\n", 571 | "" 572 | ], 573 | "metadata": { 574 | "colab": { 575 | "base_uri": "https://localhost:8080/", 576 | "height": 336 577 | }, 578 | "cellView": "form", 579 | "id": "l6fEbE3DN0r-", 580 | "outputId": "b5c36ba2-8eb1-4100-f2f7-e03e01c26496" 581 | }, 582 | "execution_count": 2, 583 | "outputs": [ 584 | { 585 | "output_type": "display_data", 586 | "data": { 587 | "text/plain": [ 588 | "" 589 | ], 590 | "text/html": [ 591 | "\n" 592 | ] 593 | }, 594 | "metadata": {} 595 | } 596 | ] 597 | }, 598 | { 599 | "cell_type": "markdown", 600 | "source": [ 601 | "### Fetching and Submitting NBGRader Assignments" 602 | ], 603 | "metadata": { 604 | "id": "6gr757jFRZm1" 605 | } 606 | }, 607 | { 608 | "cell_type": "code", 609 | "source": [ 610 | "#@title\n", 611 | "%%html\n", 612 | "" 613 | ], 614 | "metadata": { 615 | "colab": { 616 | "base_uri": "https://localhost:8080/", 617 | "height": 336 618 | }, 619 | "cellView": "form", 620 | "id": "ZedwJ9LKRUDc", 621 | "outputId": "82293e4d-79f5-4145-dd04-341eec32939c" 622 | }, 623 | "execution_count": 3, 624 | "outputs": [ 625 | { 626 | "output_type": "display_data", 627 | "data": { 628 | "text/plain": [ 629 | "" 630 | ], 631 | "text/html": [ 632 | "\n" 633 | ] 634 | }, 635 | "metadata": {} 636 | } 637 | ] 638 | }, 639 | { 640 | "cell_type": "markdown", 641 | "source": [ 642 | "### NBGrader Workflow - Fetching, Submitting, Feedback - Command " 643 | ], 644 | "metadata": { 645 | "id": "LAdrG4_wSHFb" 646 | } 647 | }, 648 | { 649 | "cell_type": "code", 650 | "source": [ 651 | "#@title\n", 652 | "%%html\n", 653 | "" 654 | ], 655 | "metadata": { 656 | "colab": { 657 | "base_uri": "https://localhost:8080/", 658 | "height": 336 659 | }, 660 | "cellView": "form", 661 | "id": "eFJLYPn-RuN6", 662 | "outputId": "177b0b15-5a2e-46a7-afd5-be13269b8c41" 663 | }, 664 | "execution_count": 4, 665 | "outputs": [ 666 | { 667 | "output_type": "display_data", 668 | "data": { 669 | "text/plain": [ 670 | "" 671 | ], 672 | "text/html": [ 673 | "\n" 674 | ] 675 | }, 676 | "metadata": {} 677 | } 678 | ] 679 | }, 680 | { 681 | "cell_type": "markdown", 682 | "source": [ 683 | "## Seminars Resources" 684 | ], 685 | "metadata": { 686 | "id": "IDe6fvPWS98a" 687 | } 688 | }, 689 | { 690 | "cell_type": "markdown", 691 | "source": [ 692 | "TUI AMS Github: [https://github.com/TUIlmenauAMS](https://github.com/TUIlmenauAMS)\n", 693 | "\n", 694 | "YouTube: [https://www.youtube.com/c/GuitarsAI/](https://www.youtube.com/c/GuitarsAI/)" 695 | ], 696 | "metadata": { 697 | "id": "FVeyLqFTTJhg" 698 | } 699 | }, 700 | { 701 | "cell_type": "code", 702 | "source": [], 703 | "metadata": { 704 | "id": "6avnd4a5TeB1" 705 | }, 706 | "execution_count": null, 707 | "outputs": [] 708 | } 709 | ], 710 | "metadata": { 711 | "colab": { 712 | "provenance": [], 713 | "collapsed_sections": [] 714 | }, 715 | "kernelspec": { 716 | "display_name": "Python 3", 717 | "language": "python", 718 | "name": "python3" 719 | }, 720 | "language_info": { 721 | "codemirror_mode": { 722 | "name": "ipython", 723 | "version": 3 724 | }, 725 | "file_extension": ".py", 726 | "mimetype": "text/x-python", 727 | "name": "python", 728 | "nbconvert_exporter": "python", 729 | "pygments_lexer": "ipython3", 730 | "version": "3.6.15" 731 | }, 732 | "toc": { 733 | "base_numbering": 1, 734 | "nav_menu": {}, 735 | "number_sections": true, 736 | "sideBar": true, 737 | "skip_h1_title": false, 738 | "title_cell": "Table of Contents", 739 | "title_sidebar": "Contents", 740 | "toc_cell": false, 741 | "toc_position": {}, 742 | "toc_section_display": true, 743 | "toc_window_display": false 744 | } 745 | }, 746 | "nbformat": 4, 747 | "nbformat_minor": 0 748 | } -------------------------------------------------------------------------------- /seminars/nbgrader_config.py: -------------------------------------------------------------------------------- 1 | #According to: https://nbgrader.readthedocs.io/en/stable/user_guide/managing_assignment_files.html#setting-up-the-exchange 2 | # Template for the nbgrader configuration file 3 | # You must change the data to fit your system 4 | c = get_config() 5 | c.CourseDirectory.course_id = "AC_seminars_ws22" # Don't change this!!! 6 | c.Exchange.root = "/home/username/WS22_Seminars/instructor/nextcloud" # Change this to point to your local folder (nextcloud). 7 | c.CourseDirectory.student_id = "6666927" # Change this to your matrikel number. 8 | --------------------------------------------------------------------------------