Music Representations (libfmp.c1)

The FMP notebooks provide detailed textbook-like explanations of central techniques and algorithms implemented in the libfmp. The part of FMP related to this module is available at the following URL:

https://www.audiolabs-erlangen.de/resources/MIR/FMP/C1/C1.html

libfmp.c1.c1s1_sheet_music.generate_chirp_exp_octave(freq_start=440, dur=8, Fs=44100, amp=1)[source]

Generate one octave of a chirp with exponential frequency increase

Notebook: C1/C1S1_ChromaShepard.ipynb

Parameters
  • freq_start (float) – Start frequency of chirp (Default value = 440)

  • dur (float) – Duration (in seconds) (Default value = 8)

  • Fs (scalar) – Sampling rate (Default value = 44100)

  • amp (float) – Amplitude of generated signal (Default value = 1)

Returns
  • x (np.ndarray) – Chirp signal

  • t (np.ndarray) – Time axis (in seconds)

libfmp.c1.c1s1_sheet_music.generate_shepard_glissando(num_octaves=3, dur_octave=8, Fs=44100)[source]

Generate several ocatves of a Shepared glissando

Notebook: C1/C1S1_ChromaShepard.ipynb

Parameters
  • num_octaves (int) – Number of octaves (Default value = 3)

  • dur_octave (int) – Duration (in seconds) per octave (Default value = 8)

  • Fs (scalar) – Sampling rate (Default value = 44100)

Returns
  • x (np.ndarray) – Shepared glissando

  • t (np.ndarray) – Time axis (in seconds)

libfmp.c1.c1s1_sheet_music.generate_shepard_tone(freq=440, dur=0.5, Fs=44100, amp=1)[source]

Generate Shepard tone

Notebook: C1/C1S1_ChromaShepard.ipynb

Parameters
  • freq (float) – Frequency of Shepard tone (Default value = 440)

  • dur (float) – Duration (in seconds) (Default value = 0.5)

  • Fs (scalar) – Sampling rate (Default value = 44100)

  • amp (float) – Amplitude of generated signal (Default value = 1)

Returns
  • x (np.ndarray) – Shepard tone

  • t (np.ndarray) – Time axis (in seconds)

libfmp.c1.c1s1_sheet_music.generate_sinusoid_pitches(pitches=[69], dur=0.5, Fs=4000, amp=1)[source]

Generation of sinusoids for a given list of MIDI pitches

Notebook: C1/C1S1_MusicalNotesPitches.ipynb

Parameters
  • pitches (list) – List of MIDI pitches (Default value = [69])

  • dur (float) – Duration (in seconds) of each sinusoid (Default value = 0.5)

  • Fs (scalar) – Sampling rate (Default value = 4000)

  • amp (float) – Amplitude of generated signal (Default value = 1)

Returns
  • x (np.ndarray) – Signal

  • t (np.ndarray) – Time axis (in seconds)

libfmp.c1.c1s2_symbolic_rep.csv_to_list(csv)[source]

Convert a csv score file to a list of note events

Notebook: C1/C1S2_CSV.ipynb

Parameters

csv (str or pd.DataFrame) – Either a path to a csv file or a data frame

Returns

score (list) – A list of note events where each note is specified as [start, duration, pitch, velocity, label]

libfmp.c1.c1s2_symbolic_rep.list_to_csv(score, fn_out)[source]

Write a list of note events (comprising a start time, duration, pitch, velocity, and label for each note event) to a CSV file

Parameters
  • score (list) – List of note events

  • fn_out (str) – The path of the csv file to be created

libfmp.c1.c1s2_symbolic_rep.midi_to_list(midi)[source]

Convert a midi file to a list of note events

Notebook: C1/C1S2_MIDI.ipynb

Parameters

midi (str or pretty_midi.pretty_midi.PrettyMIDI) – Either a path to a midi file or PrettyMIDI object

Returns

score (list) – A list of note events where each note is specified as [start, duration, pitch, velocity, label]

libfmp.c1.c1s2_symbolic_rep.visualize_piano_roll(score, xlabel='Time (seconds)', ylabel='Pitch', colors='FMP_1', velocity_alpha=False, figsize=(12, 4), ax=None, dpi=72)[source]

Plot a pianoroll visualization

Notebook: C1/C1S2_CSV.ipynb

Parameters
  • score – List of note events

  • xlabel – Label for x axis (Default value = ‘Time (seconds)’)

  • ylabel – Label for y axis (Default value = ‘Pitch’)

  • colors – Several options: 1. string of FMP_COLORMAPS, 2. string of matplotlib colormap, 3. list or np.ndarray of matplotlib color specifications, 4. dict that assigns labels to colors (Default value = ‘FMP_1’)

  • velocity_alpha – Use the velocity value for the alpha value of the corresponding rectangle (Default value = False)

  • figsize – Width, height in inches (Default value = (12)

  • ax – The Axes instance to plot on (Default value = None)

  • dpi – Dots per inch (Default value = 72)

Returns
  • fig – The created matplotlib figure or None if ax was given.

  • ax – The used axes

libfmp.c1.c1s2_symbolic_rep.xml_to_list(xml)[source]

Convert a music xml file to a list of note events

Notebook: C1/C1S2_MusicXML.ipynb

Parameters

xml (str or music21.stream.Score) – Either a path to a music xml file or a music21.stream.Score

Returns

score (list) – A list of note events where each note is specified as [start, duration, pitch, velocity, label]

libfmp.c1.c1s3_audio_rep.compute_adsr(len_A=10, len_D=10, len_S=60, len_R=10, height_A=1.0, height_S=0.5)[source]

Computation of idealized ADSR model

Notebook: C1/C1S3_Timbre.ipynb

Parameters
  • len_A (int) – Length (samples) of A phase (Default value = 10)

  • len_D (int) – Length (samples) of D phase (Default value = 10)

  • len_S (int) – Length (samples) of S phase (Default value = 60)

  • len_R (int) – Length (samples) of R phase (Default value = 10)

  • height_A (float) – Height of A phase (Default value = 1.0)

  • height_S (float) – Height of S phase (Default value = 0.5)

Returns

curve_ADSR (np.ndarray) – ADSR model

libfmp.c1.c1s3_audio_rep.compute_envelope(x, win_len_sec=0.01, Fs=4000)[source]

Computation of a signal’s envelopes

Notebook: C1/C1S3_Timbre.ipynb

Parameters
  • x (np.ndarray) – Signal (waveform) to be analyzed

  • win_len_sec (float) – Length (seconds) of the window (Default value = 0.01)

  • Fs (scalar) – Sampling rate (Default value = 4000)

Returns
  • env (np.ndarray) – Magnitude envelope

  • env_upper (np.ndarray) – Upper envelope

  • env_lower (np.ndarray) – Lower envelope

libfmp.c1.c1s3_audio_rep.compute_equal_loudness_contour(freq_min=30, freq_max=15000, num_points=100)[source]

Computation of the equal loudness contour

Notebook: C1/C1S3_Dynamics.ipynb

Parameters
  • freq_min (float) – Lowest frequency to be evaluated (Default value = 30)

  • freq_max (float) – Highest frequency to be evaluated (Default value = 15000)

  • num_points (int) – Number of evaluation points (Default value = 100)

Returns
  • equal_loudness_contour (np.ndarray) – Equal loudness contour (in dB)

  • freq_range (np.ndarray) – Evaluated frequency points

libfmp.c1.c1s3_audio_rep.compute_plot_envelope(x, win_len_sec, Fs, figsize=(6, 3), title='')[source]

Computation and subsequent plotting of a signal’s envelope

Notebook: C1/C1S3_Timbre.ipynb

Parameters
  • x (np.ndarray) – Signal (waveform) to be analyzed

  • win_len_sec (float) – Length (seconds) of the window

  • Fs (scalar) – Sampling rate

  • figsize (tuple) – Size of the figure (Default value = (6, 3))

  • title (str) – Title of the figure (Default value = ‘’)

Returns

fig (mpl.figure.Figure) – Generated figure

libfmp.c1.c1s3_audio_rep.compute_power_db(x, Fs, win_len_sec=0.1, power_ref=10 ** - 12)[source]

Computation of the signal power in dB

Notebook: C1/C1S3_Dynamics.ipynb

Parameters
  • x (np.ndarray) – Signal (waveform) to be analyzed

  • Fs (scalar) – Sampling rate

  • win_len_sec (float) – Length (seconds) of the window (Default value = 0.1)

  • power_ref (float) – Reference power level (0 dB) (Default value = 10**(-12))

Returns

power_db (np.ndarray) – Signal power in dB

libfmp.c1.c1s3_audio_rep.difference_cents(freq_1, freq_2)[source]

Difference between two frequency values specified in cents

Notebook: C1/C1S3_FrequencyPitch.ipynb

Parameters
  • freq_1 (float) – First frequency

  • freq_2 (float) – Second frequency

Returns

delta (float) – Difference in cents

libfmp.c1.c1s3_audio_rep.f_pitch(p)[source]

Compute center frequency for (single or array of) MIDI note numbers

Notebook: C1/C1S3_FrequencyPitch.ipynb

Parameters

p (float or np.ndarray) – MIDI note numbers

Returns

freq_center (float or np.ndarray) – Center frequency

libfmp.c1.c1s3_audio_rep.generate_chirp_exp(dur, freq_start, freq_end, Fs=22050)[source]

Generation chirp with exponential frequency increase

Notebook: C1/C1S3_Dynamics.ipynb

Parameters
  • dur (float) – Length (seconds) of the signal

  • freq_start (float) – Start frequency of the chirp

  • freq_end (float) – End frequency of the chirp

  • Fs (scalar) – Sampling rate (Default value = 22050)

Returns
  • x (np.ndarray) – Generated chirp signal

  • t (np.ndarray) – Time axis (in seconds)

  • freq (np.ndarray) – Instant frequency (in Hz)

libfmp.c1.c1s3_audio_rep.generate_chirp_exp_equal_loudness(dur, freq_start, freq_end, Fs=22050)[source]

Generation chirp with exponential frequency increase and equal loudness

Notebook: C1/C1S3_Dynamics.ipynb

Parameters
  • dur (float) – Length (seconds) of the signal

  • freq_start (float) – Starting frequency of the chirp

  • freq_end (float) – End frequency of the chirp

  • Fs (scalar) – Sampling rate (Default value = 22050)

Returns
  • x (np.ndarray) – Generated chirp signal

  • t (np.ndarray) – Time axis (in seconds)

  • freq (np.ndarray) – Instant frequency (in Hz)

  • intensity (np.ndarray) – Instant intensity of the signal

libfmp.c1.c1s3_audio_rep.generate_sinusoid(dur=5, Fs=1000, amp=1, freq=1, phase=0)[source]

Generation of sinusoid

Notebook: C1/C1S3_FrequencyPitch.ipynb

Parameters
  • dur (float) – Duration (in seconds) (Default value = 5)

  • Fs (scalar) – Sampling rate (Default value = 1000)

  • amp (float) – Amplitude of sinusoid (Default value = 1)

  • freq (float) – Frequency of sinusoid (Default value = 1)

  • phase (float) – Phase of sinusoid (Default value = 0)

Returns
  • x (np.ndarray) – Signal

  • t (np.ndarray) – Time axis (in seconds)

libfmp.c1.c1s3_audio_rep.generate_sinusoid_tremolo(dur=5, Fs=1000, amp=0.5, freq=440, trem_amp=0.1, trem_rate=5)[source]

Generation of a sinusoid signal with tremolo

Notebook: C1/C1S3_Timbre.ipynb

Parameters
  • dur (float) – Duration (in seconds) (Default value = 5)

  • Fs (scalar) – Sampling rate (Default value = 1000)

  • amp (float) – Amplitude of sinusoid (Default value = 0.5)

  • freq (float) – Frequency (Hz) of sinusoid (Default value = 440)

  • trem_amp (float) – Amplitude of the amplitude oscillation (Default value = 0.1)

  • trem_rate (float) – Rate (Hz) of the amplitude oscillation (Default value = 5)

Returns
  • x (np.ndarray) – Generated signal

  • t (np.ndarray) – Time axis (in seconds)

libfmp.c1.c1s3_audio_rep.generate_sinusoid_vibrato(dur=5, Fs=1000, amp=0.5, freq=440, vib_amp=1, vib_rate=5)[source]

Generation of a sinusoid signal with vibrato

Notebook: C1/C1S3_Timbre.ipynb

Parameters
  • dur (float) – Duration (in seconds) (Default value = 5)

  • Fs (scalar) – Sampling rate (Default value = 1000)

  • amp (float) – Amplitude of sinusoid (Default value = 0.5)

  • freq (float) – Frequency (Hz) of sinusoid (Default value = 440)

  • vib_amp (float) – Amplitude (Hz) of the frequency oscillation (Default value = 1)

  • vib_rate (float) – Rate (Hz) of the frequency oscillation (Default value = 5)

Returns
  • x (np.ndarray) – Generated signal

  • t (np.ndarray) – Time axis (in seconds)

libfmp.c1.c1s3_audio_rep.generate_tone(p=60, weight_harmonic=np.ones([16, 1]), Fs=11025, dur=2)[source]

Generation of a tone with harmonics

Notebook: C1/C1S3_Timbre.ipynb

Parameters
  • p (float) – MIDI pitch of the tone (Default value = 60)

  • weight_harmonic (np.ndarray) – Weights for the different harmonics (Default value = np.ones([16, 1])

  • Fs (scalar) – Sampling frequency (Default value = 11025)

  • dur (float) – Duration (seconds) of the signal (Default value = 2)

Returns
  • x (np.ndarray) – Generated signal

  • t (np.ndarray) – Time axis (in seconds)

libfmp.c1.c1s3_audio_rep.plot_spectrogram(x, Fs=11025, N=4096, H=2048, figsize=(4, 2))[source]

Computation and subsequent plotting of the spectrogram of a signal

Notebook: C1/C1S3_Timbre.ipynb

Parameters
  • x – Signal (waveform) to be analyzed

  • Fs – Sampling rate (Default value = 11025)

  • N – FFT length (Default value = 4096)

  • H – Hopsize (Default value = 2048)

  • figsize – Size of the figure (Default value = (4, 2))