Créer un piano

Tous les tutoriaux unity, de la communauté ou d'ailleurs.
Avatar de l’utilisateur
Bob8213
Messages : 2
Inscription : 08 Sep 2015 18:49

Créer un piano

Message par Bob8213 » 08 Sep 2015 19:07

Bonjour à tous!

Je vous propose mon tout premier tuto : créer un piano dans Unity3d!
Ce tuto est fortement inspiré du tuto de quill18creates (disponible en anglais sur Youtube),
je vais cependant corriger quelques erreurs et le traduire en français.

Donc voilà comment ça va se passer :
On va créer les touches d'un piano, et surtout le son qui va avec.
Pour cela on utilisera un seul fichier son et un script très simple.
On ne va pas s'attaquer à la modélisation du piano ni à d'éventuelles applications de ce
tuto, je laisse libre cours à votre imagination.

Commençons!
On a donc besoin d'un fichier son, c'est la note Do (télécharger http://adf.ly/1Nuobd).
Dans Unity, on crée une touche à partir d'un simple cube qu'on place dans la scène et on y ajoute le fichier son.
Si tout va bien jusque là vous pouvez lancer le jeu et la note se joue toute seule. Mais ce n'est
pas ce qu'on veut alors désactivez PlayOnAwake dans l'audio source de votre objet.

Maintenant on crée un script (en c# pour moi) qu'on attache à notre cube.
On ajoute ceci dans notre script :
- Une variable :

Code : Tout sélectionner

public float semitone_Offset=0f;
- Une fonction :

Code : Tout sélectionner

void PlayNote(){
	audio.pitch = Mathf.Pow(2f, semitone_Offset/12f);
	audio.Play();
	}
- Et une autre fonction simplement pour tester nos notes :

Code : Tout sélectionner

void OnMouseDown(){
	PlayNote();
	}
Voilà, ce script permet de modifier notre unique son en temps réel afin d'obtenir une note différente,
pour cela il n'y a qu'une valeur à modifier à chaque fois : il s'agit de semitone_Offset.

L'écart entre les notes du piano est définit par des tons et des demi-tons, notre script modifie le son en
fonction de cela (notre variable semitone_Offset représente les demi-tons).
Là où je "corrige" le travail de quill18creates c'est pour ces écarts entre les notes. Je vais tenter de vous
l'expliquer et je propose également ce lien : http://www.jerrock.com/66/notes_intervalles_degres

Pour comprendre, regardons les touches d'un piano, il y en a des blanches et des noires.
L'écart d'une touche à la suivante (en comptant les touches noires) est toujours d'un demi-ton.
Mais vous pouvez voir qu'il n'y a pas de noire entre Mi et Fa et entre Si et Do. L'écart entre ces touches
blanches est donc de seulement un demi-ton. Et c'est en fonction de ça qu'on va obtenir les valeurs de
notre variable semitone_Offset.

Image

Donc maintenant pour créer toutes les notes il faut dupliquer votre Cube (Ctrl-D) plusieurs fois jusqu'à en avoir 13.
Il ne reste plus qu'à cliquer sur chaque Cube et modifier son semitone_Offset directement dans l'éditeur.
Si vous n'avez pas compris mon explication je vous donne les valeurs à écrire pour chaque note en partant de notre Do :
Do 0, Do# 1, Ré 2, Ré# 3, Mi 4, Fa 5, Fa# 6, Sol 7, Sol# 8, La 9, La# 10, Si 11, Do 12.
Ces valeurs représentent le nombre de demi-tons qui sépare chaque note du Do.
Et vous pouvez tout à fait mettre des valeurs négatives pour obtenir des notes plus graves.

Donc maintenant, vous pouvez disposer proprement vos cubes et lancer le jeu, puis cliquez simplement sur les touches.

Petit bonus : Vous pouvez Changer d'octave en ajoutant ou enlevant un multiple de 12 à ces valeurs.

Après je vous laisse rajouter des conditions et des calculs à votre fonction selon vos besoins,
vous pouvez faire en sorte que le son se joue par un clic, après une collision, après un certain temps...

Et voilà!
J'espère que ce tuto vous aura aidé. Si vous avez des questions j'essayerais d'y répondre.
Et n'hésitez pas à me dire si vous trouvez ce tuto clair ou non, et si il y a des points à améliorer.
Dernière édition par Bob8213 le 10 Sep 2015 01:46, édité 2 fois.

Avatar de l’utilisateur
E3DStef
Administrateur
Administrateur
Messages : 1646
Inscription : 14 Juil 2013 18:30
Localisation : https://www.carte-des-membres.com/fr/Unity3D-France/

Re: Créer un piano

Message par E3DStef » 09 Sep 2015 22:24

Merci de ton tuto, Bob...

Autant je trouve le début bien clair autant la fin est un peu "raccourcie" si je puis me permettre...

Tu dis clairement les tons et demi ton Ré Ré# etc... mais tu n'y mets pas un script en clair.

Pour les débutants avoir une gamme complète (avec les 8 fonctions écrites) serait plus compréhensible je pense...

qu'en dis tu ?

Merci pour la commu en tout cas.

Stef
Le Savoir n'est Précieux que s'il est Partagé

Si besoin urgent de me contacter, faites moi un mail sur : franceunity3d@gmail.com

Avatar de l’utilisateur
Bob8213
Messages : 2
Inscription : 08 Sep 2015 18:49

Re: Créer un piano

Message par Bob8213 » 10 Sep 2015 01:37

Merci pour ta réponse, effectivement c'était un peu confus. Je me suis complètement emmêlé les pinceaux ^^
Bref, c'est édité, j'espère que c'est mieux comme ça.

Répondre

Revenir vers « Tutoriaux »