<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>emillo.net</title><link href="http://www.emillo.net/" rel="alternate"/><link href="http://www.emillo.net/feeds/all.atom.xml" rel="self"/><id>http://www.emillo.net/</id><updated>2025-09-01T23:40:00+02:00</updated><subtitle>la prima risorsa italiana per linux e audio</subtitle><entry><title>Rilasciata Debian 13 "Trixie"</title><link href="http://www.emillo.net/rilasciata-debian-13-trixie.html" rel="alternate"/><published>2025-09-01T23:40:00+02:00</published><updated>2025-09-01T23:40:00+02:00</updated><author><name>Emiliano Grilli</name></author><id>tag:www.emillo.net,2025-09-01:/rilasciata-debian-13-trixie.html</id><summary type="html">&lt;p&gt;Con il rilascio di debian 13 "trixie" si aggiunge una nuova versione stable ad una delle distribuzioni più longeve ed apprezzate del sistema operativo GNU/Linux.&lt;/p&gt;</summary><content type="html">&lt;h1&gt;Aggiornata debian stable&lt;/h1&gt;
&lt;p&gt;Come faccio ad ogni rilascio stabile di debian, anche in occasione del rilascio di debian 13 "&lt;em&gt;trixie&lt;/em&gt;" avvenuto il 9 agosto 2025 ho aggiornato le mie workstation nel giro di pochi giorni. Ormai sono abituato al fatto che l'upgrade tra rilasci stabili di debian è una operazione quasi sempre a prova di bomba: non ricordo nemmeno più con quale release sono partito in questo particolare computer, probabilmente con debian 10 "&lt;em&gt;buster&lt;/em&gt;", ma sono arrivato su debian stable molto prima, se la memoria non mi inganna direi da debian 4 "&lt;em&gt;etch&lt;/em&gt;" ai tempi di &lt;a href="https://it.wikipedia.org/wiki/DeMuDi"&gt;AGNULA/DeMuDi&lt;/a&gt; (circa 2005).&lt;/p&gt;
&lt;p&gt;Come sempre bisogna leggere attentamente le &lt;a href="https://www.debian.org/releases/stable/releasenotes" title="debian note di rilascio"&gt;note di rilascio&lt;/a&gt; e seguire passo passo la &lt;a href="https://www.debian.org/releases/stable/release-notes/upgrading.it.html" title="aggiornamenti da debian 12"&gt;procedura di upgrade&lt;/a&gt;. Le accortezze principali sono quelle di eliminare sorgenti software non ufficiali (ad esempio avevo i repository di docker, node, kxstudio e qualcos'altro) e i backports, fare un aggiornamento della stable da cui si sta partendo (nel mio caso debian 12 "&lt;em&gt;bookworm&lt;/em&gt;") e poi si può procedere, e in breve tempo si avrà un nuovo sistema operativo con tutte le personalizzazioni del vecchio, intatte e quasi sempre funzionanti.&lt;/p&gt;
&lt;h2&gt;Perché la "stable"&lt;/h2&gt;
&lt;p&gt;Debian per un utente GNU/Linux è un punto di arrivo notevole, è il benchmark a cui tutte le altre distribuzioni devono fare riferimento, standard come immagine base per i container, base di altre distribuzioni notissime come &lt;strong&gt;ubuntu&lt;/strong&gt; e &lt;strong&gt;mint&lt;/strong&gt;, ha uno dei più vasti e curati repository software del mondo. E anche il motto più entusiasmante: "the universal operating system". La debian &lt;em&gt;stable&lt;/em&gt; esce ogni due anni e mezzo circa ed è una distribuzione &lt;em&gt;molto&lt;/em&gt; stabile, come una roccia si dice.&lt;/p&gt;
&lt;p&gt;La critica che di solito si fa alla versione &lt;em&gt;stable&lt;/em&gt; è che quando esce "è già vecchia", e c'è del vero in questo: il mondo del software libero si muove ad una velocità folle e stargli dietro è quasi impossibile anche con le cosiddette distribuzioni "&lt;em&gt;rolling&lt;/em&gt;" come ad esempio &lt;strong&gt;arch linux&lt;/strong&gt;, che utilizzano sempre l'ultima versione upstream dei software che la compongono. Debian stable usa il concetto opposto: anche se ci sono versioni leggermente "indietro" rispetto all'upstream sono dichiarate stabili dai maintainer, verificate, testate, pacchettizzate e rese coerenti con il resto della distribuzione. Usare la stable è un po' lo &lt;em&gt;zen dell'utente GNU/Linux&lt;/em&gt;: so che ci sono versioni più recenti, ma prediligo la stabilità.&lt;/p&gt;
&lt;h2&gt;Versioni dei software inclusi&lt;/h2&gt;
&lt;p&gt;E oggi il compromesso di avere versioni un po' più vecchie dei software di sistema è all'atto pratico un sacrificio quasi nullo, vista la maturità che hanno raggiunto software come GNOME, emacs, gimp, inkscape, ardour solo per citarne alcuni, e che sono inclusi in versioni relativamente recenti.&lt;/p&gt;
&lt;p&gt;Emacs ad esempio è presente nella versione 30.1 rilasciata nel febbraio 2025, upstream c'è la 30.2 di agosto 2025. Di solito i software che uso più intensamente come emacs, ardour, etc... li ho sempre compilati da sorgente: in questo debian è eccezionale perché fornisce un sistema in cui le dipendenze (le librerie e le utility necessarie per compilare programmi) sono gestite in modo eccellente e quindi è sempre stato relativamente facile compilare le ultime versioni dei software più critici. Ma in questo caso non ne ho sentito il bisogno, almeno per emacs e ardour.&lt;/p&gt;
&lt;h2&gt;Impressioni d'utilizzo&lt;/h2&gt;
&lt;p&gt;Ho trovato trixie veramente fantastica, solida, pulita, responsiva, matura. Ogni release di debian è un miglioramento significativo rispetto alla versione precedente, che comunque era già buonissima e che hai già apprezzato e utilizzato con soddisfazione per gli ultimi due/tre anni.&lt;/p&gt;
&lt;p&gt;GNOME è passato dalla versione 43 alla 48 e nonostante fosse già usabilisismo si nota un netto miglioramento: il desktop è raffinatissimo, minimale ma ergonomico e scattante. Unica cosa che aggiungo all'esperienza stock è l'estensione &lt;a href="https://github.com/hardpixel/unite-shell" title="estensione gnome unite"&gt;unite&lt;/a&gt; che toglie le decorazioni alle finestre quando sono in stato massimizzato (con Alt+F10).&lt;/p&gt;
&lt;p&gt;A livello hardware nulla da segnalare ma qui mi piace vincere facile perché tutto ciò che ho attaccato al pc è pienamente supportato &lt;em&gt;by design&lt;/em&gt; visto che se non lo fosse non lo acquisterei. Il kernel Linux è passato da una versione 6.1 alla 6.12 (che dovrebbe essere una "long term support"). &lt;/p&gt;
&lt;p&gt;Per quanto riguarda la grafica il default è (e lo era già in &lt;em&gt;bookworm&lt;/em&gt;) &lt;strong&gt;wayland&lt;/strong&gt; che funziona piuttosto bene: l'unica incompatibilità che ho riscontrato è durante lo screen sharing con zoom che ha qualche problema di scaling, ma si può comunque utilizzare ancora &lt;strong&gt;X11&lt;/strong&gt; che invece funziona perfettamente su questo fronte.&lt;/p&gt;
&lt;p&gt;Lato audio abbiamo &lt;strong&gt;pipewire&lt;/strong&gt; (come in &lt;em&gt;bookworm&lt;/em&gt;) che a prima vista sembra funzionare bene e in modo trasparente anche con applicazioni JACK, ma mi riservo di provarlo più approfonditamente prima di esprimere un giudizio definitivo.&lt;/p&gt;
&lt;p&gt;In conclusione, debian trixie promossa a pieni voti, consigliatissima a tutti.&lt;/p&gt;
&lt;!-- Local Variables: --&gt;
&lt;!-- ispell-local-dictionary: "it" --&gt;
&lt;!-- End: --&gt;</content><category term="Linux"/><category term="linux"/><category term="debian"/><category term="news"/></entry><entry><title>Emillo SongBook: creazione di un canzioniere con chordii</title><link href="http://www.emillo.net/emillo-songbook-creazione-di-un-canzioniere-con-chordii.html" rel="alternate"/><published>2025-06-26T22:00:00+02:00</published><updated>2025-06-26T22:00:00+02:00</updated><author><name>Emiliano Grilli</name></author><id>tag:www.emillo.net,2025-06-26:/emillo-songbook-creazione-di-un-canzioniere-con-chordii.html</id><summary type="html">&lt;p&gt;Una breve recensione di chordii, un programma che permette con un input testuale molto semplice di  creare velocemente un canzoniere con testo e accordi.&lt;/p&gt;</summary><content type="html">&lt;h2&gt;Il contesto&lt;/h2&gt;
&lt;p&gt;Da musicista amatoriale, ho iniziato nel 2010 a raccogliere in un
quadernetto le canzoni che mi piacevano, nel più semplice formato di
testo + accordi, scritte a mano con penna o matita. Ogni volta che mi
interessavo ad una canzone e provavo a suonarla, me la appuntavo nel
quadernetto per non dimenticarmela. Al momento contiene una trentina
di canzoni.&lt;/p&gt;
&lt;p&gt;Pian piano mi sono creato un piccolo repertorio di
canzoni e questo quadernetto è diventato un piccolo tesoro che mi
dispiacerebbe molto se andasse smarrito.&lt;/p&gt;
&lt;p&gt;Però mi piacerebbe anche portarmelo in giro, tipicamente nella
custodia della chitarra, per poterlo sfruttare durante le serate in
compagnia. Allora mi sono deciso di farne una copia "&lt;em&gt;da diporto&lt;/em&gt;",
mantenendo l'originale manoscritto sempre in casa.&lt;/p&gt;
&lt;h2&gt;Le specifiche&lt;/h2&gt;
&lt;p&gt;Ho quindi acquistato un portalistini formato A5 (ma devo ancora capire
se l'età avanzata mi permetterà di leggere una canzone in un formato
così piccolo) che andrà a contenere le canzoni, stampate
diligentemente e salvate in digitale e quindi potenzialmente
replicabili in caso di smarrimento.&lt;/p&gt;
&lt;p&gt;A questo punto mancava soltanto il software con cui produrre le
versioni digitali di questi "&lt;em&gt;lead sheets&lt;/em&gt;" semplificati. I requisiti
eran molto semplici: il testo della canzone e sopra, allineati circa
nel punto del testo in cui cambiano, gli accordi da suonare con la
chitarra, nel classico formato da "&lt;em&gt;canzoniere&lt;/em&gt;", senza nemmeno la
partitura con la linea melodica principale (che è il formato "&lt;a href="https://en.wikipedia.org/wiki/Lead_sheet"&gt;lead
sheet&lt;/a&gt;" degli &lt;em&gt;standard&lt;/em&gt; che
si trova per esempio nei real book).&lt;/p&gt;
&lt;p&gt;Non mi sembrava quindi appropriato scomodare software di impaginazione
musicale completi come &lt;a href="https://musescore.org/it"&gt;musescore&lt;/a&gt; o
&lt;a href="http://lilypond.org/"&gt;lilypond&lt;/a&gt;, ma anche farlo in libreoffice mi
sembrava alquanto noioso, e come ho scritto in &lt;a href="http://www.emillo.net/ode-al-testo-puro.html"&gt;ode al testo
puro&lt;/a&gt;, la mia preferenza, se posso
scegliere, cade sempre su un formato puramente testuale.&lt;/p&gt;
&lt;p&gt;Ho provato l'ottimo &lt;a href="https://abcplus.sourceforge.net/"&gt;abc&lt;/a&gt;, ma anche
questo software è pensato più che altro per produrre dei pentagrammi e
non si è rivelato adeguato per questo &lt;em&gt;use case&lt;/em&gt;.&lt;/p&gt;
&lt;h2&gt;La soluzione: chordii&lt;/h2&gt;
&lt;p&gt;Alla fine mi sono assestato su un formato chiamato
&lt;a href="https://www.chordpro.org/"&gt;chordpro&lt;/a&gt; ("&lt;em&gt;A simple text format for the
notation of lyrics with chords&lt;/em&gt;") che è esattamente quello che mi
serve, semplice, testuale, senza fronzoli. E' un formato che esiste da
molto tempo (1992) e sul sito si può leggere la sua storia e la sua
evoluzione.&lt;/p&gt;
&lt;p&gt;In debian non c'è il programma originale, ma c'è &lt;strong&gt;chordii&lt;/strong&gt; che usa
quel formato (supporta in realtà solo le feature principali ma a me
bastano). Vediamo cosa ci dice &lt;code&gt;apt&lt;/code&gt;, il gestore dei pacchetti di
    debian con il sottocomando &lt;code&gt;show&lt;/code&gt;, a proposito di chordii&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;apt show chordii

Package: chordii
Version: 4.5.3+repack-0.2
Priority: optional
Section: text
Maintainer: Malcolm Locke &amp;lt;malc@wholemeal.co.nz&amp;gt;
Installed-Size: 141 kB
Depends: libc6 (&amp;gt;= 2.14)
Homepage: http://chordii.sourceforge.net/
Tag: field::arts, implemented-in::c, interface::commandline, role::program,
scope::utility, use::converting, use::typesetting,
works-with::music-notation
Download-Size: 41,9 kB
APT-Manual-Installed: yes
APT-Sources: http://deb.debian.org/debian bookworm/main amd64 Packages
Description: convertitore da file di testo (in formato chordpro) in spartiti musicali
chordii fornisce ai chitarristi e agli altri musicisti uno strumento per
produrre, a partire da file di testo, spartiti musicali dal bell&amp;#39;aspetto e
auto-descrittivi.
.
chordii legge i file di testo in formato chordpro contenenti le parole
delle canzoni, gli accordi da suonare, la loro descrizione e alcuni altri
dati opzionali. Produce un documento PostScript adatto per la
visualizzazione e la stampa.
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Ottimo, molto leggero (41kB da scaricare, 141kB una volta installato).
Installiamolo subito con:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;apt&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;chordii
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Di default produrrebbe anche i diagrammi degli accordi, e se ne
possono definire di personalizzati, ma a me non serviva questa
feature, che si può bypassare con il flag &lt;code&gt;-G&lt;/code&gt; (&lt;code&gt;--no-chord-grids&lt;/code&gt;)&lt;/p&gt;
&lt;h2&gt;Esempio pratico&lt;/h2&gt;
&lt;p&gt;L'utilizzo è molto semplice, si scrive il file di testo con poche
direttive come titolo, sottotitolo, commenti, inizio chorus etc.. e si
mettono gli accordi tra parentesi quadre inframmezzate al testo della
canzone. Una cosa del genere:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;# -*- compile-command: &amp;quot;chordii -G -a SongBook.cho &amp;gt; SongBook.ps&amp;quot; -*-

{title: Easy Living}
{subtitle: (Leo Robin/Ralph Rainger)}
{comment: Key: Ab}

[Abmaj]Living for [Adim]you [Bbm] is easy [Bdim]living
[Cm7]It&amp;#39;s [Ebm7][Ab7]easy to live [Dbmaj]when you&amp;#39;re in [Dbm6]love
[Cm7] And I&amp;#39;m so in [F7]love
There&amp;#39;s [Bbm7]nothing in [Eb7]life but you
{comment: (turnaround)}
[Abmaj][Adim][Bbm][Bbdim]

[Abmaj]I&amp;#39;ll never[Adim] regret [Bbm]the things[Bdim] I&amp;#39;m giving
[Cm7]They&amp;#39;re [Ebm][Ab7]easy to [Dbmaj]give when you&amp;#39;re in[Dbm6] love
[Cm7]I&amp;#39;m happy to [F7]do [Bbm7]whatever I [Eb7]do for you
{comment: (modulation)}
[Abmaj][Dbmaj][Abmaj][F#m7][B7]

{soc label:chorus}
[E]For you Maybe[B7] I&amp;#39;m a fool, but it&amp;#39;s [E]fun
[B7]People say you rule me with[E] one wave of your [C#m]hand
Darling, it&amp;#39;s [Eb7]grand
They just don&amp;#39;t [Eb7+] understand
{eoc}

Living for you is easy living
It&amp;#39;s easy to live when you&amp;#39;re in love
And I&amp;#39;m so in love
There&amp;#39;s nothing in life but you

{soc}
For you Maybe I&amp;#39;m a fool, but it&amp;#39;s fun
People say you rule me with one wave of your hand
Baby, it&amp;#39;s grand
They just don&amp;#39;t understand
{eoc}

Living for you is easy living
It&amp;#39;s easy to live when you&amp;#39;re in love
And I&amp;#39;m so in love
There&amp;#39;s nothing in life but you


{comment: 15/01/2010}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Questa è la meravigliosa &lt;strong&gt;Easy Living&lt;/strong&gt; (che ho conosciuto &lt;a href="https://www.youtube.com/watch?v=RX7TA3ezjHc" rel="noopener noreferrer" target="_blank"&gt;cantata
dalla divina Billie
Holiday&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;La prima riga, un commento, istruisce &lt;code&gt;emacs&lt;/code&gt; a usare quel comando per
"compilare" il file (che nel mio caso si chiama &lt;code&gt;SongBook.cho&lt;/code&gt;),
redirigendo l'output postscript su un file chiamato &lt;code&gt;SongBook.ps&lt;/code&gt;, ma
si può anche eseguire da linea di comando normalmente:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;chordii&lt;span class="w"&gt; &lt;/span&gt;-G&lt;span class="w"&gt; &lt;/span&gt;-a&lt;span class="w"&gt; &lt;/span&gt;SongBook.cho&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;SongBook.ps
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Per il resto ci sono gli attributi che definiscono il titolo, il
sottotitolo, alcuni commenti e &lt;code&gt;soc&lt;/code&gt; e &lt;code&gt;eoc&lt;/code&gt; che sono versioni brevi
per &lt;code&gt;start_of_chorus&lt;/code&gt; e &lt;code&gt;end_of_chorus&lt;/code&gt;, ovvero indicano il
ritornello, che nel file finale viene evidenziato da una riga laterale.&lt;/p&gt;
&lt;p&gt;Gli accordi vengono scritti tra parentesi quadre e nel file finale
vengono messi su una riga separata in corrispondenza delle parole.&lt;/p&gt;
&lt;p&gt;Una volta prodotto il postscript lo posso convertire in formato pdf con il
comando &lt;code&gt;ps2pdf&lt;/code&gt; (postscript to pdf), contenuto nel pacchetto &lt;code&gt;ghostscript&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;ps2pdf&lt;span class="w"&gt; &lt;/span&gt;SongBook.ps
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;E otterrò così il mio
&lt;a href="https://www.emillo.net/download/SongBook.pdf"&gt;SongBook.pdf&lt;/a&gt; nel quale
per ora ho trascritto 3 canzoni e che ho omesso dall'esempio: oltre a
&lt;strong&gt;Easy Living&lt;/strong&gt; c'è l'immortale &lt;a href="https://www.youtube.com/watch?v=gPdidRreduM" rel="noopener noreferrer" target="_blank"&gt;Till Then dei Mills
Brothers&lt;/a&gt; e &lt;a href="https://www.youtube.com/watch?v=tXCRAM4EuJ8" rel="noopener noreferrer" target="_blank"&gt;In the still of the
night&lt;/a&gt; con dei cori fantastici e Charlie Parker
che ci slega sopra come un pazzo.&lt;/p&gt;
&lt;p&gt;Ho messo in fondo a ogni canzone la data in cui ho l'ho aggiunta al quadernetto.&lt;/p&gt;
&lt;p&gt;Spero che questa recensioncina di &lt;strong&gt;chordii&lt;/strong&gt; possa essere utile a
qualcuno che vuole crearsi un songbook, di cover o di canzoni proprie,
e che possa dimostrare come il software libero offre soluzioni
semplici e a portata di mano, basta chiedere a &lt;code&gt;apt&lt;/code&gt;!&lt;/p&gt;</content><category term="Notazione musicale"/><category term="linux"/><category term="produttività"/><category term="emacs"/><category term="notazione"/><category term="notazione musicale"/><category term="pdf"/></entry><entry><title>Registrazione "live in studio" con tascam su linux</title><link href="http://www.emillo.net/registrazione-live-in-studio-con-tascam-su-linux.html" rel="alternate"/><published>2025-03-21T18:30:00+01:00</published><updated>2025-03-21T18:30:00+01:00</updated><author><name>Emiliano Grilli</name></author><id>tag:www.emillo.net,2025-03-21:/registrazione-live-in-studio-con-tascam-su-linux.html</id><summary type="html">&lt;p&gt;Ho testato una nuova scheda audio che mi è servita per registrare il nuovo album della mia band, Orchestra Rosichino. Ho usato ardour 8.11 su debian e tutto ha funzionato molto bene.&lt;/p&gt;</summary><content type="html">&lt;h2&gt;La mia band: Orchestra Rosichino&lt;/h2&gt;
&lt;p&gt;Ecco un nuovo articolo per questo blog a bassa intensità... Voglio
parlare di un nuovo acquisto legato al mondo linux audio, ovvero una
scheda audio che ho comprato per realizzare le registrazioni "live in
studio" del nuovo album della mia band &lt;a href="https://www.rosichino.com" target="_blank"&gt;Orchestra
Rosichino&lt;/a&gt;, specializzata
in un genere auto referenziale che abbiamo chiamato "Spaghetti samba",
ovvero una versione maccheronica del samba brasiliano con iniezioni di
epiche spaghetti western.&lt;/p&gt;
&lt;p&gt;Samba maccheronico soprattutto perché a parte qualche notevole
eccezione, nessuno di noi è un musicista professionista e il samba ci
piace molto ma non ce l'abbiamo proprio &lt;em&gt;nel sangue&lt;/em&gt; e quindi ne diamo
una nostra interpretazione italica e sgangherata che però alla fine
risulta piacevole, ballabile e divertente.&lt;/p&gt;
&lt;h2&gt;Perché "live in studio"&lt;/h2&gt;
&lt;p&gt;In passato abbiamo registrato sovraincidendo strumento per strumento,
ma questo ha portato a una performance generale poco coesa, mancando
il &lt;em&gt;groove&lt;/em&gt; che si ottiene dal suonare tutti insieme. Abbiamo quindi
deciso che stavolta avremmo fatto l'opposto registrandoci tutti
insieme come quando facciamo le prove o quando suoniamo dal vivo. Da
qui l'espressione "live in studio"&lt;/p&gt;
&lt;p&gt;Per fare questo però servono un discreto numero di canali di ingresso
registrabili in contemporanea, a meno di non voler registrare tutto in
stereo con pochissimo margine di manovra a posteriori.&lt;/p&gt;
&lt;p&gt;Come dicevo in un &lt;a href="boss-br-800-un-device-tuttofare-per-un-home-studio-linux.html"&gt;post
precedente&lt;/a&gt;,
ho mandato in pensione la gloriosa scheda audio multicanale RME
hammerfall che ho utilizzato per molti anni, e che comunque ha solo 8
canali analogici mentre noi ne avremmo occupati almeno 10.&lt;/p&gt;
&lt;p&gt;La formazione della band infatti comprende:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;batteria&lt;/li&gt;
&lt;li&gt;basso&lt;/li&gt;
&lt;li&gt;chitarra&lt;/li&gt;
&lt;li&gt;fisarmonica&lt;/li&gt;
&lt;li&gt;tromba&lt;/li&gt;
&lt;li&gt;trombone&lt;/li&gt;
&lt;li&gt;cavaquinho&lt;/li&gt;
&lt;li&gt;voce principale&lt;/li&gt;
&lt;li&gt;seconda voce&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Il mio amico &lt;a href="https://www.proofofsound.com/about.html" target="_blank"&gt;Giorgio Baù&lt;/a&gt;,
fonico professionista e utente linux di lunga data si era offerto di
venire da Milano per registrarci con il suo mixer digitale
multicanale, ma purtroppo ha avuto un contrattempo e non è potuto
venire ma mi ha aiutato molto "da remoto". Ho avuto quindi bisogno di
una nuova scheda multicanale supportata da Linux, con almeno 10/12
ingressi analogici.&lt;/p&gt;
&lt;h2&gt;La tascam US 16x08&lt;/h2&gt;
&lt;p&gt;Dopo un po' di ricerche online ho trovato questa tascam, la
&lt;a href="https://www.tascam.eu/en/us-16x08" target="_blank"&gt;US-16x08&lt;/a&gt; che
sembrava fare al caso mio: 16 input registrabili separatamente di cui
8 microfonici e 8 di linea, due dei quali commutabili a ingressi Hi-Z
per strumenti. Secondo varie fonti sembrava ben supportata dal kernel
Linux fin dal 2016 e &lt;a href="https://github.com/onkelDead/tascam-gtk" target="_blank"&gt;questo progetto su
github&lt;/a&gt; è
una applicazione dedicata che permette di gestire il mixer hardware
della scheda, che fornisce anche un minimo di DSP on-board (eq e
compressione, fondamentalmente). Anche il prezzo mi è sembrato
decisamente abbordabile per una quantità simile di canali (340€
circa).&lt;/p&gt;
&lt;p&gt;La scheda come previsto è stata riconosciuta senza problemi al primo
colpo da linux, e anche il mixer software funziona abbastanza bene
nonostante non sia rifinitissimo come interfaccia.&lt;/p&gt;
&lt;p&gt;Se dovessi trovargli un difetto direi che sul fronte monitoring
hardware (ovvero il potersi sentire mentre si suona, gestendo volumi
in cuffia o in spia) ha opzioni molto basic: in pratica pur avendo 8
uscite separate, puoi soltanto impostare un mix stereo come monitoring
hardware diretto, e assegnarlo a due di queste uscite.&lt;/p&gt;
&lt;h2&gt;Il setup&lt;/h2&gt;
&lt;p&gt;Inizialmente pensavamo di utilizzare delle spie per sentire gli
strumenti meno potenti come le voci, la fisarmonica e il cavaquinho,
che sono infatti quelli che amplifichiamo con l'impianto voce alle
prove. Però volevamo anche avere le cuffie per poter suonare con il
&lt;em&gt;click&lt;/em&gt; (metronomo).&lt;/p&gt;
&lt;p&gt;Quindi con l'aiuto teorico di Giorgio, di un piccolo mixerino a
quattro canali del nostro trombettista Vincenzo e di un piccolo
amplificatore per cuffie (il behringer amp 800) abbiamo messo in piedi
un sistema in cui potevo fare sentire il click in cuffia e avere gli
strumenti sulle casse spia senza che il click rientrasse da esse.&lt;/p&gt;
&lt;p&gt;Sfruttando il PAN pot di ogni canale del mixer software questa
configurazione mi permetteva di scegliere se mandare ogni segnale solo
alle casse (tutto a sinistra), solo alle cuffie (tutto a destra) o ad
entrambi (centrato), con eventuali dosaggi diversi nelle posizioni
intermedie.&lt;/p&gt;
&lt;p&gt;Alla fine abbiamo però deciso di utilizzare soltanto il monitoring
in cuffia, per non aggiungere altre fonti sonore estranee come
sarebbero state le casse spia, e in modo che ogni musicista avesse
sempre ben udibile il click. Temevo che tenere le cuffie in testa per
tante ore avrebbe peggiorato la performance ma in realtà non è stato
poi così tremendo.&lt;/p&gt;
&lt;h2&gt;Conclusioni&lt;/h2&gt;
&lt;p&gt;Alla fine il risultato mi sembra sia decente, anche se devo ancora
finire di mixarlo (e Giorgio si è offerto di fare il mastering). La
separazione tra gli strumenti non è ovviamente molto netta,
soprattutto gli strumenti acustici più potenti come batteria e tromba
rientrano parecchio negli altri microfoni, ma ciò contribuisce a
creare un suono più amalgamato e coeso, che era appunto lo scopo di
registrare tutti insieme.&lt;/p&gt;
&lt;p&gt;In conclusione questa scheda è spartana e solida e fa quello che
promette senza fronzoli e in modo affidabile, in classico stile
tascam. La costruzione è molto pesante, tutta in metallo e ha inclusi
i "rack ears" per montarla su un rack, volendo. I preamp microfonici
sono puliti e hanno un discreto guadagno, indispensabile coi microfoni
dinamici.&lt;/p&gt;
&lt;p&gt;E' possibile attivare l'alimentazione phantom a gruppi di 4
canali, cosa buona se si hanno dei mic ribbon a cui la phantom
potrebbe nuocere. Tascam ha scelto di non utilizzare gli ormai ubiqui
connettori combinati XLR/jack ma di avere gli 8 canali microfonici con
connettore XLR e gli altri 8 con connettore jack TRS, quindi con ruoli
ben separati.&lt;/p&gt;
&lt;p&gt;Sul pannello frontale si trovano tutti i controlli più importanti: gli
8 ingressi microfonici, i due commutabili linea/strumento, i gain di
questi primi 10 canali con un led indicatore di picco, il volume delle
uscite "monitoring" 1-2 e la sezione cuffie.&lt;/p&gt;</content><category term="Hardware"/><category term="audio"/><category term="hardware"/><category term="linux"/><category term="schede audio"/><category term="driver audio"/></entry><entry><title>Ode al testo puro</title><link href="http://www.emillo.net/ode-al-testo-puro.html" rel="alternate"/><published>2024-04-30T23:50:00+02:00</published><updated>2024-04-30T23:50:00+02:00</updated><author><name>Emiliano Grilli</name></author><id>tag:www.emillo.net,2024-04-30:/ode-al-testo-puro.html</id><summary type="html">&lt;p&gt;Il &lt;code&gt;plain text&lt;/code&gt; è il minimo comune denominatore dei formati di file digitali, un veicolo e un contenitore di informazione nella sua forma più pura e minimale. Un piccolo saggio di apprezzamento.&lt;/p&gt;</summary><content type="html">&lt;h2&gt;Come salviamo l'informazione?&lt;/h2&gt;
&lt;p&gt;Il "digitale" è ormai parte integrante e fondamentale della vita di
ognuno di noi, ma spesso poco ci si sofferma sul suo funzionamento più
intrinseco e ci si limita ad utilizzare ciò che ci viene proposto
dall'esterno senza davvero rendersi conto di cosa succede all'interno
dei dispositivi elettronici che abbiamo in tasca o sulla scrivania, e
come questi trattino le informazioni.&lt;/p&gt;
&lt;p&gt;Per questo farò un breve escursus di come le informazioni vengono
gestite in digitale, specificamente riguardo al testo puro.&lt;/p&gt;
&lt;h3&gt;Codifica binaria&lt;/h3&gt;
&lt;p&gt;E' noto che il mondo dei computer si basa sul codice binario&lt;sup id="fnref:1"&gt;&lt;a class="footnote-ref" href="#fn:1"&gt;1&lt;/a&gt;&lt;/sup&gt;: le
macchine di cui parliamo funzionano cioè in base due. Funzionano in
base due perché elettronicamente e a livello ingegneristico, gestire
due stati, "acceso" e "spento" è la cosa più semplice (ed è stato
chiaro fin dai tempi del telegrafo). Tutto ciò che è digitale quindi,
che sia dato, programma, immagine, video, stream, qualsiasi cosa, non
può prescindere da questa codifica. E' la &lt;em&gt;base di tutto&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;A differenza del mondo fisico, nel dominio digitale c'è un limite di
divisibilità nel piccolo che non si può trascendere: il &lt;strong&gt;bit&lt;/strong&gt;. Il
bit è l'atomo dell'informatica: atomo significa infatti &lt;em&gt;"che non si
può dividere"&lt;/em&gt;. In realtà si è poi visto che i &lt;em&gt;veri&lt;/em&gt; atomi si possono
dividere, ma il bit no: non esiste e non può esistere il &lt;em&gt;mezzo bit&lt;/em&gt; o
il &lt;em&gt;centesimo di bit&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Ok, ma come si passa dal bit a qualcosa di utile, come le foto di
teneri gattini?&lt;/p&gt;
&lt;h3&gt;Breve riassunto sui calcolatori&lt;/h3&gt;
&lt;p&gt;Il &lt;em&gt;processore&lt;/em&gt; (&lt;strong&gt;CPU&lt;/strong&gt;), il cervello di ogni device digitale, è
fondamentalmente un apparecchio che esegue &lt;em&gt;calcoli&lt;/em&gt; ad una velocità
sorprendente, nell'ordine dei miliardi di operazioni al secondo (i
famosi &lt;em&gt;GigaHertz&lt;/em&gt;), ed esegue questi calcoli sempre basandosi sulla
codifica binaria. Sia le istruzioni&lt;sup id="fnref:2"&gt;&lt;a class="footnote-ref" href="#fn:2"&gt;2&lt;/a&gt;&lt;/sup&gt; che gli vengono date (che so,
"&lt;em&gt;somma il valore che c'è al registro x con quello al registro y&lt;/em&gt;")
che i valori (i dati) sono sempre codificati in forma binaria.&lt;/p&gt;
&lt;p&gt;Inizialmente i computer erano macchine enormi, costosissime e
complessissime da costruire e da operare ed erano usati appunto per
questo, per fare calcoli scientifici con grandi numeri, o grandi
quantità di numeri, e in seguito per tenere la contabilità di grandi
multinazionali, o la gestione dei dati di uno stato e altri compiti di
larga scala su questo genere.&lt;/p&gt;
&lt;p&gt;Successivamente, con l'avvento del &lt;em&gt;personal computer&lt;/em&gt; all'inizio
degli anni '80, l'informatica è diventata alla portata di tutti e si è
via via legata sempre di più alla &lt;em&gt;telematica&lt;/em&gt;, sfruttando le reti di
computer interconnessi che grazie ad &lt;strong&gt;internet&lt;/strong&gt;, la "rete delle
reti", permettono di comunicare in un battere di ciglia da un capo
all'altro del mondo (cosa che oggi diamo per scontata ma che non lo
era affatto).&lt;/p&gt;
&lt;p&gt;Altro concetto fondamentale è quello di &lt;strong&gt;memoria&lt;/strong&gt; che può essere "di
lavoro" (&lt;strong&gt;RAM&lt;/strong&gt;), dove il processore legge e scrive direttamente e
velocemente durante l'esecuzione, o "di massa" dove &lt;em&gt;salvare&lt;/em&gt; le
informazioni per un uso successivo (schede perforate, nastro
magnetico, hard disk, cdrom, ssd e via dicendo).&lt;/p&gt;
&lt;p&gt;Tornando ai bit: la macchina li sa gestire, spostare, salvare,
recuperare, sommare, moltiplicare, etc.. ma il &lt;em&gt;significato&lt;/em&gt; che hanno
quei bit siamo noi a darlo: siamo noi che scriviamo il programma che
la macchina esegue, e siamo noi che sappiamo leggere i risultati che
la macchina ci restituisce a partire da un input che noi le
forniamo. Dal punto di vista della macchina sono solo infinite
sequenze di zero o uno. Il tenero gattino sono due milioni di bit uno
dietro l'altro.&lt;/p&gt;
&lt;h2&gt;Testo puro: un eroe sotto mentite spoglie&lt;/h2&gt;
&lt;p&gt;Perché voglio cantare un'ode al testo puro? Che cos'è il testo puro?&lt;/p&gt;
&lt;p&gt;Il &lt;a href="https://it.wikipedia.org/wiki/Testo_puro" title="Testo puro (wikipedia it)"&gt;testo puro&lt;/a&gt; (&lt;em&gt;plain text&lt;/em&gt; in inglese) o "testo semplice" (anche
se vedremo che non è poi così semplice) è il formato più basilare e
più standard in cui si possano salvare delle informazioni in digitale.&lt;/p&gt;
&lt;p&gt;Tradizionalmente, questo tipo di file ha un'estensione &lt;code&gt;.txt&lt;/code&gt;, come
nel classico &lt;code&gt;README.txt&lt;/code&gt; che accompagna spesso il software, ma
possiamo trovare anche altre estensioni, a seconda del contenuto: ad
esempio un file markdown di solito è un &lt;code&gt;.md&lt;/code&gt; o un file HTML ha una
estensione &lt;code&gt;.html&lt;/code&gt;, ma diciamo che tutti questi tipi di file
contengono plain text e possono essere aperti con un editor di testo
semplice e letti da un umano, con diversi gradi di comprensibilità. Ci
possono anche essere dei file senza estensione (&lt;code&gt;README&lt;/code&gt;), in quel
caso per capire cosa c'è dentro ci può venire incontro il comando unix
&lt;code&gt;file&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;file&lt;span class="w"&gt; &lt;/span&gt;src/ardour/README
src/ardour/README:&lt;span class="w"&gt; &lt;/span&gt;ASCII&lt;span class="w"&gt; &lt;/span&gt;text
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Il plain text è il formato in cui viene scritto il &lt;em&gt;codice sorgente&lt;/em&gt;
ovvero il testo che viene utilizzato per scrivere i programmi da fare
eseguire alla macchina; in quel caso a seconda del linguaggio avremo
&lt;code&gt;fai_questo.py&lt;/code&gt;, &lt;code&gt;fai_quello.js&lt;/code&gt;, &lt;code&gt;FaiCose.java&lt;/code&gt;, etc...&lt;/p&gt;
&lt;p&gt;Il testo semplice è anche il formato utilizzato in quella che è la
&lt;em&gt;killer application&lt;/em&gt; di internet: l'email, anche se molti mandano le
mail in HTML (specialmente email di marketing o newsletter) anche in
questo caso il plain text garantisce una resa migliore con meno spreco
di banda. Anche la maggior parte dei protocolli di internet parlano di
solito in plain text.&lt;/p&gt;
&lt;p&gt;Il testo semplice è anche, se vogliamo, il formato usato &lt;em&gt;prima&lt;/em&gt; del
digitale, il formato con cui sono scritti da secoli i libri. E anche
in questo caso, a partire dallo stesso alfabeto era possibile avere
libri di poesie, libri di favole, libri scientifici, libri di
narrativa, etc...&lt;/p&gt;
&lt;p&gt;Naturalmente una poesia o un racconto hanno una struttura immensamente
più libera rispetto ad un sorgente python o javascript, che deve
sottostare a delle regole molto più stringenti per essere interpretato
ed eseguito senza errori dalla macchina.&lt;/p&gt;
&lt;p&gt;Una poesia non può essere "eseguita" da una CPU, ma può essere salvata
su file. Per farlo usiamo il testo puro, dove ogni carattere del testo
è rappresentato da uno specifico gruppo di bit, secondo una
convenzione standard per cui ad una certa sequenza di bit corrisponde
un determinato carattere.&lt;/p&gt;
&lt;h3&gt;Codifiche di testo&lt;/h3&gt;
&lt;p&gt;Uno dei modi di raggruppare i bit in elementi più grandi è il
&lt;a href="https://it.wikipedia.org/wiki/Byte" title="byte (wikipedia it)"&gt;byte&lt;/a&gt; che
consta di 8 bit e che viene usato anche come unità di misura della
memoria. Con un byte da 8 bit è possibile rappresentare 256 valori in
base 2, da &lt;code&gt;00000000&lt;/code&gt; a &lt;code&gt;111111111&lt;/code&gt; (da 0 a 255 in base dieci),
possiamo dire con una generalizzazione abbastanza veritiera che un
byte rappresenta un carattere del testo.&lt;/p&gt;
&lt;p&gt;Un primo standard per la codifica del testo si ebbe negli anni '60 con
&lt;a href="https://it.wikipedia.org/wiki/ASCII" title="ASCII (wikipedia it)"&gt;ASCII&lt;/a&gt;,
standard inizialmente a 7 bit (128 possibili valori) che codificava le
lettere maiuscole e minuscole della lingua inglese, lasciando fuori
non solo gli ideogrammi o gli alfabeti non latini, ma anche le comuni
accentate delle lingue europee, generando per decenni molta confusione
e svariate incompatibilità agli utenti non americani, che dovettero
ricorrere ad una estensione dell'ASCII a 8 bit chiamata
&lt;a href="https://it.wikipedia.org/wiki/ISO_8859" title="ISO-8859 (wikipedia it)"&gt;ISO-8859&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Oggigiorno fortunatamente esiste uno standard molto più avanzato
chiamato &lt;a href="https://it.wikipedia.org/wiki/Unicode" title="Unicode (wikipedia it)"&gt;Unicode&lt;/a&gt;, che è retrocompatibile con ASCII e ISO-8859 ma
contiene tutti i simboli necessari a rappresentare qualsiasi lingua
umana ed è uno standard &lt;em&gt;de facto&lt;/em&gt; utilizzato ovunque (comunemente la
variante &lt;strong&gt;UTF-8&lt;/strong&gt;). In questo contesto non è più vera l'equivalenza
un byte = un carattere, perché unicode usa spesso più di un byte, ma è
comunque una astrazione utile per comprendere il quadro generale.&lt;/p&gt;
&lt;h2&gt;Vantaggi del testo puro&lt;/h2&gt;
&lt;p&gt;Il testo puro è un formato minimalista, fondamentale per tutta
l'informatica ed è uno dei modi primari con cui diamo senso ai
computer.&lt;/p&gt;
&lt;p&gt;Esso offre molti vantaggi come formato di salvataggio delle
informazioni:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Standard aperto: non mi lega a nessun &lt;em&gt;vendor&lt;/em&gt;, posso leggere i miei
  dati con qualunque software, è quindi estremamente &lt;em&gt;portabile&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Future proof: essendo uno standard aperto, con grandissima
  probabilità sarò in grado di leggerlo anche in futuro (cosa non vera
  per i formati proprietari)&lt;/li&gt;
&lt;li&gt;Bassissima occupazione, in termini di byte, di spazio disco e di
  banda: a tutti gli effetti &lt;em&gt;costa meno&lt;/em&gt; salvarlo, trasmetterlo,
  etc.. L'intera &lt;em&gt;Divina Commedia&lt;/em&gt; occupa poco più di 500 Kb (meno di
  una foto decente di un tenero gattino)&lt;/li&gt;
&lt;li&gt;Può essere sottoposto a &lt;a href="https://it.wikipedia.org/wiki/Controllo_versione" title="Controllo versione (wikipedia it)"&gt;controllo di
  versione&lt;/a&gt;, che è ormai un requisito
  indispensabile per la produzione di software&lt;/li&gt;
&lt;li&gt;Fornisce la base per la creazione di linguaggi più strutturati
  (JSON, markdown, yaml, etc..)&lt;/li&gt;
&lt;li&gt;Può essere manipolato molto convenientemente, sottoposto a ricerca,
  sostituzione, etc...&lt;/li&gt;
&lt;li&gt;Può essere convertito in altri formati (ad esempio può rappresentare
  una tabella di database con il formato
  &lt;a href="https://it.wikipedia.org/wiki/Comma-separated_values" title="CSV   (wikipedia it)"&gt;CSV&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Può essere copiato e incollato con facilità mantenendo il 100%
  dell'informazione, in questo senso ne è la &lt;em&gt;sorgente&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;E' puro contenuto, indipendente dalla forma in cui si deciderà di
  presentarlo.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Markdown&lt;/h3&gt;
&lt;p&gt;Tra i linguaggi che si possono usare per dare un minimo di struttura
al testo puro un posto di primo piano lo ricopre sicuramente
&lt;a href="https://it.wikipedia.org/wiki/Markdown" title="Markdown (wikpedia it)"&gt;Markdown&lt;/a&gt;, un linguaggio di markup che molto semplicemente mette a
disposizione dell'autore elementi strutturali come titoli e liste, ed
elementi di formattazione come &lt;strong&gt;grassetto&lt;/strong&gt;, &lt;em&gt;corsivo&lt;/em&gt;,
&lt;code&gt;monospaziato&lt;/code&gt; e permette anche l'inserimento di link
ipertestuali.&lt;/p&gt;
&lt;p&gt;Con queste pochissime istruzioni, che si possono imparare in breve
tempo, è possibile comporre testi complessi e strutturati che possono
poi essere renderizzati in HTML o in altri formati (questo articolo ad
esempio è stato scritto in markdown)&lt;/p&gt;
&lt;h3&gt;Org&lt;/h3&gt;
&lt;p&gt;Un altro formato di markup utilissimo (soprattutto se si usa emacs) è
il formato di &lt;a href="https://orgmode.org/"&gt;Org mode&lt;/a&gt;, che ha feature molto
più avanzate di markdown come ad esempio la possibilità di usarlo per
il &lt;a href="https://it.wikipedia.org/wiki/Literate_programming"&gt;Literate
Programming&lt;/a&gt;, o
l'integrazione con agenda e calendario per creazione di TODO, o
addirittura la possibilità di crearsi una knowledge base personale&lt;sup id="fnref:3"&gt;&lt;a class="footnote-ref" href="#fn:3"&gt;3&lt;/a&gt;&lt;/sup&gt;
(una sorta di wiki).&lt;/p&gt;
&lt;p&gt;Pur essendo meno portabile di markdown in quanto è utilizzabile a
piena potenza solo sotto emacs, org-mode è comunque un formato
puramente testuale e per il quale valgono tutti i vantaggi sopra
elencati.&lt;/p&gt;
&lt;h3&gt;Ledger&lt;/h3&gt;
&lt;p&gt;Un ulteriore esempio della potenza e della portabilità del testo puro
come formato dei propri dati è &lt;a href="https://ledger-cli.org/" title="ledger, un sistema di contabilità a partita doppia"&gt;ledger&lt;/a&gt;, un sistema
completo di contabilità in &lt;a href="https://it.wikipedia.org/wiki/Partita_doppia" title="Partita doppia (wikipedia it)"&gt;Partita
doppia&lt;/a&gt; che utilizza un semplice formato in testo puro per la
tenuta del libro mastro (journal), e a partire da questo permette di
creare tutta una serie di reportistica di bilancio e in definitiva di
tenere a bada i propri conti (o quelli della propria azienda)&lt;/p&gt;
&lt;p&gt;Anche ledger, manco a dirlo, ha un modo dedicato per emacs.&lt;/p&gt;
&lt;h2&gt;Conclusioni&lt;/h2&gt;
&lt;p&gt;Spero che questa piccola elucubrazione da vecchio informatico abbia
ispirato o almeno incuriosito qualcuno ad esplorare i molteplici modi
in cui il testo puro può arricchire la nostra vita digitale, e
mostrato che esso rappresenta quanto di più vicino ci possa essere a
una informazione pura, inalterata, essenziale.&lt;/p&gt;
&lt;p&gt;Facendo un parallelo con le tecniche delle arti visive, paragonerei il
testo puro alla umile matita: strumento basilare ma indispensabile,
che costituisce il fondamento di tutto quello che viene dopo.&lt;/p&gt;
&lt;h3&gt;Ispirazione&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://wiki.c2.com/?PowerOfPlainText"&gt;http://wiki.c2.com/?PowerOfPlainText&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=WgV6M1LyfNY"&gt;The unreasonable effectiveness of plain text (video)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://amzn.to/3UldHLg"&gt;The Power of Plain Text (Topic 16) in "The pragmatic programmer"&lt;/a&gt; (affiliate link)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;E finalmente, il premio meritatissimo di chi è arrivato fino in fondo, il tenero gattino! (In ASCII art naturalmente)
&lt;code&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;   &lt;span class="ge"&gt;_&lt;/span&gt;
&lt;span class="ge"&gt;   \`*-.&lt;/span&gt;
&lt;span class="ge"&gt;    )  _&lt;/span&gt;`-.
   .  : &lt;span class="sb"&gt;`. .&lt;/span&gt;
&lt;span class="sb"&gt;   : _   &amp;#39;  \&lt;/span&gt;
&lt;span class="sb"&gt;   ; *`&lt;/span&gt; &lt;span class="ge"&gt;_.   `*-._&lt;/span&gt;
   &lt;span class="sb"&gt;`-.-&amp;#39;          `&lt;/span&gt;-.
     ;       &lt;span class="sb"&gt;`       `&lt;/span&gt;.
     :.       .        \
     . \  .   :   .-&amp;#39;   .
     &amp;#39;  &lt;span class="sb"&gt;`+.;  ;  &amp;#39;      :&lt;/span&gt;
&lt;span class="sb"&gt;     :  &amp;#39;  |    ;       ;-.&lt;/span&gt;
&lt;span class="sb"&gt;     ; &amp;#39;   : :`&lt;/span&gt;-:     _.`* ;
  .*&amp;#39; /  .*&amp;#39; ; .*`- +&amp;#39;  &lt;span class="sb"&gt;`*&amp;#39;&lt;/span&gt;
&lt;span class="sb"&gt;  `&lt;/span&gt;*-*   &lt;span class="sb"&gt;`*-*  `&lt;/span&gt;*-*&amp;#39;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;&lt;/code&gt;
(ASCII Art by Blazej Kozlowski)&lt;/p&gt;
&lt;div class="footnote"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;Ma non è sempre stato così: esistevano anche dei &lt;a href="https://en.wikipedia.org/wiki/Decimal_computer"&gt;computer decimali&lt;/a&gt; fino agli anni 70&amp;#160;&lt;a class="footnote-backref" href="#fnref:1" title="Jump back to footnote 1 in the text"&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:2"&gt;
&lt;p&gt;Il cosiddetto &lt;a href="https://it.wikipedia.org/wiki/Linguaggio_macchina"&gt;linguaggio macchina&lt;/a&gt;&amp;#160;&lt;a class="footnote-backref" href="#fnref:2" title="Jump back to footnote 2 in the text"&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:3"&gt;
&lt;p&gt;Con &lt;a href="https://www.orgroam.com/"&gt;Org Roam&lt;/a&gt;&amp;#160;&lt;a class="footnote-backref" href="#fnref:3" title="Jump back to footnote 3 in the text"&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</content><category term="Filosofia"/><category term="filosofia"/><category term="testo puro"/><category term="produttività"/></entry><entry><title>Flameshot: Screenshot magic</title><link href="http://www.emillo.net/flameshot-screenshot-magic.html" rel="alternate"/><published>2023-07-29T00:50:00+02:00</published><updated>2023-07-29T00:50:00+02:00</updated><author><name>Emiliano Grilli</name></author><id>tag:www.emillo.net,2023-07-29:/flameshot-screenshot-magic.html</id><summary type="html">&lt;p&gt;Un comodo strumento per la cattura di schermate, con un sacco di caratteristiche utili e un workflow molto fluido: ci da la possibilità di annotare lo screenshot con frecce, testo e disegni, e di mascherare dati sensibili come password, indirizzi email etc...&lt;/p&gt;</summary><content type="html">&lt;h2&gt;Cos'è uno screenshot e perché è utile&lt;/h2&gt;
&lt;p&gt;&lt;img src="http://www.emillo.net/images/flameshot.png" class="img-responsive" style="margin-left:20px;float:right;max-width:40%" alt="Flameshot screenshot"/&gt;
Uno &lt;em&gt;screen shot&lt;/em&gt;, &lt;em&gt;screenshot&lt;/em&gt; o &lt;em&gt;cattura di schermo&lt;/em&gt; è
essenzialmente una fotografia del desktop del nostro computer, fatta
internamente al computer stesso, e può tornare utile in moltissimi
casi, eccone solo alcuni a titolo di esempio:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;fissare lo stato di una applicazione in un determinato momento&lt;/li&gt;
&lt;li&gt;come allegato di un &lt;em&gt;bug report&lt;/em&gt; per dimostrare il problema che si sta riscontrando&lt;/li&gt;
&lt;li&gt;per condividere velocemente quello che si vede con qualcuno, per esempio via email&lt;/li&gt;
&lt;li&gt;come &lt;em&gt;demo&lt;/em&gt; di qualcosa che si è prodotto (ad esempio un sito web)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Di solito il sistema operativo fornisce, integrato nella sua
&lt;a href="https://it.wikipedia.org/wiki/Interfaccia_grafica" title="Interfaccia grafica (wikipedia)"&gt;GUI&lt;/a&gt; un qualche strumento per effettuare degli
screenshot: per esempio in &lt;a href="https://www.gnome.org/" title="Sito web del progetto Gnome"&gt;Gnome&lt;/a&gt; si può catturare lo schermo premendo il tasto
&lt;em&gt;print screen&lt;/em&gt;, e questa utility offre già alcune possibilità come ad
esempio la selezione di tutto lo schermo, di una singola finestra o di
una porzione selezionata di schermo.&lt;/p&gt;
&lt;p&gt;Poi una volta effettuato lo screenshot, viene messo negli appunti e
può essere incollato ovunque si possa inserire una immagine (ad
esempio in un programma di fotoritocco come
&lt;a href="https://www.gimp.org/" title="Sito web di Gimp"&gt;Gimp&lt;/a&gt;, o in una finestra di
slack o su un sito di condivisione di immagini come imgur)&lt;/p&gt;
&lt;h2&gt;Flameshot&lt;/h2&gt;
&lt;p&gt;Vi sono innumerevoli tool per fare screenshot, ma quello che finora ho
trovato essere il migliore per l'uso che ne faccio è
&lt;a href="https://flameshot.org/" title="Sito web di flameshot"&gt;Flameshot&lt;/a&gt;, che è
specializzato nel caso "cattura porzione di schermo", che è quello che
voglio nel 99% dei casi.&lt;/p&gt;
&lt;p&gt;Flameshot è libero e gratuito ed è disponibile per i maggiori sitemi
operativi, e immediatamente installabile in debian con&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;apt&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;flameshot
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Ovviamente, a patto di aver configurato &lt;strong&gt;sudo&lt;/strong&gt; per il vostro utente,
altrimenti si può dare il comando apt da utente &lt;strong&gt;root&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Una volta installato, può essere lanciato nella sua versione &lt;em&gt;interattiva&lt;/em&gt; con:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;flameshot&lt;span class="w"&gt; &lt;/span&gt;gui
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Comando che è utilissimo associare a uno &lt;em&gt;shortcut&lt;/em&gt; (tasto di scelta
rapida), io per esempio lo associo di solito a &lt;strong&gt;CTRL+F9&lt;/strong&gt; o
&lt;strong&gt;Win+F9&lt;/strong&gt; ma si può scegliere quello che si preferisce.&lt;/p&gt;
&lt;p&gt;A questo punto flameshot si avvia e rende più scuro lo schermo, e un
popup ci mostra un aiuto in linea su come debba essere usato: di base
selezionando un'area dello schermo con il mouse si imposta la porzione
di schermo catturata (che viene evidenzata dal fatto che riacquista il
suo colore normale), e facendo questo appare al contorno della
porzione selezionata tutta una serie di icone che permettono di
"lavorare" lo screenshot in vari modi, ad esempio:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;inserendo frecce per indicare posizioni salienti&lt;/li&gt;
&lt;li&gt;disegnando linee per evidenziare o separare&lt;/li&gt;
&lt;li&gt;disegnando rettangoli e ovali pieni o vuoti, o a mano libera&lt;/li&gt;
&lt;li&gt;mascherando con un effetto &lt;em&gt;pixelate&lt;/em&gt; dati sensibili come numeri di telefono, email e simili (indispensabile!)&lt;/li&gt;
&lt;li&gt;inserendo numeri progressivi per indicare un flusso o un percorso&lt;/li&gt;
&lt;li&gt;scrivendo testo&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Questi tool sono utilissimi e evitano di dover modificare lo
screenshot ex post in un programma separato, quindi rendono il
workflow di cattura schemo molto più veloce, e sono esattamente quello
di cui di solito si ha bisogno, in special modo frecce, rettangoli e
mascheramento.&lt;/p&gt;
&lt;p&gt;Inoltre è possibile, premendo spazio, configurare le caratteristiche
basi del tool che si sta usando, come il colore e lo spessore della
linea.&lt;/p&gt;
&lt;p&gt;Una volta che si è ottenuto lo screenshot che si desidera, tramite
altre icone di contorno si può scegliere di salvare lo screenshot su
un file, metterlo negli appunti (la scelta più comoda, accessibile
anche più velocemente con &lt;strong&gt;CTRL+C&lt;/strong&gt;) o addirittura uploadarlo su
imgur.&lt;/p&gt;
&lt;p&gt;Il programma può essere configurato in grandissimo dettaglio con&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;flameshot&lt;span class="w"&gt; &lt;/span&gt;config
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;ma sinceramente non ne ho mai sentito il bisogno, i default vanno già
più che bene.&lt;/p&gt;
&lt;p&gt;In conclusione, un tool di produttività ormai indispensabile nell'uso
quotidiano del computer, soprattutto per chi lavora in ambito IT&lt;/p&gt;</content><category term="Utility"/><category term="linux"/><category term="utility"/><category term="produttività"/></entry><entry><title>Boss BR-800: un device tuttofare per un home studio Linux</title><link href="http://www.emillo.net/boss-br-800-un-device-tuttofare-per-un-home-studio-linux.html" rel="alternate"/><published>2023-07-04T14:30:00+02:00</published><updated>2023-07-04T14:30:00+02:00</updated><author><name>Emiliano Grilli</name></author><id>tag:www.emillo.net,2023-07-04:/boss-br-800-un-device-tuttofare-per-un-home-studio-linux.html</id><summary type="html">&lt;p&gt;Un registratore digitale che fa da scheda audio USB, &lt;em&gt;class compliant&lt;/em&gt; e quindi compatibile con Gnu/Linux. Un device tuttofare che può essere il centro di un piccolo home studio.&lt;/p&gt;</summary><content type="html">&lt;h2&gt;Il passaggio al BR-800&lt;/h2&gt;
&lt;p&gt;Qualche anno fa, ridimensionando il mio studio ho dovuto a malincuore
mandare in pensione la gloriosa scheda audio RME Hammerfall DSP
Multiface, una scheda professionale eccezionale che mi ha accompagnato
per quasi 20 anni e che avrei tranquillamente potuto continuare ad
usare a tempo indeterminato senonché nessun computer moderno dispone
più di slot PCI o (per i portatili) PCMCIA: quindi la scelta era tra
rimanere con l'hardware obsoleto sul PC o cambiare scheda audio.&lt;/p&gt;
&lt;p&gt;Ho comunque mantenuto il mio vecchio tower con la RME, che ora è
diventato un serverino domestico, quindi dovessi avere la necessità di
digitalizzare registrazioni audio a più di quattro tracce, posso
ancora utilizzarla (grazie
&lt;a href="https://www.alsa-project.org/wiki/Matrix:Module-hdsp" title="Driver ALSA per la RME Hammerfall HDSP"&gt;ALSA&lt;/a&gt;, grazie Linux, grazie driver con
licenza libera)&lt;/p&gt;
&lt;p&gt;Alla fine ho optato per il Boss BR-800, che è il protagonista di questo post.&lt;/p&gt;
&lt;h2&gt;Caratteristiche&lt;/h2&gt;
&lt;p&gt;&lt;img src="http://www.emillo.net/images/br800.png" class="img-responsive" style="margin-left:20px;float:right;max-width:40%" alt="Boss BR-800"/&gt;&lt;/p&gt;
&lt;p&gt;Il &lt;a href="https://www.boss.info/it/products/br-800/" title="BR-800 sul sito boss"&gt;Boss BR-800&lt;/a&gt; è un registratore audio digitale multitraccia, che può
registrare fino a 4 sorgenti audio contemporaneamente e può gestire
progetti multitraccia fino a 8 tracce. Ha anche una traccia "rhythm"
che può suonare dei pattern di batteria predefiniti o funzionare da
metronomo.&lt;/p&gt;
&lt;p&gt;A livello di ingressi e uscite possiede 4 ingressi microfonici XLR o
linea (jack) sul retro, e un ingresso "Hi-z" ad alta impedenza sul
frontale, per accogliere segnali come chitarre e bassi elettrici. Sul
retro c'è anche un ingresso "line in" stereo in formato minijack,
oltre alla uscita principale L/R su pin rca. Frontalmente c'è anche
l'uscita cuffia.&lt;/p&gt;
&lt;p&gt;Il pannello superiore ha una serie di controlli fisici: 8 fader, 5
potenziometri e una "wheel" con cui si possono navigare i menu nel
display. Tutto il resto è costituito da una unica superficie liscia
dove i pulsanti sono "virtuali", ovvero non sono dei pulsanti fisici
ma funzionano a sfioramento, cosa che immagino abbia aiutato parecchio
a ridurre i costi di produzione. Sempre sul pannello superiore sono
presenti due microfoni (presumo electret) che permettono di registrare
in stereo direttamente dal device senza bisogno di microfoni esterni.&lt;/p&gt;
&lt;p&gt;Sulla destra c'è la presa USB type B per connetterlo al computer, lo
slot per la scheda micro SD che funziona da storage principale e
l'ingresso per l'alimentatore. Il BR-800 può essere alimentato appunto
con un alimentatore, oppure via USB, ma può essere alimentato anche da
sei batterie stilo. Personalmente lo tengo sempre attaccato al
computer e quindi utilizzo l'alimentazione via USB, ma è bello sapere
di avere altre opzioni.&lt;/p&gt;
&lt;p&gt;Ha una ricca dotazione di effetti COSM per chitarra, basso e voce, che
aggiungono grossa potenzialità di manipolazione sonora dei segnali in
ingresso, è come avere una intera collezione di pedalini boss,
amplificatori virtuali, compressori, riverberi etc... Si possono anche
salvare dei preset delle configurazioni preferite.&lt;/p&gt;
&lt;p&gt;Può anche funzionare come superficie di controllo per DAW, ma avendo
pochi controlli fisici questa feature non è la più utilizzata (almeno
da me)&lt;/p&gt;
&lt;h2&gt;Perchè l'ho preferito alle alternative&lt;/h2&gt;
&lt;p&gt;Quando l'ho acquistato (usato) ho valutato anche le proposte della
concorrenza, in particolare il &lt;a href="https://www.tascam.eu/en/dp-008ex" title="Tascam dp008 EX"&gt;tascam dp008
ex&lt;/a&gt; e lo &lt;a href="https://zoomcorp.com/it/it/digital-mixer-multi-track-recorders/multi-track-recorders/r8/" title="Zoom R8 multitrack recorder"&gt;zoom
R8&lt;/a&gt;, ma nessuno di questi permetteva di
registrare più di due canali alla volta, ed era una caratteristica che
mi serviva per poter trasferire in digitale le registrazioni
analogiche multitraccia su cassetta: per esempio l'ho utilizzato per
remixare i demotape del mio antico gruppo &lt;a href="https://skankblocrecords.bandcamp.com/album/sb30-templa-mentis" title="Templa Mentis release on skank bloc records - free streaming"&gt;Templa
Mentis&lt;/a&gt;
registrati nell 1988/89. Questa è stata la singola feature che me lo
ha fatto preferire ai concorrenti.&lt;/p&gt;
&lt;p&gt;Cercavo qualcosa di relativamente compatto, da poter tenere sulla
scrivania e le opzioni con maggior numero di canali (es. zoom R16,
R24) erano tutte più ingombranti, e non mi convinceva il loro
workflow.&lt;/p&gt;
&lt;p&gt;Anche la sezione effetti è nettamente superiore rispetto al tascam e
allo zoom, soprattutto per quanto riguarda gli effetti per chitarra e
basso, dove boss è sicuramente un nome importante.&lt;/p&gt;
&lt;p&gt;La sezione ritmica la uso veramente poco, ma i pattern e i suoni sono
molto buoni ed è possibile con poco sforzo creare delle basi di
batteria molto convincenti.&lt;/p&gt;
&lt;p&gt;Invece il line in ausiliario lo uso moltissimo come ingresso stereo
veloce a portata di mano a cui attaccare le apparecchiature più
svariate, da walkman a cassette a piccoli synth, etc... molto molto
comodo e assente nei concorrenti.&lt;/p&gt;
&lt;h2&gt;Inconvenienti&lt;/h2&gt;
&lt;p&gt;Sono molto contento del BOSS BR-800, questi a mio avviso sono i suoi punti dolenti:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Phantom power solo su un canale&lt;/strong&gt;: questa mancanza è veramente
  incomprensibile! In pratica non è possibile alimentare phantom una
  coppia di microfoni stereo (feature presente sia nel tascam che
  nello zoom) ma solamente un microfono. Ha tutta l'aria di una
  limitazione di &lt;a href="https://en.wikipedia.org/wiki/Artificial_scarcity"&gt;scarsità
  artificiale&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Assenza di controlli fisici per il panpot&lt;/strong&gt;: presenti nel tascam,
  che dai tempi del portastudio ha ben compreso come il panpot sia un
  controllo creativo essenziale per il mixing, soprattutto con così
  poche tracce. Nel BR-800 bisogna fare del &lt;em&gt;menu diving&lt;/em&gt; per cambiare
  il panpot: flow killer.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Formato dei file proprietario&lt;/strong&gt;: per trasferire i file da/verso il
  computer, nonostante siano dei normali wav, è necessario utilizzare
  una applicazione specifica (BR wave converter, che grazie al cielo
  funziona su linux con wine): anche tascam ha fatto questa scelta,
  mentre zoom si è mostrata più matura e usa formati standard.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Conclusioni&lt;/h2&gt;
&lt;p&gt;Il BR-800 racchiude moltissime capacità in un form factor molto
compatto: ideale per l'home studio del singolo musicista, ad un prezzo
relativamente contenuto si acquista un registratore multitraccia, un
preamp per chitarra con una selezione vastissima di effetti, una
scheda audio, un controller per DAW.&lt;/p&gt;</content><category term="Hardware"/><category term="hardware"/><category term="linux"/><category term="usb"/><category term="audio"/><category term="schede audio"/><category term="ALSA"/><category term="driver audio"/></entry><entry><title>Yamaha Reface sysex utility</title><link href="http://www.emillo.net/yamaha-reface-sysex-utility.html" rel="alternate"/><published>2023-06-27T00:19:17+02:00</published><updated>2023-06-27T00:19:17+02:00</updated><author><name>Emiliano Grilli</name></author><id>tag:www.emillo.net,2023-06-27:/yamaha-reface-sysex-utility.html</id><summary type="html">&lt;p&gt;Una utility a linea di comando per salvare patch da sintetizzatori della serie Reface della Yamaha.&lt;/p&gt;</summary><content type="html">&lt;p&gt;Questa utility bash può essere utilizzata su sitemi linux (io l'ho
testata solo sulla mia debian stable) per ricevere  delle
&lt;em&gt;patch&lt;/em&gt; dai sintetizzatori della serie
&lt;a href="https://en.wikipedia.org/wiki/Yamaha_Reface" title="Yamaha Reface wikipedia page"&gt;Reface&lt;/a&gt; della Yamaha.&lt;/p&gt;
&lt;p&gt;Una &lt;em&gt;patch&lt;/em&gt;, o &lt;em&gt;preset&lt;/em&gt; è sostanzialmente una particolare configurazione
di tutti i parametri del sintetizzatore, risultando a tutti gli
effetti un "suono" che può essere salvato e successivamente richiamato.&lt;/p&gt;
&lt;p&gt;La comunicazione con i sintetizzatori avviene mediante messaggi
&lt;a href="https://en.wikipedia.org/wiki/MIDI#System_Exclusive_messages" title="System exclusive wikipedia"&gt;system
exclusive&lt;/a&gt; o "sysex"; ad esempio nello script la
variabile &lt;strong&gt;DUMP_CMD&lt;/strong&gt; contiene il comando per richiedere un dump
(ovvero una trasmissione dal synth al computer)&lt;/p&gt;
&lt;p&gt;Dei quattro modelli Reface solo la &lt;em&gt;DX&lt;/em&gt; (tributo alla sintesi FM e al
DX7, il più famoso synth FM Yamaha) ha la capacità di immagazzinare e
richiamare più di una patch nella sua memoria interna, che ne può
contenere 32 divise in 4 banchi da 8. Gli altri modelli sono:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;la &lt;em&gt;CS&lt;/em&gt;, che emula un synth analogico&lt;/li&gt;
&lt;li&gt;la &lt;em&gt;YC&lt;/em&gt;, che emula vari tipi di organo elettrico&lt;/li&gt;
&lt;li&gt;la &lt;em&gt;CS&lt;/em&gt;, che emula piani elettrici e clavinet&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Questa utility è in grado di salvare le patch anche da questi modelli,
ma naturalmente i controlli fisici come fader manopole etc... una
volta ripristinato un suono salvato in precedenza potrebbero non
rispecchiare i parametri attuali del synth.&lt;/p&gt;
&lt;p&gt;L'unica dipendenza perché questo script possa funzionare è l'utility
&lt;strong&gt;amidi&lt;/strong&gt;, comando standard di
&lt;a href="https://it.wikipedia.org/wiki/Advanced_Linux_Sound_Architecture" title="ALSA: i driver audio del kernel linux"&gt;ALSA&lt;/a&gt; che in debian è contenuto nel
pacchetto &lt;strong&gt;alsa-utils&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="ch"&gt;#!/bin/bash&lt;/span&gt;

&lt;span class="nv"&gt;REFACEPORT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;amidi&lt;span class="w"&gt; &lt;/span&gt;-l&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;grep&lt;span class="w"&gt; &lt;/span&gt;-i&lt;span class="w"&gt; &lt;/span&gt;reface&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;cut&lt;span class="w"&gt; &lt;/span&gt;-f&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-d&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot; &amp;quot;&lt;/span&gt;&lt;span class="k"&gt;)&lt;/span&gt;
&lt;span class="nv"&gt;REFACEMODEL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;amidi&lt;span class="w"&gt; &lt;/span&gt;-l&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;grep&lt;span class="w"&gt; &lt;/span&gt;-i&lt;span class="w"&gt; &lt;/span&gt;reface&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;cut&lt;span class="w"&gt; &lt;/span&gt;-f&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-d&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot; &amp;quot;&lt;/span&gt;&lt;span class="k"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-z&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="nv"&gt;$REFACEPORT&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
&lt;span class="k"&gt;then&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;Reface not found, exiting. &amp;quot;&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;exit&lt;/span&gt;
&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;Reface &lt;/span&gt;&lt;span class="nv"&gt;$REFACEMODEL&lt;/span&gt;&lt;span class="s2"&gt; found on port: &lt;/span&gt;&lt;span class="nv"&gt;$REFACEPORT&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;
&lt;span class="k"&gt;fi&lt;/span&gt;

&lt;span class="nb"&gt;echo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;Insert the name of the preset to save:&amp;quot;&lt;/span&gt;
&lt;span class="nb"&gt;read&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;PRESET_NAME
&lt;span class="nv"&gt;PRESET_NAME&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$PRESET_NAME&lt;/span&gt;.syx
&lt;span class="nb"&gt;echo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;saving your patch to:  &lt;/span&gt;&lt;span class="nv"&gt;$PRESET_NAME&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;

&lt;span class="k"&gt;case&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$REFACEMODEL&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;in&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;CS&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nv"&gt;DUMP_CMD&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;f0 43 20 7f 1c 03 0e 0f 00 f7&amp;#39;&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="p"&gt;;;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;DX&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nv"&gt;DUMP_CMD&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;f0 43 20 7f 1c 05 0e 0f 00 f7&amp;#39;&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="p"&gt;;;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;YC&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nv"&gt;DUMP_CMD&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;f0 43 20 7f 1c 06 0e 0f 00 f7&amp;#39;&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="p"&gt;;;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;CP&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nv"&gt;DUMP_CMD&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;f0 43 20 7f 1c 04 0e 0f 00 f7&amp;#39;&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="p"&gt;;;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;*&lt;span class="o"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;esac&lt;/span&gt;
&lt;span class="c1"&gt;# echo $DUMP_CMD &amp;amp;&amp;amp; exit&lt;/span&gt;
&lt;span class="nv"&gt;DUMPREQUEST_COMMAND&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;amidi -p &lt;/span&gt;&lt;span class="nv"&gt;$REFACEPORT&lt;/span&gt;&lt;span class="s2"&gt; -S &lt;/span&gt;&lt;span class="nv"&gt;$DUMP_CMD&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;
&lt;span class="nv"&gt;RETRIEVE_COMMAND&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;amidi -p &lt;/span&gt;&lt;span class="nv"&gt;$REFACEPORT&lt;/span&gt;&lt;span class="s2"&gt; -r &lt;/span&gt;&lt;span class="nv"&gt;$PRESET_NAME&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;

&lt;span class="nv"&gt;$RETRIEVE_COMMAND&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;&amp;amp;&lt;/span&gt;
&lt;span class="nv"&gt;$DUMPREQUEST_COMMAND&lt;/span&gt;

sleep&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;
killall&lt;span class="w"&gt; &lt;/span&gt;-9&lt;span class="w"&gt; &lt;/span&gt;amidi
&lt;span class="nb"&gt;kill&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$$&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</content><category term="Utility"/><category term="bash"/><category term="utility"/><category term="synthesizers"/><category term="alsa"/><category term="yamaha"/><category term="sysex"/></entry><entry><title>Musica liquida con mpd</title><link href="http://www.emillo.net/musica-liquida-con-mpd.html" rel="alternate"/><published>2023-02-11T22:50:00+01:00</published><updated>2023-02-11T22:50:00+01:00</updated><author><name>Emiliano Grilli</name></author><id>tag:www.emillo.net,2023-02-11:/musica-liquida-con-mpd.html</id><summary type="html">&lt;p&gt;Oggigiorno gli ascoltatori di musica si sono quasi completamente astratti dal "medium", dal formato fisico in cui la musica è distribuita, che è stato rappresentato storicamente da vinile, nastro magnetico, musicassetta, compact disc. In questo articolo vediamo come è possibile impostare un server musicale casalingo con mpd.&lt;/p&gt;</summary><content type="html">&lt;h2&gt;Supporti musicali di ieri e di oggi&lt;/h2&gt;
&lt;p&gt;Oggigiorno gli ascoltatori di musica si sono quasi completamente
astratti dal
&lt;a href="https://en.wikipedia.org/wiki/Data_storage#Recording_media"&gt;medium&lt;/a&gt;,
dal formato fisico in cui la musica è distribuita, che è stato
rappresentato storicamente da vinile, nastro magnetico, musicassetta,
compact disc.&lt;/p&gt;
&lt;p&gt;C'è stata una tappa intermedia, prima di passare alla musica in
streaming dal &lt;em&gt;cloud&lt;/em&gt; cui siamo abituati oggi, e consisteva nel
detenere la &lt;a href="https://it.wikipedia.org/wiki/Musica_liquida"&gt;musica
liquida&lt;/a&gt; come file sul
proprio hard disk o lettore portatile. Oggi è ancora possibile
utilizzare questo metodo per ascoltare la propria collezione musicale.&lt;/p&gt;
&lt;p&gt;Ho già pubblicato un articolo su &lt;a href="/alcuni-riproduttori-di-file-audio-per-linux.html"&gt;alcuni riproduttori di file audio
per Linux&lt;/a&gt;, ma in
questo articolo ci concentriamo su un approccio più client/server con
mpd.&lt;/p&gt;
&lt;h2&gt;Formati per la &lt;a href="https://it.wikipedia.org/wiki/Musica_liquida"&gt;musica liquida&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Il formato che ha goduto del maggiore successo nel passaggio da musica
su formato fisico a musica liquida è stato sicuramente &lt;a href="https://it.wikipedia.org/wiki/MP3"&gt;Mpeg layer 3 o
"mp3"&lt;/a&gt;, che a fronte di una perdita
di qualità audio offriva fattori di compressione anche fino a 10
volte, e questo era molto importante quando internet era
prevalentemente dial-up e trasferire 70 MegaByte per una sola canzone
era improponibile.&lt;/p&gt;
&lt;p&gt;Oggi questo è sempre meno vero sia per la velocità delle connessioni
sia per il costo dello storage che è sempre più basso. Un formato
molto usato che a differenza di mp3 non compromette la qualità audio è
il &lt;a href="https://it.wikipedia.org/wiki/Free_Lossless_Audio_Codec"&gt;flac&lt;/a&gt;,
che mediamente comprime del 50% rispetto al file non compresso
(formato wav).&lt;/p&gt;
&lt;h2&gt;Considerazioni filosofiche sullo streaming musicale&lt;/h2&gt;
&lt;p&gt;Ai tempi dei supporti fisici acquistare un disco significava comprare
una copia che potevi ascoltare senza limiti a tempo indeterminato,
fino alla consunzione del supporto, e per molti di noi era proprio
questo il destino della nostra musica preferita, e più la ascoltavi
più il disco si rovinava. La tua copia, l'usura della tua copia era la
testimonianza del fatto che quella musica l'avevi ascoltata e
riascoltata centinaia di volte.&lt;/p&gt;
&lt;p&gt;Il tuo disco potevi prestarlo ai tuoi amici, che magari se lo
registravano su una musicassetta, o lo usavano per fare un mixtape,
insomma non c'erano molti limiti sull'utilizzo privato che potevi fare
della musica contenuta nel disco. Certo, non potevi utilizzarlo per
fare eventi pubblici, diffonderlo via radio (ma dubito che le radio
libere degli anni '70 fossero così rispettose di questo limite),
eccetera. Soprattutto il disco era tuo per sempre, poteva essere
ereditato dai tuoi figli e dai tuoi nipoti, un po' come un libro, un
&lt;em&gt;dispositivo di diffusione di cultura&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Il modello attuale di distribuzione della musica invece non prevede
che tu compri una copia del brano musicale o dell'album e poi puoi
ascoltarlo quando ti pare, ma puoi ascoltarlo a patto che tu abbia
pagato un abbonamento, oppure che tu accetti di subire messaggi
pubblicitari. Insomma non sei più tu che controlli la tua musica, ma
ti viene &lt;em&gt;temporaneamente concesso di ascoltarla&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Certo, in cambio hai la possibilità di accedere in pochi secondi a
milioni di brani, con nessuna problematica di gestione di file o
supporti. Se ne va però la tua identità di audiofilo, di ascoltatore
critico, di collezionista, di fan.&lt;/p&gt;
&lt;h2&gt;Music player daemon, mpd&lt;/h2&gt;
&lt;p&gt;Ed ecco che finalmente dopo il pippone filosofico arriviamo al cuore
del tema di questo articolo, ovvero il software
&lt;a href="https://www.musicpd.org/"&gt;mpd&lt;/a&gt; o &lt;em&gt;music player daemon&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Si tratta di un comodo software che permette di suonare file
musicali in molti formati e che può essere controllato da remoto via
rete. Questo lo rende un candidato ideale per creare un player di
musica liquida casalingo. Installarlo su debian è semplicissimo:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;apt&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;mpd
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Per installarlo su altre distribuzioni si può consultare il &lt;a href="https://mpd.readthedocs.io/en/stable/user.html"&gt;corposo
manuale online&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Una volta installato è possibile configurarlo editando il file
&lt;code&gt;~/.mpdconf&lt;/code&gt;, anch'esso ampiamente documentato, ma le due principali
opzioni da impostare sono &lt;code&gt;music_directory&lt;/code&gt; che è la variabile che
contiene il percorso dove si trovano i file musicali (ad esempio
&lt;code&gt;~/Musica&lt;/code&gt; ) e &lt;code&gt;audio_output&lt;/code&gt; che istruisce mpd sul tipo di driver
audio da usare, qui probabilmente &lt;code&gt;type "pulse"&lt;/code&gt; è una buona scelta su
debian stable, in attesa che pipewire diventi lo standard.&lt;/p&gt;
&lt;p&gt;Qui può essere interessante anche configurare un audio output con
&lt;code&gt;type "httpd"&lt;/code&gt; che ci permette di creare uno stream del flusso audio da
servire via http che può essere poi ascoltato da un altro device sulla
rete.&lt;/p&gt;
&lt;p&gt;Si possono configurare moltissime altre cose, ma queste sono i
settaggi essenziali che permettono di cominciare ad usare mpd.&lt;/p&gt;
&lt;p&gt;Se vogliamo che il server mpd sia avviato automaticamente da systemd
come servizio dell'utente, possiamo usare questi comandi:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;systemctl&lt;span class="w"&gt; &lt;/span&gt;--user&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;enable&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;mpd.service
systemctl&lt;span class="w"&gt; &lt;/span&gt;--user&lt;span class="w"&gt; &lt;/span&gt;start&lt;span class="w"&gt; &lt;/span&gt;mpd.service
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Può essere utile anche consultare la &lt;a href="https://wiki.debian.org/mpd"&gt;guida sul wiki di debian (in
inglese)&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Controllare mpd via rete&lt;/h2&gt;
&lt;p&gt;Come dicevo, la forza di mpd sta nel fatto di poterlo controllare da
remoto. In questo è veramente fantastico il potere dell'open source,
basta vedere la &lt;a href="https://www.musicpd.org/clients/"&gt;pagina relativa ai
client&lt;/a&gt; sul sito di mpd per rendersi
conto di quanti ne siano stati creati.&lt;/p&gt;
&lt;p&gt;Personalmente ne uso due, uno per emacs chiamato
&lt;a href="https://github.com/mpdel/mpdel"&gt;mpdel&lt;/a&gt; (che non è nemmeno elencato
nella pagina precedentemente citata) e uno per android chiamato
&lt;a href="https://gitlab.com/gateship-one/malp"&gt;M.A.L.P&lt;/a&gt; che si può installare
dal
&lt;a href="https://play.google.com/store/apps/details?id=org.gateshipone.malp&amp;amp;hl=it&amp;amp;gl=US"&gt;playstore&lt;/a&gt;
e poi è facilissimo da usare e configurare e funziona come un
telecomando in cui è possibile cercare all'interno della propria
libreria di file musicali, creare playlist, associare immagini delle
cover degli album automaticamente e altro. Davvero molto comodo.&lt;/p&gt;</content><category term="Audio"/><category term="linux"/><category term="audio player"/><category term="audio"/></entry><entry><title>Beat calculator python CLI utility</title><link href="http://www.emillo.net/beat-calculator-python-cli-utility.html" rel="alternate"/><published>2023-01-31T12:00:00+01:00</published><updated>2023-01-31T12:00:00+01:00</updated><author><name>Emiliano Grilli</name></author><id>tag:www.emillo.net,2023-01-31:/beat-calculator-python-cli-utility.html</id><summary type="html">&lt;p&gt;Beat calculator in python. Proviamo a fare un post con del codice integrato. L'obiettivo sarebbe quello di sperimentare se l'interprete markdown di pelican (python) riesce senza troppa fatica a farmi vedere del codice con l'highlight della sintassi.&lt;/p&gt;</summary><content type="html">&lt;p&gt;Questo articolo vuole essere un esperimento del funzionamento del
&lt;a href="https://it.wikipedia.org/wiki/Syntax_highlighting"&gt;syntax highlighting&lt;/a&gt; del codice
scritto con markdown, che pelican dovrebbe gestire in modo più o meno
automatico.&lt;/p&gt;
&lt;p&gt;Su debian stable attuale (bullseye) c'è una versione di pelican un po'
vecchiotta, la 4.0.1 ma seguendo le istruzioni sulla relativa
&lt;a href="https://docs.getpelican.com/en/4.0.1/content.html#syntax-highlighting"&gt;documentazione
online&lt;/a&gt;
dovrei esserci riuscito.&lt;/p&gt;
&lt;p&gt;Per testare la cosa metto il codice di uno scriptino python che ho
creato allo scopo di ottenere, dato un file audio o un &lt;strong&gt;bpm&lt;/strong&gt; (beat
per minute, lo standard musicale della velocità o &lt;em&gt;tempo&lt;/em&gt; della
musica) ritorna le durate dei vari tipi di note in millisecondi, e la
frequenza in Hertz, utile per esempio per mettere a tempo un effetto
delay e cose simili.&lt;/p&gt;
&lt;p&gt;Ecco lo script:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="ch"&gt;#!/usr/bin/env python&lt;/span&gt;

&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;wave&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;string&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;capwords&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;optparse&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;OptionParser&lt;/span&gt;


&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;ms_to_bpm&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;length&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;measures&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;beat&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="sd"&gt;&amp;quot;&amp;quot;&amp;quot;Calculates beat per minute of a soundfile given the lenght in&lt;/span&gt;
&lt;span class="sd"&gt;    milliseconds, the number of measures and the beat, where 4/4 is 1.&lt;/span&gt;
&lt;span class="sd"&gt;    Returns bpm&lt;/span&gt;
&lt;span class="sd"&gt;    &amp;quot;&amp;quot;&amp;quot;&lt;/span&gt;
    &lt;span class="n"&gt;bpm&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;60000&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nb"&gt;float&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;length&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;beat&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;measures&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;bpm&lt;/span&gt;


&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;wavduration&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;wavfile&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="sd"&gt;&amp;quot;&amp;quot;&amp;quot;Returns the duration of a wavfile in milliseconds&amp;quot;&amp;quot;&amp;quot;&lt;/span&gt;
    &lt;span class="n"&gt;myfile&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;wave&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;wavfile&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;r&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;frames&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;1.0&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;myfile&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;getnframes&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="n"&gt;sr&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;myfile&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;getframerate&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="n"&gt;time&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;1.0&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;frames&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;sr&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;time&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;


&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;delay_times&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;bpm&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;120.0&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="sd"&gt;&amp;quot;&amp;quot;&amp;quot;Returns delay times for the specified bpm, in milliseconds&amp;quot;&amp;quot;&amp;quot;&lt;/span&gt;
    &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;
    &lt;span class="n"&gt;durations&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;whole&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="mf"&gt;3.0&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;dotted half&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="mf"&gt;1.0&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;half&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="mf"&gt;3.0&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;dotted quarter&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="mf"&gt;1.0&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;quarter&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="mf"&gt;3.0&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;dotted eight&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;round&lt;/span&gt;&lt;span class="p"&gt;(((&lt;/span&gt;&lt;span class="mf"&gt;1.0&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;quarter triplet&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="mf"&gt;1.0&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;eight&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="mf"&gt;3.0&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;32&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;dotted sixteenth&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;round&lt;/span&gt;&lt;span class="p"&gt;(((&lt;/span&gt;&lt;span class="mf"&gt;1.0&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;eight triplet&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="mf"&gt;1.0&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;sixteenth&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="mf"&gt;3.0&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;64&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;dotted thirty second&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;round&lt;/span&gt;&lt;span class="p"&gt;(((&lt;/span&gt;&lt;span class="mf"&gt;1.0&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;sixteenth triplet&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="mf"&gt;1.0&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;32&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;thirty second&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;duration&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;description&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;durations&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;title&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;capwords&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;description&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;delay&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;duration&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;4000&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;bpm&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mf"&gt;60.0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;frequency&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;delay&lt;/span&gt;
        &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="s2"&gt;&amp;quot;title&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="s2"&gt;&amp;quot;delay&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;delay&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="s2"&gt;&amp;quot;frequency&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;frequency&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;


&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;delay_times_format&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;bpm&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;120.0&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;delay_times&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;bpm&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt; &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;bpm&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; beats per minute (bpm):&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;Note                  Delay time             LFO freq&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;55&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;-&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;line&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;title&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;line&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;title&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ljust&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot; &amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;delay&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;line&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;delay&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;frequency&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;line&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;frequency&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;delay&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="fm"&gt;__str__&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;rjust&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
            &lt;span class="s2"&gt;&amp;quot;ms &amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="mi"&gt;10&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot; &amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;frequency&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="fm"&gt;__str__&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;rjust&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
            &lt;span class="s2"&gt;&amp;quot;Hz&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="p"&gt;)&lt;/span&gt;


&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="vm"&gt;__name__&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;__main__&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;parser&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;OptionParser&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="n"&gt;parser&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;add_option&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="s2"&gt;&amp;quot;-f&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="s2"&gt;&amp;quot;--file&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;dest&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;filename&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;default&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;none&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;help&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;wave FILE to load&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;metavar&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;FILE&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;parser&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;add_option&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="s2"&gt;&amp;quot;-b&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="s2"&gt;&amp;quot;--bpm&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;dest&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;bpm&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;default&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;analize&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;help&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;beats per minute&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;parser&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;add_option&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="s2"&gt;&amp;quot;-B&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="s2"&gt;&amp;quot;--bars&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;dest&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;bars&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;help&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;number of bars in the wav file&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;parser&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;add_option&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="s2"&gt;&amp;quot;-m&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="s2"&gt;&amp;quot;--meter&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;dest&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;meter&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;help&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;as in 3/4 or 12/8, default 4/4&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;options&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;parser&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;parse_args&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;


    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;options&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;meter&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;options&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;meter&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;split&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;/&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;meter&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;float&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="nb"&gt;float&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
        &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;Meter is&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;options&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;meter&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;meter&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
        &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;Meter is 4/4&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;options&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;bars&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;bars&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;options&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;bars&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;bars&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
    &lt;span class="n"&gt;wavfile&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;options&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;filename&lt;/span&gt;

    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;wavfile&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;none&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;No files to analize, defaulting to bpm provided, or 120&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;options&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;bpm&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;analize&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;bpm&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;120&lt;/span&gt;
        &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;bpm&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;float&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;options&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;bpm&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;

        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;options&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;bpm&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;analize&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;bpm&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;float&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;options&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;bpm&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="n"&gt;delay_times_format&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;bpm&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;bpm&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;120&lt;/span&gt;

        &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;75&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;-&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

        &lt;span class="n"&gt;wavdur&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;wavduration&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;wavfile&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;wavfile&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;is&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;wavdur&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;milliseconds&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;bpm&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ms_to_bpm&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;wavdur&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;bars&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;meter&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

        &lt;span class="c1"&gt;# bpm = ms_to_bpm(3850,2,1)&lt;/span&gt;
        &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;Bpm of&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;wavfile&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;is&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;bpm&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="n"&gt;delay_times_format&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;bpm&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</content><category term="Utility"/><category term="markdown"/><category term="python"/><category term="utility"/><category term="coding"/></entry><entry><title>Emacs, l'editor di testo GNU</title><link href="http://www.emillo.net/emacs-leditor-di-testo-gnu.html" rel="alternate"/><published>2023-01-30T22:00:00+01:00</published><updated>2023-01-30T22:00:00+01:00</updated><author><name>Emiliano Grilli</name></author><id>tag:www.emillo.net,2023-01-30:/emacs-leditor-di-testo-gnu.html</id><summary type="html">&lt;p&gt;Uno dei software più longevi in assoluto, GNU emacs è sicuramente un software di nicchia, ma per chi deve lavorare con il testo è quanto di più vicino al nirvana si possa trovare&lt;/p&gt;</summary><content type="html">&lt;h2&gt;Cos'è Emacs&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://www.gnu.org/software/emacs/"&gt;GNU Emacs&lt;/a&gt; è un editor di testo potente e flessibile sviluppato dalla &lt;a href="http://fsf.org"&gt;Free Software Foundation&lt;/a&gt;. È stato creato nel 1976 da &lt;a href="http://www.stallman.org"&gt;Richard Stallman&lt;/a&gt; ed è uno dei software di editing di testo più antichi e utilizzati al mondo (e secondo l'&lt;a href="https://it.wikipedia.org/wiki/Effetto_Lindy"&gt;effetto Lindy&lt;/a&gt; è quindi un ottimo investimento).&lt;/p&gt;
&lt;p&gt;Emacs è conosciuto per la sua personalizzabilità e la sua estensibilità. Il suo codice sorgente è disponibile gratuitamente e gli utenti possono modificarlo e creare plugin per estendere le sue funzionalità. Ciò ha reso possibile la creazione un'ampia gamma di estensioni che vanno dalla semplice formattazione del testo a funzionalità più avanzate come l'integrazione con sistemi di controllo versione (&lt;a href="https://magit.vc/"&gt;magit&lt;/a&gt;), la gestione dei progetti e molto altro.&lt;/p&gt;
&lt;p&gt;Una delle caratteristiche più distintive di Emacs è la sua capacità di eseguire comandi tramite tasti di scelta rapida. Gli utenti possono eseguire comandi come salvare un file, copiare, incollare o effettuare una ricerca semplicemente premendo una combinazione di tasti. Questo rende più facile e veloce lavorare con il software e aumenta la produttività degli utenti. In passato i detrattori di Emacs, scherzando su questa caratteristica sostenevano che Emacs fosse l'acronimo di "Escape Meta Alt Control Shift".&lt;/p&gt;
&lt;p&gt;Emacs è anche estremamente personalizzabile. Gli utenti possono modificare l'aspetto del software, modificare le impostazioni di sintassi e creare modelli personalizzati per i propri file. Inoltre, è possibile creare macro che eseguono comandi ripetitivi in modo automatizzato, semplificando ulteriormente il processo di editing di testo.&lt;/p&gt;
&lt;h2&gt;Org mode&lt;/h2&gt;
&lt;p&gt;Emacs supporta molti linguaggi di programmazione e ha una vasta gamma di snippet di codice per aiutare gli sviluppatori a scrivere codice più velocemente e facilmente. Ma non è un software ad esclusivo appannaggio dei programmatori, molti professionisti che hanno necessità di lavorare con il testo lo utilizzano proficuamente.&lt;/p&gt;
&lt;p&gt;Famoso e molto utilizzato ad esempio è &lt;a href="http://orgmode.org"&gt;org mode&lt;/a&gt;, una vera e propria applicazione, che a partire da una struttura a &lt;em&gt;outline&lt;/em&gt; fornisce tantissime funzionalità come un'agenda con lista di TODO, pubblicazione in svariati formati (html, latex, pdf, markdown, etc..), blocchi eseguibili in stile &lt;em&gt;literate programming&lt;/em&gt;,  knowledge base personale, etc.. e tutto utilizzando un formato universale e aperto come il &lt;strong&gt;testo semplice&lt;/strong&gt;; il motto di org mode è infatti "&lt;em&gt;your life in plain text&lt;/em&gt;". Caldissimamente consigliato e spesso uno dei motivi per cui gli utenti approdano a Emacs.&lt;/p&gt;
&lt;h2&gt;Il controllo del sistema nelle tue mani&lt;/h2&gt;
&lt;p&gt;Emacs è disponibile per molte piattaforme, tra cui Windows, macOS, Linux e molte altre. Questa disponibilità su molte piattaforme lo rende una scelta ideale per coloro che lavorano su più sistemi operativi e desiderano avere un'esperienza coerente di editing di testo su ogni piattaforma, anche se il suo habitat naturale è GNU/Linux, dove esprime al meglio le sue potenzialità: può essere usato infatti come file manager (dired), shell di comandi (shell-mode, ansi-term, vterm, eshell...), visualizzatore di documentazione (info, man), calcolatrice, calendario, client email, eccetera. Insomma può essere a buon titolo considerato &lt;strong&gt;l'interfaccia utente del sistema GNU&lt;/strong&gt;&lt;/p&gt;</content><category term="Emacs"/><category term="linux"/><category term="produttività"/><category term="emacs"/></entry><entry><title>Schede audio e GNU/Linux</title><link href="http://www.emillo.net/schede-audio-e-gnulinux.html" rel="alternate"/><published>2015-06-04T15:27:00+02:00</published><updated>2015-06-04T15:27:00+02:00</updated><author><name>Emiliano Grilli</name></author><id>tag:www.emillo.net,2015-06-04:/schede-audio-e-gnulinux.html</id><summary type="html">&lt;p&gt;Uno dei problemi principali che affliggono il neofita quando si avvicina alla produzione audio/musicale con GNU/Linux è il supporto hardware. E' vero che molto è stato fatto, e la situazione oggi è molto migliorata rispetto agli inizi, quando comprare una scheda audio pienamente supportata era quasi come un terno al lotto, ma ancora in questo ambito ci sono dei problemi.&lt;/p&gt;</summary><content type="html">&lt;p&gt;Uno dei problemi principali che affliggono il neofita quando si avvicina
alla produzione audio/musicale con GNU/Linux è il supporto hardware. E'
vero che molto è stato fatto, e la situazione oggi è molto migliorata
rispetto agli inizi, quando comprare una scheda audio pienamente supportata
era quasi come un terno al lotto, ma ancora in questo ambito ci sono dei
problemi.&lt;/p&gt;
&lt;h2 &gt;Driver audio per linux &lt;small&gt;ALSA, FFADO&lt;/small&gt;&lt;/h2&gt;
&lt;p&gt;I driver delle schede audio nel kernel Linux si chiamano &lt;a href="http://www.alsa-project.org"&gt;ALSA&lt;/a&gt;,
acronimo che sta per "advanced linux sound architecture".&lt;/p&gt;
&lt;p&gt;Per quanto riguarda le schede integrate nei personal computer, che spesso
sono varianti basate su chipset piuttosto comuni e noti, generalmente non
ci sono grossi problemi nel supporto, e anzi, spesso le cose funzionano
"out of the box", diversamente da quello che succede per esempio su
windows.&lt;/p&gt;
&lt;p&gt;Il discorso cambia per schede audio rivolte ad un mercato più professionale
o specificamente per musicisti: in questo caso il supporto è meno scontato
perché il mercato è molto più piccolo e perché nel 99% dei casi il
produttore non fornisce driver per GNU/Linux.&lt;/p&gt;
&lt;p&gt;I driver quindi, quando esistono, sono il frutto di uno sforzo volontario
della community, spesso con pochissimo (o senza) supporto da parte del
produttore.&lt;/p&gt;
&lt;p&gt;Per una discussione sui tipi di interfaccia delle varie schede, si veda
&lt;a
href="http://linuxaudio.it/index.php/Scegliere_una_scheda_audio_o_MIDI"&gt;"scegliere
    una scheda audio o MIDI" su linuxaudio.it&lt;/a&gt;, tenendo presente che le
schede firewire (ieee1394) sono pilotate da un progetto diverso da ALSA,
chiamato &lt;a href="http://www.ffado.org/"&gt;FFADO&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Prima di qualsiasi acquisto è opportuno verificare sul sito di ALSA o FFADO
se la scheda risulta supportata, e &lt;strong&gt;soprattutto&lt;/strong&gt; cercare evidenza di qualcuno
che prima di noi l'ha usata con successo. Se non si trova, si può chiedere
online (mailing list, gruppi facebook, IRC), ma in ogni caso &lt;em&gt;mai&lt;/em&gt;
acquistare compulsivamente senza prima verificare.&lt;/p&gt;
&lt;h2 &gt;Vantaggi dei driver open&lt;/h2&gt;

&lt;p&gt;Come dicevamo il mondo delle periferiche audio per uso musicale è
relativamente "di nicchia" ma è in continua evoluzione, con nuovi modelli
che appaiono continuamente sul mercato. Questo porta ad una rapida
obsolescenza delle schede audio, che spesso in capo a qualche anno perdono
il supporto per nuovi sistemi operativi da parte del produttore.&lt;/p&gt;
&lt;p&gt;Questo con i driver open source non accade: ecco perché con GNU/Linux è
possibile utilizzare schede audio che su altri sistemi sono considerate
obsolete, perché il relativo driver ALSA viene compilato sempre con i nuovi
kernel. Ottima cosa per noi, perché queste periferiche diventano molto
più economiche sul mercato dell'usato, grazie al fatto che sono diventate
"unsupported".&lt;/p&gt;
&lt;h2 &gt;Splendore e miseria dell'USB&lt;/h2&gt;

&lt;p&gt;In alcuni casi esistono specifiche standardizzate che facilitano molto la
scrittura dei driver, e ciò è vero in particolare per le periferiche
USB. Se una periferica USB è &lt;a
href="http://en.wikipedia.org/wiki/Class_driver"&gt;&lt;em&gt;class compliant&lt;/em&gt;&lt;/a&gt;
spesso è pubblicizzata sottolineando questa caratteristica, con frasi tipo
"non necessita l'installazione di driver" e cose simili.&lt;/p&gt;
&lt;p&gt;ALSA ha un driver per questo tipo di dispositivi (snd-usb-audio) capace di
gestire sia audio che MIDI. Ecco alcune schede che ho provato personalmente
e che funzionano:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Alesis IO2 express&lt;/li&gt;
    &lt;li&gt;Roland SCD70&lt;/li&gt;
    &lt;li&gt;Roland UA25&lt;/li&gt;
    &lt;li&gt;Boss BR-800&lt;/li&gt;
    &lt;li&gt;Griffin iMic&lt;/li&gt;
    &lt;li&gt;Prodipe MIDI 4i4o&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;USB inoltre è una scelta quasi forzata se il computer dove vogliamo usare
la scheda è un laptop/portatile: ormai l'interfaccia PCMCIA è obsoleta e
pochi portatili hanno integrata una porta firewire.&lt;/p&gt;
&lt;p&gt;Il problema con le schede USB è che in genere (tranne alcune eccezioni),
non si tratta di hardware professionale, ma di prodotti di confine tra il
mondo &lt;em&gt;consumer&lt;/em&gt; e quello &lt;em&gt;pro&lt;/em&gt;. USB fornisce in molti casi anche
l'alimentazione alle periferiche, e questo è un bene perché ci evita
scomodi alimentatori esterni, ma è anche un elemento che può interferire
negativamente sulla qualità audio con rumori, ronzii e simili. Nella mia
esperienza non ho mai trovato una scheda audio USB che potesse eguagliare
la qualità (e il numero di canali) audio di schede PCI.&lt;/p&gt;
&lt;p&gt;Dove USB eccelle invece è nell'ambito dei &lt;em&gt;controller MIDI&lt;/em&gt; dove ormai è
uno standard indiscusso. Anche in questo caso prima dell'acquisto è bene
controllare che la periferica sia &lt;em&gt;class compliant&lt;/em&gt; e che non usi
protocolli proprietari non utilizzabili su GNU/Linux. Ecco una lista di
controller che utilizzo e che funzionano egregiamente:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Studiologic vmk176&lt;/li&gt;
    &lt;li&gt;Roland pc300&lt;/li&gt;
    &lt;li&gt;AKAI lpk25&lt;/li&gt;
    &lt;li&gt;Korg PadKontrol&lt;/li&gt;
    &lt;li&gt;Korg nanoKontrol&lt;/li&gt;
    &lt;li&gt;AKAI lpd8&lt;/li&gt;
    &lt;li&gt;Novation Remote Zero (senza automap)&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Spesso è presente un editor software per configurare questi dispositivi, e
normalmente funziona con &lt;em&gt;wine&lt;/em&gt;, un emulatore che riesce ad utilizzare
programmi scritti per windows.&lt;/p&gt;</content><category term="Hardware"/><category term="hardware"/><category term="schede audio"/><category term="linux"/><category term="ALSA"/><category term="FFADO"/><category term="driver audio"/></entry><entry><title>Nuova versione di emillo.net</title><link href="http://www.emillo.net/nuova-versione-di-emillonet.html" rel="alternate"/><published>2015-05-29T08:01:00+02:00</published><updated>2015-05-29T08:01:00+02:00</updated><author><name>Emiliano Grilli</name></author><id>tag:www.emillo.net,2015-05-29:/nuova-versione-di-emillonet.html</id><summary type="html">&lt;p&gt;Dopo lunghi anni di attesa finalmente mi sono deciso a dare una nuova veste
grafica e un nuovo "cuore" al sito.  La precedente versione utilizzava un
CMS (content management system) chiamato webGUI, che ha fatto il suo onesto
lavoro per tutti questi anni, ma che cominciava a mostrare la sua …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Dopo lunghi anni di attesa finalmente mi sono deciso a dare una nuova veste
grafica e un nuovo "cuore" al sito.  La precedente versione utilizzava un
CMS (content management system) chiamato webGUI, che ha fatto il suo onesto
lavoro per tutti questi anni, ma che cominciava a mostrare la sua età,
anche perché non l'ho più aggiornato dal 2006 circa.&lt;/p&gt;
&lt;p&gt;In questi anni il web si è trasformato parecchio, spesso in meglio, grazie
a nuove tecnologie software e nuove pratiche di sviluppo e di deploy dei
siti internet, e ho quindi deciso di svecchiare il mio applicando questi
nuovi ritrovati dell'informatica, cercando di tenere sempre fede al motto
KISS (keep it simple, stupid), cioè cercando di non complicare troppo le
cose. Perché quando le cose sono troppo complicate finisce sempre che poi
le si abbandona perché la frustrazione nell'utilizzo è maggiore del divertimento.&lt;/p&gt;
&lt;p&gt;Cercavo una soluzione che avesse queste caratteristiche:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;design responsive (si autoadatta ai dispositivi mobili)&lt;/li&gt;
&lt;li&gt;w3c compliant&lt;/li&gt;
&lt;li&gt;veloce nell'uso&lt;/li&gt;
&lt;li&gt;facilità di sviluppo/deploy&lt;/li&gt;
&lt;li&gt;flessibilità nella personalizzazione&lt;/li&gt;
&lt;li&gt;no complicate procedure lato server&lt;/li&gt;
&lt;li&gt;FLOSS&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 class="page-header"&gt;quale piattaforma ho scelto?&lt;/h3&gt;

&lt;p&gt;Dopo qualche ricerca ho scelto di utilizzare un generatore di siti web
statici abbinato a un template di bootstrap. Il generatore si chiama &lt;a href="http://blog.getpelican.com/"&gt;Pelican&lt;/a&gt; ed
è sviluppato in Python. E' un pacchetto software fatto molto bene, elegante
e leggero. E' incluso in debian, la distribuzione GNU/Linux che uso, e di
solito questo è una garanzia di stabilità, qualità e aderenza ai principi
della Free Software Foundation. Per installarlo è stato sufficiente
digitare&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;apt-get&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;python-pelican
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;&lt;br /&gt;&lt;a href="http://getbootstrap.com/"&gt;Bootstrap&lt;/a&gt; è un framework HTML / CSS
/ Javascript famosissimo e funzionale, e l'avevo già utilizzato in
precendenza quando ho creato il sito internet della &lt;a
href="http://summerscrews2014.ing.unibo.it/"&gt;SummerScrews edizione
2014&lt;/a&gt;, quindi già parzialmente lo conoscevo e lo apprezzavo.  Questo mi
ha "regalato" la responsiveness, la validazione del codice, e tutta una
serie di comodi elementi pronti all'uso come bottoni, menu, headers, etc...&lt;/p&gt;
&lt;p&gt;Il fatto che il sito generato sia statico contribuisce alla velocità nella
fruizione, un altro dei miei obiettivi. Per quanto riguarda la facilità di
sviluppo e deploy, pelican include degli script che permettono di servire
il sito e ricaricarlo a seguito di qualsiasi modifica: comodissimo per lo
sviluppo. Il deploy infine è fatto per ora molto semplicemente via ftp,
spero in futuro di poter utilizzare qualcosa di più moderno come rsync.&lt;/p&gt;
&lt;p&gt;Pelican internamente utilizza un eccellente motore di template chiamato &lt;a
href="http://jinja.pocoo.org/"&gt;Jinja&lt;/a&gt;, e il grosso del lavoro è stato
fondamentalmente creare una versione personalizzata dei template di base di
pelican integrandoli con il template Modern Business di bootstrap.&lt;/p&gt;
&lt;h3 class="page-header"&gt;migrazione dei contenuti&lt;/h3&gt;

&lt;p&gt;Il fatto che il sito fosse in stato di abbandono da tanto tempo è stato
provvidenziale, così ho potuto eliminare molti contenuti obsoleti che
purtroppo in un tema come il software sono all'ordine del giorno (ulteriore
motivo di frustrazione), ma ho in progetto di adeguare e aggiornare i
contenuti e, si spera, aggiungerne di nuovi.&lt;/p&gt;
&lt;p&gt;Chi volesse comunque consultare la vecchia versione del sito lo può fare
tramite il fantastico servizio di &lt;a
href="http://web.archive.org"&gt;archive.org&lt;/a&gt; che è una sorta di "macchina
del tempo" di internet. Ad esempio vari snapshot di emillo.net si possono
trovare al seguente URL: &lt;a
href="http://web.archive.org/web/*/http://www.emillo.net"&gt;http://web.archive.org/web/*/http://www.emillo.net&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Un contenuto che ho mantenuto così com'era sono gli archivi della mia
newsletter &lt;a
href="http://emillo.net/download/newsletter/"&gt;emillo-zine&lt;/a&gt;, che
purtroppo ebbe breve vita ma che può fornire ancora informazioni utili (se
non altro a fini storici :P )&lt;/p&gt;</content><category term="News"/><category term="emillo.net"/><category term="news"/><category term="web"/></entry><entry><title>Musescore 2.0, una pietra miliare</title><link href="http://www.emillo.net/musescore-20-una-pietra-miliare.html" rel="alternate"/><published>2015-05-28T17:44:00+02:00</published><updated>2015-05-28T17:44:00+02:00</updated><author><name>Emiliano Grilli</name></author><id>tag:www.emillo.net,2015-05-28:/musescore-20-una-pietra-miliare.html</id><summary type="html">&lt;p&gt;&lt;a href="http://www.musescore.org/it"&gt;Musescore&lt;/a&gt; è un eccellente programma &lt;a href="http://it.wikipedia.org/wiki/WYSIWYG"&gt;WYSIWYG&lt;/a&gt; open source per la notazione musicale per Linux, windows e MacOS. Si tratta di un programma grafico che consente l'edizione di spartiti in modo semplice e veloce.&lt;/p&gt;</summary><content type="html">&lt;p&gt;&lt;a class="image-popup-fit-width" href="http://www.emillo.net/images/musescore.png" title="Musescore con caricato uno dei demo."&gt;
        &lt;img src="http://www.emillo.net/images/musescore.png" class="img-responsive img-thumbnail" style="margin-left:20px;float:right;max-width:40%" alt="Musescore"/&gt;
      &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.musescore.org/it"&gt;Musescore&lt;/a&gt; è un eccellente programma &lt;a href="http://it.wikipedia.org/wiki/WYSIWYG"&gt;WYSIWYG&lt;/a&gt; open source per la notazione
musicale per Linux, windows e MacOS. Si tratta di un programma grafico che
consente l'edizione di spartiti in modo semplice e veloce. Un software di
questa complessità può essere tranquillamente paragonato a finale o
sibelius in quanto a caratteristiche (vedi ad esempio questa &lt;a href="https://docs.google.com/spreadsheets/d/1d6wNElJGzL_sDe2pVKMD0RVxhznQmGk_A-aPb4sl0lU/edit#gid=0"&gt;dettagliata
comparazione delle feature con finale&lt;/a&gt;). E in più è rilasciato con licenza
libera GPL.&lt;/p&gt;
&lt;p&gt;Il progetto musescore è stato iniziato da Werner Schweer, l'autore
originario del sequencer &lt;a href="http://muse-sequencer.org"&gt;muse&lt;/a&gt;, uno dei migliori per linux a mio parere.
Risultato di molti anni di intenso sviluppo, questa versione 2.0 è
veramente un gioiello della comunità, e ha molto beneficiato del fatto di
essere multipiattaforma, caratteristica che ha attirato molti utenti
windows e macos. La base utenti allargata ha grandemente aiutato a fixare i bachi e a definire le nuove funzionalità.&lt;/p&gt;
&lt;h3&gt;il più avanzato editor di notazione &lt;a href="http://it.wikipedia.org/wiki/Free_and_Open_Source_Software"&gt;FLOSS&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Questo programma ha numerosissime funzioni per la notazione, permette di
importare ed esportare un gran numero di formati diversi di file tra cui
pdf, musicXML, e MIDI e contiene un sintetizzatore integrato
derivato da fluidsynth per ascoltare immediatamente le note inserite e la
composizione.&lt;/p&gt;
&lt;p&gt;Questa ultima versione ha anche un basilare supporto per JACK MIDI, il che
lo rende capace di pilotare qualsiasi synth o sampler software, anche se
non è immediata la gestione dei canali e delle porte MIDI. Potrebbe tornare
utile un router midi come mididings in questo caso.&lt;/p&gt;
&lt;p&gt;Il programma è localizzato anche in italiano, e sul sito (anch'esso
localizzato) ci sono dei video tutorial in inglese ma con sottotitoli in
italiano. Anche il manuale è disponibile in italiano, sia per la consultazione online
sul sito che in formato pdf per la stampa o la lettura offline.&lt;/p&gt;
&lt;p&gt;Sul sito è anche presente una sezione in cui è possibile caricare file di
musescore ed è pieno di composizioni degli utenti oltre ad un gran numero
di spartiti di musica classica.&lt;/p&gt;
&lt;p&gt;Esiste inoltre una app per android/ios per leggere file di musescore
direttamente sul tablet o sullo smartphone, con la possibiltà di
visualizzare e suonare solo alcune parti di una partitura, trasporre le
parti, etc...&lt;/p&gt;
&lt;p&gt;In conclusione, un software veramente bello e completo per la scrittura di
spartiti, e probabilmente il più avanzato del suo genere per GNU/Linux.&lt;/p&gt;</content><category term="Notazione musicale"/><category term="notazione"/><category term="linux"/><category term="editor di spartito"/><category term="musescore"/><category term="teoria musicale"/><category term="notazione musicale"/><category term="MIDI"/></entry><entry><title>Alcuni riproduttori di file audio per Linux</title><link href="http://www.emillo.net/alcuni-riproduttori-di-file-audio-per-linux.html" rel="alternate"/><published>2015-02-04T00:00:00+01:00</published><updated>2015-02-04T00:00:00+01:00</updated><author><name>Emiliano Grilli</name></author><id>tag:www.emillo.net,2015-02-04:/alcuni-riproduttori-di-file-audio-per-linux.html</id><summary type="html">&lt;p&gt;Per GNU/Linux esistono un gran numero di riproduttori (player) di file audio, capaci di gestire una serie di formati.&lt;/p&gt;</summary><content type="html">&lt;p&gt;&lt;img class="img-responsive img-thumbnail" style="margin-left: 20px;max-width:35%; float:right;" src="http://www.emillo.net/images/audacious.png" alt="audacious screenshot"/&gt;&lt;/p&gt;
&lt;p&gt;Per GNU/Linux esistono un gran numero di riproduttori (player) di file audio, capaci di gestire una serie di formati.&lt;/p&gt;
&lt;p&gt;Innanzitutto va fatta una distinzione fra i formati audio &lt;em&gt;non compressi&lt;/em&gt; come wav, aiff, au, snd, etc.. e i formati &lt;em&gt;compressi&lt;/em&gt; come mp3, ogg e flac. Tra i formati compressi può essere fatta una ulteriore distinzione tra formati &lt;em&gt;lossy&lt;/em&gt; ovvero con perdita di informazione a seguito della compressione, come mp3 e ogg, e formati &lt;em&gt;lossless&lt;/em&gt;, come flac, che a fronte di una dimensione maggiore non hanno perdita.&lt;/p&gt;
&lt;p&gt;Qui mi occuperò di player diciamo di alto livello, che sono in grado di riprodurre tutta questa gamma di formati. Vi sono anche utility specifiche e librerie che consentono di utilizzarli a linea di comando, e sono generalmente incapsulate in questi player. Una fra tutte la libreria &lt;a href="http://www.mega-nerd.com/libsndfile/"&gt;libsndfile&lt;/a&gt; che permette di lavorare con i formati non compressi.&lt;/p&gt;
&lt;p&gt;Tutti questi player supportano la gestione di playlist e lo streaming remoto (per esempio di radio online).&lt;/p&gt;
&lt;h2 &gt;totem &lt;small&gt;il player di GNOME&lt;/small&gt;&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://wiki.gnome.org/Apps/Videos"&gt;Totem&lt;/a&gt;, recentemente ribattezzato "Videos" è l'applicazione predefinita del desktop GNOME per la riproduzione di file video e audio. Sebbene il focus di questa applicazione ora si sia spostato più che altro sui video (come si evince dal nome), è perfettamente in grado di riprodurre i file audio sia compressi che non compressi. Se utilizzi il desktop GNOME, cliccando su un file audio nel file manager probabilmente ti si aprirà una istanza di totem che riprodurrà il file.&lt;/p&gt;
&lt;h2 &gt;audacious &lt;small&gt;l'erede di XMMS&lt;/small&gt;&lt;/h2&gt;

&lt;p&gt;&lt;a href="http://audacious-media-player.org/"&gt;Audacious&lt;/a&gt; è un riproduttore di soli file audio (no video), modellato sulle ceneri di XMMS, che fu uno tra i primi player per GNU/Linux e che era un clone della famosa applicazione WinAmp per windows. Supporta parecchi tipi di uscita audio tra cui pulseaudio, ALSA, JACK. Permette di gestire facilmente le playlist, ed è un player grafico leggero e affidabile. Può essere personalizzato con varie &lt;em&gt;skin&lt;/em&gt;, comprese quelle di winamp e di XMMS.&lt;/p&gt;
&lt;h2 &gt;mplayer &lt;small&gt;il player a tutto tondo&lt;/small&gt;&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.mplayerhq.hu"&gt;Mplayer&lt;/a&gt; è un potentissimo player audio/video a linea di comando (anche se possiede una GUI, invocata con &lt;em&gt;gmplayer&lt;/em&gt;, ma solo se compilato con una specifica opzione). Come si può capire dalla corposa &lt;a href="http://www7.mplayerhq.hu/DOCS/HTML/en/index.html"&gt;documentazione&lt;/a&gt; mplayer è uno dei player più completi per GNU/Linux ed è un software di cui è caldamente consigliata l'installazione.&lt;/p&gt;
&lt;p&gt;Mplayer ha una miriade di opzioni a linea di comando con cui è possibile configurarlo nei minimi dettagli, e supporta parecchi dispositivi di uscita audio e video, tra cui anche JACK. Contiene anche il potente comando &lt;em&gt;mencoder&lt;/em&gt; che permette di lavorare a basso livello con i video.&lt;/p&gt;
&lt;h2 &gt;moc &lt;small&gt;leggero ma completo&lt;/small&gt;&lt;/h2&gt;

&lt;p&gt;&lt;a href="http://moc.daper.net/"&gt;Moc&lt;/a&gt;, acronimo di &lt;em&gt;music on console&lt;/em&gt;, è un player testuale che supporta i maggiori formati e ha una interfaccia simile a midnight commander, con la quale si può navigare nel filesystem e aggiungere i file alla coda di riproduzione. Ha una architettura client - server e supporta anche JACK.&lt;/p&gt;</content><category term="Audio"/><category term="audio player"/><category term="audio"/><category term="linux"/></entry></feed>