La petite musique du haut-parleur système

Description

Hé bien c'est une classe qui permet de faire de la musique avec le speaker de la carte mère. On écrit la musique sous forme de chaine (octave & note & altération & rythme), puis elle est convertie en fréquences et en durées. On peux mémoriser plusieurs voix et en jouer une ou plusieurs en même temps, au tempo voulu.

En plus du module de classe (Speaker.cls) il y a un projet de démonstration avec quelques partitions pour l'exemple.

Source / Exemple :


'Format d'une note : Octave(fac) & Note(oblig) & Altération(fac) & Rythme(fac)
'Si l'octave ou le rythme n'est pas précisé c'est le même que le précédent

'Octave : de 0 à 9
'Note : de A à G, ou S (silence)
'Altération : # ou &
'Rythme : r (ronde), b (blanche), n (noire), c (croche), d (double), t (triple), q (quadruple)

'La : "A"
'Do dièse 4 : "4C#"
'Si bémol : "B&"
'Sol noire 2 : "2Gn"
'Ré bémol blanche pointé : "D&b."
'Fa 2 temps 1/2 (liaison) : "Fb_c
'Do et sol en blanche : "C|Gb"
'Accord do 7e en croche double pointé : "C|E|G|B&c.."

'Au clair de la lune : "3Cc C C D En D Cc E D D Cb"

'jouer une voix
Speaker.Charger "Cc C C D En D Cc E D D Cb"
Speaker.Jouer

'la jouer plus vite (par défaut ça joue à 60)
Speaker.Jouer 120

'rajouter 2 voix et jouer les 3
Speaker.Charger "1Cb. Dn C D Cb", 2
Speaker.Charger "6Cn S E D C S C", 3
Speaker.Jouer

'jouer les voix 2 à 3 très vite
Speaker.Jouer 200, 2, 3

'effacer la voix 1
Speaker.Charger "", 1

'commencer à jouer une note
Speaker.JouerNote "A#|Dn._b"

'l'arrêter
Speaker.StopperNote

Conclusion :


Ce code ne marche que sur 2000 et XP, l'API Beep fonctionne mal sur les autres systèmes. Et puis la classe n'est pas très complète j'ai pas eu le temps de finir, à vous de l'améliorer.

Note : suivant les buzzer on entend des choses assez différentes. Il faut bien faire attention à la propriété "Echantillonage" : normalement plus elle est faible mieux ça marche, mais certains buzzers émettent un grésillement infame si elle est trop petite. Pour ce que j'ai vu, ça marche pas mal entre 1 et 30 ms.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.