Main Page   Data Structures   File List   Data Fields   Globals  

ramsfont.h

Go to the documentation of this file.
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 */

Generated on Thu Mar 13 19:09:34 2003 for libfluidsynth by doxygen1.2.15