Piero V.

TuxGuitar

Oggi volevo parlarvi di questo software: TuxGuitar.

È un editor di tablature libero (rilasciato sotto la licenza LGPL v2.1), una specie di clone aperto di Guitar Pro, infatti è compatibile con i suoi formati, anche se gli manca qualche funzionalità.

È scritto in java perciò è multi piattaforma.

È utilissimo ai chitarristi per impararsi le parti difficili, come gli assoli.

Su Windows mi pare funzioni al primo colpo, mentre su Linux c’è bisogno di Timidity (almeno su Debian e Ubuntu).

Comunque vi consiglio anche il sito Songsterr che funziona in modo simile solo che vi dà un player online che usa flash.

Lì le tablature sono fatte molto bene e in realtà sono in formato GP4 (Guitar Pro 4, supportato bene anche da TuxGuitar) e voi le scaricate inconsciamente e le mettete in RAM.

Comunque esisterebbe un modo per scaricarle: se monitorate le richieste vi accorgerete dell’indirizzo del file GP4 che sarebbe scaricabile (non c’è alcun controllo sullo User-Agent, almeno con Iceweasel 4.0.1 va alla grande) tuttavia devo invitarvi a non farlo perché è contro i TOS di Songsterr e potenzialmente illegale.

Spero di poterla dire quest’ultima informazione, altrimenti mi linciano 😊

PHP: implode considerando anche le chiavi

Ogni tanto in PHP c’è il bisogno di unire gli array considerando anche le chiavi, così ho scritto questa funzione.

In realtà è banale ma ogni volta che comincio un progetto sono costretto a riscrivermela, così la scrivo qui.

/**
 * Mette insieme gli elementi di un array in una stringa considerando
 * anche le chiavi.
 *
 * @param string $glueval: stringa per unire chiave e valore
 * @param string $gluekey: stringa per unire le coppie
 * @param array $array: L'array da unire
 * @return string: L'array unito
 *
 * @author: Piero VDFN
 * @license: Public Domain
 */
function implode_keys($glueval, $gluekey, $array) {
	if(count($array)==0) {
		return '';
	}
	$r='';
	foreach($array as $key=>$val) {
		$r.=$key.$glueval.$val.$gluekey;
	}
	$r=substr($r, 0, -strlen($gluekey));
	return $r;
}

Questa funzione è utilissima per unire le variabili GET da mettere in un indirizzo partendo da un array.

Cosa sono gli hook

Spesso quando parlo dello sviluppo dei plugin di Flatoress o in generale dello sviluppo di un sito web dico sempre qualcosa riguardante gli hook, che però non sono un concetto noto a tutti, perciò ho deciso di fare questo post di spiegazione.

Innanzitutto un programma o uno script possono essere divisi in blocchi (più o meno grandi), come inizializzazione, preparazione del contenuto, output del contenuto, chiusura delle risorse utilizzate (connessioni al database etc…).

Lo scopo degli hook è di poter inserire dinamicamente una porzione di codice (per esempio una funzione) in questi blocchi, infatti hook in italiano vuol dire gancio. Talvolta gli hook possono anche sostituire i comportamenti di default di un programma.

Gli hook sono praticamente ciò che rende un programma estendibile.

Per esempio grazie agli hook si può commutare da un sistema di indirizzi che si basa su variabili GET ad un sistema di indirizzi basato sul mod_rewrite più SEO-compatibile: si inserisce una funzione che all’inizializzazione dei parametri “raccoglie” gli URL riscritti e poi si usa un altro hook per creare i link.

Usano gli hook anche grandi progetti come Wordpress o Dokuwiki.

Le caratteristiche pratiche dal punto di vista della programmazione degli hook sono:

  • presenza di funzioni che permettono di aggiungerli, modificarli, rimuoverli o eseguirli
  • un sistema di priorità per eseguire delle porzioni di codice prima o dopo di altre
  • la possibilità di essere chiamati molte volte
  • la possibilità di poterne creare di nuovi dinamicamente

Un primordiale sistema di hook è abbastanza semplice da implementare: è una lista di callback da eseguire. Perciò, per esempio, basta creare un array multidimensionale: nel primo array si inserisce la priorità per chiave e il valore un array con il nome delle funzioni da chiamare (per esempio, in PHP tramite call_user_func).

Spero di essere stato il più chiaro possibile, altrimenti fatemelo sapere via commento.

Easyduino e altre idee

È da un po’ che mi frulla per la testa l’idea di sperimentare con Arduino.

Arduino è una scheda programmabile (basata sui chip della famiglia Atmega) utile per creare diversi progetti.

Partono dai giochini con i led alla gestione degli accessi basata su RFID o sulla rete.

E allora cos’è l’Easyduino di cui ho parlato nel titolo? È un clone di Arduino.

Poiché Arduino è rilasciato sotto licenza Creative Commons 3.0 BY SA e i suoi schemi sono liberi, è possibile farne dei cloni purché rispettino la licenza.

Allora io ho deciso di crearmi questo clone perché mi diverto di più e mi costa penso la metà: 22€ (IVA Esclusa) non sono tantissimi poi so crearmi le PCB (circuiti stampati) e i componenti del clone non penso costino più di 10€.

L’unica cosa è che Easyduino non prevede l’USB bensì la seriale, però non cambia molto, considerato che nel mio computer ce l’ho ancora e il supporto USB era una simulazione della seriale.

Ad essere sinceri solo nell’ultima versione (Arduino UNO) l’USB può svolgere anche altri compiti dato che il chip che la gestisce è stato cambiato ma occorre riprogrammarlo e non penso che a me servirà tale funzione, soprattutto all’inizio.

Progetti in testa ne ho molti: come sperimentazione iniziale anche la ricezione degli IR da parte dei telecomandi, tanto per.

Però sto seriamente pensando di costruirmi un rack per i miei effetti che possa anche gestire dei preset, magari addirittura il footswitch dell’amplificatore.

Comunque se farò qualcosa ne parlerò più avanti, per il momento sono impegnato con il mio mini mixer che non ho più finito (in realtà non l’ho neanche cominciato 😁 ).

Domani penso inciderò un po’ di PCB: preamplificatori per i microfoni, l’EQ, il mixer in sé e per sé e anche il Ruby/Noisy Cricket.

Plugin Tag (v2.2) [Flatpress]

Italiano

Mi è stato segnalato da Hubert un bug nella versione 2.1 del plugin Tag.

L’ho risolto e ho riaggiunto la funzione di fare la lista automatica alla fine di ogni post.

Questa funzionalità può essere disabilitata in fp-plugins/tag/plugin.tag.php alla linea 12.

Lingue: en-us, it-it, de-de.

Licenza: GNU GPLv2

Download: Plugin Tag v2.2.

English

Hubert reported me a bug in Tag Plugin V2.1.

Now I’ve fixed it and I’ve added the automatic list of tags as V1.0 did.

This feature can be disabled in fp-plugins/tag/plugin.tag.php at line 12.

Languages: en-us, it-it, de-de.

License: GNU GPL v2.

Download: Plugin Tag v2.2.