AvrIO  1.4.5
Bibliothèque C modulaire pour ATMEL AVR
Mélodies musicales

Description détaillée

Ce module permet de jouer des mélodies. L'implémentation permet de jouer des morceaux de musique sans monopoliser le processeur grâce à l'utilisation d'une tâche pour le cadencement de la lecture des notes et d'un timer pour la génération des sons.
Le module s'interface avec le timer par l'intermédiaire de 3 fonctions implémentées par l'utilisateur dans avrio-config.h .
La structure des sons est compatible avec BrickOs Music Studio (format BrickOS 2.0) et permet donc de jouer des fichiers midi.

Graphe de collaboration de Mélodies musicales:

Modules

 Liste des notes
 

Structures de données

struct  xNote
 Structure Note de musique. Plus de détails...
 

Fonctions

uint8_t ucMelodyDuration (void)
 Lecture de la durée du 1/16 ième de note courante.
 
uint8_t ucMelodyInternote (void)
 Lecture de la durée de l'espace internote courant.
 
void vMelodyBeep (void)
 Joue un bip bref.
 
void vMelodyInit (uint8_t xDuration, uint8_t xInternote)
 Initialise le module son. Plus de détails...
 
void vMelodyPause (bool xPause)
 Met en pause ou reprend la lecture d'un morceau. Plus de détails...
 
void vMelodyPlay (const xNote *xMelody)
 Joue une suite de notes (un morceau de musique) résidant en RAM. Plus de détails...
 
void vMelodyPlayFlash (const xNote *xMelody)
 Joue un morceau de musique résidant en FLASH. Plus de détails...
 
void vMelodyPlaySystem (uint8_t ucIndex)
 
void vMelodySetDuration (uint8_t xDuration)
 Modifie la durée du 1/16 ième de note. Plus de détails...
 
void vMelodySetInternote (uint8_t xInternote)
 Modifie la durée de l'espace internote (soustrait de la durée de note) Plus de détails...
 
void vMelodyStop (void)
 Arrête brutalement la lecture du morceau en cours.
 
void vMelodyTopChangedCB (uint16_t usNewTop)
 Fonction appelée par le module à chaque changement de TOP Si le timer est utilisé pour d'autres fonctions que melody, l'utilisateur doit définir AVRIO_MELODY_TIMERCB_ENABLE et cette fonction afin de récupérer la nouvelle valeur de TOP.
Le timer est stoppé pendant l'exécution de cette fonction.
 
bool xMelodyIsPlay (void)
 Indique si un lecture est en cours. Plus de détails...
 

Macros

#define EIGHTH   2
 Durée 1/8 de note (en 1/16 de note)
 
#define HALF   8
 Durée 1/2 de note (en 1/16 de note)
 
#define MELODY_BEEP   0
 Index du beep dans la table système.
 
#define MELODY_ERROR   3
 Index du son d'erreur dans la table système.
 
#define MELODY_SYS_MAX   4
 Nombre de sons dans la table système.
 
#define MELODY_WARNING   2
 Index du son d'incident dans la table système.
 
#define MELODY_WELCOME   1
 Index du son de bienvenue dans la table système.
 
#define QUARTER   4
 Durée 1/4 de note (en 1/16 de note)
 
#define WHOLE   16
 Durée d'une note (en 1/16 de note)
 

Définitions de type

typedef struct xNote xNote
 

Documentation des fonctions

void vMelodyInit ( uint8_t  xDuration,
uint8_t  xInternote 
)

Initialise le module son.

Paramètres
xDurationdurée en ms du 1/16 ième de note (plus petite durée)
xInternotedurée en ms du silence entre notes
Exemples:
output/melody/demo_melody.c.
void vMelodyPause ( bool  xPause)

Met en pause ou reprend la lecture d'un morceau.

Paramètres
xPausetrue pour mettre en pause, false pour reprendre
void vMelodyPlay ( const xNote xMelody)

Joue une suite de notes (un morceau de musique) résidant en RAM.

Paramètres
xMelodypointeur en RAM vers le morceau
void vMelodyPlayFlash ( const xNote xMelody)

Joue un morceau de musique résidant en FLASH.

Paramètres
xMelodypointeur en FLASH vers le morceau
Exemples:
output/melody/demo_melody.c.
void vMelodyPlaySystem ( uint8_t  ucIndex)

Joue un morceau de la table des sons système Le module dispose par défaut de 4 sons.

Paramètres
ucIndexindex du morceau dans la table des sons système
Exemples:
output/melody/demo_melody.c.
void vMelodySetDuration ( uint8_t  xDuration)

Modifie la durée du 1/16 ième de note.

Paramètres
xDurationdurée en ms du 1/16 ième de note
void vMelodySetInternote ( uint8_t  xInternote)

Modifie la durée de l'espace internote (soustrait de la durée de note)

Mettre 0 pour un legato parfait

Paramètres
internotedurée en ms du silence entre notes
bool xMelodyIsPlay ( void  )

Indique si un lecture est en cours.

Renvoie
true si une lecture est en cours
Exemples:
output/melody/demo_melody.c.