SELECT

DIY Moppy – Musica con i Floppy Drives

10 anni fa

12 minuti

Direttamente dalla rubrica “se il lavoro non porta via abbastanza tempo, sprechiamo quel poco libero che ci rimane costruendo cazzate”.
Sicuramente avrete già visto da qualche parte uno di quei filmati dove ci sono dei simpatici floppy drives che riproducono musica (ad esempio qui, quo, qua, e ), se vi siete mai chiesti come funzionino quei marchingegni in questa guida vedremo passo passo come fare per realizzarne uno in poco tempo.
Nonostante non raggiunga livelli di inutilità di una Useless Machine, questo Moppy (Musical Floppy) vanta di una semplicità di realizzazione sicuramente maggiore: non dovremo smadonnare con parti meccaniche, il circuito è semplicissimo e la parte software ancora di più; insomma con una buona mano un paio d’ore (a stare larghi) dovrebbero essere sufficienti per completare l’opera.
Premetto che questa guida non è altro che un riadattamento della guida originale di Sammy1am, nonchè autore del codice di programmazione che andrà caricato sull’Arduino.
A lui tutto il merito.

Occorrente:
Controller Arduino Uno
Floppy drives (fino a 8)
Qualche metro di cavo Ethernet
Alimentatore 5v

Utensili:
Forbici e saldatore a stagno.

Per una breve panoramica sul controller Arduino vedere l’approfondimento.

[more]

Arduino

Arduino è un framework opensource che permette la prototipazione rapida e l’apprendimento veloce dei principi fondamentali dell’elettronica e della programmazione. È composto da una piattaforma hardware per il physical computing sviluppata presso l’Interaction Design Institute, un istituto con sede a Ivrea, fondato da Olivetti e Telecom Italia. Il nome della scheda deriva da quello di un bar di Ivrea (che richiama a sua volta il nome di Arduino d’Ivrea, primo re d’Italia nel 1002) frequentato da alcuni dei fondatori del progetto.
Questa si basa su un circuito stampato che integra un microcontrollore con PIN connessi alle porte I/O, un regolatore di tensione e quando necessario un’interfaccia usb che permette la comunicazione con il computer. A questo hardware viene affiancato un ambiente di sviluppo integrato (IDE) multipiattaforma (Linux, Apple Macintosh e Windows). Questo software permette anche ai novizi di scrivere programmi con un linguaggio semplice e intuitivo derivato da C e C++ chiamato Wiring, liberamente scaricabile e modificabile.

Arduino può essere utilizzato per lo sviluppo di oggetti interattivi stand-alone ma può anche interagire, tramite collegamento, con software residenti su computer, come Adobe Flash, Processing, Max/MSP, Pure Data, SuperCollider, Vvvv.
La piattaforma hardware Arduino è spesso distribuita agli hobbisti in versione pre-assemblata, acquistabile in internet o in negozi specializzati. La particolarità del progetto è che le informazioni sull’hardware e soprattutto i progetti sono disponibili per chiunque: si tratta quindi di un hardware open source, distribuito nei termini della licenza Creative Commons Attribution-ShareAlike 2.5[4]. In questo modo, chi lo desideri può legalmente auto-costruirsi un clone di Arduino o derivarne una versione modificata, scaricando gratuitamente lo schema elettrico e l’elenco dei componenti elettronici necessari[
Grazie alla base software comune, ideata dai creatori del progetto, per la comunità Arduino è stato possibile sviluppare programmi per connettere a questo hardware più o meno qualsiasi oggetto elettronico, computer, sensore, display o attuatore. Dopo anni di sperimentazione è oggi possibile fruire di un database di informazioni vastissimo.

Il team di Arduino è composto da Massimo Banzi, David Cuartielles, Tom Igoe, Gianluca Martino, e David Mellis. Il progetto prese avvio in Italia a Ivrea nel 2005, con lo scopo di rendere disponibile, a progetti di Interaction design realizzati da studenti, un dispositivo per il controllo che fosse più economico rispetto ai sistemi di prototipazione allora disponibili. I progettisti riuscirono a creare una piattaforma di semplice utilizzo ma che, al tempo stesso, permetteva una significativa riduzione dei costi rispetto ad altri prodotti disponibili sul mercato. A ottobre 2008 in tutto il mondo erano già stati venduti più di 50.000 esemplari di Arduino.
L’hardware originale Arduino è interamente realizzato in Italia dalla Smart Projects, mentre i cloni della scheda possono essere realizzati ovunque, come in Cina, Europa o Stati Uniti.

Una scheda Arduino tipica consiste in un microcontroller a 8-bit AVR prodotto dalla Atmel, con l’aggiunta di componenti complementari per facilitarne l’incorporazione in altri circuiti. In queste schede sono usati chip della serie megaAVR – nello specifico i modelli ATmega8, ATmega168, ATmega328, ATmega1280 e ATmega2560.
Molte schede includono un regolatore lineare di tensione a 5-volt e un oscillatore a cristallo a 16 MHz, sebbene alcune implementazioni, come ad esempio la piccola LilyPad[5], abbiano un clock di 8 MHz e facciano a meno dello stabilizzatore di tensione.
Per implementare il comportamento interattivo, Arduino è fornita di funzionalità di Input/Output, grazie alle quali essa riceve i segnali raccolti da sensori esterni. In base a tali valori, il comportamento della scheda è gestito dal microcontroller, in base alle decisioni determinate dal particolare programma in esecuzione in quel momento sulla scheda. L’interazione con l’esterno avviene attraverso attuatori pilotati dal programma attraverso i canali di output in dotazione.
L’alimentazione della scheda può avvenire attraverso la porta USB del computer, o attraverso la maggior parte degli alimentatori USB, oppure attraverso un adattatore in corrente continua a 9 volt, con connettore cilindrico (diametro 2,1 mm e positivo centrale). In quest’ultimo caso, la scheda commuta automaticamente sull’alimentazione esterna quando il connettore dell’alimentatore esterno è inserito, mentre commuta autonomamente sull’alimentazione USB in caso di disconnessione del connettore.

Questo è solo uno scopiazzamento ed incollaggio dalla pagina di wikipedia, si potrebbe scrivere un articolo intero su questa diavoleria, ma questa è un’altra storia…[/more]

Riguardo l’acquisto della scheda Arduino potete optare per un’imitazione economica made in china, io ho preferito investire qualche moneta in più e accattarmi l’originale made in Italy dalla solita baia, potete approfittare dello sconto sulle spese di spedizione dallo stesso negozio per incautarvi per un paio d’euro anche una Breadboard che tornerà molto pratica per la realizzazione dei collegamenti. Per i Floppy drives vi consiglio di farvi un giretto in città (o ancora meglio in discarica) e vedere se trovate qualche vecchio computer abbandonato al suo destino, a proposito ringrazio il mio amico @Fubio per l’ingente fornitura di drives, purtroppo ignoro quale sia il nick sulla Lega. Per quanto riguarda l’alimentatore io ne ho trovato uno in giro per casa mapensatèchecculo proprio da 5volt: non ho fatto altro che tagliarne il connettore e voilà, volendo è possibile utilizzare l’apposita uscita 5v di un alimentatore per pc che potrete facilmente trovare qui.

Il circuito

Come già detto in precedenza lo schema è veramente semplice: sono necessari solamente 3 collegamenti per far funzionare ogni floppy drive, i doppini intrecciati contenuti dentro ai cavi Ethernet sono l’ideale.
Per le connessioni potete utilizzare gli appositi cavi dati dei drives, ma se non ne avete da sprecare vi suggerisco di saldare i fili direttamente sui pin: spellate 1cm circa all’estremità del cavo, eseguite un piccolo cappio con il filamento di rame e sistematelo attorno al pin interessato, fatto ciò tenete il saldatore a contatto con il pin ed il filamento per qualche secondo, premeteci sopra lo stagno ed avrete la saldatura.
Nulla vi vieta di allargare o addirittura tagliare i pin vicini che potrebbero ostacolare l’operazione. Questi cavi hanno la peculiarità di essere resistentissimi finché sono inguainati e di rompersi molto facilmente dopo essere stati spellati, quindi può capitare che si rompano subito dopo il punto di saldatura. E fa incazzare non poco.

Iniziamo con l’alimentare i drives: colleghiamo l’ultimo pin sulla destra alla tensione positiva dell’alimentatore (cavo con tratteggio bianco se utilizzate un alimentatore da muro) ed il pin affianco con la messa a terra (rispettivamente cavo rosso e nero se utilizzate una PSU); gli altri 2 pin sono per l’alimentazione a 12v e non ci interessano.
Colleghiamo fra di loro i pin 11 e 12 (drive select), per farlo sarà sufficiente utilizzare uno dei classici jumper che si trovano su qualsiasi hard disk (se non ne avete potete tranquillamente avvicinarli utilizzando il più comune dei cacciaviti e farci cadere sopra il vostro bel gocciolone di stagno).
Una volta uniti questi 2 pin alimentando il drive dovrebbe accendersi la classica luce verde sul frontalino, se ciò non dovesse succedere o avete sbagliato qualcosa o lo stronzetto è fottuto.

A questo punto colleghiamo il pin 20 (step) con l’uscita digitale 2 sull’Arduino ed il pin 18 (direction) con l’uscita 3; gli altri drive andranno collegati allo stesso modo sui pin successivi, quindi avremo tutti step pin sulle uscite pari e direction pin su quelle dispari.
Siccome il codice Moppy supporta fino ad 8 floppy drives quelli successivi all’uscita 13 potranno essere collegati sulle uscite analogiche (che in questo caso fungeranno da uscite digitali) quindi avremo A0=14, A1=15 ecc…
Per le connessioni sull’arduino è sufficiente spellare l’altra parte del cavo ed inserirla nei connettori (capitan ovvio).
I pin 17 e 19 che si trovano esattamente sotto ai 18 e 20 dovranno essere collegati con l’uscita GND sull’Arduino: potete semplicemente unirli fra loro come già spiegato per i pin 11 e 12 e da lì far partire un unico cavo. Siccome i connettori sull’Arduino lasciano spazio solamente per un cavo ciascuno non potrete connettere tutti i drives direttamente sull’uscita GND e qui entra in gioco la Breadboard di cui vi parlavo: portate li tutti i cavi creando un nodo e facendone uscire solo uno per la connessione all’Arduino, potete anche utilizzarla per diramare l’alimentazione verso tutti i drives; d’altro canto potete anche annodare tutti i cavi assieme e dargli due giri di nastro isolante, ma usare quella cazzo di breadboard donerà quel tocco di professionalità in più.

Nel caso aveste dei drives non “full pin” ovvero dove mancano dei pin nella fila dei dispari, basta eseguire il collegamento al pin più vicino sottostante i pin interessati, questo funge infatti da GND comune per quelli superiori.
Ripetete l’operazione con tutti i drives che vorrete utilizzare ed avrete finito con la parte “Hardware”

Software

Iniziate con lo scaricare i seguenti files:

Java
NetBeans
Software Arduino
TimerOne library
Moppy
RXTXcomm

FAQ : Devo riempire il computer di merda ?
Un pochino si, ma è merda buona e comunque necessaria.

Iniziate con l’installare Java, NetBeans, ed il software di Arduino. Per l’installazione dei driver Arduino alla prima connessione fare riferimento a questa pagina.
Dopo aver installato Java dovrete fixare i file per la comunicazione seriale, spacchettate RXTXcomm e preparatevi al classico scopiazzamento da sbricchettoni:

– copiate il file rxtxserial.dll dentro alla cartella C:\Program Files\Java\jre7\bin (o comunque il percorso dove avete installato Java)
– copiate il file rxtxcomm.jar dentro alla cartella C:\Program Files\Java\jre7\lib\ext

Questa operazione tra l’altro a detta dell’autore è l’unica che potrebbe dare dei problemi, per me è andato tutto liscio come l’olio (Windows 7 64bit) se doveste riscontrare problemi al successivo lancio del progetto su NetBeans google is your friend.
Ora dovrete caricare la libreria ed uploadare il codice Moppy sull’Arduino, per prima cosa scompattatela, rinominate la cartella in “TimerOne” (eliminando –v9) e schiaffatela dentro la cartella “libraries” nella cartella d’installazione dell’Arduino, fatto ciò collegate il vostro amichetto al PC con un cavo USB e lanciate il programma, ora andate su file > open e richiamate il file Moppy.pde dall’omonima cartella dentro al .zip di Sammy1am e cliccate su upload nella schermata che comparirà.

Infine lanciate NetBeans (ci siamo quasi) andate su file > open project e cercate il file MoppyDesk sempre nella cartella di Sammy1am, ma questa volta dentro alla sottocartella Java. Cliccate sulla freccia verde “run project” in alto (sempre con l’Arduino connesso al PC), incrociate le dita e se avete installato il driver RXTXcomm correttamente si aprirà la schermata di comunicazione al nostro controller: a questo punto non vi resta che andare su “load file” per caricare i vostri Midi e godervi il vostro concertino!

[more]A differenza della maggior parte delle versioni che si trova in rete, con questo codice i led anteriori ai drives rimangono sempre accesi da quando vengono alimentati invece di illuminarsi a ritmo di samba, ho chiesto a Sammy1am come si potesse fare e mi ha risposto che si dovrebbe dedicare 1 pin dell’Arduino per ogni Drive (sfruttando le ultime uscite e sacrificando qualche musicista) e dare il comando di uscita “digitalWrite (pin, LOW)” in caso di ingresso seriale=0 e “digitalWrite(pin, HIGH)” in caso di ingresso > 0. Lui non ha tempo ed io non ci capisco una mazza quindi…

NERDQUEST : Siete in grado di riscrivere il codice?[/more]

Info sui Midi

Tutti i freeware che si trovano in rete per la gestione dei midi sono abbastanza limitati, vi consiglio di scaricarvi un bel FL Studio che è abbastanza leggero e relativamente facile da usare, a volte fa un po’ girare i coglioni ma alla fine fa il suo sporco lavoro.
I file Midi devono avere un canale per ogni floppy drive utilizzato: il canale 1 uscirà sul pin 2, il canale 2 sul pin 4 ecc…
Ogni drive può suonare una sola nota per volta.
Il software è in grado di ricreare solo note dalla C1 alla B4 (Do e Si della notazione inglese) i drive non rispondono bene al di fuori di questo range, soprattutto sulle note più alte. Per adattare i Midi aprite il canale interessato, fate Ctrl+A per selezionare tutte le note poi Ctrl+freccia sù o Ctrl+freccia giù per alzarle o abbassarle di una ottava.
Generalmente le note più corte suonano meglio, poiché durante le note lunghe la testina deve più volte invertire il senso di marcia, rovinando l’armonia.
Quando interrompete un midi in riproduzione da NetBeans è necessario rieseguire “load file” per farlo ripartire, oppure fare disconnect > connect > start.

La canzone scelta per il video non poteva che essere “Dave’s Theme” di Maniac Mansion del NES, rockeggia troppo! :res:

Fonti:

https://github.com/SammyIAm/Moppy
Sammy1am video guide

Il Trono del Re: la musica e l'entertainment - con Andrea Rock e Andrea Paoli
Il Trono del Re: la musica e l'entertainment - con Andrea Rock e Andrea Paoli
ColorPiano: una sinestesia digitale a base di LEGO e tecnologie Web
ColorPiano: una sinestesia digitale a base di LEGO e tecnologie Web
SBrick.js: Robotica semplificata grazie a LEGO, SBrick e Web Bluetooth
SBrick.js: Robotica semplificata grazie a LEGO, SBrick e Web Bluetooth
One Song A Day, una canzone per ogni giorno dell'anno
One Song A Day, una canzone per ogni giorno dell'anno
Apple Music, il nuovo spot con Drake
Apple Music, il nuovo spot con Drake
Cosa rende speciali Le Quattro Stagioni di Vivaldi?
Cosa rende speciali Le Quattro Stagioni di Vivaldi?
Remix e Mixtape arrivano su Spotify e Apple Music
Remix e Mixtape arrivano su Spotify e Apple Music