X-Git-Url: https://scm.cri.mines-paristech.fr/git/minwii.git/blobdiff_plain/9ee138507f97c1dddedc10cb0d471bc201693e77..dcb9290b9379098e8946d3ef98e4d7998c434105:/src/minwii/synth.py diff --git a/src/minwii/synth.py b/src/minwii/synth.py index f8e8798..f89dcc9 100755 --- a/src/minwii/synth.py +++ b/src/minwii/synth.py @@ -7,6 +7,7 @@ $URL$ """ from os.path import realpath, sep, exists from fluidsynth import Synth as FSynth +from fluidsynth import fluid_settings_setnum from log import console, envLogger, eventLogger import pygame import events @@ -20,14 +21,16 @@ class Synth(FSynth) : - octaviation """ - def __init__(self, gain=0.2, samplerate=44100, sfPath='') : + def __init__(self, gain=0.2, samplerate=44100, sfPath='', driver=None) : FSynth.__init__(self, gain=gain, samplerate=samplerate) if not sfPath : sfPath = SOUND_FONT assert exists(sfPath) + + self._gain = gain - self.start() + self.start(driver=driver) self.fsid = self.sfload(sfPath) self._octaveAjusts = {} console.debug('démarrage du synthétiseur') @@ -37,6 +40,22 @@ class Synth(FSynth) : console.debug('arrêt du synthétiseur') self.delete() + def gain(self, gain) : + self._gain = gain + fluid_settings_setnum(self.settings, 'synth.gain', self._gain) + + def inc_gain(self, step = 0.1) : + self._gain = self._gain + step + if self._gain > 5 : + self._gain = 5 + self.gain(self._gain) + + def dec_gain(self, step = 0.1) : + self._gain = self._gain - step + if self._gain < 0 : + self._gain = 0 + self.gain(self._gain) + def adjust_octave(self, chan, octave) : ''' Abaisse ou élève les notes de n octave