protected void SetCallbacks(SoundFontLoaderCallbacks callbacks)
 {
     callbacks_handle = GCHandle.Alloc(callbacks);
     SfLoader.fluid_sfloader_set_callbacks(handle,
                                           callbacks.Open,
                                           callbacks.Read,
                                           callbacks.Seek,
                                           callbacks.Tell,
                                           callbacks.Close);
 }
 public virtual void Dispose()
 {
     if (callbacks_handle.IsAllocated)
     {
         callbacks_handle.Free();
     }
     if (handle != IntPtr.Zero)
     {
         SfLoader.delete_fluid_sfloader(handle);
     }
     handle = IntPtr.Zero;
 }
        IntPtr handle;         // fluid_sfloader_t*

        public static SoundFontLoader NewDefaultSoundFontLoader(Settings settings)
        {
            return(new SoundFontLoader(SfLoader.new_fluid_defsfloader(settings.Handle)));
        }
 public SoundFontLoader(SoundFontLoaderLoadDelegate load, SoundFontLoaderFreeDelegate free)
     : this(SfLoader.new_fluid_sfloader((loaderHandle, filename) => load(new SoundFontLoader(loaderHandle), filename).Handle, (loaderHandle) => free(new SoundFontLoader(loaderHandle))))
 {
 }
 public AndroidAssetSoundFontLoader(Settings settings, AssetManager assetManager)
     : base(SfLoader.new_fluid_defsfloader(settings.Handle))
 {
     SetCallbacks(new AssetLoaderCallbacks(assetManager));
 }