12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- /*----------------------------------------------------------------------------
- *
- * File:
- * eas_fmsynth.h
- *
- * Contents and purpose:
- * Implements the FM synthesizer functions.
- *
- * Copyright Sonic Network Inc. 2004
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- *----------------------------------------------------------------------------
- * Revision Control:
- * $Revision: 90 $
- * $Date: 2006-07-11 20:18:13 -0700 (Tue, 11 Jul 2006) $
- *----------------------------------------------------------------------------
- */
- #ifndef fmsynthH
- #define fmsynthH
- #include "eas_data.h"
- #if defined (_FM_SYNTH)
- /* FM envelope state */
- typedef enum {
- eFMEnvelopeStateAttack = 0,
- eFMEnvelopeStateDecay,
- eFMEnvelopeStateSustain,
- eFMEnvelopeStateRelease,
- eFMEnvelopeStateMuted,
- eFMEnvelopeStateInvalid /* should never be in this state! */
- } E_FM_ENVELOPE_STATE;
- /*------------------------------------
- * S_OPERATOR data structure
- *------------------------------------
- */
- typedef struct s_operator_tag
- {
- EAS_I16 pitch; /* operator pitch in cents */
- EAS_U16 envGain; /* envelope target */
- EAS_I16 baseGain; /* patch gain (inc. vel & key scale) */
- EAS_U16 outputGain; /* current output gain */
- EAS_U16 envRate; /* calculated envelope rate */
- EAS_U8 envState; /* envelope state */
- EAS_U8 pad; /* pad to 16-bits */
- } S_OPERATOR;
- #endif
- typedef struct s_fm_voice_tag
- {
- S_OPERATOR oper[4]; /* operator data */
- EAS_I16 voiceGain; /* LFO + channel parameters */
- EAS_U16 lfoPhase; /* LFO current phase */
- EAS_I16 lfoValue; /* LFO current value */
- EAS_U16 lfoDelay; /* keeps track of elapsed delay time */
- EAS_I8 pan; /* stereo pan value (-64 to +64) */
- EAS_I8 pad; /* reserved to maintain alignment */
- } S_FM_VOICE;
- #ifdef _FM_EDITOR
- extern S_FM_REGION newPatch;
- extern S_FM_REGION OriginalPatch;
- #endif
- extern EAS_U32 freqTable[];
- #endif
|