Outils pour utilisateurs

Outils du site


clapping_music_for_robots

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
clapping_music_for_robots [2022/03/14 10:26] Simon Deplatclapping_music_for_robots [2022/03/14 11:15] (Version actuelle) Simon Deplat
Ligne 92: Ligne 92:
 Ce qui semble étrange, c'est que **cette méthode introduit une asymétrie de représentation des deux voix**. Une information supplémentaire est nécessaire pour situer la voix II : son décalage par rapport à l'origine. Ce qui semble étrange, c'est que **cette méthode introduit une asymétrie de représentation des deux voix**. Une information supplémentaire est nécessaire pour situer la voix II : son décalage par rapport à l'origine.
  
-Ce n'est pas le cas avec la représentation "reconstruire" :+Ce n'est pas le cas avec la représentation "reconstruite" :
  
 {{ ::reichisomorph.png?600 |}} {{ ::reichisomorph.png?600 |}}
  
-Les deux font pourtant référence au même objet. La première solution est efficiente en terme de calcul. La seconde est plus facile à comprendre pour les humains.+**Les deux font pourtant référence au même objet.** La première solution est efficiente en terme de calcul. La seconde est plus facile à comprendre pour les humains.
  
 Voici le code associé à cet algorithme, qui, à la place de servomoteurs, fait clignoter des LEDs : Voici le code associé à cet algorithme, qui, à la place de servomoteurs, fait clignoter des LEDs :
Ligne 170: Ligne 170:
  
 =====Physiologie ?===== =====Physiologie ?=====
-Pour aller encore plus loin, il faut noter que le duplicata de l'//Array// n'est même pas nécessaire.+Pour aller encore plus loin, il faut noter que **le duplicata de l'//Array// n'est même pas nécessaire**.
  
-À ce stade, **il n'est même plus possible de représenter à l'aide de dessin la partition de la deuxième voix**, puisqu'elle est dépendante de l'utilisation du modulo (%) qui est une opération logique effectuée sur des électrons :+Avec cet algorithme, **il n'est même plus possible de représenter adéquatement la "partitionde la deuxième voix  à l'aide d'un dessin**, puisqu'elle est dépendante de l'utilisation du modulo (%) qui est une opération logique effectuée sur des électrons :
  
 <code> <code>
Ligne 180: Ligne 180:
 Encore une fois pourtant, l'effet réel est le bon et les LEDs jouent en rythme. Encore une fois pourtant, l'effet réel est le bon et les LEDs jouent en rythme.
  
-Cela nous questionne sur la réalité de la partition : doit-elle être considérée comme un système de symbole, ou comme un objet agissant sur le musicien de telle sorte à le faire jouer correctement. Dans le cas de cette version de l'algorithme, nous sommes beaucoup plus proche de la seconde hypothèse.+Cela nous questionne sur **la définition de la partition**.  
 + 
 +**Doit-elle être considérée comme un système de symbole purement informatifs, ou comme un //objet// agissant sur le musicien de telle sorte à le faire jouer correctement ?** 
 + 
 +**La version "reconstruite" à l'aide de deux //Arrays// semble pencher du première côté**, étant très descriptive, même si l'inspection du contenu des //Arrays// agit effectivement sur les LEDsCela n'est cependant pas immédiat : la partition est d'abord "écrite", puis "lue" //a posteriori// pour déclencher le clignotement. 
 + 
 +À l'inverse, **dans le cas de la version "modulo" de l'algorithme, nous sommes beaucoup plus proche de la seconde hypothèse.** Ici, l'algorithme ressemble plus à une description de la manière dont le corps doit se comporter pour jouer la partition. La partition est en quelque sorte "cachée" dans l'algorithme, et bien qu'elle puisse être déduite de l'algorithme, elle n'est pas accessible de manière immédiate. Par ailleurs, contrairement au premier exemple, il n'y a aucune information donnée //a priori//, et l'Arduino a sa propre méthode pour savoir trouver la note qu'il doit jouer au moment même où il doit la jouer. 
 + 
 +<code> 
 +int ledPin1 = 2; 
 +int ledPin2 = 3; 
 + 
 +int msBetweenBeats = 200; 
 + 
 +int score[] = { 1, 0, 0, 1, 0, 0, 1, 0 }; 
 + 
 +int currentBeat = 0; 
 + 
 +int numberOfBeats; 
 + 
 +int currentCycleRepetition = 0; 
 +int numberOfCycleRepetitions = 4; 
 +int currentCycle = 0; 
 + 
 +void setup() { 
 +  Serial.begin(9600); 
 +   
 +  pinMode( ledPin1, OUTPUT ); 
 +  pinMode( ledPin2, OUTPUT ); 
 + 
 +  numberOfBeats = sizeof( score ) / sizeof( score[0] ); 
 + 
 +
 + 
 +void loop() { 
 + 
 +  Serial.println( score[ currentBeat + currentCycle ] ); 
 + 
 +  if( score[ currentBeat ] == 1 ) { 
 +    digitalWrite( ledPin1, HIGH ); 
 +  }; 
 + 
 +  if( score[ ( currentBeat + currentCycle ) % numberOfBeats ] == 1 ) { 
 +    digitalWrite( ledPin2, HIGH ); 
 +  }; 
 + 
 +  delay( msBetweenBeats / 4 * 3 ); 
 + 
 +  digitalWrite( ledPin1, LOW ); 
 +  digitalWrite( ledPin2, LOW ); 
 + 
 +  delay( msBetweenBeats / 4 ); 
 + 
 +  currentBeat = currentBeat + 1; 
 +   
 +  if( currentBeat == numberOfBeats ) { 
 +     
 +    currentBeat = 0; 
 +    currentCycleRepetition = currentCycleRepetition + 1; 
 +     
 +    if( currentCycleRepetition == numberOfCycleRepetitions ) { 
 +        currentCycleRepetition = 0; 
 +        currentCycle = currentCycle + 1; 
 +         
 +        if( currentCycle == numberOfBeats ) { 
 +          currentCycle = 0; 
 +        }; 
 +      }; 
 +    }; 
 +
 +</code>
clapping_music_for_robots.1647253606.txt.gz · Dernière modification : 2022/03/14 10:26 de Simon Deplat