import librosa.display
import mir_eval.display

"""
Explanation: &larr; Back to Index
Evaluation using mir_eval
mir_eval (documentation, paper) is a Python library containing evaluation functions for a variety of common audio and music processing tasks. 
mir_eval was primarily created by Colin Raffel. This notebook was created by Brian McFee and edited by Steve Tjoa.
Why mir_eval?
Most tasks in MIR are complicated. Evaluation is also complicated!
Any given task has many ways to evaluate a system. There is no one right away.
For example, here are issues to consider when choosing an evaluation method:

event matching
time padding
tolerance windows
vocabulary alignment

mir_eval tasks and submodules

onset, tempo, beat
chord, key
melody, multipitch
transcription
segment, hierarchy, pattern
separation (like bss_eval in Matlab)

Install mir_eval
pip install mir_eval

If that doesn't work:
pip install --no-deps mir_eval

More than metrics
mir_eval has tools for display and sonification.
End of explanation
"""


librosa.display.specshow(S, x_axis='time', y_axis='mel')
mir_eval.display.events(ref_beats, color='w', alpha=0.8, linewidth=3)
mir_eval.display.events(est_beats, color='c', alpha=0.8, linewidth=3, linestyle='--')

"""
Explanation: Common plots: events, labeled_intervals
pitch, multipitch, piano_roll
segments, hierarchy,
separation
Example: Events
End of explanation
"""


y_harm, y_perc = librosa.effects.hpss(y, margin=8)

plt.figure(figsize=(12, 4))
mir_eval.display.separation([y_perc, y_harm], sr, labels=['percussive', 'harmonic'])
plt.legend()

Audio(data=numpy.vstack([

mir_eval.sonify.chords()

"""
Explanation: Example: Labeled Intervals
Example: Source Separation
End of explanation
"""


