From 52cc655c36b2f8f11b95cc318b1196be7ffe2130 Mon Sep 17 00:00:00 2001
From: Jean-Marie Favreau <J-Marie.Favreau@uca.fr>
Date: Tue, 9 Apr 2019 12:22:25 +0200
Subject: [PATCH] =?UTF-8?q?Ajout=20de=20quelques=20d=C3=A9tails=20qui=20re?=
 =?UTF-8?q?ndent=20plus=20facilement=20lisible=20les=20documents?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 musique/exercice.py | 23 +++++++++++++++--------
 musique/gamme.py    |  4 ++++
 2 files changed, 19 insertions(+), 8 deletions(-)

diff --git a/musique/exercice.py b/musique/exercice.py
index 3e20099..d10f6c3 100644
--- a/musique/exercice.py
+++ b/musique/exercice.py
@@ -235,10 +235,12 @@ class GenerateurExercice(GammeTemperee):
         
         result = "\\renewcommand{\\arraystretch}{1.3}"
         result += "\\begin{table}[H]\n\centering\n"
-        result += "\\begin{tabular}{|c||c|c|}\n"
+        if len(partition) > 30:
+          result += "{\\footnotesize \n"
+        result += "\\begin{tabular}{|c||c|c|c|}\n"
         result += "\\hline\n"
-        result += " & \multicolumn{2}{c|}{Codage} \\\\ \n"
-        result += " &\qquad\\textbf{Note}\qquad~ & \qquad\\textbf{Durée}\qquad~ \\\\ \n"
+        result += " & \multicolumn{2}{c|}{Codage} & Représentation \\\\ \n"
+        result += " &\qquad\\textbf{Note}\qquad~ & \qquad\\textbf{Durée}\qquad~ & \\textbf{Graphique}  \\\\ \n"
         result += "\\hline \n"
         for i, note in enumerate(partition):
           result += str(i + 1) + " & "
@@ -246,20 +248,22 @@ class GenerateurExercice(GammeTemperee):
             if isinstance(note[0], float):
               if note[0] > 0:
                 result += self.frequenceToLaTeX(note[0], 
-                                                self.minOctave, self.maxOctave) +  "& " + self.nomDuree(note[1]) + " \\\\\n"
+                                                self.minOctave, self.maxOctave) +  "& " + self.nomDuree(note[1]) + " & \\\\\n"
                 result += "\\hline\n"
               else:
-                result += " & " + self.nomDuree(note[1]) + " \\\\\n"
+                result += " & " + self.nomDuree(note[1]) + " & \\\\\n"
                 result += "\\hline\n"
             else:
-              result += " & " + ', '.join([self.frequenceToLaTeX(n) for n in note[0]]) + " & " + self.nomDuree(note[1]) + " \\\\\n"
+              result += " & " + ', '.join([self.frequenceToLaTeX(n) for n in note[0]]) + " & " + self.nomDuree(note[1]) + " & \\\\\n"
               result += "\\hline\n"
           else:
-            result +=  " &  \\\\\n"
+            result +=  " &  & \\\\\n"
             result += "\\hline\n"
         if solution:
           result += "\\hline\n"
         result += "\\end{tabular}\n"
+        if len(partition) > 30:
+          result += "}\n"
         if solution:
           result += "\\caption{Tableau des notes de la partition (solution)}\n"
         else:
@@ -289,6 +293,9 @@ class GenerateurExercice(GammeTemperee):
       result += "\\end{tabular}\n"
       result += "\\caption{Table des fréquences de la gamme tempérée}\n"
       result += "\\end{table}\n"
+      
+      if self.contientSilences(partitions):
+        result += "Attention, la partition peut également contenir des silences, dont on peut mesurer la longueur, comme les notes"
       return result
         
     # retourne la translation d'octave nécessaire pour jouer avec
@@ -344,7 +351,7 @@ class GenerateurExercice(GammeTemperee):
     
     def pointColore(self, boomwhacker, x, y, r):
       result = self.couleurBoomwhackerToTikz(boomwhacker)
-      rayon = r * 1.2 if boomwhacker["court"] == "0" else r
+      rayon = r * 1.3 if boomwhacker["court"] == "0" else r
       result += "\\fill[fill=tempcolor] ("+ \
                 str(x) + "," +  str(y) + ") circle (" + str(rayon) + ");"
       if "alteration" in boomwhacker:
diff --git a/musique/gamme.py b/musique/gamme.py
index 86f47e5..4149537 100644
--- a/musique/gamme.py
+++ b/musique/gamme.py
@@ -206,6 +206,10 @@ class GammeTemperee:
     def notesDansPartition(self, partitions):
       l = [[ [x] if isinstance(x, float) else x for x in [note[0] if not isinstance(note[0], float) else note[0] for note in partition]] for partition in partitions]
       return [x for x in sum(sum(l, []), []) if x != 0]
+    
+    def contientSilences(self, partitions):
+      l = [[ [x] if isinstance(x, float) else x for x in [note[0] if not isinstance(note[0], float) else note[0] for note in partition]] for partition in partitions]
+      return len([x for x in sum(sum(l, []), []) if x == 0]) != 0
       
 
     # retourne la fréquence minimum utilisée dans les partitions
-- 
GitLab