Skip to content
Snippets Groups Projects
Commit 2f02d3e5 authored by Jean-Marie Favreau's avatar Jean-Marie Favreau
Browse files

Début de construction d'un module pour le synthétiseur

parent e19bd9b7
No related branches found
No related tags found
No related merge requests found
#!/usr/bin/env python
# coding: utf8
from basicsynth import BasicSequenceur
from musique.basicsynth import BasicSequenceur
......
#!/usr/bin/env python
# coding: utf8
from basicsynth import BasicSequenceur
from musique.basicsynth import BasicSequenceur
......
#!/usr/bin/env python
# coding: utf8
from basicsynth import BasicSequenceur
from musique.basicsynth import BasicSequenceur
......
......@@ -2,7 +2,7 @@
# coding: utf8
# -*- coding: utf-8 -*-
from basicsynth import BasicSequenceur
from musique.basicsynth import BasicSequenceur
......
......@@ -2,7 +2,7 @@
# coding: utf8
# -*- coding: utf-8 -*-
from basicsynth import BasicSequenceur
from musique.basicsynth import BasicSequenceur
......
......@@ -2,7 +2,7 @@
# coding: utf8
# -*- coding: utf-8 -*-
from basicsynth import BasicSequenceur
from musique.basicsynth import BasicSequenceur
s = BasicSequenceur(1, 117, 0.7, 0)
......
......@@ -2,7 +2,7 @@
# coding: utf8
# -*- coding: utf-8 -*-
from basicsynth import BasicSequenceur
from musique.basicsynth import BasicSequenceur
......
......@@ -10,6 +10,8 @@ import tempfile
import os
import pickle
from gamme import GammeTemperee
# (C) Pascal Lafourcade, Jean-Marie Favreau
# base sur une idee originale de Fabrice Sincere et Jean-Claude Meilland
......@@ -460,104 +462,6 @@ class Partition:
return result
# la classe GammeTemperee décrit les notes de la gamme dite tempérée. Il s'agit du système d'accord
# utilisé par les pianos, qui divise l'octave en intervalles chromatiques égaux.
# Cette classe décrit également les durées telles qu'elles sont notées sur les partitions (noires,
# blanches, etc), suivant un battement par minutes donné.
class GammeTemperee:
def __init__(self, bpm = 120):
self.setBPM(bpm)
# Definition de chacune des notes du clavier (leur frequence).
# Paramètre:
# * octave: l'octave où le son est joue. L'octave est comprise entre 0 et 7.
# Plus cette valeur est petite, plus le son est grave.
def do(self, octave=2):
return 4186.01 / (2 ** (7-octave))
def dod(self, octave=2):
return 4434.92 / (2 ** (7-octave))
def reb(self, octave=2):
return self.dod(octave)
def re(self, octave=2):
return 4698.64 / (2 ** (7-octave))
def red(self, octave=2):
return 4978.03 / (2 ** (7-octave))
def mib(self, octave=2):
return self.red(octave)
def mi(self, octave=2):
return 5274.04 / (2 ** (7-octave))
def fa(self, octave=2):
return 5587.65 / (2 ** (7-octave))
def fad(self, octave=2):
return 5919.91 / (2 ** (7-octave))
def solb(self, octave=2):
return self.fad(octave)
def sol(self, octave=2):
return 6271.93 / (2 ** (7-octave))
def sold(self, octave=2):
return 6644.88 / (2 ** (7-octave))
def lab(self, octave=2):
return self.sold(octave)
def la(self, octave=2):
return 7040.00 / (2 ** (7-octave))
def lad(self, octave=2):
return 7458.62 / (2 ** (7-octave))
def sib(self, octave=2):
return self.lad(octave)
def si(self, octave=2):
return 7902.13 / (2 ** (7-octave))
# definition de la frequence du silence
def silence():
return 0.
# definition des pauses (un silence joue pendant une duree donnee)
def pause(self):
return [ self.silence(), self.ronde ]
def demiePause(self):
return [ self.silence(), self.blanche ]
def soupir(self):
return [ self.silence(), self.noire ]
def demiSoupir(self):
return [ self.silence(), self.croche ]
def quartDeSoupir(self):
return [ self.silence(), self.doublecroche ]
# Etant donne un nombre de battements par minute, cette fonction fixe la duree
# de chacune des notes
# Paramètre:
# * bpm: nombre de battements par minute (= nombre de noires par minute)
def setBPM(self, bpm):
self.bpm = bpm
self.noire = 60. / self.bpm
self.croche = self.noire / 2
self.doublecroche = self.croche / 2
self.triplecroche = self.croche / 3
self.blanche = 2 * self.noire
self.ronde = 2 * self.blanche
self.carree = 2 * self.ronde
self.noirepointee = self.noire * 1.5
self.crochepointee = self.croche * 1.5
self.doublecrochepointee = self.doublecroche * 1.5
self.blanchepointee = self.blanche * 1.5
self.rondepointee = self.ronde * 1.5
self.carreepointee = self.carree * 1.5
# d'après wikipédia, «le triolet est une division exceptionnelle du temps, formée d'un
#groupe de trois figures égales dont la somme équivaut à deux figures identiques dans un
# temps normalement binaire. »
def triolet(self, duree):
return duree * 2 / 3
# La class BasicSequenceur decrit un sequenceur très simple, utilisant les notes
......
# coding: utf8
# -*- coding: utf-8 -*-
# la classe GammeTemperee décrit les notes de la gamme dite tempérée. Il s'agit du système d'accord
# utilisé par les pianos, qui divise l'octave en intervalles chromatiques égaux.
# Cette classe décrit également les durées telles qu'elles sont notées sur les partitions (noires,
# blanches, etc), suivant un battement par minutes donné.
class GammeTemperee:
def __init__(self, bpm = 120):
self.setBPM(bpm)
# Definition de chacune des notes du clavier (leur frequence).
# Paramètre:
# * octave: l'octave où le son est joue. L'octave est comprise entre 0 et 7.
# Plus cette valeur est petite, plus le son est grave.
def do(self, octave=2):
return 4186.01 / (2 ** (7-octave))
def dod(self, octave=2):
return 4434.92 / (2 ** (7-octave))
def reb(self, octave=2):
return self.dod(octave)
def re(self, octave=2):
return 4698.64 / (2 ** (7-octave))
def red(self, octave=2):
return 4978.03 / (2 ** (7-octave))
def mib(self, octave=2):
return self.red(octave)
def mi(self, octave=2):
return 5274.04 / (2 ** (7-octave))
def fa(self, octave=2):
return 5587.65 / (2 ** (7-octave))
def fad(self, octave=2):
return 5919.91 / (2 ** (7-octave))
def solb(self, octave=2):
return self.fad(octave)
def sol(self, octave=2):
return 6271.93 / (2 ** (7-octave))
def sold(self, octave=2):
return 6644.88 / (2 ** (7-octave))
def lab(self, octave=2):
return self.sold(octave)
def la(self, octave=2):
return 7040.00 / (2 ** (7-octave))
def lad(self, octave=2):
return 7458.62 / (2 ** (7-octave))
def sib(self, octave=2):
return self.lad(octave)
def si(self, octave=2):
return 7902.13 / (2 ** (7-octave))
# definition de la frequence du silence
def silence():
return 0.
# definition des pauses (un silence joue pendant une duree donnee)
def pause(self):
return [ self.silence(), self.ronde ]
def demiePause(self):
return [ self.silence(), self.blanche ]
def soupir(self):
return [ self.silence(), self.noire ]
def demiSoupir(self):
return [ self.silence(), self.croche ]
def quartDeSoupir(self):
return [ self.silence(), self.doublecroche ]
# Etant donne un nombre de battements par minute, cette fonction fixe la duree
# de chacune des notes
# Paramètre:
# * bpm: nombre de battements par minute (= nombre de noires par minute)
def setBPM(self, bpm):
self.bpm = bpm
self.noire = 60. / self.bpm
self.croche = self.noire / 2
self.doublecroche = self.croche / 2
self.triplecroche = self.croche / 3
self.blanche = 2 * self.noire
self.ronde = 2 * self.blanche
self.carree = 2 * self.ronde
self.noirepointee = self.noire * 1.5
self.crochepointee = self.croche * 1.5
self.doublecrochepointee = self.doublecroche * 1.5
self.blanchepointee = self.blanche * 1.5
self.rondepointee = self.ronde * 1.5
self.carreepointee = self.carree * 1.5
# d'après wikipédia, «le triolet est une division exceptionnelle du temps, formée d'un
#groupe de trois figures égales dont la somme équivaut à deux figures identiques dans un
# temps normalement binaire. »
def triolet(self, duree):
return duree * 2 / 3
......@@ -2,7 +2,7 @@
# coding: utf8
# -*- coding: utf-8 -*-
from basicsynth import BasicSequenceur
from musique.basicsynth import BasicSequenceur
s = BasicSequenceur(1, 130, 0.7, 0)
......
......@@ -2,7 +2,7 @@
# coding: utf8
# -*- coding: utf-8 -*-
from basicsynth import BasicSequenceur
from musique.basicsynth import BasicSequenceur
s = BasicSequenceur(1, 117, 0.7, 0)
......
#!/usr/bin/env python
# coding: utf8
from basicsynth import BasicSequenceur
from musique.basicsynth import BasicSequenceur
......
......@@ -2,7 +2,7 @@
# coding: utf8
# -*- coding: utf-8 -*-
from basicsynth import BasicSequenceur
from musique.basicsynth import BasicSequenceur
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment