venerdì 9 dicembre 2011

Dal file allo spartito

Ricavare uno spartito da un normale file musicale wav o mp3, superando i problemi di reperibilità delle partiture fuori catalogo, così come si fa per i testi scritti utilizzando un OCR o un sistema di dettatura vocale, è una cosa fattibile?
In teoria sì, visto che esistono in commercio (e a volte anche distribuiti gratuitamente) diverse applicazioni che lo promettono. Ma proviamo cosa riescono a fare in pratica.
Lo spunto viene dalle richieste frequenti che arrivano a Musica & Memoria di spartiti difficili da trovare, richieste generate involontariamente dalla sezione presente da anni sul sito con le copertine di molti spartiti degli anni '60. Ma senza gli spartiti veri e propri, che sono materiale sotto copyright, come noto.


I file Midi
Cominciamo subito col dire che il punto di partenza ideale per generare uno spartito potrebbe essere un file Midi (Musical Instrument Digital Interface) il linguaggio di notazione musicale gestibile da computer sviluppato negli anni '80 e tuttora in uso. Il Midi nasce per codificare eventi musicali (tipo pigiare un tasto di pianoforte per emettere una nota), registrarli su file, e poi ritrasmetterli ad uno strumento musicale dotato di interfaccia Midi (tutti quelli elettronici o quasi) che risponderà al comando emettendo quella nota, quell'accordo, quella frase musicale. Il linguaggio (o codice) Midi deve quindi includere le notazioni musicali in uso, o almeno la maggior parte di esse.
Non mi metto qui a fare approfondimenti sullo standard Midi, su Wikipedia ci sono ampie ed esaurienti voci su questo argomento, anche in italiano.

Il bello dei file Midi è che ce ne sono tanti in rete, e può darsi che il brano o la composizione musicale dalla quale vorremmo ricavare lo spartito ci sia già. A questo punto basterebbe una applicazione che converta il file Midi nella notazione musicale comune, su pentagramma, e avremmo ottenuto il risultato. Potrebbe essere anche una valida applicazione open source come MuseScore, che include un editor Midi.

Prima prova con Mozart
Proviamo a vedere se è veramente così facile. Reperiamo su Internet un file Midi di una composizione di cui abbiamo lo spartito, ovviamente, per verificare se si ottiene effettivamente qualcosa di usabile. Il Midi nasceva per le tastiere, non per gli ensemble di più strumenti (anche se poi è stato esteso), magari con sezione ritmica su una linea diversa, quindi riduciamo la complessità della prova usando per cominciare un brano per solo pianoforte e di un compositore che non utilizzava di solito forme musicali elaborate: Mozart.
La scelta è caduta su una sonata giovanile per pianoforte, la K330 in Do maggiore, e sul secondo movimento "Andante cantabile".

Non resta che aprire il file Midi con MuseScore e vedere se quello che viene mostrato coincide con lo spartito di questa composizione. Per confronto usiamo anche un altro software specializzato, a pagamento in questo caso, che si chiama Notation Musician e che in diverse review su Internet era giudicato il migliore nel suo campo.
Ecco la notazione secondo MuseScore, per le prime battute:

Ed ecco lo spartito come l'aveva scritto Mozart oltre due secoli fa, per le prime 10 battute.

La tonalità e il tempo sono corretti, sono sparite alcune indicazioni di espressione (lo staccato per le prime 3 crome) ma soprattutto in alcuni casi c'è una suddivisione ulteriore delle note, nella prima e nella settima battuta compaiono semicrome, biscrome e semibiscrome che nella partitura originale non c'erano. Più diverse altre piccole differenze di notazione, che spesso dipendono però dal fatto che si possono usare notazioni alternative (come per esempio la chiave di violino usata al posto della più comune chiave di basso per la mano sinistra, nella partitura originale).

Sembra quindi che anche partendo da qualcosa già codificato per computer ci possano essere incertezza nel trasferimento. Forse dipende da MuseScore che è comunque un software open source. proviamo Notation Musician.

La notazione sembra un poco più precisa, ma rimane la moltiplicazione e la variazione di altezza delle note osservata prima.


C'è qualcosa che non va
Le due notazioni ricavate via software sembrano diverse dallo spartito originale. Non è una alterazione completa del tema musicale, e ascoltandolo di nuov,o traslato in midi da MuseScore o Notation Musician si riconosce ancora la melodia di Mozart, ma evidentemente non abbiamo generato uno spartito usabile, che possa sostituire quello originale.
Anzi ascoltando al confronto il file Midi e la notazione dal Midi editor non sembrano esserci  differenze, forse il problema è nel file Midi di origine.


Il file Midi
Il problema potrebbe essere quindi nel file Midi che abbiamo trovato in rete, probabilmente non era esatto, non riproduceva correttamente la sonata di Mozart. D'altra parte un file Midi come si può realizzare? In tre modi:


  • riportando la partitura su un editor musicale e generando il file;
  • suonando il brano con una tastiera collegata ad una interfaccia Midi e un software di registrazione Midi, una funzione che può fare anche GarageBand sui Mac;
  • utilizzando un software che riconosce la struttura musicale da un brano registrato in digitale (Wav, Mp3 ecc.).
I due primi sistemi sono piuttosto impegnativi e dubito che i file Midi che girano in rete siano stati realizzati così. Più probabile che si usino i prodotti software creati allo scopo. Che sono una via di mezzo tra i sistemi di riconoscimento vocale (tipo Dragon) e gli OCR.

Per riuscire a a capire cosa succede usiamo il vecchio sistema di ridurre al minimo le variabili. Questa volta riproviamo con un brano ancora più semplice, elementare, infatti è uno degli Elementary Pieces di Bela Bartok. Per evitare ogni dubbio su come è stato creato il file MIDI lo creiamo noi. Con il primo metodo, che è sicuramente l'unico esente da errori.



Secondo tentativo
Inserita la partitura con MuseScore (sono poche battute) una delle funzioni dell'editor, oltre suonare il brano, è proprio quella di generare il corrispondente file Midi.
Riportiamo la partitura su MuseScore e vediamo se almeno è coerente con sé stesso. La partitura stampata da MuseScore è riportata sotto. Come si vede è veramente semplice.

Ed ecco lo stesso breve brano musicale dopo la doppia conversione Midi > Notazione.

Sembra diverso, ma è solo una scelta di notazione. Nella partitura originale la nota allungata di 1/2 nella seconda battuta è indicata con un punto, nella partitura ricavata invece è indicata con una semicroma legata alla croma precedente. Il risultato è lo stesso, spesso nella notazione musicale si usano modalità di scrittura alternative.


La conversione da un file musicale
Sembra quindi più probabile, come c'era da attendersi, che le differenze notate dipendano dal file Midi originale, e in particolare dalla esecuzione da cui è stato tratto. Il pianista probabilmente (e mi pare anche di sentirlo ascoltando a confronto altre esecuzioni) ha introdotto altre note di abbellimento. Non resta che riprovare tutto il processo con questo esempio musicale molto semplice. Come anticipato, ci serve un convertitore dal file musicale (che è una sequenza di suoni campionati) alla struttura della frase musicale, usando come codice per descriverla lo standard Midi. Di software che fanno questo mestiere ce ne sono diversi.

Cercando in rete quelli con recensioni più favorevoli scegliamo IntelliScore. Non è gratuito, in generale sono tutti a pagamento perché sicuramente la loro progettazione non è semplice, ma la versione demo può interpretare brani fino a 30", che è il nostro caso.

Utilizzandolo vediamo che l'uso non è per tutti. Richiede una buona conoscenza della teoria musicale. La cosa non è sorprendente, anche per usare un OCR è necessario saper leggere e pure conoscere la lingua nella quale è scritto il testo, altrimenti non si potranno eseguire le verifiche in post produzione.

Qui in più bisogna anche intervenire su alcuni elementi del brano che il software comunque cerca di individuare da solo, a partire dalla tonalità e dalla misura. Per rendere più efficace la conversione però è possibile inizializzare i parametri, se già conosciamo questi valori base.
Dopodichè il software procederà ad individuare le note, i relativi valori, gli accordi e così via.
I Little Piano Pieces di Bartok sono stati pubblicati anche su  CD, che ovviamente ho, nelle esecuzione del pianista Gyorgi Sandor (per questo ho scelto questo brano) e quindi il secondo test consisteva semplicemente nel far convertire da IntelliScore questo brano, trasferito in precedenza in Wav, nel formato Midi.

Dopodichè ho "aperto" il Midi con un editor Midi, nello specifico Notation Musician, e il risultato è quello che si vede sotto.

Sembra a prima vista un'altra cosa, ma in realtà la principale differenza è che nello spartito originale si usavano solo note di valore (durata) pari a 1/2 (minime) e 1/4 (semiminime) mentre nella notazione ricavata sono usate al loro posto note di lunghezza dimezzata: semiminime e crome. Poiché la lunghezza di una nota è relativa il tema musicale non cambia. Dipende probabilmente dalla impostazione iniziale ed è correggibile. In realtà ho provato anche a impostare il tempo (beat) previsto da Bartok (96) senza riottenere il risultato original. Dovrei studiare più approfonditamente questo software.

Le differenze però più evidenti sono altre, e risiedono nella variazione nella durata delle note e nella presenza di pause non previste. Nello spartito ricavato oltre che i due valori di base compaiono anche  semicrome (1/8) e minime (1/2). E in alcune battute (4, 5) ci sono delle pause in più.


Tentativo di analisi
Cosa è successo quindi? Questi software non funzionano? No. Facendo riferimento ad una esperienza che tutti hanno fatto, il trasferimento di un documento non stampato su file via OCR, qui siamo in una situazione analoga.
Le pause e le variazioni di durata corrispondono a piccole variazioni, introdotte dal pianista, che non è una macchina come il software che genera il Midi e che abbiamo usato prima (ed è questo che  rende la musica piena e gradevole all'ascolto). Il software di riconoscimento può agire solo per soglie di durata e di altezza (frequenza), se una nota è tenuta appena più a lungo di un'altra potrebbe essere interpretata come di valore doppio, se supera la soglia.

E' da considerare poi che la notazione musicale è approssimata, non fornisce indicazioni su tutto quello che è necessario per suonare la musica. Basti pensare al volume di ogni singola nota.

Così come con l'OCR è necessario quindi un lavoro di editing a posteriori, che elimini questi artefatti e ripulisca la notazione musicale portandola all'originale, anche in questo caso sarebbe necessaria una operazione del genere. Che, nell'esempio fatto, riporti ad esempio tutte le note ai due valori centrali,
Un lavoro che è magari lungo ma facile (sempre per chi conosce la musica) se si ha lo spartito a confronto, come è facile nell'OCR potendo confrontare il documento originale.
E' assai più difficile, ma possibile per chi conosce bene la teoria musicale, se lo spartito non c'è. Ad esempio, per questo brano, sapendo che l'intenzione di Bartok era di creare pezzi elementari usando un minimo degli elementi musicali a disposizione.

Quindi in sintesi partire da una musica registrata per recuperare da essa la notazione musicale mediante strumenti automatici è possibile, ma richiede una buona competenza musicale e parecchio tempo per il lavoro di editing (quelli proposti sono esempi semplicissimi o semplici). Non è sicuramente un compito che il software fa per noi, risparmiandoci ogni sforzo, ma casomai un ausilio per ridurre questo sforzo. Proprio come potrebbe essere un OCR per il trasferimento su file di testi stampati: più veloce del trasferimento a mano, ma con un lavoro di post elaborazione che diventa via più impegnativo quando i testi hanno anomalie di stampa o complessità proprie (formattazioni, parole non conosciute, ecc.).

Se qualcuno ha avuto risultati più "automatici" con altri prodotti ce lo faccia sapere.

4 commenti:

  1. Uao che splendido articolo! Molto interessante per il mio temuccio a scuola grazie!

    RispondiElimina
  2. Anonimo16/1/13

    sono alle prove e sono disperato,vemgono tanto deca ntati ma in realtà è solo una perdita di tempo.Io conosco un pò la musica ma sis ta meno ad inserirla a mano.

    RispondiElimina
  3. Cavoli! Ho un brano bellissimo che vorrei imparare a suonare al pianoforte ma non esiste lo spartito!!!! Interessante!!!! ;-)

    RispondiElimina
  4. Sebbene la tecnologica ci venga in aiuto, sarà solo quando questa diverrà trasparente che potremo permetterci il lusso di smettere di imparare.
    Articolo chiaro e scritto bene, complimenti!

    RispondiElimina