code: def start(self, driver=None, device=None, midi_driver=None):
          
          if driver is not None:
              assert (driver in ['alsa', 'oss', 'jack', 'portaudio', 'sndmgr', 'coreaudio', 'Direct Sound', 'pulseaudio']) 
              fluid_settings_setstr(self.settings, b'audio.driver', driver.encode())
              if device is not None:
                  fluid_settings_setstr(self.settings, str('audio.%s.device' % (driver)).encode(), device.encode())
              self.audio_driver = new_fluid_audio_driver(self.settings, self.synth)
          if midi_driver is not None:
              assert (midi_driver in ['alsa_seq', 'alsa_raw', 'oss', 'winmidi', 'midishare', 'coremidi'])
              fluid_settings_setstr(self.settings, b'midi.driver', midi_driver.encode())
              self.router = new_fluid_midi_router(self.settings, fluid_synth_handle_midi_event, self.synth)
              fluid_synth_set_midi_router(self.synth, self.router)
              self.midi_driver = new_fluid_midi_driver(self.settings, fluid_midi_router_handle_midi_event, self.router)
docs: Start audio output driver in separate background thread
  
          Call this function any time after creating the Synth object.
          If you don't call this function, use get_samples() to generate
          samples.
  
          Optional keyword argument:
          driver : which audio driver to use for output
          Possible choices:
          'alsa', 'oss', 'jack', 'portaudio'
          'sndmgr', 'coreaudio', 'Direct Sound'
          device: the device to use for audio output
  
          Not all drivers will be available for every platform, it
          depends on which drivers were compiled into FluidSynth for
          your platform.