Piero V.

Plugin Local Cover Art [Picard]

È da quasi due anni che uso Music Brainz Picard, il programma di cui avevo già parlato che serve per taggare in automatico e con precisione la musica.

Già allora mi ero lamentato della mancanza del supporto delle copertine, cosa che, per chi ha un iPod Touch, è insopportabile.

All’inizio ho usato il plugin Cover Art Downloader, solo che il risultato non era del tutto soddisfacente: infatti il plugin non poteva distinguere le copertine belle da quelle meno.

La mia soluzione al problema allora è stata scaricare le copertine da Google immagini e inserirle con un altro programma: EasyTag. Come software quest’ultimo non è affatto male, però io continuavo a usare comunque Picard, perché più veloce, immediato e preciso e dover usare due programmi mi risultava scomodo.

Così oggi ho cambiato ancora le mie abitudini: per Picard è possibile scrivere plugin in python, linguaggio che mi piaciucchia, così ho scritto un plugin per fare da solo ciò che prima dovevo fare io, cioè cercare un’immagine chiamata Front.png o Front.jpg nella cartella dell’album e poi aggiungerla.

Non è stato proprio immediato da fare perché non conoscevo bene le API di MusicBrainz e il plugin da cui sono partito (Cover Art Downloader, di Oliver Charles e Philipp Wolfer) non andava più bene con la versione di Picard/Python della mia Debian Unstable.

Se avete voglia di provarlo, il file è localcoverart.py.

Va installato come tutti gli altri plugin del programma.

Per la licenza, fin quando non scoprirò quella del plugin originale è Creative Commons 3.0 con obbligo di Attribuzione: potete farne quel che volete, fino a quando io, Oliver Charles e Philipp Wolfer (gli autori del plugin da cui ho preso spunto) saremo riconosciuti come gli autori originali del plugin.

Transparents thumbs [Flatpress]

English

I’ve added some code to thumb plugin that allows the get transparent thumbs with GIFs and PNGs files.

I’ve taken this code from a comment of the imagecopyresampled PHP function.

Open fp-plugins/thumb/plugin.thumb.php with a text editor and replace:

	$scaled = imagecreatetruecolor($new_width, $new_height);
	imagecopyresampled($scaled, $image, 0, 0, 0, 0, $new_width, $new_height, $infos[0], $infos[1]);

with

	$scaled = imagecreatetruecolor($new_width, $new_height);

	/*
	 * If gif or png preserve the alpha channel
	 *
	 * Added by Piero VDFN
	 * Kudos to http://www.php.net/manual/en/function.imagecopyresampled.php#104028
	 */
	if($infos[2]==1 || $infos[2]==3) {
		imagecolortransparent($scaled, imagecolorallocatealpha($scaled, 0, 0, 0, 127));
		imagealphablending($scaled, false);
		imagesavealpha($scaled, true);
		$output=$infos[2]==3 ? 'png' : 'gif';
	} else {
		$output='jpg';
	}

	imagecopyresampled($scaled, $image, 0, 0, 0, 0, $new_width, $new_height, $infos[0], $infos[1]);

Now, replace some lines belove imagejpeg($scaled, $thumbpath); with: … [Leggi il resto]

Piccole soddisfazioni

Dopo che da un bel po’ di tempo Telecom mi aveva abbassato la velocità a circa 400KiB/s, oggi mi sono preso una bella soddisfazione!

velocita_aumentata.png

La cosa migliore è che non avevo mai avuto quella velocità prima.

Morale della favola: ogni tanto anziché abbassare alzano.

Mini mixer: prima fase completata

Sono felice di dire che la prima fase del mio mini mixer è completa!

Attualmente sembra funzionare, ho provato con un riproduttore mp3 scrauso, la mia chitarra e un microfono. Il tutto volante, compresa alimentazione (che ho “rubato” momentaneamente ai miei effetti della chitarra).

Il tutto più o meno è in questo stato qua: (scusate per la foto fatta velocemente con il cellulare):

001.jpg

La prossima fase sarà quella dell’alimentazione fatta da me (se vedete il trasformatore non è ancora collegato) e collegare l’output ad un vecchio amplificatore da automobile che collegherò a due casse.

Come resa sonora non sarà certamente eccezionale, ma a me non interessa più di tanto, volevo semplicemente provare a recuperare quel vecchio amplificatore e farmi un mini mixer.

Comunque, visto che si occupa dell’ingresso della chitarra, ho provato velocemente anche il famoso amplificatore Ruby di runoffgroove/Noisy Cricket di beavis ed è fenomenale.

In un futuro potrei quasi quasi costruirmelo per usarlo da solo come amplificatore portatile o da cuffia.

Inoltre all’inizio della scorsa settimana ho anche lavorato un po’ sull’Arduino: i circuiti per fare i test sono pronti, mentre l’Arduino ha ancora bisogno di un po’ di lavoro: la PCB è già stata incisa, la devo forare, dopodiché potrò mettere i componenti. Comunque mi manca ancora l’ATMega che è il suo cuore e il quarzo (al negozio erano finiti).

WebSocket

Grazie al changelog di Firefox 6 (uscito oggi) ho scoperto questa funzionalità di Javascript, che ovviamente, come tutte le più belle funzionalità, saranno in HTML 5, ma intanto i browser si stanno preparando.

La funzionalità di cui voglio parlare è la “websocket”.

Generalmente, quando si parla di socket in informatica si parla di una connessione tra un server e un client. Anche i normali protocolli che siamo abituati a usare utilizzano delle socket: per esempio quando si visita una pagina web, si apre una socket con un server, ma questa connessione viene subito chiusa dopo che il server ha inviato il contenuto della pagina.

In una web-socket invece la connessione rimane aperta, in attesa che una delle due parti la chiuda, e intanto si possono inviare dati.

Una delle applicazioni che potrebbero sfruttare questa caratteristica è senza dubbio la chat.

Si potrebbe mettere il server in ascolto di nuovi messaggi che poi sono inviati subito al client, anziché sfruttare continue richieste AJAX.

Un giorno magari potrei provare a fare dei test con una chat “ibrida”: le websocket saranno preferite, ma in caso il browser non le supporti, si va di AJAX.