Orchestre de lecteurs de disquette : Différence entre versions

De L'abscisse - FabLab et Hackerspace de Dijon
Aller à : navigation, rechercher
m (Configuration de Floppy Conductor)
m (Configuration de Floppy Conductor)
Ligne 276 : Ligne 276 :
 
Exécuter Floppy Conductor avec la commande ./floppyconductor dans le répertoire du projet puis :
 
Exécuter Floppy Conductor avec la commande ./floppyconductor dans le répertoire du projet puis :
  
1. Link control → Select device -> Select Serial Port: choisir le port de l'Arduino, souvent ttyACM0
+
# Link control → Select device -> Select Serial Port: choisir le port de l'Arduino, souvent ttyACM0
2. vérifier que la vitesse de transmission est bien réglée sur 9600 bauds
+
# vérifier que la vitesse de transmission est bien réglée sur 9600 bauds
3. cliquer sur Ok pour valider
+
# cliquer sur Ok pour valider
3. pour activer la communication avec l'Arduino, cliquer sur le bouton de connexion, icône port //, le statut passe à Connected
+
# pour activer la communication avec l'Arduino, cliquer sur le bouton de connexion, icône port //, le statut passe à Connected
4. Saisir dans la partie "Drive management" le nombre de lecteurs dont on dispose pour jouer.
+
# Saisir dans la partie "Drive management" le nombre de lecteurs dont on dispose pour jouer.
  
 
Ces réglages sont sauvegardés à la fermeture du Floppy Conductor, et rechargés automatiquement à son ouverture. La seul manipulation qu'il restera à faire en cas de réouverture est de cliquer sur le bouton de connexion.
 
Ces réglages sont sauvegardés à la fermeture du Floppy Conductor, et rechargés automatiquement à son ouverture. La seul manipulation qu'il restera à faire en cas de réouverture est de cliquer sur le bouton de connexion.

Version du 22 novembre 2015 à 13:25

Dialog-warning.png Article en cours de rédaction Dialog-warning.png


Photo de l'orchestre
Une capture d'écran du programe Floppy Conductor v1.1

Le projet Floppy Orchestra, développé initialement par Pila, permet de faire jouer de la musique avec un ou plusieurs lecteurs de disquettes.

Sommaire

Présentation

L'intérieur d'un lecteur de disquette

Le projet repose sur l'utilisation du bruit causé par le déplacement de la tête de lecture / écriture des lecteurs de disquettes. La fréquence de ce bruit, et donc la note de musique à laquelle il s'apparente, dépendent directement de la fréquence de rotation du moteur pas à pas assurant le déplacement de la tête de lecture / écriture. En contrôlant cette fréquence, on peut donc se servir d'un lecteur de disquette comme, d'un instrument de musique.

Ce projet est composé de 2 logiciels :

  • le programme Moppy For Floppy Orchestra pour Arduino qui contrôle les lecteurs disquettes est un fork de Moppy https://github.com/SammyIAm/Moppy
  • le programme Floppy Conductor, lit des fichier musicaux en format MIDI et transmet les commandes à l'Arduino. L'avantage de ce programme est qu'il possède plusieurs fonctionnalités adaptées au contrôle de lecteurs disquettes, et qu'il offre une interface simple à utiliser.

Coût

30€ pour l'Arduino

Niveau de difficulté

Orange.png

Outillage nécessaire

Composants nécessaires

  • 8 lecteurs disquettes maximum (limite Arduino Uno)
  • 8 cavaliers IDE maximum
  •  ???

Dialog-warning.png Fix Me !

Vous pouvez ajouter les informations manquantes !!! la liste est à compléter

Option

  • connecteurs type molex pour lecteurs de disquettes

Schémas

Dialog-warning.png Fix Me !

Vous pouvez ajouter les informations manquantes !!! il manque un schéma

Étape par étape

Nombre de lecteurs

Le nombre de lecteurs de disquette est limité à 8.

Limite du protocole

Le nombre maximum absolu de lecteurs contrôlables par Floppy Conductor est de 64, cette valeur est fixée par le protocole de communication utilisé entre Floppy Conductor et l'Arduino.

Limite électrique

Le nombre de lecteurs maximum que vous pouvez brancher est fonction de la puissance de votre alimentation. Un lecteur de disquette utilisé avec Floppy Conductor consomme environ 500mA sur le rail d'alimentation 5V (déplacement de la tête de lecture, plateau de rotation à l'arrêt).

Dès lors, une alimentation peut fournir du courant à un nombre de lecteur égal au double du nombre d'ampères qu'elle peut délivrer sur le rail 5V.
Il est toutefois conseillé de conserver une marge d'au moins 25%, surtout avec des alimentations bas de gamme.

Exemple

Une alimentation capable de fournir 10A en 5V est théoriquement capable d'alimenter 20 lecteurs disquettes.

   10A / 500mA = 20 lecteurs

Avec une marge de 25% il est plus sage de se limiter à 15 lecteurs.

Limite d'I/O de l'Arduino

Le nombre maximum de lecteurs contrôlables par un Arduino standard (Duemilanove, Uno, Nano, etc... ) est limité à 8 par le nombre de broches I/O disponibles.

Réalisation des câbles

Dialog-warning.png Fix Me !

Vous pouvez ajouter les informations manquantes !!!

Câblage

Les broches à utiliser d'un lecteur de disquette

Broches utiles du lecteur de disquette

  • broches impaires de 1 à 33, côté détrompeur → masse
  • broche 12 → Drive Sel B, le moteur accepte les commandes
  • broche 18 → Direction du moteur, décide de la direction du moteur
  • broche 20 → Step, déplacement pas à pas

Pour que le moteur du lecteur de disquette accepte de se déplacer, il faut que la broche 12 du lecteur soit au niveau haut (activé), pour cela il faut mettre cette entrée à la masse.
Les têtes de lecture se déplacent d'un pas à chaque front montant sur la broche 20.
La broche 18 décide de la direction du moteur, déplacement avant arrière des têtes de lecture.

Câblage pour chaque lecteur

  • broche 12 (Drive Sel B) : relier la broche 12 à la broche 11 pour la mettre à la masse
  • broches 20 et 18 (Step et Direction) : à connecter avec l'Arduino, à connecter à 2 broches consécutives de l'Arduino, broche pair en premier.

Câblage supplémentaire pour un seul des lecteurs

  • une broche de 1 à 33 : à connecter avec la masse de l'Arduino

Les masses des lecteurs sont reliées entre elles, relier un lecteur à l'Arduino suffit à mettre en commun la masse.

Exemple

  • 1er lecteur
    • broche 1 du lecteur de disquette → masse de l'Arduino
    • broche 12 du lecteur de disquette → broche 11 du lecteur de disquette (utilisation d'un cavalier)
    • broche 20 du lecteur de disquette → broche 2 de l'Arduino
    • broche 18 du lecteur de disquette → broche 3 de l'Arduino
  • 2ème lecteur
    • broche 12 du lecteur de disquette → broche 11 du lecteur de disquette (utilisation d'un cavalier)
    • broche 20 du lecteur de disquette → broche 4 de l'Arduino
    • broche 18 du lecteur de disquette → broche 5 de l'Arduino
  • n ème lecteur
    • broche 12 du lecteur de disquette → broche 11 du lecteur de disquette (utilisation d'un cavalier)
    • broche 20 du lecteur de disquette → broche n+1 de l'Arduino
    • broche 18 du lecteur de disquette → broche n+2 de l'Arduino

IMG 7820.jpg IMG 7822.jpg

Programme pour l'Arduino

Ajout de la bibliothèque Timer1

Le programme utilisé dans l'Arduino a besoin d'une bibliothèque supplémentaire nommé Timer1.
Elle ajoute visiblement des fonctions de gestion du temps supplémentaires au langage Arduino.

Téléchargement

Téléchargement des différentes révisions : http://code.google.com/p/arduino-timerone/downloads/list
Lien de téléchargement direct pour la révision 11 : https://arduino-timerone.googlecode.com/files/TimerOne-r11.zip

Sinon téléchargement en ligne de commande avec wget :

$ wget https://arduino-timerone.googlecode.com/files/TimerOne-r11.zip
Importation de la bibliothèque dans l'IDE Arduino

Renommer le fichier en TimerOne.zip car les noms de bibliothèques ne peuvent contenir que des lettres et des chiffres :

$ mv TimerOne-r11.zip TimerOner11.zip

Dans le menu de l'IDE arduino se rendre dans Croquis → Importer bibliothèque → Ajouter une bibliothèque.
Sélection du fichier TimerOne11.zip et cliquer sur le bouton OK.
L'IDE affiche dans la zone des messages le message suivant : "La bibliothèque a été ajouté à votre dossier de bibliothèques."

Lorsque la bibliothèque est correctement importée, elle est disponible dans la liste des bibliothèques : Croquis → Importer bibliothèque.

TimerOner11.png

Compléments sur la bibliothèque TimerOne

Dans le fichier keywords.txt de l'archive TimerOner11.zip se trouvent les méthodes et les fonctions de la bibliothèques.

Dans le répertoires examples/ de l'archive TimerOner11.zip se trouve 2 exemples d'utilisations de la bibliothèques.

Programme Moppy For Floppy Orchestra pour l'Arduino

Le programme Moppy For Floppy Orchestra pour l'Arduino : https://gitlab.com/floppy-orchestra/moppy-for-floppy-orchestra
contrôle les lecteurs disquettes. C'est un fork du programme Moppy https://github.com/SammyIAm/Moppy

Récupération des sources

Il est possible de télécharger l'archive ou de cloner le dépôt Git.

Télécharger l'archive

Cliquer sur Files puis sur Download zip.
Décompresser l'archive dans le répertoire de votre choix.

Ou récupérer le projet Git
   $ git clone https://gitlab.com/floppy-orchestra/moppy-for-floppy-orchestra.git
Transfert du programme

Dans l'IDE Arduino ouvrir le programme moppy_for_FloppyOrchestra.ino. Il faut modifier 2 constantes : la première et la dernière broche de l'Arduino utilisées pour les lecteurs de disquette en fonction du nombre de lecteurs utilisés.

   #include <TimerOne.h>
   
   //First pin being used for floppies, and the last pin. Used for looping over all pins.
   const byte FIRST_PIN = 2;
   const byte PIN_MAX = 17;

Transférer le programme dans l'Arduino.

Programme Floppy Conductor

Le programme Floppy Conductor, lit des fichier musicaux en format MIDI et transmet les commandes à l'Arduino. L'avantage de ce programme est qu'il possède plusieurs fonctionnalités adaptées au contrôle de lecteurs disquettes, et qu'il offre une interface simple à utiliser.

Pour Windows

Pour Windows, un exécutable déjà compilé est disponible sur SourceForge :
https://sourceforge.net/projects/floppyconductor/

Téléchargement du programme sur SourceForge :
http://sourceforge.net/projects/floppyconductor/files/Floppy%20Conductor/floppy%20conductor%20v1.2.1.zip/download

Pour Linux

La compilation est a réaliser avec QT5.
La compilation ne fonctionne pas sous Ubuntu 12.04, la version de QT est trop ancienne.

Récupération des sources du projet Floppy Conductor

Floppy Conductor : https://gitlab.com/floppy-orchestra/floppy-conductor

Il est possible :

  • de télécharger l'archive
  • de cloner le dépôt Git
Télécharger l'archive

Se rendre sur le site https://gitlab.com/floppy-orchestra/floppy-conductor Cliquer sur Files puis sur Download zip.
Décompresser l'archive dans le répertoire de votre choix.

Récupérer le projet Git
   $ git clone https://gitlab.com/floppy-orchestra/floppy-conductor.git
Compilation, principe général
Installation des paquets de développement

L'installation des paquets nécessaires est différente d'une version de GNU / Linux à une autre et dépend de la version de Qt fournit de base.

Compilation de Floppy Conductor
  • Générer le makefile cross-platform :
   $ cd floppy-conductor
   $ qmake floppyconductor.pro
  • Compiler pour construire le binaire
   $ make
  • Exécuter Floppy conductor
  $ ./floppyconductor
Compilation, pour Ubuntu 14.04
Installation des paquets de développement pour QT5

Attention : l'installation prend beaucoup de place → téléchargement d’environ 250 Mo dans les archives et utilisation d'environ 650 Mo d'espace disque.

   $ sudo apt-add-repository ppa:beineri/opt-qt55-trusty
   $ sudo apt-get update
   $ sudo apt-get install qt-latest qt5-qmake

Seul Qt Creator 3.5 sera disponible en cas de besoin ultérieur :

   $ sudo apt-get install qtcreator-latest

Source : http://askubuntu.com/questions/681166/installing-qt-5-5-on-ubuntu-14-04-lts-with-error-qsslsocket-cannot-resolve-ss

Compilation de Floppy Conductor
  • Générer le makefile cross-platform :
   $ cd floppy-conductor
   $ /opt/qt55/bin/qmake floppyconductor.pro
  • Compiler pour construire le binaire
   $ make
  • Exécuter Floppy Conductor
  $ ./floppyconductor

Configuration de Floppy Conductor

Exécuter Floppy Conductor avec la commande ./floppyconductor dans le répertoire du projet puis :

  1. Link control → Select device -> Select Serial Port: choisir le port de l'Arduino, souvent ttyACM0
  2. vérifier que la vitesse de transmission est bien réglée sur 9600 bauds
  3. cliquer sur Ok pour valider
  4. pour activer la communication avec l'Arduino, cliquer sur le bouton de connexion, icône port //, le statut passe à Connected
  5. Saisir dans la partie "Drive management" le nombre de lecteurs dont on dispose pour jouer.

Ces réglages sont sauvegardés à la fermeture du Floppy Conductor, et rechargés automatiquement à son ouverture. La seul manipulation qu'il restera à faire en cas de réouverture est de cliquer sur le bouton de connexion.

Chargement d'un fichier MIDI avec Floppy Conductor

  • Avec le bouton "eject" choisir un fichier Midi à jouer
  • Dans la colonne "Drive" sélectionner quelle lecteur doit jouer la piste de partition. (Syntaxe : numéros de lecteurs séparés par une virgule )

Vous pouvez vous aider avec le nombre de notes pour repérer les pistes importantes.

Les numéros le lecteurs commencent à zéro.

  • La partie "Transpose" permet d'ajuster les notes trop hautes ou trop basses.

L'auto transpose marche très bien dans 80% des cas, il faut régler la fréquence max jouable par les lecteurs dans le champ "Floppy drives cut-off frequency". Une valeur de 500Hz correspond à la majorité des cas. Lorsque cette valeur est verte, cela signifie que la piste a bien été transposée dans la gamme jouable par les lecteurs. Si elle est rouge, c'est que la transposition n'a pas pu être réalisée.

  • Il est possible d'activer / désactiver la lecture de certaines pistes en cliquant sur l’icône verte en forme de note de musique de la piste correspondante. Floppy Conductor arrête alors la lecture pour calculer le nombre de lecteurs requis. Décocher la case "Auto-update..." permet d'activer / désactiver des pistes sans arrêter la lecture, mais le calcul du nombre de lecteurs nécessaires ne se fera qu'une fois la lecture terminée.
Lecture

Une fois Floppy Conductor configuré et le fichier MIDI chargé il ne reste plus qu'à lancer la lecture ;)

Il faut parfois chercher un peu avant de trouver les bonnes pistes à jouer sur les bon lecteurs. Repérez bien qui joue le plus fort, qui joue le plus grave, et vous saurez rapidement comment affecter chaque lecteurs.

Astuce: numérotez vos lecteurs, surtout s'il ne sont pas physiquement dans l'ordre des entrées de l'Arduino.

Certaines pistes indiquent qu'elles ont besoin de plusieurs lecteurs. Dans la plupart des cas ce n'est pas obligatoire pour avoir un bon rendu quand même.

Sauvegarde des paramètres de la musique

Une fois la bonne configuration trouvée pour une musique, il est possible de la sauvegarder en cliquant sur le menu "File" puis "Save song related settings". Cela provoque la création d'un fichier .flop, dans le dossier songs_settings, nommé comme le fichier MIDI auquel il correspond, contenant tous les paramètre liés à cette musique. Lors de l'ouverture d'un fichier MIDI avec Floppy Conductor, celui-ci recherche un fichier .flop correspond, et l'utilise pour charger tous les paramètres liés à cette musique.

Dépannage

Problème Cause Solution
Floppy Conductor ne veut pas se connecter à l'Arduino Port COM utilisé par un autre processus Arrêter l'autre processus
Sous GNU / Linux, l'utilisateur n'a pas les droits d'accès au port COM Ajouter l'utilisateur au groupe dialout :

$ sudo usermod -a -G dialout $USER

Protocole de communication entre FloppyConductor et l'Arduino

FloppyConductorProtocole.png

Dialog-warning.png Fix Me !

Vous pouvez ajouter les informations manquantes !!!

Liens

Explications techniques

Floppy Drive Organ: Phase 1 Demo and Technical Details
(en) http://stephanos.io/archives/13

Démonstration en vidéo

Floppy Ocherstra Nöel
https://www.youtube.com/watch?v=1XErwdEqMEA

Floppy Orchestra performing Mario Theme
(en) https://www.youtube.com/watch?v=uscKE5Pp4hg

Programme pour le projet

Site de la bibliothèque Arduino Timer1
(en) http://playground.arduino.cc/Code/Timer1

Le dépôt git du projet
(en) https://gitlab.com/floppy-orchestra

Moppy is a Musical Floppy controller program built for the Arduino Uno
(en) https://github.com/SammyIAm/Moppy.

Aide au câblage

Section Hardware du projet Moppy
https://github.com/SammyIAm/Moppy/blob/moppy-advanced/README.md#hardware

Floppy Diskdrive pinout
http://pinouts.ru/Storage/InternalDisk_pinout.shtml

Brochage de l'alimentation 3,5 " type molex
http://www.abcelectronique.com/annuaire/connecteurs/carte_mere/alim_3_5.phtml

Brochage de contrôleur de disquette
http://www.abcelectronique.com/annuaire/connecteurs/controlleurs_stockage/controlleur_disque.phtml

Auteurs