"""
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) :
"""
- 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')
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