00001 /* FluidSynth - A Software Synthesizer
00002 *
00003 * Copyright (C) 2003 Peter Hanappe and others.
00004 *
00005 * This library is free software; you can redistribute it and/or
00006 * modify it under the terms of the GNU Library General Public License
00007 * as published by the Free Software Foundation; either version 2 of
00008 * the License, or (at your option) any later version.
00009 *
00010 * This library is distributed in the hope that it will be useful, but
00011 * WITHOUT ANY WARRANTY; without even the implied warranty of
00012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
00013 * Library General Public License for more details.
00014 *
00015 * You should have received a copy of the GNU Library General Public
00016 * License along with this library; if not, write to the Free
00017 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
00018 * 02111-1307, USA
00019 */
00020
00021 #ifndef _FLUIDSYNTH_RAMSFONT_H
00022 #define _FLUIDSYNTH_RAMSFONT_H
00023
00024 #ifdef __cplusplus
00025 extern "C" {
00026 #endif
00027
00028
00029 /********************************************************************************/
00030 /********************************************************************************/
00031 /* ram soundfonts:
00032 October 2002 - Antoine Schmitt
00033
00034 ram soundfonts live in ram. The samples are loaded from files
00035 or from RAM. A minimal API manages a soundFont structure,
00036 with presets, each preset having only one preset-zone, which
00037 instrument has potentially many instrument-zones. No global
00038 zones, and nor generator nor modulator other than the default
00039 ones are permitted. This may be extensible in the future.
00040 */
00041 /********************************************************************************/
00042 /********************************************************************************/
00043
00044 /*
00045 We are not using the sfloader protocol, as we need more arguments
00046 than what it provides.
00047 */
00048
00050 FLUIDSYNTH_API fluid_sfont_t* fluid_ramsfont_create_sfont(void);
00051
00052 /***********************
00053 * ramsfont specific API
00054 ***********************/
00055 FLUIDSYNTH_API int fluid_ramsfont_set_name(fluid_ramsfont_t* sfont, char * name);
00056
00057 /* Creates one instrument zone for the sample inside the preset defined
00058 * by bank/num
00059 * \returns 0 if success
00060 */
00061 FLUIDSYNTH_API
00062 int fluid_ramsfont_add_izone(fluid_ramsfont_t* sfont,
00063 unsigned int bank, unsigned int num, fluid_sample_t* sample,
00064 int lokey, int hikey);
00065
00066 /* Removes the instrument zone corresponding to bank/num and to the sample
00067 * \returns 0 if success
00068 */
00069 FLUIDSYNTH_API
00070 int fluid_ramsfont_remove_izone(fluid_ramsfont_t* sfont,
00071 unsigned int bank, unsigned int num, fluid_sample_t* sample);
00072
00073 /* Sets a generator on an instrument zone
00074 * \returns 0 if success
00075 */
00076 FLUIDSYNTH_API
00077 int fluid_ramsfont_izone_set_gen(fluid_ramsfont_t* sfont,
00078 unsigned int bank, unsigned int num, fluid_sample_t* sample,
00079 int gen_type, float value);
00080
00081 /* Utility : sets the loop start/end values
00082 * \on = 0 or 1; if 0, loopstart and loopend are not used
00083 * \loopstart and loopend are floats, in frames
00084 * \loopstart is counted from frame 0
00085 * \loopend is counted from the last frame, thus is < 0
00086 * \returns 0 if success
00087 */
00088 FLUIDSYNTH_API
00089 int fluid_ramsfont_izone_set_loop(fluid_ramsfont_t* sfont,
00090 unsigned int bank, unsigned int num, fluid_sample_t* sample,
00091 int on, float loopstart, float loopend);
00092
00093 /***************************************
00094 * sample_t specific API for ramsfont
00095 ***************************************/
00096 FLUIDSYNTH_API fluid_sample_t* new_fluid_ramsample(void);
00097 FLUIDSYNTH_API int delete_fluid_ramsample(fluid_sample_t* sample);
00098 FLUIDSYNTH_API int fluid_sample_set_name(fluid_sample_t* sample, char * name);
00099
00100 /* Sets the sound data of the sample
00101 * Warning : if copy_data is FALSE, data should have 8 unused frames at start
00102 * and 8 unused frames at the end.
00103 */
00104 FLUIDSYNTH_API
00105 int fluid_sample_set_sound_data(fluid_sample_t* sample, short *data,
00106 unsigned int nbframes, short copy_data, int rootkey);
00107
00108
00109 #ifdef __cplusplus
00110 }
00111 #endif
00112
00113 #endif /* _FLUIDSYNTH_RAMSFONT_H */
1.2.15