Le RCX a un haut-parleur incorporé qui peut faire des sons et même jouer des morceaux de musique simples. C’est en particulier utile quand vous voulez faire dire au RCX que quelque chose arrive. Mais il peut aussi être drôle d’avoir un robot faisant de la musique tandis qu’il se déplace.
Il y a six sons incorporés dans le RCX, numéroté de 0 à 5. Ils « sonnent » comme suit :
| code | sons |
|---|---|
| 0 | Clic clef |
| 1 | Signal sonore de type « bip-bip » |
| 2 | Diminution de champ de fréquence |
| 3 | Augmentation de champ de fréquence |
| 4 | ’Buhhh’ son d’Erreur |
| 5 | augmentation rapide de champ de fréquence |
Vous pouvez les jouer employant les commandes PlaySound () . Voici un petit programme qui les joue tous.
Vous pourriez vous demander pourquoi il y a les commandes wait. La raison est que la commande qui joue le son n’attend pas que la précédente soit finie pour commencer. Il exécute immédiatement la commande suivante. Le RCX a une petite mémoire tampon dans laquel il peut stocker quelques sons, mais après un moment cette mémoire devient pleine et les sons sont se perdent. Ce n’est pas si important pour des sons mais ça l’est pour la musique, comme nous le verrons ci-dessous.
Notez que l’argument de PlaySound () doit être une constante. Vous ne pouvez pas mettre une variable ici !
Pour une musique plus intéressante, NQC a la commande PlayTone (). Il a deux arguments. Le premier est la fréquence et le deuxième la durée (avec un cycle de 1/100ème de seconde, comme dans la commande wait). Voici une table de fréquences utiles :
| notes | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
|---|---|---|---|---|---|---|---|---|
| Sol# | 52 | 104 | 208 | 415 | 831 | 1661 | 3322 | n/a |
| Sol | 49 | 98 | 196 | 392 | 784 | 1568 | 3136 | n/a |
| Fa# | 46 | 92 | 185 | 370 | 740 | 1480 | 2960 | n/a |
| Fa | 44 | 87 | 175 | 349 | 698 | 1397 | 2794 | n/a |
| Mi | 41 | 82 | 165 | 330 | 659 | 1319 | 2637 | n/a |
| Ré# | 39 | 78 | 156 | 311 | 622 | 1245 | 2489 | n/a |
| Ré | 37 | 73 | 147 | 294 | 587 | 1175 | 2349 | n/a |
| Do# | 35 | 69 | 139 | 277 | 554 | 1109 | 2217 | n/a |
| Do | 33 | 65 | 131 | 262 | 523 | 1047 | 2093 | 4186 |
| SI | 31 | 62 | 123 | 247 | 494 | 988 | 1976 | 3951 |
| La# | 29 | 58 | 117 | 233 | 466 | 932 | 1865 | 3729 |
| La | 28 | 55 | 110 | 220 | 440 | 880 | 1760 | 3520 |
Comme nous l’avons noté ci-dessus pour les sons, ici aussi le RCX n’attend pas la fin de la note pour commencer. Ainsi si vous en employez beaucoup à la suite mieux vaut ajouter des commandes wait au milieu légèrement plus longue. Voici un exemple :
Vous pouvez créer des morceaux de musique en employant très facilement le Piano RCX qui fait partie du Centre de Commande de RCX.
Si vous voulez faire jouer de la musique au RCX en se déplaçant, mieux vaut employer une tche séparée pour cela. Ici vous avez un exemple d’un programme plutôt stupide où le RCX roule dans les deux sens, en faisant constamment de la musique.
Dans ce chapitre vous avez appris comment laisser le RCX faire des sons et de la musique. Vous avez aussi vu comment employer une tche séparée pour la musique.