Ultimamente il tempo che posso dedicare a sperimentare e in generale nerdare è abbastanza poco, però potrò, come si suol dire, unire l’utile al dilettevole.
Infatti dovrò realizzare un progetto in C per un corso all’Università, quindi ho deciso di realizzare un’idea che mi era venuta abbastanza tempo fa, ma che avevo sempre lasciato stare: scrivere un software in grado di riconoscere che nota è stata suonata a partire dall’audio della chitarra, in realtime, quindi visualizzarlo e magari poter esportare la tablatura.
Ancora non so quante feature riuscirò/avrò tempo per implementare. Probabilmente sarà in grado di riconoscere solo note singole, in quanto gli algoritmi che permettono di riconoscere toni di una frequenza singola (comprese le armoniche, eventualmente) sono diversi da quelli che permettono il riconoscimento di accordi.
Come moduli comprenderà sicuramente un’interfaccia con la scheda audio, probabilmente basato su Libsoundio, oppure, in alternativa, su PortAudio.
L’altro modulo sarà il riconoscimento della frequenza fondamentale. Ci sono diverse soluzioni, perlopiù basate sulla trasformata di Fourier e sull’autocorrelazione. Sul secondo metodo ho già trovato un’implementazione abbastanza semplice, pulita e comprensibile.
Questi due dovrò farli per forza, poi probabilmente dovrò implementare anche il riconoscimento della corda che è stata suonata.
È la prima volta che mi capita di scrivere un software documentandomi nella letteratura scientifica, usando, ad esempio, dei paper pubblicati dall’IEEE, finora mi ero basato perlopiù sulla documentazione delle varie librerie e su articoli vari trovati nel web.
In realtà è proprio la prima volta che mi avvicino al mondo del signal processing e mi sembra che effettivamente senza aver avuto dei corsi in cui si insegna almeno la base della teoria che ci sta dietro sia un argomento di accessibilità più ristretta.
In ogni caso spero di riuscire a portare a termine il progetto senza troppe difficoltà e magari una volta consegnato e fatto l’esame potrò pubblicare qualcosa su GitHub 😊 .