Record multi-track Skype group call on OS X

NOTE: THIS ARTICLE HAS BEEN MOVED TO MY ENGLISH BLOG, PLEASE REFER TO THAT FOR THE LATEST UPDATES.

A friend of mine and I host a weekly podcast and, as it often happens, we speak with our guests via Skype. For a while we had everyone record his own audio, since we wanted to have a separate track for each person in order to get the best possible audio quality. But that was inconvenient, both for our guest and for us, as we had to wait everyone to send us his audio before mixing and editing the episode. Recording Skype’s group call in a conventional way wasn’t a better solution. We’d only have two separate tracks: mine and everybody else’s, This is fine if there is only one person other than me, but it’s not with more guests.
So I started to think on possible solutions, and the best one that came to my mind was to have a separate instance of Skype running for each guest (I’ll explain how to do this later on) and use Ableton Live to record each track and to manage the audio routing.

My awesome hand-drawn scheme

My awesome hand-drawn scheme

To manage the audio, we need some sort of virtual audio cables to connect Skype to Ableton Live. The best tool is SoundFlower, so head over to their site, download and install it. However, it is not ready for our purpose right out of the box: we need 2 “virtual audio cables” for each Skype instance, and Soundflower only ships with 2 of them enabled by default (and only one of which, the 2 channel one, is suited for our needs). I managed to edit Soundflower’s plist file to get more.

Continue reading

Installare Mac OS X 10.6.8 su Asus Sabertooth X58

In questa guida vi spiegherò come installare Mac OS X Snow Leopard 10.6.8 su PC con scheda madre Asus Sabertooth X58, che casualmente è proprio quella che possiedo. Perché allestire un hackintosh quando ho già 2 MacBook Pro? Perché è molto più potente come CPU e poi… per il gusto di poterlo fare!
Il mio caso personale contempla l’uso di una scheda video Nvidia, in particolare la modestissima GT220, ma dovrebbe essere tranquillamente possibile usare anche una ATI, sempre che sia supportata. Serve un processore Intel, altrimenti le cose si complicano notevolmente.

Get Avidemux to run on MacOS X Lion

Mi scuso con i lettori italiani, ma vista l’importanza (per me e non solo) di questo articolo, lo scrivo in inglese. Il succo è che la versione linkata di Avidemux funziona su Lion.

After upgrading my Mac to Lion I was very disappointed: Avidemux, my #1 video app crashed upon launch. After a little research on the web, I found a post by eagle007 in Avidemux’s forums that explained that the crash was caused by a library used by Avidemux, libiconv.2.dylib.

He managed to get an updated version of the library and replace the one in the application bundle, thus making Avidemux work again. I really want to thank him for his awesome work.

In case his link goes down, I took the liberty to upload the file to another file hosting site, here is the link: http://www.filesonic.com/file/1718744711

Benchmark JavaScript su dispositivi mobili

Finita ieri l’ultima tornata di esami, questa mattina mi è venuta un’idea: fare un benchmark JavaScript ai dispositivi mobili che ho in casa.

Ecco quindi che ho preso i 3 apparecchi che ho in casa (iPod Touch 2G, iPhone 4 e Samsung Galaxy S) e li ho impegnati nel test SunSpider.

Continue reading

Linux visto dopo 6 mesi di Mac

Ebbene sì, sono passati quasi 6 mesi dal mio passaggio a Mac, mesi durante i quali ho usato poco o niente Linux come desktop.

Devo dire di essermi ormai abituato alla filosofia Apple, nel bene e nel male. Come se non bastasse il MacBook Pro, ho preso anche un iPhone 4, quindi anche in campo mobile ho abbracciato quello che Steve ha offerto.

Nelle ultime settimane, però, è tornata la voglia di smanettare con il pinguino.

Continue reading

Tutto è cambiato

Sono passati diversi mesi dal mio ultimo post, datato 12 maggio 2010. Vi ho lasciati scrivendo dal mio vecchio portatile, equipaggiato con Kubuntu. Ora riprendo i contatti dal mio nuovo portatile. Ma non sto usando Linux.

Eh, no, ho preso un MacBook Pro 15″. Perché? Volevo un portatile con una buona durata della batteria (non le 2 ore risicate del vecchio Acer), robusto (non la solita plasticaccia), ed assurdamente costoso. No, vabbè, non lo volevo costoso, anzi, però per avere tutto quello che mi serviva bisognava per forza spostarsi in casa Apple. Metallo, vetro e (poca) plastica, davvero un portatile ben fatto. Inoltre ero incuriosito da OSX, che avevo provato per qualche tempo sotto forma di Hackintosh. E devo dire che mi piace, funziona bene e c’è sempre la shell a portata di mano. Trovo solo che il file manager, Finder, sia molto migliorabile. Mancano le schede e (cosa assurda) il taglia incolla dei file. Comunque ci si adatta. L’i5 è davvero molto buono, lo scambio trasparente della scheda grafica è una gran genialata. Fastidioso invece che per esigenze estetiche (avere tutte le porte equidistanti) l USB (solo due -.-) siano molto ravvicinate, impedendo di collegare insieme cavi non magrissimi. Adoro invece il connettore MagSafe, altra gran pensata, insieme ai favolosi tasti retroilluminati e al magnifico trackpad multitouch (fino a 11 dita, peccato averne solo 10). Poi di recente ho a anche portato a 8 giga la RAM per avere un po’ di spazio di manovra usando Windows in una virtual machine, cosa che disgraziatamente mi tocca fare per l’università. Ah, sì, ho cominciato l’università, faccio Ingegneria Meccanica al Politecnico di Milano.

One more thing…

Continue reading

ext3 e i blocchi riservati

A volte capita, riempiendo una partizione formattata in ext3, di trovarsi con spazio teoricamente libero, ma con Linux che ci indica la partizione come piena. Generalmente quando si ha ancora il 5% di spazio libero. Questo perché per impostazione predefinita, mkfs.ext3, quando formatta la partizione, riserva il 5% dei blocchi per root.

Hard DiskQuesta situazione è ben visibile utilizzando il comando df -h:

File system            Dim. Usati Disp. Uso% Montato su
/dev/sdc1              75G   71G     0 100% /media

Come potete vedere, ci sono ancora 4 Gb disponibili, ma la partizione risulta usata al 100%.

È possibile ridurre la percentuale di blocchi riservati senza formattare la partizione, ma semplicemente usando il comando tune2fs, ecco come:

sudo tune2fs -m 1 /dev/sdc1

Con questo comando riservo l’1% della partizione a root, che è molto più ragionevole del 5%, specialmente considerando che su grandi partizioni il 5% è molto, ad esempio su 1 Tb sono ben 50 giga!
df -h ci mostra la situazione dopo il comando tune2fs:

File system            Dim. Usati Disp. Uso% Montato su
/dev/sdc1              75G   71G  3,0G  96% /media

Di come un bug in uno script PHP possa mettere in ginocchio un sito

Il sito in questione è il mio, tuttoeniente.net, che ha un sistema creato da me per visualizzare le ultime notizie in ogni pagina. Per ovvie ragioni di spazio non posso visualizzare la notizia completa, quindi la tronco a 70 caratteri.

Tagliare brutalmente porterebbe ad avere 9 volte su 10 parole a metà, quindi avevo scritto uno stupidissimo script che taglia allo spazio successivo. Eccolo:

function ultime_news($notizie = 2, $forumid = 10, $cut = 70){
    $news = '';
    $q_news = mysql_query("SELECT * FROM news ORDER BY id DESC LIMIT $notizie");
    while($notizia = mysql_fetch_array($q_news)){
       $lenght = strlen($notizia['testo']);
       if($lenght > $cut){
            while(substr($notizia['testo'], $cut, 1) != ' '){
                $cut++;
            }
            $testo = substr($notizia['testo'], 0, $cut).' [...]';
        }else{
            $testo = substr($notizia['testo'], 0, $cut);
        }
        $data = strftime("%d/%m/%Y", $notizia['data']);
        $news .= "<p><a href=\"/news/$notizia[id]-".encode_for_url($notizia['titolo']).
                 ".html\"><span class=\"news-title\">$notizia[titolo]</span></a> ".
                 "<span class=\"news-date\">($data)</span><br />".
                 "<span class=\"news-text\">$testo</span></p>";
    }
    return $news;
}

Tutto bene, se non fosse che l’ultima notizia che ho inserito è “Si aggiungono nuove barzellette alla nostra collezione, corri a leggerle!”, 74 caratteri. A 70 caratteri siamo giusto a metà della parola “leggerle”, quindi avanziamo alla ricerca di uno spazio. Lettera, lettera, lettera, punto esclamativo. Fine. Nessuno spazio. Risultato? Loop infinito e sito KO. Peccato che quando ho inserito la notizia non ci ho fatto caso, e oggi ho dovuto smadonnare non poco prima di trovare la ragione del sito fuori uso…
La solulzione? Una banalissima limitazione dello spostamento del taglio fino alla lunghezza totale della notizia.
In pratica while(substr($notizia['testo'], $cut, 1) != ' '){ diventa while(substr($notizia['testo'], $cut, 1) != ' ' && $cut <= $lenght){

Convertire DTS in AC3 con Linux

Oggi ho avuto bisogno di convertire una traccia audio DTS (6 canali, o per meglio dire 5.1) in AC3, necessità abbastanza insolita per la verità.

Cercando in rete incappavo praticamente solo in guide per Windows, ma scavando bene ho trovato la soluzione anche per Linux, con un singolo comando da lanciare tramite shell:

dcadec -o wavall mio-file.dts | aften -v 0 - mio-file.ac3

Il processo potrebbe richiedere parecchio tempo, dipende dalla CPU, ma ci porterà a convertire mio-file.dts in mio-file.ac3 senza problemi e con un bitrate di 448 kbps, ~75 kbps per canale, sufficienti per un audio di buona qualità.

Requisiti per la conversione: dcadec e aften, installabili su Ubuntu tramite i pacchetti libdca-utils e aften

Confrontare le prestazioni di due server DNS

Con l’uscita dei Google Open DNS ho sentito la necessità di confrontare in modo oggettivo le loro prestazioni con gli OpenDNS che usavo  in precedenza, così ho recuperato le mie vecchie e scarse conoscenze di BASH e ho creato un piccolo script.

CompareDNS-mini

Lo script, che trovate qui, sfrutta il comando dig per risolvere per 5 volte gli IP collegati a 3 domini (google.com, ubuntu.com e kernel.org) con ciascuno dei 2 DNS passati come argomenti allo script, e facendo poi la media dei risultati.

Mi rendo conto che lo script è molto inelegante ed efficiente, ma fa il suo lavoro. Sono accettati consigli su come migliorarlo.