Beide Seiten der vorigen Revision
Vorhergehende Überarbeitung
Nächste Überarbeitung
|
Vorhergehende Überarbeitung
|
interval-histogram [2021/04/07 17:14] egor |
interval-histogram [2021/04/08 10:17] (aktuell) egor |
{{: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|}} |