diff --git a/boomwhackers-8.json b/boomwhackers-8.json index b3d54980d16e6cc59c52730dfe3e3fb148f0efe1..eada19bfb460588ccab4ec9601e4518aec3b5caa 100644 --- a/boomwhackers-8.json +++ b/boomwhackers-8.json @@ -1,10 +1,10 @@ { - "do1": { "couleur": [167, 56, 36], "capsule": "0" }, - "re1": { "couleur": [197, 101, 40], "capsule": "0" }, - "mi1": { "couleur": [244, 226, 54], "capsule": "0" }, - "fa1": { "couleur": [150, 197, 40], "capsule": "0" }, - "sol1": { "couleur": [46, 72, 109], "capsule": "0" }, - "la1": { "couleur": [62, 58, 135], "capsule": "0" }, - "si1": { "couleur": [106, 41, 131], "capsule": "0" }, - "do2": { "couleur": [151, 55, 30], "capsule": "0" } + "do1": { "couleur": [167, 56, 36], "capsule": "0", "court": "1" }, + "re1": { "couleur": [197, 101, 40], "capsule": "0", "court": "0" }, + "mi1": { "couleur": [244, 226, 54], "capsule": "0", "court": "0" }, + "fa1": { "couleur": [150, 197, 40], "capsule": "0", "court": "0" }, + "sol1": { "couleur": [46, 72, 109], "capsule": "0", "court": "0" }, + "la1": { "couleur": [62, 58, 135], "capsule": "0", "court": "0" }, + "si1": { "couleur": [106, 41, 131], "capsule": "0", "court": "0" }, + "do2": { "couleur": [151, 55, 30], "capsule": "0", "court": "0" } } diff --git a/joie.py b/joie.py index df63b4ddc513ae109b3a359c0adb9cef56e354e5..4c1765c5aef9e8bbe8b41995bfa4253eede513eb 100644 --- a/joie.py +++ b/joie.py @@ -71,7 +71,7 @@ if args.exerciceSpectrogramme: g = GenerateurExercice(gamme.bpm) g.setBoomwhackers(boomwhackers) g.setLongueurPartitionColoree(8) - g.genererExerciceSpectrogramme(joie, "exercices/ex-spec-joie.tex", "thème joie") + g.genererExerciceSpectrogramme(joie, "exercices/ex-spec-joie.tex", "thème 1") else: print "Génération du son" s = BasicSequenceur(1, gamme.bpm, 0) diff --git a/musique/exercice.py b/musique/exercice.py index cd8850a2b3b7dd82310630742f090bf311d5143a..479b50387363355eeb4885d2f87be89d5efe436c 100644 --- a/musique/exercice.py +++ b/musique/exercice.py @@ -293,8 +293,9 @@ class GenerateurExercice(GammeTemperee): def pointColore(self, boomwhacker, x, y, r): result = self.couleurBoomwhackerToTikz(boomwhacker) + rayon = r if boomwhacker["court"] == "0" else r * 0.7 result += "\\fill[fill=tempcolor] ("+ \ - str(x) + "," + str(y) + ") circle (" + str(r) + ");" + str(x) + "," + str(y) + ") circle (" + str(rayon) + ");" if boomwhacker["capsule"] == "1": result += "\\fill [black] (" + str(x - r) + "," + str(y - 1.2 * r) + \ ") rectangle (" + str(x + r) + ", " + str(y - 1.9 * r) + ");" @@ -302,6 +303,40 @@ class GenerateurExercice(GammeTemperee): return result + def ensembleDesNotesGraphiques(self, frequences, radius): + result = "" + + notes = sorted(list(set(frequences))) + + result += "\\begin{table}[H]\n\centering\n" + result += "\\begin{tabular}{|r|" + "".join(["c|"] * len(notes)) + "}\n" + result += "\\hline\n" + + result += "Notes" + for n in notes: + result += "&" + result += self.frequenceToLaTeX(n) + result += "\\\\ \n" + result += "Forme" + for n in notes: + result += "&" + result += "\\begin{tikzpicture}[]" + nid = self.shiftNote(self.getOctaveEtIDNote(n), self.shiftOctave) + mw = self.boomwhackers[nid] + result += self.pointColore(mw, 0, 0, radius) + result += "\\end{tikzpicture}" + result += "\\\\ \n" + result += "Prénom" + for n in notes: + result += "&" + result += "\\hspace*{2.5cm}" + result += "\\\\ \n" + result += "\\hline\n" + result += "\\end{tabular}\n" + result += "\\caption{Représentation colorée des notes}\n" + result += "\\end{table}\n" + return result + def partitionGraphique(self, partitions): result = "" @@ -312,6 +347,7 @@ class GenerateurExercice(GammeTemperee): stepx = 2 stepy = 2.5 + radius = stepx / 4. finDeLigne = self.longueurPartitionColoree * stepx @@ -319,11 +355,16 @@ class GenerateurExercice(GammeTemperee): if self.estDessinable(partitions): p = partitions[0] + + result += self.ensembleDesNotesGraphiques(frequences, radius) + + result += "La partition graphique suivante se lit ligne par ligne. Les durées sont représentées par les espaces entre les cercles colorés. \n \n" + + result += "\\begin{figure}[H]" result += "\\begin{tikzpicture}[]" for note in p: - print note if x == 0: result += "\\node[draw] at (- " + str(stepx) + "," + str(y) + ") {" + str(nbl) + "};" if isinstance(note[0], float): @@ -331,7 +372,7 @@ class GenerateurExercice(GammeTemperee): if note[0] != 0: n = self.shiftNote(self.getOctaveEtIDNote(note[0]), self.shiftOctave) mw = self.boomwhackers[n] - result += self.pointColore(mw, x, y, stepx / 4.) + result += self.pointColore(mw, x, y, radius) # on calcule la translation pour le point suivant x += self.dureeEnNoires(note[1]) * stepx if x >= finDeLigne: @@ -341,11 +382,11 @@ class GenerateurExercice(GammeTemperee): result += "\\end{tikzpicture}" + result += "\\caption{Partition graphique retranscrite depuis le tableau des notes de la partition}" + result += "\\end{figure}" else: result += "Cette partition n'est pas représentable sous forme de partition pour boomwhackers diatoniques." - - print result - + return result # cette fonction écrit la fin de l'exercice spectrogramme