From 8ad4b550106bbaec19bf721488082930a52958cc Mon Sep 17 00:00:00 2001 From: Jean-Marie Favreau <J-Marie.Favreau@uca.fr> Date: Tue, 29 Jan 2019 14:49:20 +0100 Subject: [PATCH] =?UTF-8?q?Beaucoup=20de=20corrections=20de=20bugs,=20on?= =?UTF-8?q?=20commence=20=C3=A0=20avoir=20quelque=20chose=20de=20fonctionn?= =?UTF-8?q?el?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Makefile | 64 +- bellaciao.py | 7 +- crescendo.py | 5 + cucaracha.py | 6 + elise.py | 1411 ++++++++++++++++++++++--------------------- flic.py | 5 + flic2.py | 109 ++-- frerejacques.py | 5 + happybirthday.py | 6 + lavieenrose.py | 6 +- musique/exercice.py | 60 +- musique/gamme.py | 34 +- rainbow.py | 6 +- stairway.py | 114 ++-- starwars.py | 130 ++-- tabac.py | 177 +++--- 16 files changed, 1112 insertions(+), 1033 deletions(-) diff --git a/Makefile b/Makefile index 595b5c6..0065516 100644 --- a/Makefile +++ b/Makefile @@ -1,31 +1,33 @@ - -EXERCICESDIR=exercices/ -SONS=sons/ -SCRIPTS=$(wildcard *.py) -EXESPECTEX=$(addprefix $(EXERCICESDIR)/ex-spec-,$(SCRIPTS:.py=.tex)) -EXESPECPDF=$(EXESPECTEX:.tex=.pdf) -WAVES=$(addprefix $(SONS)/,$(SCRIPTS:.py=.wav)) -.PRECIOUS: $(EXESPECTEX) - -all: waves pdf - -waves: $(WAVES) - -pdf: $(EXESPECPDF) - -tex: $(EXESPECTEX) - -$(EXERCICESDIR)/%.pdf: $(EXERCICESDIR)/%.tex - cd $(EXERCICESDIR); pdflatex $(<:$(EXERCICESDIR)/%=%); cd .. - -$(EXERCICESDIR)/ex-spec-%.tex: %.py - python $< --exercice-spectrogramme - -$(SONS)/%.wav: %.py - python $< - -cleantex: - rm -f $(EXESPECTEX) - -clean: cleantex - rm -f $(EXESPECPDF) $(WAVES) + +EXERCICESDIR=exercices/ +SONS=sons/ +SCRIPTS=$(wildcard *.py) +EXESPECTEX=$(addprefix $(EXERCICESDIR)/ex-spec-,$(SCRIPTS:.py=.tex)) +EXESPECPDF=$(EXESPECTEX:.tex=.pdf) +WAVES=$(addprefix $(SONS)/,$(SCRIPTS:.py=.wav)) +BOOMWHACKERS=boomwhackers-8.json + +.PRECIOUS: $(EXESPECTEX) + +all: waves pdf + +waves: $(WAVES) + +pdf: $(EXESPECPDF) + +tex: $(EXESPECTEX) + +$(EXERCICESDIR)/%.pdf: $(EXERCICESDIR)/%.tex + cd $(EXERCICESDIR); pdflatex $(<:$(EXERCICESDIR)/%=%); cd .. + +$(EXERCICESDIR)/ex-spec-%.tex: %.py + python $< --exercice-spectrogramme --boomwhackers=$(BOOMWHACKERS) + +$(SONS)/%.wav: %.py + python $< + +cleantex: + rm -f $(EXESPECTEX) + +clean: cleantex + rm -f $(EXESPECPDF) $(WAVES) diff --git a/bellaciao.py b/bellaciao.py index 1f1d03c..e086084 100644 --- a/bellaciao.py +++ b/bellaciao.py @@ -12,12 +12,16 @@ from musique.gamme import GammeTemperee parser = argparse.ArgumentParser(description='Génère des documents à partir de la partition de Bella Ciao.') parser.add_argument('--exercice-spectrogramme', help="Génère un exercice plutôt que le fichier son", dest='exerciceSpectrogramme', action='store_true',default=False) +parser.add_argument('--boomwhackers', help="Génère un exercice plutôt que le fichier son", dest='boomwhackers', nargs=1) args = parser.parse_args() gamme = GammeTemperee(100) - +boomwhackers = "" +if not args.boomwhackers is None: + boomwhackers = args.boomwhackers[0] + bellaciao = [ [ [gamme.mi(4), gamme.croche], [gamme.la(4), gamme.croche], [gamme.si(4), gamme.croche], @@ -74,6 +78,7 @@ bellaciao = [ [ [gamme.mi(4), gamme.croche], if args.exerciceSpectrogramme: g = GenerateurExercice(gamme.bpm) + g.setBoomwhackers(boomwhackers) g.genererExerciceSpectrogramme(bellaciao, "exercices/ex-spec-bellaciao.tex", "thème \"Bella Ciao\"") else: print "Génération de la version \"piano\"" diff --git a/crescendo.py b/crescendo.py index 5932513..97c7f9b 100644 --- a/crescendo.py +++ b/crescendo.py @@ -15,11 +15,15 @@ parser = argparse.ArgumentParser(description='Génère des documents à \ parser.add_argument('--exercice-spectrogramme', help="Génère un exercice \ plutôt que le fichier son", dest='exerciceSpectrogramme', action='store_true',default=False) +parser.add_argument('--boomwhackers', help="Génère un exercice plutôt que le fichier son", dest='boomwhackers', nargs=1) args = parser.parse_args() gamme = GammeTemperee(117) +boomwhackers = "" +if not args.boomwhackers is None: + boomwhackers = args.boomwhackers[0] crescendo = [ [ [gamme.do(3), gamme.noire], [gamme.re(3), gamme.noire], @@ -33,6 +37,7 @@ crescendo = [ [ [gamme.do(3), gamme.noire], if args.exerciceSpectrogramme: g = GenerateurExercice(gamme.bpm) + g.setBoomwhackers(boomwhackers) g.genererExerciceSpectrogramme(crescendo, "exercices/ex-spec-crescendo.tex", "Crescendo") diff --git a/cucaracha.py b/cucaracha.py index f7464f7..c1d69b7 100644 --- a/cucaracha.py +++ b/cucaracha.py @@ -12,12 +12,17 @@ from musique.gamme import GammeTemperee parser = argparse.ArgumentParser(description='Génère des documents à partir de la partition de la cucaracha.') parser.add_argument('--exercice-spectrogramme', help="Génère un exercice plutôt que le fichier son", dest='exerciceSpectrogramme', action='store_true',default=False) +parser.add_argument('--boomwhackers', help="Génère un exercice plutôt que le fichier son", dest='boomwhackers', nargs=1) args = parser.parse_args() gamme = GammeTemperee(160) +boomwhackers = "" +if not args.boomwhackers is None: + boomwhackers = args.boomwhackers[0] + cucaracha = [ [ [gamme.re(4), gamme.noire], [gamme.re(4), gamme.noire], [gamme.re(4), gamme.noire], @@ -57,6 +62,7 @@ cucaracha = [ [ [gamme.re(4), gamme.noire], if args.exerciceSpectrogramme: g = GenerateurExercice(gamme.bpm) + g.setBoomwhackers(boomwhackers) g.genererExerciceSpectrogramme(cucaracha, "exercices/ex-spec-cucaracha.tex", "thème \"la cucaracha\"") else: print "Génération de la version \"piano\"" diff --git a/elise.py b/elise.py index 046e3b8..1ae3bc0 100755 --- a/elise.py +++ b/elise.py @@ -1,703 +1,708 @@ -#!/usr/bin/env python -# coding: utf8 - -import argparse -from musique.basicsynth import BasicSequenceur -from musique.exercice import GenerateurExercice -from musique.gamme import GammeTemperee - -parser = argparse.ArgumentParser(description='Génère des documents à partir de la partition de "la lettre à Élise".') -parser.add_argument('--exercice-spectrogramme', help="Génère un exercice plutôt que le fichier son", dest='exerciceSpectrogramme', action='store_true',default=False) - -args = parser.parse_args() - -gamme = GammeTemperee(95) - - - - -elise = [ - [ [gamme.mi(3), gamme.doublecroche], - [gamme.red(3), gamme.doublecroche], - [gamme.mi(3), gamme.doublecroche], - [gamme.red(3), gamme.doublecroche], - [gamme.mi(3), gamme.doublecroche], - [gamme.si(2), gamme.doublecroche], - [gamme.re(3), gamme.doublecroche], - [gamme.do(3), gamme.doublecroche], - [gamme.la(2), gamme.croche], - [gamme.silence(), gamme.doublecroche], - [gamme.do(2), gamme.doublecroche], - [gamme.mi(2), gamme.doublecroche], - [gamme.la(2), gamme.doublecroche], - [gamme.si(2), gamme.croche], - [gamme.silence(), gamme.doublecroche], - [gamme.mi(2), gamme.doublecroche], - [gamme.sold(2), gamme.doublecroche], - [gamme.si(2), gamme.doublecroche], - [gamme.do(3), gamme.croche], - [gamme.silence(), gamme.doublecroche], - [gamme.mi(2), gamme.doublecroche], - [gamme.mi(3), gamme.doublecroche], - [gamme.red(3), gamme.doublecroche], - [gamme.mi(3), gamme.doublecroche], - [gamme.red(3), gamme.doublecroche], - [gamme.mi(3), gamme.doublecroche], - [gamme.si(2), gamme.doublecroche], - [gamme.re(3), gamme.doublecroche], - [gamme.do(3), gamme.doublecroche], - [gamme.la(2), gamme.croche], - [gamme.silence(), gamme.doublecroche], - [gamme.do(2), gamme.doublecroche], - [gamme.mi(2), gamme.doublecroche], - [gamme.la(2), gamme.doublecroche], - [gamme.si(2), gamme.croche], - [gamme.silence(), gamme.doublecroche], - [gamme.mi(2), gamme.doublecroche], - [gamme.do(3), gamme.doublecroche], - [gamme.si(2), gamme.doublecroche], - [gamme.la(2), gamme.croche], - [gamme.silence(), gamme.doublecroche], - [gamme.si(2), gamme.doublecroche], - [gamme.do(3), gamme.doublecroche], - [gamme.re(3), gamme.doublecroche], - [gamme.mi(3), gamme.crochepointee], - [gamme.sol(2), gamme.doublecroche], - [gamme.fa(3), gamme.doublecroche], - [gamme.mi(3), gamme.doublecroche], - [gamme.re(3), gamme.crochepointee], - [gamme.fa(2), gamme.doublecroche], - [gamme.mi(3), gamme.doublecroche], - [gamme.re(3), gamme.doublecroche], - [gamme.do(3), gamme.crochepointee], - [gamme.mi(2), gamme.doublecroche], - [gamme.re(3), gamme.doublecroche], - [gamme.do(3), gamme.doublecroche], - [gamme.si(2), gamme.croche], - #[gamme.silence(), gamme.doublecroche], - #[gamme.mi(2), gamme.doublecroche], - #[gamme.mi(3), gamme.doublecroche], - #[gamme.silence(), gamme.croche], - #[gamme.mi(3), gamme.doublecroche], - #[gamme.mi(4), gamme.doublecroche], - #[gamme.silence(), gamme.croche], - #[gamme.red(3), gamme.doublecroche], - #[gamme.mi(3), gamme.doublecroche], - #[gamme.silence(), gamme.doublecroche], - #[gamme.red(3), gamme.doublecroche], - #[gamme.mi(3), gamme.doublecroche], - #[gamme.red(3), gamme.doublecroche], - #[gamme.mi(3), gamme.doublecroche], - #[gamme.red(3), gamme.doublecroche], - #[gamme.mi(3), gamme.doublecroche], - #[gamme.si(2), gamme.doublecroche], - #[gamme.re(3), gamme.doublecroche], - #[gamme.do(3), gamme.doublecroche], - #[gamme.la(2), gamme.croche], - #[gamme.silence(), gamme.doublecroche], - #[gamme.do(2), gamme.doublecroche], - #[gamme.mi(2), gamme.doublecroche], - #[gamme.la(2), gamme.doublecroche], - #[gamme.si(2), gamme.croche], - #[gamme.silence(), gamme.doublecroche], - #[gamme.mi(2), gamme.doublecroche], - #[gamme.sold(2), gamme.doublecroche], - #[gamme.si(2), gamme.doublecroche], - #[gamme.do(3), gamme.croche], - #[gamme.silence(), gamme.doublecroche], - #[gamme.mi(2), gamme.doublecroche], - #[gamme.mi(3), gamme.doublecroche], - #[gamme.red(3), gamme.doublecroche], - #[gamme.mi(3), gamme.doublecroche], - #[gamme.red(3), gamme.doublecroche], - #[gamme.mi(3), gamme.doublecroche], - #[gamme.si(2), gamme.doublecroche], - #[gamme.re(3), gamme.doublecroche], - #[gamme.do(3), gamme.doublecroche], - #[gamme.la(2), gamme.doublecroche], - #[gamme.silence(), gamme.doublecroche], - #[gamme.do(2), gamme.doublecroche], - #[gamme.mi(2), gamme.doublecroche], - #[gamme.la(2), gamme.doublecroche], - #[gamme.si(2), gamme.croche], - #[gamme.silence(), gamme.doublecroche], - #[gamme.mi(2), gamme.doublecroche], - #[gamme.do(3), gamme.doublecroche], - #[gamme.si(2), gamme.doublecroche], - #[gamme.la(2), gamme.croche], - #[[gamme.mi(2), gamme.do(3)],gamme.doublecroche], - #[[gamme.fa(2), gamme.do(3)], gamme.doublecroche], - #[[gamme.mi(2), gamme.sol(2), gamme.do(3)], gamme.doublecroche], - #[gamme.fa(2), gamme.doublecroche], - #[gamme.la(2), gamme.doublecroche], - #[gamme.do(3), gamme.doublecroche], - #[gamme.fa(3), gamme.doublecrochepointee], - #[gamme.mi(3), gamme.triplecroche], - #[gamme.mi(3), gamme.croche], - #[gamme.re(3), gamme.croche], - #[gamme.sib(3), gamme.doublecrochepointee], - #[gamme.la(3), gamme.triplecroche], - #[gamme.la(3), gamme.doublecroche], - #[gamme.sol(3), gamme.doublecroche], - #[gamme.fa(3), gamme.doublecroche], - #[gamme.mi(3), gamme.doublecroche], - #[gamme.re(3), gamme.doublecroche], - #[gamme.do(3), gamme.doublecroche], - #[gamme.sib(2), gamme.croche], - #[gamme.la(2), gamme.croche], - #[gamme.si(2), gamme.doublecroche], - #[gamme.la(2), gamme.doublecroche], - #[gamme.sol(2), gamme.doublecroche], - #[gamme.la(2), gamme.doublecroche], - #[gamme.si(2), gamme.doublecroche], - #[gamme.do(3), gamme.noire], - #[gamme.re(3), gamme.doublecroche], - #[gamme.red(3), gamme.doublecroche], - #[gamme.mi(3), gamme.crochepointee], - #[gamme.mi(3), gamme.doublecroche], - #[gamme.fa(3), gamme.doublecroche], - #[gamme.la(2), gamme.doublecroche], - #[gamme.do(3), gamme.noire], - #[gamme.re(3), gamme.doublecrochepointee], - #[gamme.si(2), gamme.triplecroche], - #[gamme.do(3), gamme.triplecroche], - #[gamme.sol(3), gamme.triplecroche], - #[gamme.sol(2), gamme.triplecroche], - #[gamme.sol(3), gamme.triplecroche], - #[gamme.la(2), gamme.triplecroche], - #[gamme.sol(3), gamme.triplecroche], - #[gamme.si(3), gamme.triplecroche], - #[gamme.sol(3), gamme.triplecroche], - #[gamme.do(3), gamme.triplecroche], - #[gamme.sol(3), gamme.triplecroche], - #[gamme.re(3), gamme.triplecroche], - #[gamme.sol(3), gamme.triplecroche], - #[gamme.mi(3), gamme.triplecroche], - #[gamme.sol(3), gamme.triplecroche], - #[gamme.do(4), gamme.triplecroche], - #[gamme.si(3), gamme.triplecroche], - #[gamme.la(3), gamme.triplecroche], - #[gamme.sol(3), gamme.triplecroche], - #[gamme.fa(3), gamme.triplecroche], - #[gamme.mi(3), gamme.triplecroche], - #[gamme.re(3), gamme.triplecroche], - #[gamme.sol(3), gamme.triplecroche], - #[gamme.fa(3), gamme.triplecroche], - #[gamme.re(3), gamme.triplecroche], - #[gamme.do(3), gamme.triplecroche], - #[gamme.sol(3), gamme.triplecroche], - #[gamme.sol(2), gamme.triplecroche], - #[gamme.sol(3), gamme.triplecroche], - #[gamme.la(2), gamme.triplecroche], - #[gamme.sol(3), gamme.triplecroche], - #[gamme.si(3), gamme.triplecroche], - #[gamme.sol(3), gamme.triplecroche], - #[gamme.do(3), gamme.triplecroche], - #[gamme.sol(3), gamme.triplecroche], - #[gamme.re(3), gamme.triplecroche], - #[gamme.sol(3), gamme.triplecroche], - #[gamme.mi(3), gamme.triplecroche], - #[gamme.sol(3), gamme.triplecroche], - #[gamme.do(4), gamme.triplecroche], - #[gamme.si(3), gamme.triplecroche], - #[gamme.la(3), gamme.triplecroche], - #[gamme.sol(3), gamme.triplecroche], - #[gamme.fa(3), gamme.triplecroche], - #[gamme.mi(3), gamme.triplecroche], - #[gamme.re(3), gamme.triplecroche], - #[gamme.sol(3), gamme.triplecroche], - #[gamme.fa(3), gamme.triplecroche], - #[gamme.re(3), gamme.triplecroche], - #[gamme.mi(3), gamme.triplecroche], - #[gamme.fa(3), gamme.triplecroche], - #[gamme.mi(3), gamme.triplecroche], - #[gamme.red(3), gamme.triplecroche], - #[gamme.mi(3), gamme.triplecroche], - #[gamme.si(2), gamme.triplecroche], - #[gamme.mi(3), gamme.triplecroche], - #[gamme.re(3), gamme.triplecroche], - #[gamme.mi(3), gamme.triplecroche], - #[gamme.si(2), gamme.triplecroche], - #[gamme.mi(3), gamme.triplecroche], - #[gamme.re(3), gamme.triplecroche], - #[gamme.mi(3), gamme.crochepointee], - #[gamme.si(2), gamme.doublecroche], - #[gamme.mi(3), gamme.doublecroche], - #[gamme.red(3), gamme.doublecroche], - #[gamme.mi(3), gamme.crochepointee], - #[gamme.si(2), gamme.doublecroche], - #[gamme.mi(3), gamme.doublecroche], - #[gamme.red(3), gamme.doublecroche], - #[gamme.mi(3), gamme.doublecroche], - #[gamme.red(3), gamme.doublecroche], - #[gamme.mi(3), gamme.doublecroche], - #[gamme.red(3), gamme.doublecroche], - #[gamme.mi(3), gamme.doublecroche], - #[gamme.red(3), gamme.doublecroche], - #[gamme.mi(3), gamme.doublecroche], - #[gamme.red(3), gamme.doublecroche], - #[gamme.mi(3), gamme.doublecroche], - #[gamme.red(3), gamme.doublecroche], - #[gamme.mi(3), gamme.doublecroche], - #[gamme.si(2), gamme.doublecroche], - #[gamme.re(3), gamme.doublecroche], - #[gamme.do(3), gamme.doublecroche], - #[gamme.la(2), gamme.croche], - #[gamme.silence(), gamme.doublecroche] - ]#, - #[gamme.demiSoupir(), - #gamme.pause(), - #[gamme.la(0),gamme.doublecroche], - #[gamme.mi(1), gamme.doublecroche], - #[gamme.la(1), gamme.doublecroche], - #gamme.quartDeSoupir(), - #gamme.demiSoupir(), - #[gamme.mi(0), gamme.doublecroche], - #[gamme.mi(1), gamme.doublecroche], - #[gamme.sold(1), gamme.doublecroche], - #gamme.quartDeSoupir(), - #gamme.demiSoupir(), - #[gamme.la(0),gamme.doublecroche], - #[gamme.mi(1), gamme.doublecroche], - #[gamme.la(1), gamme.doublecroche], - #gamme.quartDeSoupir(), - #gamme.demiSoupir(), - #gamme.pause(), - #[gamme.la(0),gamme.doublecroche], - #[gamme.mi(1), gamme.doublecroche], - #[gamme.la(1), gamme.doublecroche], - #gamme.quartDeSoupir(), - #gamme.demiSoupir(), - #[gamme.mi(0), gamme.doublecroche], - #[gamme.mi(1), gamme.doublecroche], - #[gamme.sold(1), gamme.doublecroche], - #gamme.quartDeSoupir(), - #gamme.demiSoupir(), - #[gamme.do(1), gamme.doublecroche], - #[gamme.sol(1), gamme.doublecroche], - #[gamme.do(2), gamme.doublecroche], - #gamme.quartDeSoupir(), - #gamme.demiSoupir(), - #[gamme.sol(0), gamme.doublecroche], - #[gamme.sol(1), gamme.doublecroche], - #[gamme.si(1), gamme.doublecroche], - #gamme.quartDeSoupir(), - #gamme.demiSoupir(), - #[gamme.la(0), gamme.doublecroche], - #[gamme.mi(1), gamme.doublecroche], - #[gamme.la(1), gamme.doublecroche], - #gamme.quartDeSoupir(), - #gamme.demiSoupir(), - #[gamme.mi(0), gamme.doublecroche], - #[gamme.mi(1), gamme.doublecroche], - #[gamme.mi(2), gamme.doublecroche], - #gamme.quartDeSoupir(), - #gamme.quartDeSoupir(), - #[gamme.mi(2), gamme.doublecroche], - #[gamme.mi(3), gamme.doublecroche], - #gamme.quartDeSoupir(), - #gamme.quartDeSoupir(), - #[gamme.red(3), gamme.doublecroche], - #[gamme.mi(3), gamme.doublecroche], - #gamme.quartDeSoupir(), - #gamme.quartDeSoupir(), - #[gamme.red(3), gamme.doublecroche], - #[gamme.mi(3), gamme.doublecroche], - #gamme.quartDeSoupir(), - #gamme.demiSoupir(), - #gamme.pause(), - #[gamme.la(0),gamme.doublecroche], - #[gamme.mi(1), gamme.doublecroche], - #[gamme.la(1), gamme.doublecroche], - #gamme.quartDeSoupir(), - #gamme.demiSoupir(), - #[gamme.mi(0), gamme.doublecroche], - #[gamme.mi(1), gamme.doublecroche], - #[gamme.sold(1), gamme.doublecroche], - #gamme.quartDeSoupir(), - #gamme.demiSoupir(), - #[gamme.la(0),gamme.doublecroche], - #[gamme.mi(1), gamme.doublecroche], - #[gamme.la(1), gamme.doublecroche], - #gamme.quartDeSoupir(), - #gamme.demiSoupir(), - #gamme.pause(), - #[gamme.la(0),gamme.doublecroche], - #[gamme.mi(1), gamme.doublecroche], - #[gamme.la(1), gamme.doublecroche], - #gamme.quartDeSoupir(), - #gamme.demiSoupir(), - #[gamme.mi(0), gamme.doublecroche], - #[gamme.mi(1), gamme.doublecroche], - #[gamme.sold(1), gamme.doublecroche], - #gamme.quartDeSoupir(), - #gamme.demiSoupir(), - #[gamme.la(0),gamme.doublecroche], - #[gamme.mi(1),gamme.doublecroche], - #[gamme.la(1),gamme.doublecroche], - #[[gamme.sib(1),gamme.do(2)],gamme.doublecroche], - #[[gamme.la(1),gamme.do(2)],gamme.doublecroche], - #[[gamme.sol(1),gamme.sib(1),gamme.do(2)],gamme.doublecroche], - #[gamme.fa(1), gamme.doublecroche], - #[gamme.la(1), gamme.doublecroche], - #[gamme.do(2), gamme.doublecroche], - #[gamme.la(1), gamme.doublecroche], - #[gamme.do(2), gamme.doublecroche], - #[gamme.la(1), gamme.doublecroche], - #[gamme.fa(1), gamme.doublecroche], - #[gamme.sib(1), gamme.doublecroche], - #[gamme.re(2), gamme.doublecroche], - #[gamme.sib(1), gamme.doublecroche], - #[gamme.re(2), gamme.doublecroche], - #[gamme.sib(1), gamme.doublecroche], - #[gamme.fa(1), gamme.doublecroche], - #[gamme.mi(2), gamme.doublecroche], - #[[gamme.fa(1),gamme.sol(1),gamme.sib(1)], gamme.doublecroche], - #[gamme.mi(2), gamme.doublecroche], - #[[gamme.fa(1),gamme.sol(1),gamme.sib(1)], gamme.doublecroche], - #[gamme.mi(2), gamme.doublecroche], - #[gamme.fa(1), gamme.doublecroche], - #[gamme.la(1), gamme.doublecroche], - #[gamme.do(2), gamme.doublecroche], - #[gamme.la(1), gamme.doublecroche], - #[gamme.do(2), gamme.doublecroche], - #[gamme.la(1), gamme.doublecroche], - #[gamme.fa(1), gamme.doublecroche], - #[gamme.la(1), gamme.doublecroche], - #[gamme.do(2), gamme.doublecroche], - #[gamme.la(1), gamme.doublecroche], - #[gamme.do(2), gamme.doublecroche], - #[gamme.la(1), gamme.doublecroche], - #[gamme.mi(1), gamme.doublecroche], - #[gamme.la(1), gamme.doublecroche], - #[gamme.do(2), gamme.doublecroche], - #[gamme.la(1), gamme.doublecroche], - #[[gamme.re(1), gamme.re(2)], gamme.doublecroche], - #[gamme.fa(1), gamme.doublecroche], - #[gamme.sol(1), gamme.doublecroche], - #[gamme.mi(2), gamme.doublecroche], - #[gamme.sol(1), gamme.doublecroche], - #[gamme.mi(2), gamme.doublecroche], - #[gamme.sol(1), gamme.doublecroche], - #[gamme.fa(2), gamme.doublecroche], - #[[gamme.do(2), gamme.mi(2)], gamme.croche], - #gamme.quartDeSoupir(), - #[[gamme.fa(2), gamme.sol(2)], gamme.doublecroche], - #[[gamme.sol(2), gamme.mi(2)], gamme.doublecroche], - #[[gamme.re(2), gamme.fa(2), gamme.sol(2)], gamme.doublecroche], - #[[gamme.do(2), gamme.mi(2), gamme.sol(2)], gamme.croche], - #[[gamme.fa(1), gamme.la(1)], gamme.croche], - #[[gamme.sol(1), gamme.si(1)], gamme.croche], - #[gamme.do(2), gamme.croche], - #gamme.quartDeSoupir(), - #[[gamme.fa(2), gamme.sol(2)], gamme.doublecroche], - #[[gamme.sol(2), gamme.mi(2)], gamme.doublecroche], - #[[gamme.re(2), gamme.fa(2), gamme.sol(2)], gamme.doublecroche], - #[[gamme.do(2), gamme.mi(2), gamme.sol(2)], gamme.croche], - #[[gamme.fa(1), gamme.la(1)], gamme.croche], - #[[gamme.sol(1), gamme.si(1)], gamme.croche], - #[[gamme.sold(1), gamme.si(1)], gamme.croche], - #gamme.soupir(), - #gamme.pause(), - #gamme.pause(), - #gamme.pause(), - #gamme.pause(), - #[gamme.la(0),gamme.doublecroche], - #[gamme.mi(1), gamme.doublecroche], - #[gamme.la(1), gamme.doublecroche], - #gamme.quartDeSoupir(), - #gamme.demiSoupir(), - #[gamme.mi(0), gamme.doublecroche], - #[gamme.mi(1), gamme.doublecroche], - #[gamme.sold(1), gamme.doublecroche], - #gamme.quartDeSoupir(), - #gamme.demiSoupir(), - #[gamme.la(0),gamme.doublecroche], - #[gamme.mi(1), gamme.doublecroche], - #[gamme.la(1), gamme.doublecroche], - #gamme.quartDeSoupir(), - #gamme.demiSoupir(), - #gamme.pause(), - #[gamme.la(0),gamme.doublecroche], - #[gamme.mi(1), gamme.doublecroche], - #[gamme.la(1), gamme.doublecroche], - #gamme.quartDeSoupir(), - #gamme.demiSoupir(), - #[gamme.mi(0), gamme.doublecroche], - #[gamme.mi(1), gamme.doublecroche], - #[gamme.sold(1), gamme.doublecroche], - #gamme.quartDeSoupir(), - #gamme.demiSoupir(), - #[gamme.la(0),gamme.doublecroche], - #[gamme.mi(1), gamme.doublecroche], - #[gamme.la(1), gamme.doublecroche], - #gamme.quartDeSoupir(), - #gamme.demiSoupir(), - #[gamme.do(1),gamme.doublecroche], - #[gamme.sol(1), gamme.doublecroche], - #[gamme.do(2), gamme.doublecroche], - #gamme.quartDeSoupir(), - #gamme.demiSoupir(), - #[gamme.sol(0),gamme.doublecroche], - #[gamme.sol(1), gamme.doublecroche], - #[gamme.si(1), gamme.doublecroche], - #gamme.quartDeSoupir(), - #gamme.demiSoupir(), - #[gamme.la(0),gamme.doublecroche], - #[gamme.mi(1), gamme.doublecroche], - #[gamme.la(1), gamme.doublecroche], - #gamme.quartDeSoupir(), - #gamme.demiSoupir(), - #[gamme.mi(0), gamme.doublecroche], - #[gamme.mi(1), gamme.doublecroche], - #[gamme.mi(2), gamme.doublecroche], - #gamme.demiSoupir(), - #[gamme.mi(2), gamme.doublecroche], - #[gamme.mi(3), gamme.doublecroche], - #gamme.demiSoupir(), - #[gamme.red(3), gamme.doublecroche], - #[gamme.mi(3), gamme.doublecroche], - #gamme.demiSoupir(), - #[gamme.red(3), gamme.doublecroche], - #[gamme.mi(3), gamme.doublecroche], - #gamme.quartDeSoupir(), - #gamme.demiSoupir(), - #gamme.pause(), - #[gamme.la(0),gamme.doublecroche], - #[gamme.mi(1), gamme.doublecroche], - #[gamme.la(1), gamme.doublecroche], - #gamme.quartDeSoupir(), - #gamme.demiSoupir(), - #[gamme.mi(0), gamme.doublecroche], - #[gamme.mi(1), gamme.doublecroche], - #[gamme.sold(1), gamme.doublecroche], - #gamme.quartDeSoupir(), - #gamme.demiSoupir(), - #[gamme.la(0),gamme.doublecroche], - #[gamme.mi(1), gamme.doublecroche], - #[gamme.la(1), gamme.doublecroche], - #gamme.quartDeSoupir(), - #gamme.demiSoupir(), - #gamme.pause(), - #[gamme.la(0),gamme.doublecroche], - #[gamme.mi(1), gamme.doublecroche], - #[gamme.la(1), gamme.doublecroche], - #gamme.quartDeSoupir(), - #gamme.demiSoupir(), - #[gamme.mi(0), gamme.doublecroche], - #[gamme.mi(1), gamme.doublecroche], - #[gamme.sold(1), gamme.doublecroche], - #gamme.quartDeSoupir(), - #gamme.demiSoupir(), - #[gamme.la(0), gamme.doublecroche], - #[gamme.la(0), gamme.doublecroche], - #[gamme.la(0), gamme.doublecroche], - #[gamme.la(0), gamme.doublecroche], - #[gamme.la(0), gamme.doublecroche], - #[gamme.la(0), gamme.doublecroche], - #[gamme.la(0), gamme.doublecroche], - #[gamme.la(0), gamme.doublecroche], - #[gamme.la(0), gamme.doublecroche], - #[gamme.la(0), gamme.doublecroche], - #[gamme.la(0), gamme.doublecroche], - #[gamme.la(0), gamme.doublecroche], - - #[gamme.la(0), gamme.doublecroche], - #[gamme.la(0), gamme.doublecroche], - #[gamme.la(0), gamme.doublecroche], - #[gamme.la(0), gamme.doublecroche], - #[gamme.la(0), gamme.doublecroche], - #[gamme.la(0), gamme.doublecroche], - - #[gamme.la(0), gamme.doublecroche], - #[gamme.la(0), gamme.doublecroche], - #[gamme.la(0), gamme.doublecroche], - #[gamme.la(0), gamme.doublecroche], - #[gamme.la(0), gamme.doublecroche], - #[gamme.la(0), gamme.doublecroche], - - #[gamme.la(0), gamme.doublecroche], - #[gamme.la(0), gamme.doublecroche], - #[gamme.la(0), gamme.doublecroche], - #[gamme.la(0), gamme.doublecroche], - #[gamme.la(0), gamme.doublecroche], - #[gamme.la(0), gamme.doublecroche], - #[[gamme.re(0), gamme.la(0)], gamme.doublecroche], - #[[gamme.re(0), gamme.la(0)], gamme.doublecroche], - #[[gamme.re(0), gamme.la(0)], gamme.doublecroche], - #[[gamme.re(0), gamme.la(0)], gamme.doublecroche], - #[[gamme.re(0), gamme.la(0)], gamme.doublecroche], - #[[gamme.re(0), gamme.la(0)], gamme.doublecroche], - #[[gamme.red(0), gamme.la(0)], gamme.doublecroche], - #[[gamme.red(0), gamme.la(0)], gamme.doublecroche], - #[[gamme.red(0), gamme.la(0)], gamme.doublecroche], - #[[gamme.red(0), gamme.la(0)], gamme.doublecroche], - #[[gamme.red(0), gamme.la(0)], gamme.doublecroche], - #[[gamme.red(0), gamme.la(0)], gamme.doublecroche], - #[[gamme.mi(0), gamme.la(0)], gamme.doublecroche], - #[[gamme.mi(0), gamme.la(0)], gamme.doublecroche], - #[[gamme.mi(0), gamme.la(0)], gamme.doublecroche], - #[[gamme.mi(0), gamme.la(0)], gamme.doublecroche], - #[[gamme.mi(0), gamme.fad(0)], gamme.doublecroche], - #[[gamme.mi(0), gamme.fad(0)], gamme.doublecroche], - #[gamme.la(0), gamme.doublecroche], - #[gamme.la(0), gamme.doublecroche], - #[gamme.la(0), gamme.doublecroche], - #[gamme.la(0), gamme.doublecroche], - #[gamme.la(0), gamme.doublecroche], - #[gamme.la(0), gamme.doublecroche], - #[gamme.la(0), gamme.doublecroche], - #[gamme.la(0), gamme.doublecroche], - #[gamme.la(0), gamme.doublecroche], - #[gamme.la(0), gamme.doublecroche], - #[gamme.la(0), gamme.doublecroche], - #[gamme.la(0), gamme.doublecroche], - #[gamme.la(0), gamme.doublecroche], - #[gamme.la(0), gamme.doublecroche], - #[gamme.la(0), gamme.doublecroche], - #[gamme.la(0), gamme.doublecroche], - #[gamme.la(0), gamme.doublecroche], - #[gamme.la(0), gamme.doublecroche], - #[gamme.la(0), gamme.doublecroche], - #[gamme.la(0), gamme.doublecroche], - #[gamme.la(0), gamme.doublecroche], - #[gamme.la(0), gamme.doublecroche], - #[gamme.la(0), gamme.doublecroche], - #[gamme.la(0), gamme.doublecroche], - #[gamme.sib(0), gamme.doublecroche], - #[gamme.sib(0), gamme.doublecroche], - #[gamme.sib(0), gamme.doublecroche], - #[gamme.sib(0), gamme.doublecroche], - #[gamme.sib(0), gamme.doublecroche], - #[gamme.sib(0), gamme.doublecroche], - #[gamme.sib(0), gamme.doublecroche], - #[gamme.sib(0), gamme.doublecroche], - #[gamme.sib(0), gamme.doublecroche], - #[gamme.sib(0), gamme.doublecroche], - #[gamme.sib(0), gamme.doublecroche], - #[gamme.sib(0), gamme.doublecroche], - #[gamme.si(0), gamme.doublecroche], - #[gamme.si(0), gamme.doublecroche], - #[gamme.si(0), gamme.doublecroche], - #[gamme.si(0), gamme.doublecroche], - #[gamme.si(0), gamme.doublecroche], - #[gamme.si(0), gamme.doublecroche], - #[gamme.do(1), gamme.noire], - #gamme.soupir(), - #[[gamme.mi(1), gamme.sold(1)], gamme.croche], - #gamme.soupir(), - #gamme.soupir(), - #[gamme.la(0), gamme.croche], - #gamme.soupir(), - #[[gamme.la(1), gamme.do(2), gamme.mi(2)], gamme.croche], - #[[gamme.la(1), gamme.do(2), gamme.mi(2)], gamme.croche], - #gamme.soupir(), - #[[gamme.la(1), gamme.do(2), gamme.mi(2)], gamme.croche], - #[[gamme.la(1), gamme.do(2), gamme.mi(2)], gamme.croche], - #gamme.soupir(), - #[[gamme.la(1), gamme.do(2), gamme.mi(2)], gamme.croche], - #[[gamme.la(1), gamme.do(2), gamme.mi(2)], gamme.croche], - #gamme.soupir(), - #gamme.soupir(), - #gamme.pause(), - #gamme.pause(), - #[gamme.la(0),gamme.doublecroche], - #[gamme.mi(1), gamme.doublecroche], - #[gamme.la(1), gamme.doublecroche], - #gamme.quartDeSoupir(), - #gamme.demiSoupir(), - #[gamme.mi(0), gamme.doublecroche], - #[gamme.mi(1), gamme.doublecroche], - #[gamme.sold(1), gamme.doublecroche], - #gamme.quartDeSoupir(), - #gamme.demiSoupir(), - #[gamme.la(0), gamme.doublecroche], - #[gamme.mi(1), gamme.doublecroche], - #[gamme.la(1), gamme.doublecroche], - #gamme.quartDeSoupir(), - #gamme.demiSoupir(), - #gamme.pause(), - #[gamme.la(0), gamme.doublecroche], - #[gamme.mi(1), gamme.doublecroche], - #[gamme.la(1), gamme.doublecroche], - #gamme.quartDeSoupir(), - #gamme.demiSoupir(), - #[gamme.mi(0), gamme.doublecroche], - #[gamme.mi(1), gamme.doublecroche], - #[gamme.sold(1), gamme.doublecroche], - #gamme.quartDeSoupir(), - #gamme.demiSoupir(), - #[gamme.la(0), gamme.doublecroche], - #[gamme.mi(1), gamme.doublecroche], - #[gamme.la(1), gamme.doublecroche], - #gamme.quartDeSoupir(), - #gamme.demiSoupir(), - #[gamme.do(1), gamme.doublecroche], - #[gamme.sol(1), gamme.doublecroche], - #[gamme.do(2), gamme.doublecroche], - #gamme.quartDeSoupir(), - #gamme.demiSoupir(), - #[gamme.fa(0), gamme.doublecroche], - #[gamme.sol(1), gamme.doublecroche], - #[gamme.si(1), gamme.doublecroche], - #gamme.quartDeSoupir(), - #gamme.demiSoupir(), - #[gamme.la(0),gamme.doublecroche], - #[gamme.mi(1), gamme.doublecroche], - #[gamme.la(1), gamme.doublecroche], - #gamme.quartDeSoupir(), - #gamme.demiSoupir(), - #[gamme.mi(0),gamme.doublecroche], - #[gamme.mi(1), gamme.doublecroche], - #[gamme.mi(2), gamme.doublecroche], - #gamme.quartDeSoupir(), - #gamme.demiSoupir(), - #[gamme.mi(2), gamme.doublecroche], - #[gamme.mi(3), gamme.doublecroche], - #gamme.quartDeSoupir(), - #gamme.demiSoupir(), - #[gamme.red(3), gamme.doublecroche], - #[gamme.mi(3), gamme.doublecroche], - #gamme.quartDeSoupir(), - #gamme.demiSoupir(), - #[gamme.red(3), gamme.doublecroche], - #[gamme.mi(3), gamme.doublecroche], - #gamme.quartDeSoupir(), - #gamme.demiSoupir(), - #gamme.pause(), - #[gamme.la(0),gamme.doublecroche], - #[gamme.mi(1), gamme.doublecroche], - #[gamme.la(1), gamme.doublecroche], - #gamme.quartDeSoupir(), - #gamme.demiSoupir(), - #[gamme.mi(0), gamme.doublecroche], - #[gamme.mi(1), gamme.doublecroche], - #[gamme.sold(1), gamme.doublecroche], - #gamme.quartDeSoupir(), - #gamme.demiSoupir(), - #[gamme.la(0),gamme.doublecroche], - #[gamme.mi(1), gamme.doublecroche], - #[gamme.la(1), gamme.doublecroche], - #gamme.quartDeSoupir(), - #gamme.demiSoupir(), - #gamme.pause(), - #[gamme.la(0),gamme.doublecroche], - #[gamme.mi(1), gamme.doublecroche], - #[gamme.la(1), gamme.doublecroche], - #gamme.quartDeSoupir(), - #gamme.demiSoupir(), - #[gamme.mi(0), gamme.doublecroche], - #[gamme.mi(1), gamme.doublecroche], - #[gamme.sold(1), gamme.doublecroche], - #gamme.quartDeSoupir(), - #gamme.demiSoupir(), - #[gamme.la(0), gamme.croche]] - ] - -if args.exerciceSpectrogramme: - g = GenerateurExercice(gamme.bpm) - g.genererExerciceSpectrogramme(elise, "exercices/ex-spec-elise.tex", "La lettre à Élise") -else: - print "Génération de la version \"piano\"" - s = BasicSequenceur(1, gamme.bpm, 3) - s.genererMelodie(elise, "sons/elise.wav") +#!/usr/bin/env python +# coding: utf8 + +import argparse +from musique.basicsynth import BasicSequenceur +from musique.exercice import GenerateurExercice +from musique.gamme import GammeTemperee + +parser = argparse.ArgumentParser(description='Génère des documents à partir de la partition de "la lettre à Élise".') +parser.add_argument('--exercice-spectrogramme', help="Génère un exercice plutôt que le fichier son", dest='exerciceSpectrogramme', action='store_true',default=False) +parser.add_argument('--boomwhackers', help="Génère un exercice plutôt que le fichier son", dest='boomwhackers', nargs=1) + +args = parser.parse_args() + +gamme = GammeTemperee(95) + + +boomwhackers = "" +if not args.boomwhackers is None: + boomwhackers = args.boomwhackers[0] + + +elise = [ + [ [gamme.mi(3), gamme.doublecroche], + [gamme.red(3), gamme.doublecroche], + [gamme.mi(3), gamme.doublecroche], + [gamme.red(3), gamme.doublecroche], + [gamme.mi(3), gamme.doublecroche], + [gamme.si(2), gamme.doublecroche], + [gamme.re(3), gamme.doublecroche], + [gamme.do(3), gamme.doublecroche], + [gamme.la(2), gamme.croche], + [gamme.silence(), gamme.doublecroche], + [gamme.do(2), gamme.doublecroche], + [gamme.mi(2), gamme.doublecroche], + [gamme.la(2), gamme.doublecroche], + [gamme.si(2), gamme.croche], + [gamme.silence(), gamme.doublecroche], + [gamme.mi(2), gamme.doublecroche], + [gamme.sold(2), gamme.doublecroche], + [gamme.si(2), gamme.doublecroche], + [gamme.do(3), gamme.croche], + [gamme.silence(), gamme.doublecroche], + [gamme.mi(2), gamme.doublecroche], + [gamme.mi(3), gamme.doublecroche], + [gamme.red(3), gamme.doublecroche], + [gamme.mi(3), gamme.doublecroche], + [gamme.red(3), gamme.doublecroche], + [gamme.mi(3), gamme.doublecroche], + [gamme.si(2), gamme.doublecroche], + [gamme.re(3), gamme.doublecroche], + [gamme.do(3), gamme.doublecroche], + [gamme.la(2), gamme.croche], + [gamme.silence(), gamme.doublecroche], + [gamme.do(2), gamme.doublecroche], + [gamme.mi(2), gamme.doublecroche], + [gamme.la(2), gamme.doublecroche], + [gamme.si(2), gamme.croche], + [gamme.silence(), gamme.doublecroche], + [gamme.mi(2), gamme.doublecroche], + [gamme.do(3), gamme.doublecroche], + [gamme.si(2), gamme.doublecroche], + [gamme.la(2), gamme.croche], + [gamme.silence(), gamme.doublecroche], + [gamme.si(2), gamme.doublecroche], + [gamme.do(3), gamme.doublecroche], + [gamme.re(3), gamme.doublecroche], + [gamme.mi(3), gamme.crochepointee], + [gamme.sol(2), gamme.doublecroche], + [gamme.fa(3), gamme.doublecroche], + [gamme.mi(3), gamme.doublecroche], + [gamme.re(3), gamme.crochepointee], + [gamme.fa(2), gamme.doublecroche], + [gamme.mi(3), gamme.doublecroche], + [gamme.re(3), gamme.doublecroche], + [gamme.do(3), gamme.crochepointee], + [gamme.mi(2), gamme.doublecroche], + [gamme.re(3), gamme.doublecroche], + [gamme.do(3), gamme.doublecroche], + [gamme.si(2), gamme.croche], + #[gamme.silence(), gamme.doublecroche], + #[gamme.mi(2), gamme.doublecroche], + #[gamme.mi(3), gamme.doublecroche], + #[gamme.silence(), gamme.croche], + #[gamme.mi(3), gamme.doublecroche], + #[gamme.mi(4), gamme.doublecroche], + #[gamme.silence(), gamme.croche], + #[gamme.red(3), gamme.doublecroche], + #[gamme.mi(3), gamme.doublecroche], + #[gamme.silence(), gamme.doublecroche], + #[gamme.red(3), gamme.doublecroche], + #[gamme.mi(3), gamme.doublecroche], + #[gamme.red(3), gamme.doublecroche], + #[gamme.mi(3), gamme.doublecroche], + #[gamme.red(3), gamme.doublecroche], + #[gamme.mi(3), gamme.doublecroche], + #[gamme.si(2), gamme.doublecroche], + #[gamme.re(3), gamme.doublecroche], + #[gamme.do(3), gamme.doublecroche], + #[gamme.la(2), gamme.croche], + #[gamme.silence(), gamme.doublecroche], + #[gamme.do(2), gamme.doublecroche], + #[gamme.mi(2), gamme.doublecroche], + #[gamme.la(2), gamme.doublecroche], + #[gamme.si(2), gamme.croche], + #[gamme.silence(), gamme.doublecroche], + #[gamme.mi(2), gamme.doublecroche], + #[gamme.sold(2), gamme.doublecroche], + #[gamme.si(2), gamme.doublecroche], + #[gamme.do(3), gamme.croche], + #[gamme.silence(), gamme.doublecroche], + #[gamme.mi(2), gamme.doublecroche], + #[gamme.mi(3), gamme.doublecroche], + #[gamme.red(3), gamme.doublecroche], + #[gamme.mi(3), gamme.doublecroche], + #[gamme.red(3), gamme.doublecroche], + #[gamme.mi(3), gamme.doublecroche], + #[gamme.si(2), gamme.doublecroche], + #[gamme.re(3), gamme.doublecroche], + #[gamme.do(3), gamme.doublecroche], + #[gamme.la(2), gamme.doublecroche], + #[gamme.silence(), gamme.doublecroche], + #[gamme.do(2), gamme.doublecroche], + #[gamme.mi(2), gamme.doublecroche], + #[gamme.la(2), gamme.doublecroche], + #[gamme.si(2), gamme.croche], + #[gamme.silence(), gamme.doublecroche], + #[gamme.mi(2), gamme.doublecroche], + #[gamme.do(3), gamme.doublecroche], + #[gamme.si(2), gamme.doublecroche], + #[gamme.la(2), gamme.croche], + #[[gamme.mi(2), gamme.do(3)],gamme.doublecroche], + #[[gamme.fa(2), gamme.do(3)], gamme.doublecroche], + #[[gamme.mi(2), gamme.sol(2), gamme.do(3)], gamme.doublecroche], + #[gamme.fa(2), gamme.doublecroche], + #[gamme.la(2), gamme.doublecroche], + #[gamme.do(3), gamme.doublecroche], + #[gamme.fa(3), gamme.doublecrochepointee], + #[gamme.mi(3), gamme.triplecroche], + #[gamme.mi(3), gamme.croche], + #[gamme.re(3), gamme.croche], + #[gamme.sib(3), gamme.doublecrochepointee], + #[gamme.la(3), gamme.triplecroche], + #[gamme.la(3), gamme.doublecroche], + #[gamme.sol(3), gamme.doublecroche], + #[gamme.fa(3), gamme.doublecroche], + #[gamme.mi(3), gamme.doublecroche], + #[gamme.re(3), gamme.doublecroche], + #[gamme.do(3), gamme.doublecroche], + #[gamme.sib(2), gamme.croche], + #[gamme.la(2), gamme.croche], + #[gamme.si(2), gamme.doublecroche], + #[gamme.la(2), gamme.doublecroche], + #[gamme.sol(2), gamme.doublecroche], + #[gamme.la(2), gamme.doublecroche], + #[gamme.si(2), gamme.doublecroche], + #[gamme.do(3), gamme.noire], + #[gamme.re(3), gamme.doublecroche], + #[gamme.red(3), gamme.doublecroche], + #[gamme.mi(3), gamme.crochepointee], + #[gamme.mi(3), gamme.doublecroche], + #[gamme.fa(3), gamme.doublecroche], + #[gamme.la(2), gamme.doublecroche], + #[gamme.do(3), gamme.noire], + #[gamme.re(3), gamme.doublecrochepointee], + #[gamme.si(2), gamme.triplecroche], + #[gamme.do(3), gamme.triplecroche], + #[gamme.sol(3), gamme.triplecroche], + #[gamme.sol(2), gamme.triplecroche], + #[gamme.sol(3), gamme.triplecroche], + #[gamme.la(2), gamme.triplecroche], + #[gamme.sol(3), gamme.triplecroche], + #[gamme.si(3), gamme.triplecroche], + #[gamme.sol(3), gamme.triplecroche], + #[gamme.do(3), gamme.triplecroche], + #[gamme.sol(3), gamme.triplecroche], + #[gamme.re(3), gamme.triplecroche], + #[gamme.sol(3), gamme.triplecroche], + #[gamme.mi(3), gamme.triplecroche], + #[gamme.sol(3), gamme.triplecroche], + #[gamme.do(4), gamme.triplecroche], + #[gamme.si(3), gamme.triplecroche], + #[gamme.la(3), gamme.triplecroche], + #[gamme.sol(3), gamme.triplecroche], + #[gamme.fa(3), gamme.triplecroche], + #[gamme.mi(3), gamme.triplecroche], + #[gamme.re(3), gamme.triplecroche], + #[gamme.sol(3), gamme.triplecroche], + #[gamme.fa(3), gamme.triplecroche], + #[gamme.re(3), gamme.triplecroche], + #[gamme.do(3), gamme.triplecroche], + #[gamme.sol(3), gamme.triplecroche], + #[gamme.sol(2), gamme.triplecroche], + #[gamme.sol(3), gamme.triplecroche], + #[gamme.la(2), gamme.triplecroche], + #[gamme.sol(3), gamme.triplecroche], + #[gamme.si(3), gamme.triplecroche], + #[gamme.sol(3), gamme.triplecroche], + #[gamme.do(3), gamme.triplecroche], + #[gamme.sol(3), gamme.triplecroche], + #[gamme.re(3), gamme.triplecroche], + #[gamme.sol(3), gamme.triplecroche], + #[gamme.mi(3), gamme.triplecroche], + #[gamme.sol(3), gamme.triplecroche], + #[gamme.do(4), gamme.triplecroche], + #[gamme.si(3), gamme.triplecroche], + #[gamme.la(3), gamme.triplecroche], + #[gamme.sol(3), gamme.triplecroche], + #[gamme.fa(3), gamme.triplecroche], + #[gamme.mi(3), gamme.triplecroche], + #[gamme.re(3), gamme.triplecroche], + #[gamme.sol(3), gamme.triplecroche], + #[gamme.fa(3), gamme.triplecroche], + #[gamme.re(3), gamme.triplecroche], + #[gamme.mi(3), gamme.triplecroche], + #[gamme.fa(3), gamme.triplecroche], + #[gamme.mi(3), gamme.triplecroche], + #[gamme.red(3), gamme.triplecroche], + #[gamme.mi(3), gamme.triplecroche], + #[gamme.si(2), gamme.triplecroche], + #[gamme.mi(3), gamme.triplecroche], + #[gamme.re(3), gamme.triplecroche], + #[gamme.mi(3), gamme.triplecroche], + #[gamme.si(2), gamme.triplecroche], + #[gamme.mi(3), gamme.triplecroche], + #[gamme.re(3), gamme.triplecroche], + #[gamme.mi(3), gamme.crochepointee], + #[gamme.si(2), gamme.doublecroche], + #[gamme.mi(3), gamme.doublecroche], + #[gamme.red(3), gamme.doublecroche], + #[gamme.mi(3), gamme.crochepointee], + #[gamme.si(2), gamme.doublecroche], + #[gamme.mi(3), gamme.doublecroche], + #[gamme.red(3), gamme.doublecroche], + #[gamme.mi(3), gamme.doublecroche], + #[gamme.red(3), gamme.doublecroche], + #[gamme.mi(3), gamme.doublecroche], + #[gamme.red(3), gamme.doublecroche], + #[gamme.mi(3), gamme.doublecroche], + #[gamme.red(3), gamme.doublecroche], + #[gamme.mi(3), gamme.doublecroche], + #[gamme.red(3), gamme.doublecroche], + #[gamme.mi(3), gamme.doublecroche], + #[gamme.red(3), gamme.doublecroche], + #[gamme.mi(3), gamme.doublecroche], + #[gamme.si(2), gamme.doublecroche], + #[gamme.re(3), gamme.doublecroche], + #[gamme.do(3), gamme.doublecroche], + #[gamme.la(2), gamme.croche], + #[gamme.silence(), gamme.doublecroche] + ]#, + #[gamme.demiSoupir(), + #gamme.pause(), + #[gamme.la(0),gamme.doublecroche], + #[gamme.mi(1), gamme.doublecroche], + #[gamme.la(1), gamme.doublecroche], + #gamme.quartDeSoupir(), + #gamme.demiSoupir(), + #[gamme.mi(0), gamme.doublecroche], + #[gamme.mi(1), gamme.doublecroche], + #[gamme.sold(1), gamme.doublecroche], + #gamme.quartDeSoupir(), + #gamme.demiSoupir(), + #[gamme.la(0),gamme.doublecroche], + #[gamme.mi(1), gamme.doublecroche], + #[gamme.la(1), gamme.doublecroche], + #gamme.quartDeSoupir(), + #gamme.demiSoupir(), + #gamme.pause(), + #[gamme.la(0),gamme.doublecroche], + #[gamme.mi(1), gamme.doublecroche], + #[gamme.la(1), gamme.doublecroche], + #gamme.quartDeSoupir(), + #gamme.demiSoupir(), + #[gamme.mi(0), gamme.doublecroche], + #[gamme.mi(1), gamme.doublecroche], + #[gamme.sold(1), gamme.doublecroche], + #gamme.quartDeSoupir(), + #gamme.demiSoupir(), + #[gamme.do(1), gamme.doublecroche], + #[gamme.sol(1), gamme.doublecroche], + #[gamme.do(2), gamme.doublecroche], + #gamme.quartDeSoupir(), + #gamme.demiSoupir(), + #[gamme.sol(0), gamme.doublecroche], + #[gamme.sol(1), gamme.doublecroche], + #[gamme.si(1), gamme.doublecroche], + #gamme.quartDeSoupir(), + #gamme.demiSoupir(), + #[gamme.la(0), gamme.doublecroche], + #[gamme.mi(1), gamme.doublecroche], + #[gamme.la(1), gamme.doublecroche], + #gamme.quartDeSoupir(), + #gamme.demiSoupir(), + #[gamme.mi(0), gamme.doublecroche], + #[gamme.mi(1), gamme.doublecroche], + #[gamme.mi(2), gamme.doublecroche], + #gamme.quartDeSoupir(), + #gamme.quartDeSoupir(), + #[gamme.mi(2), gamme.doublecroche], + #[gamme.mi(3), gamme.doublecroche], + #gamme.quartDeSoupir(), + #gamme.quartDeSoupir(), + #[gamme.red(3), gamme.doublecroche], + #[gamme.mi(3), gamme.doublecroche], + #gamme.quartDeSoupir(), + #gamme.quartDeSoupir(), + #[gamme.red(3), gamme.doublecroche], + #[gamme.mi(3), gamme.doublecroche], + #gamme.quartDeSoupir(), + #gamme.demiSoupir(), + #gamme.pause(), + #[gamme.la(0),gamme.doublecroche], + #[gamme.mi(1), gamme.doublecroche], + #[gamme.la(1), gamme.doublecroche], + #gamme.quartDeSoupir(), + #gamme.demiSoupir(), + #[gamme.mi(0), gamme.doublecroche], + #[gamme.mi(1), gamme.doublecroche], + #[gamme.sold(1), gamme.doublecroche], + #gamme.quartDeSoupir(), + #gamme.demiSoupir(), + #[gamme.la(0),gamme.doublecroche], + #[gamme.mi(1), gamme.doublecroche], + #[gamme.la(1), gamme.doublecroche], + #gamme.quartDeSoupir(), + #gamme.demiSoupir(), + #gamme.pause(), + #[gamme.la(0),gamme.doublecroche], + #[gamme.mi(1), gamme.doublecroche], + #[gamme.la(1), gamme.doublecroche], + #gamme.quartDeSoupir(), + #gamme.demiSoupir(), + #[gamme.mi(0), gamme.doublecroche], + #[gamme.mi(1), gamme.doublecroche], + #[gamme.sold(1), gamme.doublecroche], + #gamme.quartDeSoupir(), + #gamme.demiSoupir(), + #[gamme.la(0),gamme.doublecroche], + #[gamme.mi(1),gamme.doublecroche], + #[gamme.la(1),gamme.doublecroche], + #[[gamme.sib(1),gamme.do(2)],gamme.doublecroche], + #[[gamme.la(1),gamme.do(2)],gamme.doublecroche], + #[[gamme.sol(1),gamme.sib(1),gamme.do(2)],gamme.doublecroche], + #[gamme.fa(1), gamme.doublecroche], + #[gamme.la(1), gamme.doublecroche], + #[gamme.do(2), gamme.doublecroche], + #[gamme.la(1), gamme.doublecroche], + #[gamme.do(2), gamme.doublecroche], + #[gamme.la(1), gamme.doublecroche], + #[gamme.fa(1), gamme.doublecroche], + #[gamme.sib(1), gamme.doublecroche], + #[gamme.re(2), gamme.doublecroche], + #[gamme.sib(1), gamme.doublecroche], + #[gamme.re(2), gamme.doublecroche], + #[gamme.sib(1), gamme.doublecroche], + #[gamme.fa(1), gamme.doublecroche], + #[gamme.mi(2), gamme.doublecroche], + #[[gamme.fa(1),gamme.sol(1),gamme.sib(1)], gamme.doublecroche], + #[gamme.mi(2), gamme.doublecroche], + #[[gamme.fa(1),gamme.sol(1),gamme.sib(1)], gamme.doublecroche], + #[gamme.mi(2), gamme.doublecroche], + #[gamme.fa(1), gamme.doublecroche], + #[gamme.la(1), gamme.doublecroche], + #[gamme.do(2), gamme.doublecroche], + #[gamme.la(1), gamme.doublecroche], + #[gamme.do(2), gamme.doublecroche], + #[gamme.la(1), gamme.doublecroche], + #[gamme.fa(1), gamme.doublecroche], + #[gamme.la(1), gamme.doublecroche], + #[gamme.do(2), gamme.doublecroche], + #[gamme.la(1), gamme.doublecroche], + #[gamme.do(2), gamme.doublecroche], + #[gamme.la(1), gamme.doublecroche], + #[gamme.mi(1), gamme.doublecroche], + #[gamme.la(1), gamme.doublecroche], + #[gamme.do(2), gamme.doublecroche], + #[gamme.la(1), gamme.doublecroche], + #[[gamme.re(1), gamme.re(2)], gamme.doublecroche], + #[gamme.fa(1), gamme.doublecroche], + #[gamme.sol(1), gamme.doublecroche], + #[gamme.mi(2), gamme.doublecroche], + #[gamme.sol(1), gamme.doublecroche], + #[gamme.mi(2), gamme.doublecroche], + #[gamme.sol(1), gamme.doublecroche], + #[gamme.fa(2), gamme.doublecroche], + #[[gamme.do(2), gamme.mi(2)], gamme.croche], + #gamme.quartDeSoupir(), + #[[gamme.fa(2), gamme.sol(2)], gamme.doublecroche], + #[[gamme.sol(2), gamme.mi(2)], gamme.doublecroche], + #[[gamme.re(2), gamme.fa(2), gamme.sol(2)], gamme.doublecroche], + #[[gamme.do(2), gamme.mi(2), gamme.sol(2)], gamme.croche], + #[[gamme.fa(1), gamme.la(1)], gamme.croche], + #[[gamme.sol(1), gamme.si(1)], gamme.croche], + #[gamme.do(2), gamme.croche], + #gamme.quartDeSoupir(), + #[[gamme.fa(2), gamme.sol(2)], gamme.doublecroche], + #[[gamme.sol(2), gamme.mi(2)], gamme.doublecroche], + #[[gamme.re(2), gamme.fa(2), gamme.sol(2)], gamme.doublecroche], + #[[gamme.do(2), gamme.mi(2), gamme.sol(2)], gamme.croche], + #[[gamme.fa(1), gamme.la(1)], gamme.croche], + #[[gamme.sol(1), gamme.si(1)], gamme.croche], + #[[gamme.sold(1), gamme.si(1)], gamme.croche], + #gamme.soupir(), + #gamme.pause(), + #gamme.pause(), + #gamme.pause(), + #gamme.pause(), + #[gamme.la(0),gamme.doublecroche], + #[gamme.mi(1), gamme.doublecroche], + #[gamme.la(1), gamme.doublecroche], + #gamme.quartDeSoupir(), + #gamme.demiSoupir(), + #[gamme.mi(0), gamme.doublecroche], + #[gamme.mi(1), gamme.doublecroche], + #[gamme.sold(1), gamme.doublecroche], + #gamme.quartDeSoupir(), + #gamme.demiSoupir(), + #[gamme.la(0),gamme.doublecroche], + #[gamme.mi(1), gamme.doublecroche], + #[gamme.la(1), gamme.doublecroche], + #gamme.quartDeSoupir(), + #gamme.demiSoupir(), + #gamme.pause(), + #[gamme.la(0),gamme.doublecroche], + #[gamme.mi(1), gamme.doublecroche], + #[gamme.la(1), gamme.doublecroche], + #gamme.quartDeSoupir(), + #gamme.demiSoupir(), + #[gamme.mi(0), gamme.doublecroche], + #[gamme.mi(1), gamme.doublecroche], + #[gamme.sold(1), gamme.doublecroche], + #gamme.quartDeSoupir(), + #gamme.demiSoupir(), + #[gamme.la(0),gamme.doublecroche], + #[gamme.mi(1), gamme.doublecroche], + #[gamme.la(1), gamme.doublecroche], + #gamme.quartDeSoupir(), + #gamme.demiSoupir(), + #[gamme.do(1),gamme.doublecroche], + #[gamme.sol(1), gamme.doublecroche], + #[gamme.do(2), gamme.doublecroche], + #gamme.quartDeSoupir(), + #gamme.demiSoupir(), + #[gamme.sol(0),gamme.doublecroche], + #[gamme.sol(1), gamme.doublecroche], + #[gamme.si(1), gamme.doublecroche], + #gamme.quartDeSoupir(), + #gamme.demiSoupir(), + #[gamme.la(0),gamme.doublecroche], + #[gamme.mi(1), gamme.doublecroche], + #[gamme.la(1), gamme.doublecroche], + #gamme.quartDeSoupir(), + #gamme.demiSoupir(), + #[gamme.mi(0), gamme.doublecroche], + #[gamme.mi(1), gamme.doublecroche], + #[gamme.mi(2), gamme.doublecroche], + #gamme.demiSoupir(), + #[gamme.mi(2), gamme.doublecroche], + #[gamme.mi(3), gamme.doublecroche], + #gamme.demiSoupir(), + #[gamme.red(3), gamme.doublecroche], + #[gamme.mi(3), gamme.doublecroche], + #gamme.demiSoupir(), + #[gamme.red(3), gamme.doublecroche], + #[gamme.mi(3), gamme.doublecroche], + #gamme.quartDeSoupir(), + #gamme.demiSoupir(), + #gamme.pause(), + #[gamme.la(0),gamme.doublecroche], + #[gamme.mi(1), gamme.doublecroche], + #[gamme.la(1), gamme.doublecroche], + #gamme.quartDeSoupir(), + #gamme.demiSoupir(), + #[gamme.mi(0), gamme.doublecroche], + #[gamme.mi(1), gamme.doublecroche], + #[gamme.sold(1), gamme.doublecroche], + #gamme.quartDeSoupir(), + #gamme.demiSoupir(), + #[gamme.la(0),gamme.doublecroche], + #[gamme.mi(1), gamme.doublecroche], + #[gamme.la(1), gamme.doublecroche], + #gamme.quartDeSoupir(), + #gamme.demiSoupir(), + #gamme.pause(), + #[gamme.la(0),gamme.doublecroche], + #[gamme.mi(1), gamme.doublecroche], + #[gamme.la(1), gamme.doublecroche], + #gamme.quartDeSoupir(), + #gamme.demiSoupir(), + #[gamme.mi(0), gamme.doublecroche], + #[gamme.mi(1), gamme.doublecroche], + #[gamme.sold(1), gamme.doublecroche], + #gamme.quartDeSoupir(), + #gamme.demiSoupir(), + #[gamme.la(0), gamme.doublecroche], + #[gamme.la(0), gamme.doublecroche], + #[gamme.la(0), gamme.doublecroche], + #[gamme.la(0), gamme.doublecroche], + #[gamme.la(0), gamme.doublecroche], + #[gamme.la(0), gamme.doublecroche], + #[gamme.la(0), gamme.doublecroche], + #[gamme.la(0), gamme.doublecroche], + #[gamme.la(0), gamme.doublecroche], + #[gamme.la(0), gamme.doublecroche], + #[gamme.la(0), gamme.doublecroche], + #[gamme.la(0), gamme.doublecroche], + + #[gamme.la(0), gamme.doublecroche], + #[gamme.la(0), gamme.doublecroche], + #[gamme.la(0), gamme.doublecroche], + #[gamme.la(0), gamme.doublecroche], + #[gamme.la(0), gamme.doublecroche], + #[gamme.la(0), gamme.doublecroche], + + #[gamme.la(0), gamme.doublecroche], + #[gamme.la(0), gamme.doublecroche], + #[gamme.la(0), gamme.doublecroche], + #[gamme.la(0), gamme.doublecroche], + #[gamme.la(0), gamme.doublecroche], + #[gamme.la(0), gamme.doublecroche], + + #[gamme.la(0), gamme.doublecroche], + #[gamme.la(0), gamme.doublecroche], + #[gamme.la(0), gamme.doublecroche], + #[gamme.la(0), gamme.doublecroche], + #[gamme.la(0), gamme.doublecroche], + #[gamme.la(0), gamme.doublecroche], + #[[gamme.re(0), gamme.la(0)], gamme.doublecroche], + #[[gamme.re(0), gamme.la(0)], gamme.doublecroche], + #[[gamme.re(0), gamme.la(0)], gamme.doublecroche], + #[[gamme.re(0), gamme.la(0)], gamme.doublecroche], + #[[gamme.re(0), gamme.la(0)], gamme.doublecroche], + #[[gamme.re(0), gamme.la(0)], gamme.doublecroche], + #[[gamme.red(0), gamme.la(0)], gamme.doublecroche], + #[[gamme.red(0), gamme.la(0)], gamme.doublecroche], + #[[gamme.red(0), gamme.la(0)], gamme.doublecroche], + #[[gamme.red(0), gamme.la(0)], gamme.doublecroche], + #[[gamme.red(0), gamme.la(0)], gamme.doublecroche], + #[[gamme.red(0), gamme.la(0)], gamme.doublecroche], + #[[gamme.mi(0), gamme.la(0)], gamme.doublecroche], + #[[gamme.mi(0), gamme.la(0)], gamme.doublecroche], + #[[gamme.mi(0), gamme.la(0)], gamme.doublecroche], + #[[gamme.mi(0), gamme.la(0)], gamme.doublecroche], + #[[gamme.mi(0), gamme.fad(0)], gamme.doublecroche], + #[[gamme.mi(0), gamme.fad(0)], gamme.doublecroche], + #[gamme.la(0), gamme.doublecroche], + #[gamme.la(0), gamme.doublecroche], + #[gamme.la(0), gamme.doublecroche], + #[gamme.la(0), gamme.doublecroche], + #[gamme.la(0), gamme.doublecroche], + #[gamme.la(0), gamme.doublecroche], + #[gamme.la(0), gamme.doublecroche], + #[gamme.la(0), gamme.doublecroche], + #[gamme.la(0), gamme.doublecroche], + #[gamme.la(0), gamme.doublecroche], + #[gamme.la(0), gamme.doublecroche], + #[gamme.la(0), gamme.doublecroche], + #[gamme.la(0), gamme.doublecroche], + #[gamme.la(0), gamme.doublecroche], + #[gamme.la(0), gamme.doublecroche], + #[gamme.la(0), gamme.doublecroche], + #[gamme.la(0), gamme.doublecroche], + #[gamme.la(0), gamme.doublecroche], + #[gamme.la(0), gamme.doublecroche], + #[gamme.la(0), gamme.doublecroche], + #[gamme.la(0), gamme.doublecroche], + #[gamme.la(0), gamme.doublecroche], + #[gamme.la(0), gamme.doublecroche], + #[gamme.la(0), gamme.doublecroche], + #[gamme.sib(0), gamme.doublecroche], + #[gamme.sib(0), gamme.doublecroche], + #[gamme.sib(0), gamme.doublecroche], + #[gamme.sib(0), gamme.doublecroche], + #[gamme.sib(0), gamme.doublecroche], + #[gamme.sib(0), gamme.doublecroche], + #[gamme.sib(0), gamme.doublecroche], + #[gamme.sib(0), gamme.doublecroche], + #[gamme.sib(0), gamme.doublecroche], + #[gamme.sib(0), gamme.doublecroche], + #[gamme.sib(0), gamme.doublecroche], + #[gamme.sib(0), gamme.doublecroche], + #[gamme.si(0), gamme.doublecroche], + #[gamme.si(0), gamme.doublecroche], + #[gamme.si(0), gamme.doublecroche], + #[gamme.si(0), gamme.doublecroche], + #[gamme.si(0), gamme.doublecroche], + #[gamme.si(0), gamme.doublecroche], + #[gamme.do(1), gamme.noire], + #gamme.soupir(), + #[[gamme.mi(1), gamme.sold(1)], gamme.croche], + #gamme.soupir(), + #gamme.soupir(), + #[gamme.la(0), gamme.croche], + #gamme.soupir(), + #[[gamme.la(1), gamme.do(2), gamme.mi(2)], gamme.croche], + #[[gamme.la(1), gamme.do(2), gamme.mi(2)], gamme.croche], + #gamme.soupir(), + #[[gamme.la(1), gamme.do(2), gamme.mi(2)], gamme.croche], + #[[gamme.la(1), gamme.do(2), gamme.mi(2)], gamme.croche], + #gamme.soupir(), + #[[gamme.la(1), gamme.do(2), gamme.mi(2)], gamme.croche], + #[[gamme.la(1), gamme.do(2), gamme.mi(2)], gamme.croche], + #gamme.soupir(), + #gamme.soupir(), + #gamme.pause(), + #gamme.pause(), + #[gamme.la(0),gamme.doublecroche], + #[gamme.mi(1), gamme.doublecroche], + #[gamme.la(1), gamme.doublecroche], + #gamme.quartDeSoupir(), + #gamme.demiSoupir(), + #[gamme.mi(0), gamme.doublecroche], + #[gamme.mi(1), gamme.doublecroche], + #[gamme.sold(1), gamme.doublecroche], + #gamme.quartDeSoupir(), + #gamme.demiSoupir(), + #[gamme.la(0), gamme.doublecroche], + #[gamme.mi(1), gamme.doublecroche], + #[gamme.la(1), gamme.doublecroche], + #gamme.quartDeSoupir(), + #gamme.demiSoupir(), + #gamme.pause(), + #[gamme.la(0), gamme.doublecroche], + #[gamme.mi(1), gamme.doublecroche], + #[gamme.la(1), gamme.doublecroche], + #gamme.quartDeSoupir(), + #gamme.demiSoupir(), + #[gamme.mi(0), gamme.doublecroche], + #[gamme.mi(1), gamme.doublecroche], + #[gamme.sold(1), gamme.doublecroche], + #gamme.quartDeSoupir(), + #gamme.demiSoupir(), + #[gamme.la(0), gamme.doublecroche], + #[gamme.mi(1), gamme.doublecroche], + #[gamme.la(1), gamme.doublecroche], + #gamme.quartDeSoupir(), + #gamme.demiSoupir(), + #[gamme.do(1), gamme.doublecroche], + #[gamme.sol(1), gamme.doublecroche], + #[gamme.do(2), gamme.doublecroche], + #gamme.quartDeSoupir(), + #gamme.demiSoupir(), + #[gamme.fa(0), gamme.doublecroche], + #[gamme.sol(1), gamme.doublecroche], + #[gamme.si(1), gamme.doublecroche], + #gamme.quartDeSoupir(), + #gamme.demiSoupir(), + #[gamme.la(0),gamme.doublecroche], + #[gamme.mi(1), gamme.doublecroche], + #[gamme.la(1), gamme.doublecroche], + #gamme.quartDeSoupir(), + #gamme.demiSoupir(), + #[gamme.mi(0),gamme.doublecroche], + #[gamme.mi(1), gamme.doublecroche], + #[gamme.mi(2), gamme.doublecroche], + #gamme.quartDeSoupir(), + #gamme.demiSoupir(), + #[gamme.mi(2), gamme.doublecroche], + #[gamme.mi(3), gamme.doublecroche], + #gamme.quartDeSoupir(), + #gamme.demiSoupir(), + #[gamme.red(3), gamme.doublecroche], + #[gamme.mi(3), gamme.doublecroche], + #gamme.quartDeSoupir(), + #gamme.demiSoupir(), + #[gamme.red(3), gamme.doublecroche], + #[gamme.mi(3), gamme.doublecroche], + #gamme.quartDeSoupir(), + #gamme.demiSoupir(), + #gamme.pause(), + #[gamme.la(0),gamme.doublecroche], + #[gamme.mi(1), gamme.doublecroche], + #[gamme.la(1), gamme.doublecroche], + #gamme.quartDeSoupir(), + #gamme.demiSoupir(), + #[gamme.mi(0), gamme.doublecroche], + #[gamme.mi(1), gamme.doublecroche], + #[gamme.sold(1), gamme.doublecroche], + #gamme.quartDeSoupir(), + #gamme.demiSoupir(), + #[gamme.la(0),gamme.doublecroche], + #[gamme.mi(1), gamme.doublecroche], + #[gamme.la(1), gamme.doublecroche], + #gamme.quartDeSoupir(), + #gamme.demiSoupir(), + #gamme.pause(), + #[gamme.la(0),gamme.doublecroche], + #[gamme.mi(1), gamme.doublecroche], + #[gamme.la(1), gamme.doublecroche], + #gamme.quartDeSoupir(), + #gamme.demiSoupir(), + #[gamme.mi(0), gamme.doublecroche], + #[gamme.mi(1), gamme.doublecroche], + #[gamme.sold(1), gamme.doublecroche], + #gamme.quartDeSoupir(), + #gamme.demiSoupir(), + #[gamme.la(0), gamme.croche]] + ] + +if args.exerciceSpectrogramme: + g = GenerateurExercice(gamme.bpm) + g.setBoomwhackers(boomwhackers) + g.genererExerciceSpectrogramme(elise, "exercices/ex-spec-elise.tex", "La lettre à Élise") +else: + print "Génération de la version \"piano\"" + s = BasicSequenceur(1, gamme.bpm, 3) + s.genererMelodie(elise, "sons/elise.wav") diff --git a/flic.py b/flic.py index 021b876..ef41c9e 100755 --- a/flic.py +++ b/flic.py @@ -12,11 +12,15 @@ from musique.gamme import GammeTemperee parser = argparse.ArgumentParser(description='Génère des documents à partir de la partition du thème du flic de Beverly Hills.') parser.add_argument('--exercice-spectrogramme', help="Génère un exercice plutôt que le fichier son", dest='exerciceSpectrogramme', action='store_true',default=False) +parser.add_argument('--boomwhackers', help="Génère un exercice plutôt que le fichier son", dest='boomwhackers', nargs=1) args = parser.parse_args() gamme = GammeTemperee(117) +boomwhackers = "" +if not args.boomwhackers is None: + boomwhackers = args.boomwhackers[0] flic = [ [ [gamme.fad(4), gamme.noire], [gamme.la(4), gamme.crochepointee], @@ -45,6 +49,7 @@ flic = [ [ [gamme.fad(4), gamme.noire], if args.exerciceSpectrogramme: g = GenerateurExercice(gamme.bpm) + g.setBoomwhackers(boomwhackers) g.genererExerciceSpectrogramme(flic, "exercices/ex-spec-flic.tex", "thème \"le flic de Beverly Hills\"") else: print "Génération de la version \"piano\"" diff --git a/flic2.py b/flic2.py index 2563b2a..17e8a9e 100755 --- a/flic2.py +++ b/flic2.py @@ -1,52 +1,57 @@ -#!/usr/bin/env python -# coding: utf8 -# -*- coding: utf-8 -*- - - -import argparse -from musique.basicsynth import BasicSequenceur -from musique.exercice import GenerateurExercice -from musique.gamme import GammeTemperee - -parser = argparse.ArgumentParser(description='Génère des documents à partir de la partition du thème du flic de Beverly Hills (v2).') -parser.add_argument('--exercice-spectrogramme', help="Génère un exercice plutôt que le fichier son", dest='exerciceSpectrogramme', action='store_true',default=False) - -args = parser.parse_args() - -gamme = GammeTemperee(80) - - - -flic2 = [ [ [gamme.mi(4), gamme.croche], -[gamme.sol(4), gamme.doublecrochepointee], -[gamme.mi(4), gamme.doublecroche], -[gamme.mi(4), gamme.triplecroche], -[gamme.la(4), gamme.doublecroche], -[gamme.mi(4), gamme.doublecroche], -[gamme.red(4), gamme.doublecroche], -[gamme.mi(4), gamme.croche], -[gamme.si(4), gamme.doublecrochepointee], -[gamme.mi(4), gamme.doublecroche], -[gamme.mi(4), gamme.triplecroche], -[gamme.do(3), gamme.doublecroche], -[gamme.si(4), gamme.doublecroche], -[gamme.sol(4), gamme.doublecroche], -[gamme.mi(4), gamme.doublecroche], -[gamme.si(4), gamme.doublecroche], -[gamme.mi(3), gamme.doublecroche], -[gamme.mi(4), gamme.triplecroche], -[gamme.red(4), gamme.doublecroche], -[gamme.red(4), gamme.triplecroche], -[gamme.si(1), gamme.doublecroche], -[gamme.fad(4), gamme.doublecroche], -[gamme.mi(4), gamme.doublecroche] - ] ] - -if args.exerciceSpectrogramme: - g = GenerateurExercice(gamme.bpm) - g.genererExerciceSpectrogramme(flic2, "exercices/ex-spec-flic2.tex", "thème \"le flic de Beverly Hills\"") -else: - print "Génération du son" - s = BasicSequenceur(1, gamme.bpm, 0) - s.genererMelodie(flic2, "sons/flic2.wav") - +#!/usr/bin/env python +# coding: utf8 +# -*- coding: utf-8 -*- + + +import argparse +from musique.basicsynth import BasicSequenceur +from musique.exercice import GenerateurExercice +from musique.gamme import GammeTemperee + +parser = argparse.ArgumentParser(description='Génère des documents à partir de la partition du thème du flic de Beverly Hills (v2).') +parser.add_argument('--exercice-spectrogramme', help="Génère un exercice plutôt que le fichier son", dest='exerciceSpectrogramme', action='store_true',default=False) +parser.add_argument('--boomwhackers', help="Génère un exercice plutôt que le fichier son", dest='boomwhackers', nargs=1) + +args = parser.parse_args() + +gamme = GammeTemperee(80) + + +boomwhackers = "" +if not args.boomwhackers is None: + boomwhackers = args.boomwhackers[0] + +flic2 = [ [ [gamme.mi(4), gamme.croche], +[gamme.sol(4), gamme.doublecrochepointee], +[gamme.mi(4), gamme.doublecroche], +[gamme.mi(4), gamme.triplecroche], +[gamme.la(4), gamme.doublecroche], +[gamme.mi(4), gamme.doublecroche], +[gamme.red(4), gamme.doublecroche], +[gamme.mi(4), gamme.croche], +[gamme.si(4), gamme.doublecrochepointee], +[gamme.mi(4), gamme.doublecroche], +[gamme.mi(4), gamme.triplecroche], +[gamme.do(3), gamme.doublecroche], +[gamme.si(4), gamme.doublecroche], +[gamme.sol(4), gamme.doublecroche], +[gamme.mi(4), gamme.doublecroche], +[gamme.si(4), gamme.doublecroche], +[gamme.mi(3), gamme.doublecroche], +[gamme.mi(4), gamme.triplecroche], +[gamme.red(4), gamme.doublecroche], +[gamme.red(4), gamme.triplecroche], +[gamme.si(1), gamme.doublecroche], +[gamme.fad(4), gamme.doublecroche], +[gamme.mi(4), gamme.doublecroche] + ] ] + +if args.exerciceSpectrogramme: + g = GenerateurExercice(gamme.bpm) + g.setBoomwhackers(boomwhackers) + g.genererExerciceSpectrogramme(flic2, "exercices/ex-spec-flic2.tex", "thème \"le flic de Beverly Hills\"") +else: + print "Génération du son" + s = BasicSequenceur(1, gamme.bpm, 0) + s.genererMelodie(flic2, "sons/flic2.wav") + diff --git a/frerejacques.py b/frerejacques.py index 9889280..810f0d1 100644 --- a/frerejacques.py +++ b/frerejacques.py @@ -12,11 +12,15 @@ from musique.gamme import GammeTemperee parser = argparse.ArgumentParser(description='Génère des documents à partir de la partition de Frère Jacques.') parser.add_argument('--exercice-spectrogramme', help="Génère un exercice plutôt que le fichier son", dest='exerciceSpectrogramme', action='store_true',default=False) +parser.add_argument('--boomwhackers', help="Génère un exercice plutôt que le fichier son", dest='boomwhackers', nargs=1) args = parser.parse_args() gamme = GammeTemperee(160) +boomwhackers = "" +if not args.boomwhackers is None: + boomwhackers = args.boomwhackers[0] frerejacques = [ [ [gamme.sol(4), gamme.noire], [gamme.la(4), gamme.noire], @@ -62,6 +66,7 @@ frerejacques = [ [ [gamme.sol(4), gamme.noire], if args.exerciceSpectrogramme: g = GenerateurExercice(gamme.bpm) + g.setBoomwhackers(boomwhackers) g.genererExerciceSpectrogramme(frerejacques, "exercices/ex-spec-frerejacques.tex", "thème \"Frère Jacques\"") else: print "Génération de la version \"piano\"" diff --git a/happybirthday.py b/happybirthday.py index 62e3513..c9a4cc2 100755 --- a/happybirthday.py +++ b/happybirthday.py @@ -9,9 +9,14 @@ from musique.gamme import GammeTemperee parser = argparse.ArgumentParser(description='Génère des documents à partir de la partition du thème joyeux anniversaire.') parser.add_argument('--exercice-spectrogramme', help="Génère un exercice plutôt que le fichier son", dest='exerciceSpectrogramme', action='store_true',default=False) +parser.add_argument('--boomwhackers', help="Génère un exercice plutôt que le fichier son", dest='boomwhackers', nargs=1) args = parser.parse_args() +boomwhackers = "" +if not args.boomwhackers is None: + boomwhackers = args.boomwhackers[0] + gamme = GammeTemperee(117) @@ -45,6 +50,7 @@ happy = [ [ [gamme.do(4), gamme.crochepointee], if args.exerciceSpectrogramme: g = GenerateurExercice(gamme.bpm) + g.setBoomwhackers(boomwhackers) g.genererExerciceSpectrogramme(happy, "exercices/ex-spec-happybirthday.tex", "thème joyeux anniversaire") else: print "Génération du son" diff --git a/lavieenrose.py b/lavieenrose.py index a0965c3..2863505 100755 --- a/lavieenrose.py +++ b/lavieenrose.py @@ -9,13 +9,16 @@ from musique.gamme import GammeTemperee parser = argparse.ArgumentParser(description='Génère des documents à partir de la partition de "la vie en rose".') parser.add_argument('--exercice-spectrogramme', help="Génère un exercice plutôt que le fichier son", dest='exerciceSpectrogramme', action='store_true',default=False) +parser.add_argument('--boomwhackers', help="Génère un exercice plutôt que le fichier son", dest='boomwhackers', nargs=1) args = parser.parse_args() gamme = GammeTemperee(160) - +boomwhackers = "" +if not args.boomwhackers is None: + boomwhackers = args.boomwhackers[0] lavieenrose = [ [ [gamme.do(2), gamme.noirepointee], [gamme.si(1), gamme.croche], @@ -64,6 +67,7 @@ lavieenrose = [ [ [gamme.do(2), gamme.noirepointee], if args.exerciceSpectrogramme: g = GenerateurExercice(gamme.bpm) + g.setBoomwhackers(boomwhackers) g.genererExerciceSpectrogramme(lavieenrose, "exercices/ex-spec-lavieenrose.tex", "La vie en rose") else: print "Génération de la version \"piano\"" diff --git a/musique/exercice.py b/musique/exercice.py index 3ad916c..3d6e6f8 100644 --- a/musique/exercice.py +++ b/musique/exercice.py @@ -22,6 +22,16 @@ class GenerateurExercice(GammeTemperee): self.margeFrequence = 100 self.margeFrequenceLegende = 20 self.margeLegende = 2.0 + self.boomwhackers = [] + + def setBoomwhackers(self, mw): + import json + with open(mw) as f: + bw = json.load(f) + self.boomwhackers = {} + for key, value in bw.iteritems(): + + self.boomwhackers[(int(key[-1]), self.getIDNoteDepuisNom(key[:-1]))] = value # calcule la durée de la partition donnée en paramètre, dans le # cas où elle est jouée au battement par minute courant @@ -35,17 +45,11 @@ class GenerateurExercice(GammeTemperee): def calculeDureePartitions(self, partitions): return max([self.calculeDureePartition(p) for p in partitions]) - # calcule les fréquences minimales et maximales des partitions - def calculeIntervalleFrequencesPartition(self, partition): - minf = min([ min([ f for f in note[0]]) if not isinstance(note[0], float) else note[0] for note in partition]) - maxf = max([ max([ f for f in note[0]]) if not isinstance(note[0], float) else note[0] for note in partition]) - - return (minf, maxf) # calcule les fréquences minimales et maximales des partitions def calculeIntervalleFrequencesPartitions(self, partitions): - intervalles = [ self.calculeIntervalleFrequencesPartition(p) for p in partitions] - return ( min([i[0] for i in intervalles]), max([i[1] for i in intervalles])) + notes = self.notesDansPartition(partitions) + return (min(notes), max(notes)) # cette fonction calcule l'échelle qui sera utilisée pour le spectrogramme: @@ -190,9 +194,10 @@ class GenerateurExercice(GammeTemperee): result += str(i + 1) + " & " if solution: if isinstance(note[0], float): - result += str(int(round(note[0]))) + " & " + '{0:.2f}'.format(note[1]).replace(".", ",") + " & " - result += self.frequenceToLaTeX(note[0]) + "& " + self.nomDuree(note[1]) + " \\\\\n" - result += "\\hline\n" + if note[0] > 0: + result += str(int(round(note[0]))) + " & " + '{0:.2f}'.format(note[1]).replace(".", ",") + " & " + result += self.frequenceToLaTeX(note[0]) + "& " + self.nomDuree(note[1]) + " \\\\\n" + result += "\\hline\n" else: result += ', '.join(['{0:.2f}'.format(n) for n in note[0]]) + " & " + '{0:.2f}'.format(note[1]).replace(".", ",") result += " & " + ', '.join([self.frequenceToLaTeX(n) for n in note[0]]) + " & " + self.nomDuree(note[1]) + " \\\\\n" @@ -233,25 +238,36 @@ class GenerateurExercice(GammeTemperee): result += "\\end{table}\n" return result + # retourne la translation d'octave nécessaire pour jouer avec + # les boomwhackers, ou une valeur supérieure à 100 si la note + # n'est pas disponible + def getTranslationOctaveBoomwhackers(self, minNote): + octaveCible = min([ n[0] for n in self.boomwhackers if n[1] == minNote[1] ] + [10000]) + return octaveCible - minNote[0] + + def estJouable(self, note, shiftOctave): + nN = (note[0] + shiftOctave, note[1]) + return nN in self.boomwhackers def estDessinable(self, partitions): if len(partitions) != 1: print "La partition contient plusieurs mains." return False - if self.contientNoteAlteree(partitions): - print "La partition contient une alterée." - return False notes = [ self.getOctaveEtIDNote(p) for p in self.notesDansPartition(partitions) ] minNote = min(notes) - maxNote = max(notes) - print notes - # si les notes sont dans une même gamme - # ou qu'elles sont sur deux gammes, avec le do dans la gamme suivante - return minNote[0] == maxNote[0] or (minNote[0] == maxNote[0] + 1 and maxNote[1] == 0) - + shiftOctave = self.getTranslationOctaveBoomwhackers(minNote) + + if shiftOctave > 100: + return False + + for n in notes: + if not self.estJouable(n, shiftOctave): + return False + + return True def partitionGraphique(self, partitions): result = "" @@ -260,8 +276,9 @@ class GenerateurExercice(GammeTemperee): if self.estDessinable(partitions): p = partitions[0] - # TODO result += "On peut la dessiner." + print "on peut la dessiner" + # TODO else: result += "Cette partition n'est pas représentable sous forme de partition pour boomwhackers diatoniques." @@ -371,6 +388,7 @@ class GenerateurExercice(GammeTemperee): def graduationOrdonnees(self, partitions): frequences = self.notesDansPartition(partitions) + result = "" for frequence in frequences: diff --git a/musique/gamme.py b/musique/gamme.py index e5d1a47..4719603 100644 --- a/musique/gamme.py +++ b/musique/gamme.py @@ -9,6 +9,9 @@ class GammeTemperee: def __init__(self, bpm = 120): self.frequences = [4186.01, 4434.92, 4698.64, 4978.03, 5274.04, 5587.65, 5919.91, 6271.93, 6644.88, 7040.00, 7458.62, 7902.13] + self.nomsNotes = [ ["do"], ["dod", "reb"], ["re"], ["red", "mib"], + ["mi"], ["fa"], ["fad", "solb"], ["sol"], ["sold", "lab"], + ["la"], ["lad", "sib"], ["si"]] self.setBPM(bpm) # Definition de chacune des notes du clavier (leur frequence). # Paramètre: @@ -70,6 +73,12 @@ class GammeTemperee: def silence(self): return 0. + def getIDNoteDepuisNom(self, nom): + for i, noms in enumerate(self.nomsNotes): + if nom in noms: + return i + return -1 + # definition des pauses (un silence joue pendant une duree donnee) def pause(self): return [ self.silence(), self.ronde ] @@ -122,32 +131,17 @@ class GammeTemperee: return [ self.note(o, i) for (o, i) in self.getOctaveEtIDNoteDansIntervalle(noteMin, noteMax) ] def notesDansPartition(self, partitions): - l = [[ x for x in [note[0] if isinstance(note[0], float) else note[0] for note in partition] if x != 0.] for partition in partitions] - return list(set([ j for i in l for j in i ])) - - - def isNoteAlteree(self, frequence): - (o, i) = self.getOctaveEtIDNote(frequence) - return i in [ 1, 3, 6, 8, 10 ] + 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 contientNoteAlteree(self, partitions): - for partition in partitions: - for note in partition: - if isinstance(note[0], float): - if self.isNoteAlteree(note[0]): - return True - else: - for n in note: - if self.isNoteAlteree(n[0]): - return True - return False # retourne la fréquence minimum utilisée dans les partitions def minFrequence(self, partitions): - return min([min([ x for x in [note[0] if isinstance(note[0], float) else min(note[0]) for note in partition] if x > 0]) for partition in partitions]) + return min(self.notesDansPartition(partitions)) + # retourne la fréquence maximum utilisée dans les partitions def maxFrequence(self, partitions): - return max([max([note[0] if isinstance(note[0], float) else max(note[0]) for note in partition]) for partition in partitions]) + return max(self.notesDansPartition(partitions)) def durees(self, partitions): diff --git a/rainbow.py b/rainbow.py index 4b0bd6b..a3d3233 100755 --- a/rainbow.py +++ b/rainbow.py @@ -9,12 +9,15 @@ from musique.gamme import GammeTemperee parser = argparse.ArgumentParser(description='Génère des documents à partir de la partition de "rainbow".') parser.add_argument('--exercice-spectrogramme', help="Génère un exercice plutôt que le fichier son", dest='exerciceSpectrogramme', action='store_true',default=False) +parser.add_argument('--boomwhackers', help="Génère un exercice plutôt que le fichier son", dest='boomwhackers', nargs=1) args = parser.parse_args() gamme = GammeTemperee(130) - +boomwhackers = "" +if not args.boomwhackers is None: + boomwhackers = args.boomwhackers[0] rainbow = [ [ [gamme.do(3), gamme.blanche], [gamme.do(3), gamme.noire], @@ -44,6 +47,7 @@ gamme.pause(), if args.exerciceSpectrogramme: g = GenerateurExercice(gamme.bpm) + g.setBoomwhackers(boomwhackers) g.genererExerciceSpectrogramme(rainbow, "exercices/ex-spec-rainbow.tex", "Rainbow") else: print "Génération du son" diff --git a/stairway.py b/stairway.py index 1c2847c..043d558 100755 --- a/stairway.py +++ b/stairway.py @@ -1,55 +1,59 @@ -#!/usr/bin/env python -# coding: utf8 -# -*- coding: utf-8 -*- - -import argparse -from musique.basicsynth import BasicSequenceur -from musique.exercice import GenerateurExercice -from musique.gamme import GammeTemperee - -parser = argparse.ArgumentParser(description='Génère des documents à partir de la partition de Stairway.') -parser.add_argument('--exercice-spectrogramme', help="Génère un exercice plutôt que le fichier son", dest='exerciceSpectrogramme', action='store_true',default=False) - -args = parser.parse_args() - -gamme = GammeTemperee(117) - - - -stair = [ [ - [gamme.la(2), gamme.croche], -[gamme.do(3), gamme.croche], -[gamme.mi(3), gamme.croche], -[gamme.la(3), gamme.croche], -[[gamme.fad(2), gamme.si(3)], gamme.croche], -[gamme.mi(3), gamme.croche], -[gamme.do(3), gamme.croche], -[gamme.si(3), gamme.croche], -[[gamme.fa(2), gamme.do(4)], gamme.croche], -[gamme.mi(3), gamme.croche], -[gamme.do(3), gamme.croche], -[gamme.do(4), gamme.croche], -[[gamme.fad(2), gamme.fad(3)], gamme.croche], -[gamme.re(3), gamme.croche], -[gamme.la(2), gamme.croche], -[gamme.fa(3), gamme.croche], -[[gamme.fa(2), gamme.mi(3)], gamme.croche], -[gamme.do(3), gamme.croche], -[gamme.la(2), gamme.croche], -[gamme.do(3), gamme.noire], -[gamme.mi(3), gamme.croche], -[gamme.do(3), gamme.croche], -[gamme.la(2), gamme.croche], -[[gamme.si(1), gamme.sol(2), gamme.si(2)], gamme.croche], -[[gamme.la(2), gamme.do(3)], gamme.croche], -[[gamme.la(1), gamme.la(2)], gamme.blanche] - ] ] - -if args.exerciceSpectrogramme: - g = GenerateurExercice(gamme.bpm) - g.genererExerciceSpectrogramme(stair, "exercices/ex-spec-stairway.tex", "Stairway") -else: - print "Génération du son" - s = BasicSequenceur(1, gamme.bpm, 0) - s.genererMelodie(stair, "sons/stairway.wav") - +#!/usr/bin/env python +# coding: utf8 +# -*- coding: utf-8 -*- + +import argparse +from musique.basicsynth import BasicSequenceur +from musique.exercice import GenerateurExercice +from musique.gamme import GammeTemperee + +parser = argparse.ArgumentParser(description='Génère des documents à partir de la partition de Stairway.') +parser.add_argument('--exercice-spectrogramme', help="Génère un exercice plutôt que le fichier son", dest='exerciceSpectrogramme', action='store_true',default=False) +parser.add_argument('--boomwhackers', help="Génère un exercice plutôt que le fichier son", dest='boomwhackers', nargs=1) + +args = parser.parse_args() + +gamme = GammeTemperee(117) + +boomwhackers = "" +if not args.boomwhackers is None: + boomwhackers = args.boomwhackers[0] + +stair = [ [ + [gamme.la(2), gamme.croche], +[gamme.do(3), gamme.croche], +[gamme.mi(3), gamme.croche], +[gamme.la(3), gamme.croche], +[[gamme.fad(2), gamme.si(3)], gamme.croche], +[gamme.mi(3), gamme.croche], +[gamme.do(3), gamme.croche], +[gamme.si(3), gamme.croche], +[[gamme.fa(2), gamme.do(4)], gamme.croche], +[gamme.mi(3), gamme.croche], +[gamme.do(3), gamme.croche], +[gamme.do(4), gamme.croche], +[[gamme.fad(2), gamme.fad(3)], gamme.croche], +[gamme.re(3), gamme.croche], +[gamme.la(2), gamme.croche], +[gamme.fa(3), gamme.croche], +[[gamme.fa(2), gamme.mi(3)], gamme.croche], +[gamme.do(3), gamme.croche], +[gamme.la(2), gamme.croche], +[gamme.do(3), gamme.noire], +[gamme.mi(3), gamme.croche], +[gamme.do(3), gamme.croche], +[gamme.la(2), gamme.croche], +[[gamme.si(1), gamme.sol(2), gamme.si(2)], gamme.croche], +[[gamme.la(2), gamme.do(3)], gamme.croche], +[[gamme.la(1), gamme.la(2)], gamme.blanche] + ] ] + +if args.exerciceSpectrogramme: + g = GenerateurExercice(gamme.bpm) + g.setBoomwhackers(boomwhackers) + g.genererExerciceSpectrogramme(stair, "exercices/ex-spec-stairway.tex", "Stairway") +else: + print "Génération du son" + s = BasicSequenceur(1, gamme.bpm, 0) + s.genererMelodie(stair, "sons/stairway.wav") + diff --git a/starwars.py b/starwars.py index c244543..9e12b70 100755 --- a/starwars.py +++ b/starwars.py @@ -1,63 +1,67 @@ -#!/usr/bin/env python -# coding: utf8 - -import argparse -from musique.basicsynth import BasicSequenceur -from musique.exercice import GenerateurExercice -from musique.gamme import GammeTemperee - -parser = argparse.ArgumentParser(description='Génère des documents à partir de la partition du thème de star wars.') -parser.add_argument('--exercice-spectrogramme', help="Génère un exercice plutôt que le fichier son", dest='exerciceSpectrogramme', action='store_true',default=False) - -args = parser.parse_args() - -gamme = GammeTemperee(150) - - - -starwars = [ - [ [gamme.re(2), gamme.croche], - [gamme.sol(2), gamme.blanche], - [gamme.la(2), gamme.noire], - [gamme.sib(2), gamme.croche], - [gamme.do(3), gamme.croche], - [gamme.sib(2), gamme.blanche], - [gamme.re(2), gamme.noirepointee], - [gamme.re(2), gamme.croche], - [gamme.sol(2), gamme.noirepointee], - [gamme.la(2), gamme.croche], - [gamme.sib(2), gamme.croche], - [gamme.sol(2), gamme.croche], - [gamme.sib(2), gamme.croche], - [gamme.sol(2), gamme.croche], - [gamme.re(3), gamme.croche], - [gamme.do(3), gamme.blanche], - [gamme.re(2), gamme.croche], - [gamme.re(2), gamme.croche], - [gamme.re(2), gamme.croche], - [gamme.sol(2), gamme.noirepointee], - [gamme.la(2), gamme.croche], - [gamme.sib(2), gamme.croche], - [gamme.sol(2), gamme.croche], - [gamme.sib(2), gamme.croche], - [gamme.sol(2), gamme.croche], - [gamme.sol(3), gamme.blanche], - [gamme.sol(2), gamme.noire], - [gamme.sib(2), gamme.croche], - [gamme.la(2), gamme.doublecroche], - [gamme.sol(2), gamme.doublecroche], - [gamme.re(3), gamme.noire], - [gamme.sib(2), gamme.croche], - [gamme.sol(2), gamme.croche], - [gamme.re(2), gamme.noirepointee], - [gamme.re(2), gamme.croche], - [gamme.sol(2), gamme.blanche] - ]] - -if args.exerciceSpectrogramme: - g = GenerateurExercice(gamme.bpm) - g.genererExerciceSpectrogramme(starwars, "exercices/ex-spec-starwars.tex", "thème StarWars") -else: - print "Génération de la version \"piano\"" - s = BasicSequenceur(1, gamme.bpm, 3) - s.genererMelodie(starwars, "sons/starwars.wav") +#!/usr/bin/env python +# coding: utf8 + +import argparse +from musique.basicsynth import BasicSequenceur +from musique.exercice import GenerateurExercice +from musique.gamme import GammeTemperee + +parser = argparse.ArgumentParser(description='Génère des documents à partir de la partition du thème de star wars.') +parser.add_argument('--exercice-spectrogramme', help="Génère un exercice plutôt que le fichier son", dest='exerciceSpectrogramme', action='store_true',default=False) +parser.add_argument('--boomwhackers', help="Génère un exercice plutôt que le fichier son", dest='boomwhackers', nargs=1) +args = parser.parse_args() + +gamme = GammeTemperee(150) + +boomwhackers = "" +if not args.boomwhackers is None: + boomwhackers = args.boomwhackers[0] + + +starwars = [ + [ [gamme.re(2), gamme.croche], + [gamme.sol(2), gamme.blanche], + [gamme.la(2), gamme.noire], + [gamme.sib(2), gamme.croche], + [gamme.do(3), gamme.croche], + [gamme.sib(2), gamme.blanche], + [gamme.re(2), gamme.noirepointee], + [gamme.re(2), gamme.croche], + [gamme.sol(2), gamme.noirepointee], + [gamme.la(2), gamme.croche], + [gamme.sib(2), gamme.croche], + [gamme.sol(2), gamme.croche], + [gamme.sib(2), gamme.croche], + [gamme.sol(2), gamme.croche], + [gamme.re(3), gamme.croche], + [gamme.do(3), gamme.blanche], + [gamme.re(2), gamme.croche], + [gamme.re(2), gamme.croche], + [gamme.re(2), gamme.croche], + [gamme.sol(2), gamme.noirepointee], + [gamme.la(2), gamme.croche], + [gamme.sib(2), gamme.croche], + [gamme.sol(2), gamme.croche], + [gamme.sib(2), gamme.croche], + [gamme.sol(2), gamme.croche], + [gamme.sol(3), gamme.blanche], + [gamme.sol(2), gamme.noire], + [gamme.sib(2), gamme.croche], + [gamme.la(2), gamme.doublecroche], + [gamme.sol(2), gamme.doublecroche], + [gamme.re(3), gamme.noire], + [gamme.sib(2), gamme.croche], + [gamme.sol(2), gamme.croche], + [gamme.re(2), gamme.noirepointee], + [gamme.re(2), gamme.croche], + [gamme.sol(2), gamme.blanche] + ]] + +if args.exerciceSpectrogramme: + g = GenerateurExercice(gamme.bpm) + g.setBoomwhackers(boomwhackers) + g.genererExerciceSpectrogramme(starwars, "exercices/ex-spec-starwars.tex", "thème StarWars") +else: + print "Génération de la version \"piano\"" + s = BasicSequenceur(1, gamme.bpm, 3) + s.genererMelodie(starwars, "sons/starwars.wav") diff --git a/tabac.py b/tabac.py index c1aac52..ef465b5 100755 --- a/tabac.py +++ b/tabac.py @@ -1,85 +1,92 @@ -#!/usr/bin/env python -# coding: utf8 -# -*- coding: utf-8 -*- - -import argparse -from musique.basicsynth import BasicSequenceur -from musique.exercice import GenerateurExercice -from musique.gamme import GammeTemperee - - -parser = argparse.ArgumentParser(description='Génère des documents à partir de la partition "j\'ai du bon tabac".') -parser.add_argument('--full', help="Génère l'ensemble des sons pour illustrer la construction du synthétiseur", dest='full', action='store_true',default=False) -parser.add_argument('--exercice-spectrogramme', help="Génère un exercice plutôt que le fichier son", dest='exerciceSpectrogramme', action='store_true',default=False) - -args = parser.parse_args() - -gamme = GammeTemperee(160) - -tabac = [ [ [gamme.sol(3), gamme.noire], - [gamme.la(3), gamme.noire], - [gamme.si(3), gamme.noire], - [gamme.sol(3), gamme.noire], - [gamme.la(3), gamme.blanche], - [gamme.la(3), gamme.noire], - [gamme.si(3), gamme.noire], - [gamme.do(4), gamme.blanche], - [gamme.do(4), gamme.blanche], - [gamme.si(3), gamme.blanche], - [gamme.si(3), gamme.blanche], - [gamme.sol(3), gamme.noire], - [gamme.la(3), gamme.noire], - [gamme.si(3), gamme.noire], - [gamme.sol(3), gamme.noire], - [gamme.la(3), gamme.blanche], - [gamme.la(3), gamme.noire], - [gamme.si(3), gamme.noire], - [gamme.do(4), gamme.blanche], - [gamme.re(4), gamme.blanche], - [gamme.sol(3), gamme.ronde], - [gamme.re(4), gamme.blanche], - [gamme.re(4), gamme.noire], - [gamme.do(4), gamme.noire], - [gamme.si(3), gamme.blanche], - [gamme.la(3), gamme.noire], - [gamme.si(3), gamme.noire], - [gamme.do(4), gamme.blanche], - [gamme.re(4), gamme.blanche], - [gamme.la(3), gamme.ronde], - [gamme.re(4), gamme.blanche], - [gamme.re(4), gamme.noire], - [gamme.do(4), gamme.noire], - [gamme.si(3), gamme.blanche], - [gamme.la(3), gamme.noire], - [gamme.si(3), gamme.noire], - [gamme.do(4), gamme.blanche], - [gamme.re(4), gamme.blanche], - [gamme.la(3), gamme.ronde] - ] ] - - -s = BasicSequenceur(1, gamme.bpm , 0) - - -if args.full: - print "Génération de multiples versions" - s.setEnveloppeZeroUn(0.3) - s.genererMelodie(tabac, "sons/tabac-01.wav") - - s.setEnveloppeMonteeDescente(0.5) - s.genererMelodie(tabac, "sons/tabac-md.wav") - - s.setEnveloppeFrappeSimple(0.7) - s.nbHarmoniques = 0 - s.genererMelodie(tabac, "sons/tabac-frappe.wav") - -if args.exerciceSpectrogramme: - g = GenerateurExercice(gamme.bpm) - g.genererExerciceSpectrogramme(tabac, "exercices/ex-spec-tabac.tex", "j'ai du bon tabac") -else: - print "Génération de la version \"piano\"" - s.setEnveloppeFrappeSimple(0.7) - s.nbHarmoniques = 5 - s.genererMelodie(tabac, "sons/tabac.wav") - - +#!/usr/bin/env python +# coding: utf8 +# -*- coding: utf-8 -*- + +import argparse +from musique.basicsynth import BasicSequenceur +from musique.exercice import GenerateurExercice +from musique.gamme import GammeTemperee + + +parser = argparse.ArgumentParser(description='Génère des documents à partir de la partition "j\'ai du bon tabac".') +parser.add_argument('--full', help="Génère l'ensemble des sons pour illustrer la construction du synthétiseur", dest='full', action='store_true',default=False) +parser.add_argument('--exercice-spectrogramme', help="Génère un exercice plutôt que le fichier son", dest='exerciceSpectrogramme', action='store_true',default=False) +parser.add_argument('--boomwhackers', help="Génère un exercice plutôt que le fichier son", dest='boomwhackers', nargs=1) + +args = parser.parse_args() + +boomwhackers = "" +if not args.boomwhackers is None: + boomwhackers = args.boomwhackers[0] + + +gamme = GammeTemperee(160) + +tabac = [ [ [gamme.sol(3), gamme.noire], + [gamme.la(3), gamme.noire], + [gamme.si(3), gamme.noire], + [gamme.sol(3), gamme.noire], + [gamme.la(3), gamme.blanche], + [gamme.la(3), gamme.noire], + [gamme.si(3), gamme.noire], + [gamme.do(4), gamme.blanche], + [gamme.do(4), gamme.blanche], + [gamme.si(3), gamme.blanche], + [gamme.si(3), gamme.blanche], + [gamme.sol(3), gamme.noire], + [gamme.la(3), gamme.noire], + [gamme.si(3), gamme.noire], + [gamme.sol(3), gamme.noire], + [gamme.la(3), gamme.blanche], + [gamme.la(3), gamme.noire], + [gamme.si(3), gamme.noire], + [gamme.do(4), gamme.blanche], + [gamme.re(4), gamme.blanche], + [gamme.sol(3), gamme.ronde], + [gamme.re(4), gamme.blanche], + [gamme.re(4), gamme.noire], + [gamme.do(4), gamme.noire], + [gamme.si(3), gamme.blanche], + [gamme.la(3), gamme.noire], + [gamme.si(3), gamme.noire], + [gamme.do(4), gamme.blanche], + [gamme.re(4), gamme.blanche], + [gamme.la(3), gamme.ronde], + [gamme.re(4), gamme.blanche], + [gamme.re(4), gamme.noire], + [gamme.do(4), gamme.noire], + [gamme.si(3), gamme.blanche], + [gamme.la(3), gamme.noire], + [gamme.si(3), gamme.noire], + [gamme.do(4), gamme.blanche], + [gamme.re(4), gamme.blanche], + [gamme.la(3), gamme.ronde] + ] ] + + +s = BasicSequenceur(1, gamme.bpm , 0) + + +if args.full: + print "Génération de multiples versions" + s.setEnveloppeZeroUn(0.3) + s.genererMelodie(tabac, "sons/tabac-01.wav") + + s.setEnveloppeMonteeDescente(0.5) + s.genererMelodie(tabac, "sons/tabac-md.wav") + + s.setEnveloppeFrappeSimple(0.7) + s.nbHarmoniques = 0 + s.genererMelodie(tabac, "sons/tabac-frappe.wav") + +if args.exerciceSpectrogramme: + g = GenerateurExercice(gamme.bpm) + g.setBoomwhackers(boomwhackers) + g.genererExerciceSpectrogramme(tabac, "exercices/ex-spec-tabac.tex", "j'ai du bon tabac") +else: + print "Génération de la version \"piano\"" + s.setEnveloppeFrappeSimple(0.7) + s.nbHarmoniques = 5 + s.genererMelodie(tabac, "sons/tabac.wav") + + -- GitLab