Synth.java
上传用户:tjmskj2
上传日期:2020-08-17
资源大小:577k
文件大小:2k
源码类别:

midi

开发平台:

C/C++

  1. package fluidsynth;
  2. public class Synth
  3. {
  4.     protected int synth = -1;
  5.     static {
  6.         System.loadLibrary("fluidsynth_jni");
  7.     }
  8.     public Synth() throws FluidException {
  9.         synth = newSynth();
  10.         if (synth < 0) {
  11.             throw new FluidException("Low-level initialization of the synthesizer failed");
  12.         }
  13.     }
  14.     protected void finalize() {
  15.         if (synth >= 0) {
  16.             deleteSynth(synth);
  17.             synth = -1;
  18.         }
  19.     }
  20.     public void add(Sample sample, int bank, int preset, int lokey, int hikey) throws FluidException {
  21.         if (add(synth, sample.getSampleNum(), bank, preset, lokey, hikey) != 0) {
  22.             throw new FluidException("Failed to add the sample");
  23.         }
  24.     }
  25.     public void remove(Sample sample, int bank, int preset) throws FluidException {
  26.         if (remove(synth, sample.getSampleNum(), bank, preset) != 0) {
  27.             throw new FluidException("Failed to remove the sample");
  28.         }
  29.     }
  30.     public void loadSoundFont(String filename) throws FluidException {
  31.         if (loadSoundFont(synth, filename) != 0) {
  32.             throw new FluidException("Failed to load the SoundFont");
  33.         }       
  34.     }
  35.     protected native int newSynth();
  36.     protected native void deleteSynth(int synth);
  37.     protected native int add(int synth, int sample, int bank, 
  38.      int preset, int lokey, int hikey);
  39.     protected native int remove(int synth, int sample, int bank, int preset);
  40.     protected native int loadSoundFont(int synth, String filename);
  41. }