Votre question

Aide pour un programme très simple en C

Tags :
  • Musique
  • Programmation
Dernière réponse : dans Programmation
5 Mars 2006 23:19:26

Bonjours, je suis en train d'étudier le C (et oui je suis un ZeR0). Pour ceux qui connaissent le tutoriel du site du zero, je suis encore peu avancé, mais j'aimerais avoir un logiciel très simple qui permetterait de calculer le tempo d'une musique. Je m'explique.

J'utilise un logiciel de musique assez connu (Guitar Pro), lorsque je fais ou tente de reproduire une chansons sur ce logiciel il m'arrive de vouloir trouver le tempo que je devrai utiliser. En fait ce qu'il manque à ma connaissance c'est comment détecter que l'on a appuyer sur un bouton et calculer le temps.

Pour ceux qui ne sonnaissent pas braucoup la musique,le tempo correspond au nombre de temps par minute qui doit être joué; un tempo de 160 équivaut à 160 temps en une minutes.

Le logiciel en question devrait ressembler à ceci (en supposant que time() renvoi le temps et pressbutton(); detecte si on appuie sur un bouton):

  1. int main(int argc, char *argv[])
  2. {
  3. long temps1 = time(); //Temps en miliseconde lors de l'execution
  4. long temps2 = 0; //temps en milliseconde lorsqu'on appuiras sur le bouton.
  5. long tempo = 0; // tempo qui sera affiché
  6. while(1)
  7. {
  8. if (pressbutton())
  9. {
  10. temps2 = time(); // si on appuie sur le bouton, on donne a temps2 sa valeur
  11. tempo = 60 /((temps1 - temps2) / 1000); //on calcul le tempo en tenant compte que temps 1 et 2 sont en milliseconde
  12. temps1 = temps2; // on donne a temps 1 la valeur de temps 2 pour réexécuter el calcul lors de la prochaine demande.
  13. printf("%Id", tempo);
  14. }
  15. }
  16. return 0;
  17. }


Ce code permetterait donc, en appuyant répétitivement sur le bouton en suivant la musique, d'afficher le tempo.

Merci d'avance.
P-Y

Autres pages sur : aide programme tres simple

a b L Programmation
6 Mars 2006 13:13:56

Et ? un problème ? :-)
6 Mars 2006 16:37:43

Citation :
Et ? un problème ? :-D


Je vois pas trop le rapport, vous pourriez répondre à ma question ou c'est trop compliqué à expliquer?

Pour résumé mon autre message, je cherhe à trouver le moyen de récupérer le temps actuel et de faire un action lorsqu'on appui sur un bouton du clavier. Le tout en C
Contenus similaires
6 Mars 2006 16:44:08

salut j'ai un peu de mal a te suivre tu cherche un logiciel qui affiche le tempo ou a te servir de guitar pro
6 Mars 2006 17:05:58

Je cherche à me faire un logiciel qui me donne el tempo d'une musique. Mais ce qu'il me faut c'est simplement trouver comment savoir si on apppuie sur un bouton.

Pour le temps, je crois que clock(); va faire l'Affaire, ça renvoie la temps d'execution du programme en dixieme de seconde. ça devrait faire l'affaire.
6 Mars 2006 17:07:26

ok bonne chance alors
a b L Programmation
6 Mars 2006 19:33:41

Je suis désolé, mais tu n'avais pas posé de question...
Je croyais que tu avais déjà fait les codes des fonctions.

Bref, pour l'attente d'appuie du'une touche, tu a la fonction getch() qui retourne le caractère ASCII de la touche appuyé (à utiliser avec conio.h)
Pour le temps, il y a ce que tu dis, et aussi des fonctions spécifique aux OS (par exemple, sous windows GetTickCount() retourne le nombre de millisecondes écoulés depuis le lancement de l'application, c'est précis à 10ms).
7 Mars 2006 04:45:30

Ok c'est bon merci, j'ai réussi à faire ce que je voulais.

Malheureusement, comme je m'en doutais... c'est pas trop précis, pas grave! Ça peut toujours être utilile... qui sait!

Ça donne ceci:
  1. long temps1 = clock(), temps2 = 0, tempo = 0;
  2. while(1)
  3. {
  4. if (getch())
  5. {
  6. temps2 = clock();
  7. tempo = 60000 / (temps2 - temps1);
  8. printf("\n ** %Id **\n", tempo);
  9. temps1 = temps2;
  10. }
  11. }
a b L Programmation
7 Mars 2006 13:09:21

si tu es sous windows utilise GetTickCount()
8 Mars 2006 04:38:18

Et j'inclus quelle librairie pour utiliser cette fonction?

[EDIT]C'est bon j'ai trouvé ;-) Windows.h
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS