Il mio articolo “Grafica con Python” del maggio 2018 aveva per oggetto principale la grafica finalizzata a “vestire” graficamente un programma per computer. Il suo allegato era un manualetto in formato PDF sul modulo Tkinter con il quale si può fare questo.
Per una presentazione completa di Tkinter non ho potuto tuttavia fare a meno di mostrare il funzionamento del sotto-modulo della grafica della tartaruga che poggia sullo stesso Tkinter e ne fa parte, così come non ho potuto tralasciare la descrizione del widget contenitore Canvas e di tutto ciò che vi si può disegnare.
Questi sono esempi di come con Python si possa fare della grafica non necessariamente finalizzata alla creazione di interfacce per facilitare l’uso di un programma (GUI).
Nel caso della tartaruga disegniamo figure di varia natura impartendo al computer istruzioni per manovrare un pennino e nel caso del canvas impartendo macro-istruzioni finalizzate al disegno di figure geometriche.
Queste istruzioni possono far parte di uno script, più o meno dotato di GUI, e possono anche essere impartite una via l’altra in modo interattivo utilizzando la shell di Python.
Nel primo caso il risultato della nostra creazione grafica lo vediamo compiuto eseguendo lo script, nel secondo caso abbiamo invece modo di veder crescere passo passo la nostra creazione.
Nel citato manualetto su Tkinter ho dato per scontato il metodo dello script e tutti gli esempi che ho presentato sono così impostati.
Ma quando si fa della grafica non finalizzata alla costruzione di GUI ma finalizzata alla creatività o allo studio diventa piacevole ed educativo lavorare in maniera interattiva con la shell.
Tra l’altro, per quest’ultimo tipo di grafica, oltre alle librerie della tartaruga e del canvas contenute in Tkinter, esistono altri moduli Python.
Nell’allegato tutorial in formato PDF, liberamente scaricabile, riproducibile e distribuibile, che dedico alla grafica interattiva con Python, ne presento alcuni.
Autore: vittorio
Intelligenza artificiale per l’improvvisazione musicale
Contrariamente a quanto ci potrebbe far pensare il termine “improvvisazione”, l’improvvisazione musicale è una difficile arte che richiede doti non comuni di sensibilità musicale e orecchio e la conoscenza ed il rispetto di ben definite regole sull’armonizzazione dei suoni. Infatti, a meno che si voglia fare della punk music per chi la gradisce e vuole essere a tutti i costi diverso dagli altri, la musica, sia essa composta e scritta attraverso una serie di tentativi e organizzata in forme particolari sia essa improvvisata dal vivo con uno strumento, deve essere innanzi tutto gradevole ed appagante per l’ascoltatore. Senza dimenticare che, molto spesso, l’unico ascoltatore è lo stesso improvvisatore che si diverte un sacco nel creare e sentire ciò che sta creando.
Altra cosa da sfatare è la diffusa convinzione che l’improvvisazione sia appannaggio della sola musica jazz. Vero è che la musica jazz è per sua natura votata all’improvvisazione e ne è fertilissimo terreno di coltura ma non dimentichiamo che tra i più grandi improvvisatori annoveriamo Mozart, Chopin, Liszt, Paganini, ecc. che non hanno mai avuto nulla a che vedere con il jazz.
Peraltro molta musica classica che oggi leggiamo sugli spartiti altro non è che la trascrizione di improvvisazioni, origine che riecheggia negli appellativi con cui definiamo queste composizioni: toccata, ricercare, fantasia, tiento, improvviso, preludio, ecc. Per non parlare delle così dette cadenze previste praticamente in tutti i concerti per strumento solista e orchestra, spesso composte dallo stesso autore ma destinate anche a far sì che l’interprete abbia uno spazio di improvvisazione nell’ambito del concerto.
Tra i software che ci aiutano a fare musica ve ne sono che generano linee melodiche accostando casualmente note e durate sulla base di predefiniti giri armonici. Il più famoso di tutti penso sia Band-in-a-Box della PG Music.
Ma su un blog dedicato al software libero è d’obbligo dare la preferenza a Impro-Visor.
Innanzi tutto perché è un software libero distribuito sotto licenza GNU.
In secondo luogo perché è un software didattico: non solo produce improvvisazioni ma ci aiuta a capire come si fanno.
In terzo luogo perché è un prodotto scientifico ed è uno strumento di vera e propria intelligenza artificiale applicata alla composizione musicale.
Visto che la documentazione manca un tantino di organicità e aggiornamento ed è tutta in lingua inglese, ho ritenuto utile proporre l’allegato manualetto sull’ultima edizione del software rilasciata lo scorso luglio come guida almeno per un suo utilizzo di base.
Al solito si tratta di un file in formato PDF liberamente scaricabile, stampabile e distribuibile.
Rosegarden come DAW
Nel dicembre 2015 ho pubblicato su questo blog un articolo sul software libero Rosegarden, allegandovi un manualetto che illustra l’utilizzo di questo software come sequencer MIDI.
Già a quel tempo Rosegarden era qualche cosa di più di un sequencer MIDI, ma ho limitato il manuale a questa sola sua funzione innanzi tutto perché per gli amici che insistono ad usare solo il sistema operativo Windows Rosegarden è semplicemente – e purtroppo è ancora così – un sequencer MIDI e, in secondo luogo, perché, a quel tempo, le sue potenzialità di trattamento audio disponibili per il sistema operativo Linux non erano al livello raggiunto in seguito.
A quel tempo mi riferivo alla versione 14 di Rosegarden, che non poteva essere definita una vera e propria Digital Audio Workstation. Oggi è disponibile la versione 17.12.1, rilasciata nel febbraio 2018, che assomiglia di più ad una vera e propria Digital Audio Workstation.
Dal momento che continua a mancare documentazione in lingua italiana per l’uso di questo gioiello del software libero, ho ritenuto di proporre l’allegato manualetto che descrive Rosegarden nella sua completezza.
Purtroppo questa versione del manuale non può interessare coloro che utilizzano il sistema operativo Windows, per i quali vale sempre il precedente manuale sulla versione 14 limitata al MIDI.
Invito tuttavia anche loro a leggere il nuovo manuale qui proposto. Basta poco, infatti, per installare di fianco a Windows un sistema Linux che dia modo di sfruttare in pieno le potenzialità di Rosegarden.
Come sempre, il manuale è liberamente scaricabile, stampabile e distribuibile.
Coding per tutti
Di questi tempi si parla molto di coding: in lingua italiana si dice programmazione e si tratta del modo che abbiamo per dare istruzioni ad un computer perché faccia determinate cose.
Programmi che fanno fare determinate cose a un computer ce ne sono un’infinità: solo quelli che ho presentato nel tempo in questo blog mi pare rappresentino una completezza di cose al di là delle quali è difficile immaginarne altre. E acquisire dimestichezza con il funzionamento di tutti questi programmi vuol già dire essere ben introdotti nell’informatica e vivere consapevolmente la così detta rivoluzione digitale.
Sta tuttavia maturando la convinzione che questo sia un traguardo da utenti dell’informatica ma non da protagonisti e che, per poter veramente vivere la rivoluzione digitale, non basti saper usare programmi fatti da altri ma occorra anche sapere come si fanno i programmi: solo così, infatti, si può acquisire il così detto pensiero computazionale. E’ questo un termine (computational thinking) riportato alla ribalta dalla scienziata informatica Jeannette Wing nel 2006 per indicare il processo attraverso cui risolvere algoritmicamente problemi anche complessi.
Al punto che stiamo assistendo all’affermazione dell’opportunità di avviare alla programmazione bambini, ancor prima della scuola elementare, con strumenti ludici capaci di sviluppare queste abilità: basti pensare all’ambiente di programmazione Scratch.
All’indirizzo https://www.programmailfuturo.it/ possiamo sapere tutto su ciò che bolle in pentola.
Sicuramente siamo in presenza di un’ondata di moda. Molto simile a quella cui da qualche tempo assistiamo nel mondo della cucina. Non basta più saper apprezzare un buon brasato per essere classificati dei buongustai, occorre anche conoscere la ricetta (l’algoritmo, appunto) per fare il brasato ed acquisire la capacità di inventare altre ricette. Allora libri, riviste, televisione con cuochi da tutte le parti, ecc.
Avendo a che fare con qualche cosa di meno gustoso, nel campo dell’informatica non assisteremo ad una simile baldoria e, comunque, la moda potrà avere qualche effetto positivo: quanto meno quello di smettere di considerare esperti digitali quei ragazzini che si destreggiano a fare quattro cretinerie con il cellulare.
Importante non esagerare nel dare importanza alle cose. Non dimentichiamo che il così detto pensiero computazionale serve innanzi tutto a sbocconcellare un problema e la relativa soluzione affinché diventino alla portata di una stupida macchina. Sicuramente si tratta di una ginnastica che fa bene al nostro cervello ma non è con il pensiero computazionale che Galileo, Newton, Gauss e tanti altri hanno prodotto ciò che hanno prodotto.
E non dimentichiamo nemmeno che la così detta intelligenza artificiale che attribuiamo ad una macchina spesso deriva semplicemente dall’avere ben istruito la macchina stessa a lavorare con formule che ci hanno regalato quei signori, che non hanno mai visto un computer.
Fatte queste premesse, devo dire che programmare è divertente, occupa positivamente il cervello e dà soddisfazione. Ben venga pertanto questa ondata di interesse.
Quanto agli strumenti per programmare, cioè ai linguaggi che possiamo utilizzare per impartire istruzioni al computer, ormai c’è l’imbarazzo della scelta. Lasciando Scratch ai bambini piccoli e la tartaruga di Logo agli appena più grandicelli, un facile linguaggio per tutti i gusti e che può fornire eccelsi risultati è Python, di cui mi sono spesso occupato in questo blog.
Ma ce ne sono molti altri e una panoramica pressocché completa la possiamo avere procurandoci una piccola app per Android, che troviamo su Google Play e si chiama Dcoder.
Non è software libero e non dovrei parlarne in questo blog dedicato al software libero. Ma è talmente bello e intelligente che faccio un’eccezione.
Vista la scarsa documentazione esistente su questa preziosità e la totale assenza di qualche cosa scritta in italiano, ho pensato di proporre l’allegato manualetto in formato PDF, liberamente scaricabile, stampabile e distribuibile.
Grafica con Python
In questo blog ho parlato spesso del linguaggio di programmazione Python (articoli “Da Python2 a Python3”, “Python su Android” del giugno 2015 e “Python per tutti” del febbraio 2017 archiviati in Programmazione, oltre a “Esecuzione di script Python” del giugno 2015 archiviato in Suggerimenti vari).
La potenza del linguaggio Python, abbinata alla relativa facilità del suo apprendimento e del suo uso, ne fa strumento ideale per la didattica del coding e per l’esecuzione di calcoli e la soluzione di problemi scientifici, anche alquanto impegnativi. Tutto ciò grazie alle innumerevoli librerie che la comunità Python ha costruito attorno a questo magnifico esempio di software libero (per una panoramica vedere l’allegato PDF “mondo_python” al mio citato articolo “Python per tutti” del febbraio 2017).
Per questi usi basta e avanza la produzione di programmi eseguibili da riga di comando (attraverso quello che si chiama “terminale” nei sistemi operativi derivati dal mondo Unix, come Linux e Mac OS X, o quello che in Windows si chiama “prompt dei comandi”) ed è perfettamente inutile complicarsi la vita per dare ai programmi una particolare veste grafica.
Vi sono tuttavia situazioni nelle quali la vestizione grafica del programma lo rende meglio utilizzabile o addirittura diventa necessaria, come nei giochi.
A questo proposito, sempre in questo blog nel giugno 2015, ho presentato un esempio di programma grafico Python da me scritto per giocare a Master Mind.
Mentre per l’apprendimento del linguaggio esiste, in libreria e in rete, molto ottimo materiale scritto in italiano, dal lato della grafica la manualistica è per lo più in lingua inglese e molto spesso si presenta sotto forma di prontuario ad uso degli iniziati e poco si presta all’apprendimento.
Ho ritenuto allora utile proporre l’allegato manualetto in formato PDF, dedicato a quello che ritengo il più semplice modo di fare grafica con Python.
Come sempre, il documento è liberamente scaricabile, distribuibile e riproducibile.
Software libero per sintesi e riconoscimento vocale
Macchine che parlano o che comprendono la voce umana hanno sempre esercitato un enorme fascino, fin da quando, sul finire degli anni cinquanta del secolo scorso, i primi robot sono comparsi con le loro voci metalliche nelle fiere e nelle esposizioni.
Tuttavia si può dire che fino all’inizio del nostro secolo si è sempre trattato di cose che poco avevano a che vedere con ciò che facciamo tutti i giorni. Nonostante ciò, la ricerca e la sperimentazione nel campo della sintesi e del riconoscimento vocale sono sempre state attive ed oggi, sia grazie alla quasi perfezione dei risultati tecnici raggiunti sia grazie all’utile applicabilità di questi risultati alle moderne apparecchiature, soprattutto quelle di ultima generazione nel mobile, praticamente tutti i giorni utilizziamo queste tecnologie.
Gli apparecchi telefonici installati sulle automobili e gli smartphone sono già dotati di tutto quanto serve perché ci venga letto un messaggio SMS o perché lo possiamo dettare.
Per non parlare del navigatore che abbiamo sull’automobile, che ci indica la strada a voce.
Tutto ciò non avviene per i personal computer o, quanto meno, sui personal computer, queste tecnologie non sono così automaticamente presenti e così facilmente accessibili.
Per chi voglia superare questo incomodo ho ritenuto utile catalogare quanto di meglio ci offre il software libero in questo campo nel manualetto allegato, liberamente scaricabile e distribuibile.
Software libero per la blockchain
Forse non tutti sanno che la piattaforma su cui funziona la prima grande applicazione della tecnologia blockchain, cioè il sistema Bitcoin, è software libero.
Già dietro il nome del fantomatico creatore di questa tecnologia, Satoshi Nakamoto, molto probabilmente si cela una pluralità di persone. Fin dalla metà del 2010, comunque, cioè da quando è stata resa pubblica la prima versione del software e Nakamoto è sparito, il sorgente è open e al progetto lavorano più persone, attualmente almeno un centinaio nella comunità Github, dove dal 5 giugno del 2015 si è collocato lo sviluppo della piattaforma Bitcoin.
Per chiunque volesse mettere il naso per vedere come è fatta questa tecnologia dal punto di vista informatico, questo è l’indirizzo: https://github.com/bitcoin/bitcoin. Vi si trova il sorgente.
Per chi, invece, fosse interessato a caricare il software sul proprio computer, software che si chiama Bitcoin Core, l’indirizzo è: https://bitcoin.org/it/scarica oppure, in sede più aggiornata, https://bitcoincore.org/en/download/. Il software è disponibile per Linux, Windows e OS X. La versione corrente è la 0.15.1, rilasciata l’11 novembre del 2017.
Il computer con installato questo software diventa un nodo (full node) della rete blockchain, cioè diventa uno dei tanti computer dove è presente il database della blockchain e diventa uno dei computer che partecipa alla validazione delle transazioni ed alla loro trasmissione ad altri nodi.
Basta un normale computer con almeno 2 GB di RAM in quanto, a partire dalla versione 0.13, Bitcoin Core non ha più abilitata la funzione per il mining (costruzione di nuovi blocchi), per la quale necessiterebbero potenze di calcolo non alla portata di computer casalinghi. Ciò che importa è avere un collegamento Internet superveloce e spazio sufficiente per ospitare il database, attualmente quasi 200 GB, destinato, dati i ritmi di espansione, ad assorbire ulteriormente tra i 5 e i 10 GB al mese. Il tutto può essere ospitato su disco esterno collegato via USB.
Ovviamente è necessario rendere disponibile il computer per la rete almeno sei ore al giorno, sapendo che la piena collaborazione richiederebbe 24 ore su 24 (la disponibilità del computer per la blockchain consente di utilizzare altrimenti il computer stesso per i propri lavori).
All’indirizzo http://btc-news.it/utility/nodo bitcoin.html troviamo una descrizione di cosa significhi essere un full node della blockchain con un fervorino tendente al reclutamento (la blockchain senza nodi non esisterebbe).
Nella sostanza lo svantaggio sta nel rendere disponibile il computer, con relativo costo di energia elettrica, senza alcun compenso. I compensi li percepisce solo il miner e si sono ormai ridotti al lumicino in forza della progressione geometrica con cui diminuiscono. Cosa assolutamente non proporzionata ai costi che comporta allestire e mantenere la capacità elaborativa richiesta dall’attività di mining (per fortuna ci sono i cinesi).
C’è però il grande vantaggio di poter gestire in proprio il bitcoin wallet senza delegarne la gestione ad altri, affidando loro le nostre credenziali, come avviene quando apriamo il bitcoin wallet su uno degli ormai numerosi intermediari di criptomonete: sul piano della sicurezza si tratta di una cosa impagabile.
A livello di hackeraggio brutto ci sarebbe anche un modo per avere il vantaggio senza lo svantaggio, ma tutto ciò è diseducativo. Chi voglia essere diseducato guardi https://www.youtube.com/watch?v=7X0KgtpvSGA.
Prescindendo comunque dall’applicazione Bitcoin, che, nonostante tutto, possiamo ancora considerare qualche cosa di sperimentale, ciò che conta è che la tecnologia blockchain, con la valanga di novità che potrà portare nei più svariati campi applicativi, sia appannaggio del software libero.
Mancherebbe altro! Una tecnologia destinata alla democratizzazione della conoscenza e della custodia dei dati non sarebbe certamente coerente fosse fatta funzionare da software proprietario.
digiKam, il massimo
Il 18 gennaio scorso è stata rilasciata la versione 5.8.0 di digiKam.
Si tratta di un software open source di gestione di raccolte fotografiche e di elaborazione digitale delle immagini, il cui primo rilascio risale al 2002.
Anche grazie ai più recenti ravvicinati rilasci (uno ogni tre/quattro mesi) sta praticamente raggiungendo la perfezione.
Purtroppo, quando ho parlato di strumenti di questa specie, nel maggio 2015 (vedere, in questo blog, l’articolo “Software libero per utilizzare file digitali” e il relativo allegato “utilizzo_file_digitali.pdf”), ho presentato due programmi per la gestione di file fotografici: il semplicissimo KPhotoAlbum, non dotato di funzioni di foto-ritocco e Fotoxx, dotato di funzioni di foto-ritocco. Quest’ultimo, a quel tempo, da me ritenuto migliore della versione 4 di digiKam allora disponibile.
Ma è proprio nel 2015 che è partito il riscatto di digiKam e, dopo il rilascio di ben sette versioni beta, il 3 luglio 2016 è stata data alla luce la versione 5.0.0, dove la perfezione ha cominciato a prendere corpo.
Tra l’altro, a differenza dei due software citati prima, che sono disponibili solo per Linux, digiKam è ora disponibile anche per Windows e Mac OS X.
Dal novembre 2016, con la versione 5.3.0, per Linux viene rilasciato anche come AppImage (cioè come pacchetto eseguibile senza essere installato).
L’ultimo manuale di digiKam, disponibile anche in italiano, è fermo alla versione 5.2: anche se con alcune parti non ancora realizzate, è molto particolareggiato e può risultare dispersivo per chi cerchi semplicemente un primo approccio con questo interessante software.
Ho pensato allora di fare cosa utile proponendo il manualetto allegato, in formato PDF, liberamente consultabile, scaricabile e distribuibile.
Il migliore desktop per Ubuntu
Con il rilascio della versione 17.10 Ubuntu ha definitivamente abbandonato Unity.
Personalmente non ho mai apprezzato Unity, fin da quando è comparsa nella Netbook Edition di Ubuntu 10.10 (a quei tempi ho invece apprezzato molto il simpatico ambiente grafico gemello di Kubuntu 10.10 per netbook, chiamato Plasma Netbook).
Il motivo è molto semplice: Unity, che dalla versione 11.04 era divenuta l’interfaccia grafica predefinita di Ubuntu, presentava un accesso alle applicazioni presenti sul computer che andava bene per chi con il computer faceva le solite tre o quattro cose. Le applicazioni erano infatti accessibili o cliccando sulle poche icone presenti sulla barra delle applicazioni o attraverso il macchinoso sistema della dash.
Per non parlare delle complicazioni connesse alla costruzione di lanciatori per software di propria produzione o installati senza ricorrere al gestore di programmi.
Ed evidentemente questo difetto era avvertito anche in casa Ubuntu; tant’è vero che nessuno si è mai sognato di organizzare l’accesso alla variegata serie di applicazioni, per esempio, di Ubuntu Studio con l’interfaccia Unity, preferendo sempre a quest’ultima il classico menu, nel caso Whisker.
Purtroppo l’ambiente grafico predefinito di Ubuntu, dalla versione 17.10, è diventato Gnome 3, che considero anche peggiore di Unity, sempre a motivo dei difetti che ho illustrato poco fa.
Tra l’altro Unity e Gnome 3 erano talmente simili che un utente poco smaliziato nemmeno si accorge che Ubuntu ha cambiato desktop: nessuno, del resto, ha mai capito perché Canonical abbia sprecato per anni risorse per sviluppare un simile doppione.
Fortunatamente viene rilasciata una derivata Ubuntu, che si chiama Ubuntu MATE, che ci offre un desktop classico, tra l’altro leggerissimo in termini di utilizzo delle risorse del computer, molto bello per chi la pensa come me.
Software libero per il PDF
Nei miei due recenti articoli su come possiamo scrivere e pubblicare noi stessi ebook (“Scrivi e pubblica i tuoi ebook” del settembre 2017) o veri e propri libri stampati su carta (“Scrivi e pubblica veri libri” del novembre 2017) ho illustrato come il formato PDF si presti egregiamente a questi fini, pur essendo ormai affiancato e, in certi casi, giustamente soppiantato da più flessibili altri formati, come il diffusissimo ePub, meglio fruibili sui ridotti schermi di smartphone e piccoli tablet.
Nei due articoli ho anche presentato due formidabili strumenti del mondo del software libero con i quali possiamo produrre file PDF: LibreOffice e LyX.
Per un più completo panorama su cosa si possa fare con il PDF e con il software libero ho ora ritenuto utile proporre la panoramica che si trova nell’allegato manualetto, in formato PDF, che può essere liberamente scaricato, stampato e diffuso.