Path: blob/master/libs/fluidsynth/src/synth/fluid_mod.h
4396 views
/* FluidSynth - A Software Synthesizer1*2* Copyright (C) 2003 Peter Hanappe and others.3*4* This library is free software; you can redistribute it and/or5* modify it under the terms of the GNU Lesser General Public License6* as published by the Free Software Foundation; either version 2.1 of7* the License, or (at your option) any later version.8*9* This library is distributed in the hope that it will be useful, but10* WITHOUT ANY WARRANTY; without even the implied warranty of11* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU12* Lesser General Public License for more details.13*14* You should have received a copy of the GNU Lesser General Public15* License along with this library; if not, write to the Free16* Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA17* 02110-1301, USA18*/1920#ifndef _FLUID_MOD_H21#define _FLUID_MOD_H2223#include "fluidsynth_priv.h"24#include "fluid_conv.h"2526/*27* Modulator structure. See SoundFont 2.04 PDF section 8.2.28*/29struct _fluid_mod_t30{31unsigned char dest; /**< Destination generator to control */32unsigned char src1; /**< Source controller 1 */33unsigned char flags1; /**< Source controller 1 flags */34unsigned char src2; /**< Source controller 2 */35unsigned char flags2; /**< Source controller 2 flags */36unsigned char trans; /**< Output transform flag */37double amount; /**< Multiplier amount */38/* The 'next' field allows to link modulators into a list. It is39* not used in fluid_voice.c, there each voice allocates memory for a40* fixed number of modulators. Since there may be a huge number of41* different zones, this is more efficient.42*/43fluid_mod_t *next;44};4546fluid_real_t fluid_mod_get_value(fluid_mod_t *mod, fluid_voice_t *voice);47int fluid_mod_check_sources(const fluid_mod_t *mod, char *name);48fluid_real_t fluid_mod_transform_source_value(fluid_real_t val, unsigned char mod_flags, const fluid_real_t range);495051#ifdef DEBUG52void fluid_dump_modulator(fluid_mod_t *mod);53#endif545556#endif /* _FLUID_MOD_H */575859