Quanti tasti sono sufficienti per suonare il pianoforte?  |  di Dmitrii Eliuseev |  Dicembre 2023

 | Intelligenza-Artificiale

Trovare una risposta con Python, MIDI e Matplotlib

Foto realizzata da Cedrik Malabanan, Unsplash

Imparare a suonare il pianoforte è un processo impegnativo e divertente, ma ogni principiante avrà un dilemma: che tipo di strumento acquistare? La scelta sul mercato è ampia, dai piccoli strumenti da due ottave come nella foto sopra alle tastiere di dimensioni standard da 70 kg in un cabinet di legno. Da un lato, avere chiavi in ​​più non farà mai male; d’altra parte, c’è sempre un compromesso tra dimensioni, peso e prezzo.

Ovviamente, uno dei modi è semplicemente chiedere a un insegnante cosa può consigliare, ma forse la maggior parte dei musicisti non ha mai pensato alla musica da quella prospettiva. Esiste un modo più quantitativo per trovare una risposta? In realtà la risposta è sì; possiamo facilmente creare una distribuzione di note musicali usando Python.

Questo tutorial può essere utile per i principianti nella scienza dei dati; non richiede calcoli o librerie complesse e i risultati sono facili da interpretare. Può essere utile anche per chi vuole imparare a suonare ma non ha ancora deciso che tipo di strumento acquistare.

Entriamo nel vivo!

Fonte di dati

Per l’analisi dei dati, utilizzerò MIDI File. È un formato piuttosto vecchio; la prima specifica MIDI (Musical Instrument Digital Interface) è stata pubblicata nel 1983. La caratteristica fondamentale dei file MIDI è che memorizzano la musica non come audio grezzo ma nella forma di notazione “originale”. Ogni registrazione in un file midi contiene il tipo di strumento, l’intonazione, il tempo e altri parametri. Ad esempio, posso aprire un file Bagatelle in do minore scritto da Beethoven in forma gratuita MuseScore applicazione e vedi qualcosa di simile a questo:

Editor di MuseScore, schermata dell’autore

Apriamo lo stesso file in Python e scarichiamo il suo contenuto:

import mido  # pip3 install mido

mid = mido.MidiFile("Beethoven/Bagatelle.mid", clip=True)
for ind, track in enumerate(mid.tracks):
print(f"Track {ind}")
for item in track(:10):
print(item)

L’output è simile al seguente (un file completo è più lungo; qui stampo solo le prime righe di ciascuna traccia):

Fonte: towardsdatascience.com

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *