| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung |
| interval-histogram [2021/04/07 17:14] – egor | interval-histogram [2025/12/04 21:08] (aktuell) – Externe Bearbeitung 127.0.0.1 |
|---|
| {{:wiki:interval-histogram-bsp4.png?650|}} | {{:wiki:interval-histogram-bsp4.png?650|}} |
| |
| Wie man sieht, berücksichtigt dieses Modul nicht die jeweiligen Notenwiederholungen (Unison fehlt komplett als ein Wert). Will man die Tonwiederholungen für die Analyse berücksichtigen, muss man [[http://web.mit.edu/music21/doc/moduleReference/moduleAnalysisSegmentByRests.html#music21.analysis.segmentByRests.Segmenter.getIntervalList|music21.analysis.segmentByRests.Segmenter.getIntervalList]] Modul verwenden: | Wie man sieht, werden bei den Ergebnissen nicht die jeweiligen Notenwiederholungen (Unison fehlt komplett als ein Wert) berücksichtigt (sehe T.5, T. 6, T.9 in Notenbeispiel) . Will man die Tonwiederholungen in die Analyse aufnehmen, muss man [[http://web.mit.edu/music21/doc/moduleReference/moduleAnalysisSegmentByRests.html#music21.analysis.segmentByRests.Segmenter.getIntervalList|music21.analysis.segmentByRests.Segmenter.getIntervalList]] Modul verwenden: |
| | |
| | <code>intList = analysis.segmentByRests.Segmenter.getIntervalList(beispiel) |
| | |
| | [x.name for x in intList]</code> |
| | |
| | {{:wiki:interval-histogram-bsp5.png?500|}} |
| | |
| | Als Ergebnis bekommen wir die Auflistung aller Intervalle entsprechend ihrer Reihenfolge im untersuchten Beispiel. Diese Liste kann nun mit Python Modul [[https://docs.python.org/3/library/collections.html#collections.Counter|collections.Counter]] geordnet werden: |
| | |
| | <code>import collections |
| | |
| | values = ['M2', 'M2', 'M2', 'M2', 'm3', 'm3', 'M2', 'M2', 'M3', 'M3', 'M2', 'm3', 'M2', 'm3', 'M2', 'P1', 'P4', 'M2', 'P4', 'M2', 'M2', 'P1', 'M3', 'M2', 'M2', 'M3', 'm2', 'M2', 'M2', 'M2', 'P1', 'P1', 'P1', 'P1', 'm2', 'm2'] |
| | counter=collections.Counter(values) |
| | print(counter.most_common())</code> |
| | |
| | {{:wiki:interval-histogram-bsp6.png?550|}} |
| | |
| | Diese Daten können nun durch ein Histogramm in Matplotlib und NumPy visualisiert werden: |
| | |
| | <code>import matplotlib.pyplot as plt |
| | import numpy as np |
| | |
| | fig, ax = plt.subplots() |
| | note = ('P1', 'm2', 'M2', 'm3', 'M3', 'P4', 'd5', 'P5', 'm6', 'M6', 'm7', 'M7') |
| | x_pos = np.arange(len(note)) |
| | values = (6, 3, 17, 4, 4, 2, 0, 0, 0, 0, 0, 0) |
| | ax.bar(x_pos, values, align='center', |
| | color='salmon', ecolor='black') |
| | ax.set_xticks(x_pos) |
| | ax.set_xticklabels(note) |
| | ax.set_title('Interval Histogram') |
| | plt.show()</code> |
| | |
| | {{:wiki:interval-histogram-bsp7.png?600|}} |