#!/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")