Se realiza el conteo de cada tecla de un intrumento para una canción desde un archivo.midi
# Pmf de notas de un intrumento # desde archivo midi import numpy as np import matplotlib.pyplot as plt import mido as md # INGRESO archivomid = 'el_aguacate.mid' # instrumento canal = 'channel=3' # para pmf tramos = 100 # PROCEDIMIENTO # Abre archivo midi partitura = md.MidiFile(archivomid) # un instrumento, tabla de notas transcurrido = 0 deltat = 0 accion = 'note_on' tabla = [] for dato in partitura: linea = str(dato) parte = linea.split(' ') if (parte[0]==accion): valor = parte[4].split('=') tiempo = float(valor[1]) transcurrido = transcurrido + tiempo deltat = deltat+tiempo if (parte[1]==canal): valor = parte[2].split('=') nota = int(valor[1]) valor = parte[3].split('=') velocidad = int(valor[1]) tabla.append([nota, velocidad, tiempo, deltat]) deltat=0 tabla = np.array(tabla) m = len(tabla) notas = tabla[:,0] x, cuenta = np.unique(notas, return_counts=True) print(x) print(cuenta) frelativa = cuenta/np.sum(cuenta) acumulada = np.cumsum(frelativa) deltax = 1 # GRAFICAS plt.subplot(211) plt.bar(x,frelativa, width=deltax*0.8, align='edge') plt.title('notas, '+ archivomid + ' , ' + canal) plt.ylabel('pmf') plt.subplot(212) plt.plot(x,acumulada,'m') plt.ylabel('cdf') plt.show()