A la fin de cette année en micro-contrôleurs, nous avons réalisé ce projet pour mettre en oeuvre et développer nos connaissances dans cette matière.
Nous avons choisi de réaliser un orgue électronique pour développer notre fibre musicale. Voici en résumé le cahier des charges à respecter :
- Créer un programme simulant un orgue
- Utiliser le clavier pour saisir les notes (2 octaves plus les touches noires)
- Sortir sur le haut-parleur un son correspondant à la touche tapée
- Arrêter le son lorsque l'utilisateur relâche la touche
- Option permettant de décaler d'une octave toutes les notes
- Lire et jouer une partition enregistrée en mémoire (...)
[...] - Divise période par une constante1 - Divise une constante2 par le résultat (résultat inversement proportionnel) - Stockage du résultat dans ctediv Remarque : constante1 et constante2 ont été estimées par les calculs suivants : - constante1 = 100 (permet de convertir la période en un nombre plus petit afin de respecter par la suite une taille de 16 bits) - on part du constat que pour une note donnée (DO2 = 261,62 il faut un certain nombre de répétitions dans la fonction unenote. On approche ce nombre par approximations successives. De là, on calcule constante2 pour retrouver ce nombre pour la note prise en exemple Prenote Cette fonction permet de générer un son pendant la durée nécessaire à la répétition de la première frappe et de la deuxième. En effet, la durée de répétition des touches sous Windows est différente entre la première et la deuxième ; et les suivantes. [...]
[...] Le premier obstacle rencontré fut de trouver une architecture permettant à l'utilisateur de saisir des touches au clavier sans perturber les autres fonctions, en particulier la fonction de génération des notes. Nous avons tout d'abord pensé à utiliser getchar, mais il est vite apparu limitant de par son temps d'exécution très long est du fait qu'il arrête le programme Finalement la solution retenue est un mélange de getchar pour la partie ou le programme ne joue rien et attend une touche et auvol pour la partie génération avec un temps d'exécution fixe et une seule touche à vérifier (celle correspondant à la note en cours) Un autre obstacle fut de gérer les temps de répétition des touches sous Windows. [...]
[...] Pour cela, nous nous sommes aidés du fichier Excel de correspondances. Figure partition d'Au clair de la lune - La première étape est d'extraire les notes de la partition et de les rentrer dans la première colonne du fichier Excel. Figure Exemple de partition N.B : Veuillez respecter la mise en forme du tableau : une case vide entre chaque note et le mot SIL pour pouvoir insérer un blanc entre chaque note. - La deuxième étape est de remplir le champ Durée pour chaque note et chaque silence. [...]
[...] Puis on remplit les colonnes Excel comme suivant : - La colonne freq permet de référencer les différentes fréquences des 2 octaves, (de telle sorte que le LA Hz soit présent) - La colonne cycles correspond au nombre de cycle d'horloge du Microcontrôleur pour effectuer une demi-période. - La colonne X calcule le nombre de tours dans la boucle (fonction unenote) entre deux permutations de la sortie sur le haut-parleur. La constante 12, est le nombre de cycles des instructions de la grande boucle entre c'est une sorte d'offset (voir fonction unenote). La constante est le nombre de cycles de la petite boucle interne entre (voir fonction unenote). [...]
[...] Nous avons choisit de réaliser un orgue électronique pour développer notre fibre musicale. Voici en résumé le cahier des charges à respecter : Créer un programme simulant un orgue Utiliser le clavier pour saisir les notes octaves plus les touches noires) Sortir sur le haut-parleur un son correspondant à la touche tapée Arrêter le son lorsque l'utilisateur relâche la touche Option permettant de décaler d'une octave toutes les notes Lire et jouer une partition enregistrée en mémoire Afin de répondre à ce cahier, nous avons réparti le travail par étapes successives en testant une à une toutes les fonctionnalités du programme Organigramme du programme Nous avons réalisé un organigramme sommaire du programme tel qu'on le désirait ; puis nous l'avons mis-à-jour au fur et à mesure des évolutions. [...]
Source aux normes APA
Pour votre bibliographieLecture en ligne
avec notre liseuse dédiée !Contenu vérifié
par notre comité de lecture