0
Giu 26 2017

Guitar Biro

Tempo fa, avevo annunciato di voler creare un auto tabulatore per la chitarra.

È passato un po’ di tempo, però alla fine qualcosa ho fatto, e ne è uscito un bel proof of concept.

Come algoritmo alla fine ho scelto l’auto correlazione, quindi un’analisi nel dominio del tempo. Avevo fatto delle prove con la trasformata di Fourier, ma ottenevo dei risultati effettivamente peggiori, come riportato anche su degli studi su IEEEXplore e su vari siti. Inoltre per Fourier in C esistono delle librerie ma sono più difficili da usare dell’autocorrelazione.

L’autocorrelazione permetterebbe anche di determinare il punto su cui la nota è stata suonata, cosa che con l’assunzione che si suoni più o meno sopra i pickup, permetterebbe anche di trovare in quale corda è stata suonata la nota. Però questa è un’assunzione forte e spesso c’erano risultati non proprio corretti.

Quindi ho preferito mostrare tutte le posizioni in cui una nota può essere suonata e non consente di salvare i risultati ottenuti.

Mi spiace dover rilasciare sotto la GNU GPL v3, rilascerei volentieri sotto una licenza più leggera, come la MIT, però ho usato RSVG (da GNOME) per mostrare l’immagine del manico della chitarra. Se qualcuno riuscisse a togliere questa dipendenza potrebbe considerare tranquillamente il codice rilasciato sotto licenza MIT, e magari potrebbe farmi un pull su GitHub :-) .

Il software è stato scritto senza prediligere una piattaforma, però per il momento l’ho testato solo su Debian.

Inoltre mancano numerose funzionalità, una su tutte la possibilità di scegliere l’accordatura dello strumento, sebbene io l’abbia realizzata in modo parametrico.

Detto tutto ciò, su GitHub potete trovare tutto il codice sorgente.

Invece in esclusiva per il sito, pubblico la relazione sul progeto per l’esame.

0
Apr 20 2017

Nuovo progetto: auto tablatore per chitarra

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… [Leggi il resto...]

0
Set 30 2016

Unity

Unity è un game engine che può creare contenuti per un gran numero di piattaforme: dal classico computer, agli smartphone, alle console di videogiochi.

Contrariamente al mio solito, ho provato questo pacchetto che, pur potendo creare contenuti per Linux, non è disponibile per questo OS, né è software libero.

Tuttavia ho deciso di provarlo perché è estremamente diffuso ed è sempre ben lodato e finalmente ne ho capito il motivo.

Essenzialmente Unity rende estremamente facile e soprattutto veloce la creazione di un gioco: anziché focalizzarsi sulla stesura del codice, si concentra sulla creazione dei livelli di gioco su un editor grafico. Quindi le varie entità, tra cui ad esempio le mesh, vengono create direttamente lì, poi, seguendo un design molto modulare, si possono abilitare diversi comportamenti, che vanno dalla fisica all’emissione di luci e audio. Soprattutto si possono associare degli script C#, che alla fine sono solitamente delle classi che implementano alcuni metodi prefissati.

Per il momento ho seguito un paio di tutorial, e risultati sono stati estremamente soddisfacenti. In un’ora si riesce a fare ciò che un motore più tradizionale, basato tutto sulla stesura di codice richiederebbe almeno un giorno, se non due.

La cosa più simile che io abbia usato finora è Blender Game, ma Unity come vantaggio ha che è più facile da usare. Uno svantaggio è che Unity è più pesante sia come installazione, che come grandezza del gioco creato.

Non escludo che magari in futuro io non arrivi magari a rilasciare anche qualcosa fatto con questo engine, anche perché tra velocità d’uso e semplicità rende possibile anche pensare di completare un gioco anche a una persona da sola.

2
Lug 23 2016

Perché evitare Ephesoft Community

Ephesoft è un software che afferma di essere il miglior strumento di automatizzazione dell’acquisizione dei dati.

È una piattaforma web che gestisce le scansioni: è in grado di riconoscere i documenti, li divide automaticamente, li categorizza, ed estrae automaticamente le loro informazioni.

Fondamentalmente si basa su un motore OCR, con cui ricostruisce i testi e li confronta, tramite Apache Lucene, con dei modelli impostati dall’amministratore di sistema.

Viene distribuito in diverse versioni, tra cui una “community”, rilasciata sotto GNU Afferro GPL, che ho provato, ma non mi ha per nulla convinto.

In breve, questa versione è quasi del tutto priva di documentazione, non è aggiornata e sembra che il suo unico scopo, più che far provare il prodotto o rappresentare una soluzione per degli “smanettoni interessati all’argomento” 1, sia di far passare alle versioni a pagamento.

Tuttavia, se la versione a pagamento soffre degli stessi problemi di quella gratuita, allora più che avvicinare al prodotto commerciale, ha l’esito opposto.

Installazione

La documentazione di Ephesoft Community è estremamente scarna, nonché piena di link morti.

Per prima cosa mancano i requisiti di… [Leggi il resto...]

0
Lug 17 2016

Firejail

Una delle grandissime caratteristiche del software libero è che i rischi per sicurezza e privacy sono esposti agli occhi di tutti.

Quindi personalmente mi fido molto del software proveniente dal repo main di Debian, invece non mi fido di software proprietari di terze parti, per esempio di Spotify.

Avevo già cercato di mettergli una sandbox attraverso i container, però non è una soluzione pratica per questo genere di problema: si perde l’integrazione con l’ambiente desktop (notifiche, tasti multimediali…) e la soluzione è parecchio pesante, infatti serve che ci siano comunque tutte le dipendenze in un piccolo sistema operativo.

Recentemente invece ho sentito parlare di firejail, un programma che permette di isolare dei programmi mediante alcune funzionalità del kernel Linux, come i namespace.

Per ogni applicazione che si vuol far girare ha bisogno di un profilo, in cui si fa una whitelist e una blacklist di file e altre risorse cui essa può o non può accedere. È addirittura capace di bloccare le richieste a programmi come su e sudo.

È veramente rassicurante vedere che di default blocca subito l’accesso completo a file critici per la sicurezza come la cartella .ssh o ai… [Leggi il resto...]