X-Git-Url: https://scm.cri.mines-paristech.fr/git/minwii.git/blobdiff_plain/46f3ffd7fdde386f41020171b5733e55a8e64a85..dcb9290b9379098e8946d3ef98e4d7998c434105:/src/minwii/synth.py diff --git a/src/minwii/synth.py b/src/minwii/synth.py index c1faee7..f89dcc9 100755 --- a/src/minwii/synth.py +++ b/src/minwii/synth.py @@ -7,9 +7,11 @@ $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 +from config import SOUND_FONT class Synth(FSynth) : """ @@ -19,20 +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 = realpath(__file__).split(sep) - sfPath = sfPath[:-1] - sfPath.append('soundfonts') - - sfPath.append('FluidR3_GM.sf2') - sfPath = sep.join(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') @@ -42,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