Accueil

 

 

UN PEU DE MUSIQUE

Dans un montage précédent vous avez fait émettre les notes de la gamme a votre buzzer mais vous avez sans doute été un peu déçu par la qualité du son ! On peut faire beaucoup mieux : d'abord on peut facilement trouver des partitions de musiques simples sur internet et les faire jouer en modifiant le programme précédent et en ajoutant des fréquences intermédiaires et des durées variables pour les notes .

Vous pourrez tester l'air trés connu de Katyusha avec le programme suivant.

Mais pour en profiter dans de meilleures conditions , je vous conseille d'acheter un petit circuit intégré a 8 pattes le LM386 .Il suffit de lire le mode d'emploi (datasheet sur le site de National Semiconducteurs ) un montage simple est conseillé pour amplifier 20 fois le son, et il est facile a réaliser sur la plaque d'essai du PE Kit : il suffit d'ajouter 2 résistances (10 ohms et 10 KiloOhm , un potentiométre de 10 kilo Ohms, 2 condensateurs (250 microfarad et 0,05 microfarad.) , et un petit haut parleur de 8 Ohm. Cout total 5 euros (chez Sélectronic , place de la Nation,Paris).

Voici un lien vers une description du montage , en francais, avec photos . Notez cependant que l'auteur a soudé les composant sur une plaque a trous (alors que vous les enfichez sur la plaque du PEkit) et que pour utiliser toute l'amplification possible soit 200 fois (ce qui vous est inutile pour un robot) il met une résistance entre les pattes 1 et 8 du LM386. Vous pouvez alimenter votre montage avec un voltage qui doit être entre 4 et 12 volts continu.

Pour repérer les patte du LM386 , on le regarde du dessus (le coté ou il n'y a pas de pattes) avec la petite encoche ronde gravée sur le dessus placée vers le haut: alors la patte 1 est en haut a gauche et on compte les autres en tournant dans le sens inverse des aiguilles d'une montre.Les pattes 2 et 4 sont a relier a la terre et la 6 au plus de l'alimentation. La patte 3 a la borne du milieu du potentiométre (les 2 autres bornes du potentiométre sont reliés a la terre commune du PEKit et a la patte 12 du Propeller. La patte 5 est reliée d'une part au speaker en intercallant le condensateur de 250 microFarad d'autre part a la terre en intercallant le condensateur de 0,05 microFarad et la résistance de 10 kilo Ohms.

Les amateurs peuvent construire des amplifications beaucoup plus puissantes et sophistiquées , ils trouveront des exemples et des programmes sur le site Parallax.com . (Bourse d'échanges, chapitre programmes Audio).

Le programme tout simple qui suit reprend l'essentiel de ce que nous avions vu dans le montage <Buzzer et gamme> . Ceux qui ont fait un peu de musique le comprendront sans peine et pourrontl'améliorer.

On branchera le speaker ou le buzzer sur la patte 12 du Propeller.

Au début on définit , dans une méthode appelée <Init> , un certain nombre de caractéristiques pour différentes notes ,: durées, pauses, délais . Cela permet de changer ces caractéristiques en un seul endroit pour tout le reste des méthodes. A vous de tester différentes valeurs, modifier et choisir ce qui plaira a l'oreille. Il faut aussi tester différentes fositions du bouton du potentiométre , celui ci est linéaire et bon marché . Si vous avez l'orelle musicale , demandez a un magasin d'électronique un potentiométre logarithmique de même résistance.

 

{{cette zone est un commentaire du programme

katyusha.spin
musique sur speaker ou buzzer branché en Pin 12

}}

CON

_CLKMODE = XTAL1 + PLL16X ' 80 Mhz clock
_XINFREQ = 5_000_000

Speakerpin=12
N=1
blanche=800' durée chhoisie pour une note blanche
duty=70 ' pourcentage du temps des impulsions qui est ON

VAR
long noire,doublecroche,croche,triplecroche,pourcentutile,noirepointee,blanchepointee, delaientrenotes

PUB Init
pourcentutile:=dutynoire:=blanche/2 'on calcule la durée de quelques notes pour ne pas avoir a le faire pendant la musique
croche:=blanche/4
doublecroche:=blanche/8
noirepointee:=noire + noire/2
blanchepointee:=blanche + blanche/2

delaientrenotes:=clkfreq/16


katyusha 'appelle la méthode

PUB gamme 'l'ancien programme <gamme>

PulsePiezoSpeaker(400, 1046*N,pourcentutile) 'Do en fait multiples de 1046,5
PulsePiezoSpeaker(400, 1175*N,pourcentutile) 'Ré en fait multiples de 1174,7
PulsePiezoSpeaker(400, 1318*N,pourcentutile) 'Mi en fait multiples de 1318,5
PulsePiezoSpeaker(400, 1397*N,pourcentutile) 'Fa en fait multiples de 1396,9
PulsePiezoSpeaker(400, 1568*N,pourcentutile) 'Sol en fait multiples de 1568,0
PulsePiezoSpeaker(400, 1760*N,pourcentutile) 'La en fait multiples de 1760
PulsePiezoSpeaker(400, 1975*N,pourcentutile) 'Si en fait multiples de 1975,5
PulsePiezoSpeaker(400, 2093*N,pourcentutile) 'Do en fait multiples de 2093,0

PUB PulsePiezoSpeaker (Nfois ,frequence, dutypiezo) | dureecyclemicrosec, dureeON, dureeOFF

dira[SpeakerPin]~~ ' on ouvre le pin SpeakerPin en emission
dureecyclemicrosec:=(clkfreq/frequence)
dureeON:= (dureecyclemicrosec * dutypiezo)/100
dureeOFF:= dureecyclemicrosec-dureeON

repeat Nfois'il faut décaler les 4 lignes suivantes a droite mais mon éditeur ne le permet pas !
outa[SpeakerPin]:=1
waitcnt(dureeON + cnt) '
outa[SpeakerPin]:=0
waitcnt (dureeOFF + cnt) '
waitcnt (delaientrenotes + cnt)


PUB Katyusha

PulsePiezoSpeaker(noire, 1760*N,pourcentutile) 'La en fait multiples de 1760
PulsePiezoSpeaker(croche, 1975*N,pourcentutile) 'Si en fait multiples de 1975,5
PulsePiezoSpeaker(noirepointee, 2093*N,pourcentutile) 'Do en fait multiples de 2093,0
PulsePiezoSpeaker(croche, 1760*N,pourcentutile) 'La en fait multiples de 1760

PulsePiezoSpeaker(croche, 2093*N,pourcentutile) 'Do en fait multiples de 2093,0
PulsePiezoSpeaker(croche, 2093*N,pourcentutile) 'Do en fait multiples de 2093,0
PulsePiezoSpeaker(croche, 1975*N,pourcentutile) 'Si en fait multiples de 1975,5
PulsePiezoSpeaker(croche, 1760*N,pourcentutile) 'La en fait multiples de 1760
PulsePiezoSpeaker(noire, 1975*N,pourcentutile) 'Si en fait multiples de 1975,5
PulsePiezoSpeaker(noire, 1318*N,pourcentutile) 'Mi en fait multiples de 1318,5

PulsePiezoSpeaker(noirepointee, 1975*N,pourcentutile) 'Si en fait multiples de 1975,5
PulsePiezoSpeaker(croche, 2093*N,pourcentutile) 'Do en fait multiples de 2093,0
PulsePiezoSpeaker(noirepointee, 2350*N,pourcentutile) 'Ré + en fait multiples de 1174,7
PulsePiezoSpeaker(noire, 1975*N,pourcentutile) 'Si en fait multiples de 1975,5

PulsePiezoSpeaker(croche, 2350*N,pourcentutile) 'Ré + en fait multiples de 1174,7
PulsePiezoSpeaker(croche, 2350*N,pourcentutile) 'Ré + en fait multiples de 1174,7
PulsePiezoSpeaker(croche, 2093*N,pourcentutile) 'Do en fait multiples de 2093,0
PulsePiezoSpeaker(croche, 1975*N,pourcentutile) 'Si en fait multiples de 1975,5
PulsePiezoSpeaker(blanche, 1760*N,pourcentutile) 'La en fait multiples de 1760

PulsePiezoSpeaker(noire, 1318*N,pourcentutile) 'Mi en fait multiples de 1318,5
PulsePiezoSpeaker(noire, 1760*N,pourcentutile) 'La en fait multiples de 1760
PulsePiezoSpeaker(noire, 1568*N,pourcentutile) 'Sol en fait multiples de 1568,0
PulsePiezoSpeaker(croche, 1760*N,pourcentutile) 'La en fait multiples de 1760
PulsePiezoSpeaker(croche, 1568*N,pourcentutile) 'Sol en fait multiples de 1568,0

PulsePiezoSpeaker(croche, 2794*N,pourcentutile) 'Fa+ en fait multiples de 1396,9
PulsePiezoSpeaker(croche, 2794*N,pourcentutile) 'Fa+ en fait multiples de 1396,9
PulsePiezoSpeaker(croche, 1318*N,pourcentutile) 'Mi en fait multiples de 1318,5
PulsePiezoSpeaker(croche, 1175*N,pourcentutile) 'Ré en fait multiples de 1174,7
PulsePiezoSpeaker(noire, 1318*N,pourcentutile) 'Mi en fait multiples de 1318,5
PulsePiezoSpeaker(noire, 1760*N,pourcentutile) 'La en fait multiples de 1760

PulsePiezoSpeaker(noirepointee, 2794*N,pourcentutile) 'Fa+ en fait multiples de 1396,9
PulsePiezoSpeaker(croche, 2350*N,pourcentutile) 'Ré+ en fait multiples de 1174,7
PulsePiezoSpeaker(noirepointee, 2636*N,pourcentutile) 'Mi+ en fait multiples de 1318,5
PulsePiezoSpeaker(croche, 2093*N,pourcentutile) 'Do+ en fait multiples de 2093,0

PulsePiezoSpeaker(croche, 2350*N,pourcentutile) 'Ré+ en fait multiples de 1174,7
PulsePiezoSpeaker(croche, 2350*N,pourcentutile) 'R+é en fait multiples de 1174,7
PulsePiezoSpeaker(croche, 2093*N,pourcentutile) 'Do+ en fait multiples de 2093,0
PulsePiezoSpeaker(croche, 1975*N,pourcentutile) 'Si en fait multiples de 1975,5
PulsePiezoSpeaker(blanche, 2093*N,pourcentutile) 'Do+ en fait multiples de 2093,0