The PCP notebooks serve two purposes. First, they introduce some basic material on Python programming as required for more advanced lab courses offered in FAU study programs such as Communications and Multimedia Engineering (CME) or Advanced Signal Processing and Communications Engineering (ASC). Second, the PCP notebooks may be used as a gentle introduction to programming as needed in the more advanced FMP Notebooks on Fundamentals of Music Processing. While the first half of the PCP notebooks covers general Python concepts, the second half introduces and requires fundamental concepts in signal processing. The PCP notebooks are not intended to give a comprehensive overview of Python programming, nor are the notebooks self-contained. For a systematic introduction to Python programming, we refer to online sources such as The Python Tutorial or the Scipy Lecture Notes. The PCP notebooks have been inspired and borrow material from the FMP Notebooks on Fundamentals of Music Processing.

If a static view of the PCP notebooks is enough for you, the exported HTML versions can be used right away without any installation. All material including the explanations, the figures, and the audio examples can be accessed by just following the **HTML links**. If you want to **execute** the Python code cells, you have to download the notebooks (along with the data), create an environment, and start a Jupyter server. You then need to follow the **IPYNB links** within the Jupyter session. The necessary steps are explained in detail in the PCP notebook on how to get started.

The collection of PCP notebooks is organized in ten units. Each unit, corresponding to an individual notebook, introduces some Python concepts, which are then applied and explored in exercises. The following table gives an overview of these units and provides links. In the first unit, we provide basic information on how to set up the Python and Jupyter framework, and discuss some tools used throughout the PCP notebooks.

Unit |
Title |
Notions, Techniques & Algorithms |
HTML |
IPYNB |

1 |
Get Started | Download; Conda; Python environment; Jupyter | [html] | [ipynb] |

2 |
Python Basics | Help; variables; basic operators; list; tuple; boolean values; set; dictionary; type conversion; shallow and deep copy | [html] | [ipynb] |

3 |
NumPy Basics | Array; reshape; array operations; type conversion; constants; matrix | [html] | [ipynb] |

4 |
Control Structures and Functions | Loop; for; while; break; continue; Python function; efficiency; runtime | [html] | [ipynb] |

5 |
Visualization Using Matplotlib | Plot (1D); figure; imshow (2D); surface (3D); logarithmic axis | [html] | [ipynb] |

6 |
Complex Numbers | Real part; imaginary part; absolute value; angle; polar representation; complex operations; conjugate; polar coordinate plot; roots; Mandelbrot | [html] | [ipynb] |

7 |
Exponential Function | Power series; exponentiation identity; Euler's formula; differential equation; roots of unity; Gaussian function; spiral | [html] | [ipynb] |

8 |
Signals and Sampling | Continuous-time signal; periodic; frequency; Hertz; amplitude; phase; discrete-time signal; sampling; aliasing; interference; beating; | [html] | [ipynb] |

9 |
Discrete Fourier Transform (DFT) | Inner product; DFT; phase; optimality; DFT matrix; fast Fourier transform (FFT); FFT algorithm; runtime; time localization; chirp signal; inverse DFT | [html] | [ipynb] |

10 |
Python Modules and Packages | Python modules; Python packages; LibPCP; documentation; docstring | [html] | [ipynb] |

Prof. Dr. Meinard Müller

Friedrich-Alexander Universität Erlangen-Nürnberg

International Audio Laboratories Erlangen

Lehrstuhl Semantic Audio Processing

Am Wolfsmantel 33, 91058 Erlangen

Email: meinard.mueller@audiolabs-erlangen.de

We want to thank the various people who have contributed to the design, implementation, and code examples of the notebooks. We mention the main contributors in alphabetical order:

The International Audio Laboratories Erlangen are a joint institution of the Friedrich-Alexander-Universität Erlangen-Nürnberg (FAU) and Fraunhofer Institute for Integrated Circuits IIS.