156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*---------------------------------------------------------------------------- 256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * File: 456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * eas_mdls.h 556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Contents and purpose: 756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Declarations, interfaces, and prototypes for eas_mdls.c 856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Copyright Sonic Network Inc. 2004 107df30109963092559d3760c0661a020f9daf1030The Android Open Source Project 117df30109963092559d3760c0661a020f9daf1030The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 127df30109963092559d3760c0661a020f9daf1030The Android Open Source Project * you may not use this file except in compliance with the License. 137df30109963092559d3760c0661a020f9daf1030The Android Open Source Project * You may obtain a copy of the License at 147df30109963092559d3760c0661a020f9daf1030The Android Open Source Project * 157df30109963092559d3760c0661a020f9daf1030The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 167df30109963092559d3760c0661a020f9daf1030The Android Open Source Project * 177df30109963092559d3760c0661a020f9daf1030The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 187df30109963092559d3760c0661a020f9daf1030The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 197df30109963092559d3760c0661a020f9daf1030The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 207df30109963092559d3760c0661a020f9daf1030The Android Open Source Project * See the License for the specific language governing permissions and 217df30109963092559d3760c0661a020f9daf1030The Android Open Source Project * limitations under the License. 2256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 2356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *---------------------------------------------------------------------------- 2456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks*/ 2556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 2656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#ifndef _EAS_MDLS_H 2756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define _EAS_MDLS_H 2856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 2956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*------------------------------------ 3056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * includes 3156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *------------------------------------ 3256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks*/ 3356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#include "eas_data.h" 3456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 3556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 3656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*------------------------------------ 3756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Some defines for dls.h 3856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *------------------------------------ 3956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks*/ 4056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#ifndef DWORD 4156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define DWORD EAS_I32 4256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define FAR 4356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define SHORT EAS_I16 4456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define USHORT EAS_U16 4556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define LONG EAS_I32 4656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define ULONG EAS_U32 4756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#endif 4856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 4956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 5056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/* GUID struct (call it DLSID in case GUID is defined elsewhere) */ 5156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparkstypedef struct 5256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks{ 5356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks EAS_U32 Data1; 5456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks EAS_U16 Data2; 5556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks EAS_U16 Data3; 5656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks EAS_U8 Data4[8]; 5756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks} DLSID; 5856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 5956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define DEFINE_DLSID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) const DLSID name = { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } } 6056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 6156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*------------------------------------ 6256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * defines 6356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *------------------------------------ 6456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks*/ 6556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 6656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/* maximum sample memory for DLS query support */ 6756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#ifndef MAX_DLS_MEMORY 6856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define MAX_DLS_MEMORY 65536 6956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#endif 7056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 7156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/* size of conditional chunk stack */ 7256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#ifndef CDL_STACK_SIZE 7356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define CDL_STACK_SIZE 8 7456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#endif 7556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 7656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/* size of read buffer for sample conversion */ 7756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#ifndef SAMPLE_CONVERT_CHUNK_SIZE 7856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define SAMPLE_CONVERT_CHUNK_SIZE 32 7956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#endif 8056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 8156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 8256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define ZERO_TIME_IN_CENTS -32768 8356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 8456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/* Pan calculation macros */ 8556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define PAN_CONVERSION_FACTOR 4129 8656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define MAX_PAN_VALUE 63 8756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define MIN_PAN_VALUE -63 8856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 8956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/* multiplier to convert time cents to 10-bit fraction log for EAS_LogToLinear16 */ 9056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define TIME_CENTS_TO_LOG2 27962 9156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 9256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/* conversion factor sustain level from percent to exponent for LogToLinear16 */ 9356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define SUSTAIN_LOG_CONVERSION_FACTOR 536871 9456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define SUSTAIN_LOG_CONVERSION_SHIFT 15 9556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 9656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/* conversion factor sustain level from percent to EG full scale */ 9756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define SUSTAIN_LINEAR_CONVERSION_FACTOR 1073709 9856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 9956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/* conversion factor to convert frame period to decay rate */ 10056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define DECAY_CONVERSION_FACTOR -16 10156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 10256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*---------------------------------------------------------------------------- 10356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * These macros define the various characteristics of the defined sample rates 10456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *---------------------------------------------------------------------------- 10556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * DLS_ATTACK_TIME_CONVERT log offset for conversion from time cents to attack rate 10656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * DLS_LFO_FREQUENCY_CONVERT pitch-cents offset for LFO frequency conversion 10756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *---------------------------------------------------------------------------- 10856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks*/ 10956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 11056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#if defined (_SAMPLE_RATE_8000) 11156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define DLS_RATE_CONVERT -9559 11256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define DLS_LFO_FREQUENCY_CONVERT 5921 11356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 11456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#elif defined (_SAMPLE_RATE_16000) 11556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define DLS_RATE_CONVERT -9559 11656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define DLS_LFO_FREQUENCY_CONVERT 5921 11756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 11856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#elif defined (_SAMPLE_RATE_20000) 11956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define DLS_RATE_CONVERT -8745 12056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define DLS_LFO_FREQUENCY_CONVERT 5108 12156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 12256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#elif defined (_SAMPLE_RATE_22050) 12356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define DLS_RATE_CONVERT -8914 12456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define DLS_LFO_FREQUENCY_CONVERT 5277 12556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 12656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#elif defined (_SAMPLE_RATE_24000) 12756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define DLS_RATE_CONVERT -9061 12856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define DLS_LFO_FREQUENCY_CONVERT 5423 12956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 13056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#elif defined (_SAMPLE_RATE_32000) 13156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define DLS_RATE_CONVERT -9559 13256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define DLS_LFO_FREQUENCY_CONVERT 5921 13356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 13456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#elif defined (_SAMPLE_RATE_44100) 13556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define DLS_RATE_CONVERT -8914 13656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define DLS_LFO_FREQUENCY_CONVERT 5277 13756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 13856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#elif defined (_SAMPLE_RATE_48000) 13956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define DLS_RATE_CONVERT -9061 14056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define DLS_LFO_FREQUENCY_CONVERT 5423 14156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 14256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#else 14356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#error "_SAMPLE_RATE_XXXXX must be defined to valid rate" 14456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#endif 14556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 14656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/* 14756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * FILTER_Q_CONVERSION_FACTOR convers the 0.1dB steps in the DLS 14856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * file to our internal 0.75 dB steps. The value is calculated 14956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * as follows: 15056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 15156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 32768 / (10 * <step-size in dB>) 15256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 15356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * FILTER_RESONANCE_NUM_ENTRIES is the number of entries in the table 15456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks*/ 15556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define FILTER_Q_CONVERSION_FACTOR 4369 15656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define FILTER_RESONANCE_NUM_ENTRIES 31 15756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 15856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/* 15956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Multiplier to convert DLS gain units (10ths of a dB) to a 16056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * power-of-two exponent for conversion to linear gain using our 16156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * piece-wise linear approximator. Note that we ignore the lower 16256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 16-bits of the DLS gain value. The result is a 10-bit fraction 16356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * that works with the EAS_LogToLinear16 function. 16456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 16556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * DLS_GAIN_FACTOR = (2^18) / (200 * log10(2)) 16656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks */ 16756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define DLS_GAIN_FACTOR 4354 16856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define DLS_GAIN_SHIFT 8 16956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 17056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/* 17156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Reciprocal of 10 for quick divide by 10's 17256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 17356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * DLS_GAIN_FACTOR = (2^18) / (200 * log10(2)) 17456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks */ 17556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define DLS_DIV_10_FACTOR 3277 17656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define DLS_DIV_10_SHIFT 16 17756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 17856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/* 17956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Multiplier to convert DLS time cents units to a power-of-two 18056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * exponent for conversion to absolute time units using our 18156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * piece-wise linear approximator. 18256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 18356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * DLS_TIME_FACTOR = (2^22) / 1200 18456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks */ 18556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define DLS_TIME_FACTOR 3495 18656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define DLS_TIME_SHIFT 22 18756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 18856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 18956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/* LFO limits */ 19056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define MAX_LFO_FREQUENCY_IN_HERTZ 20 19156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define MIN_LFO_FREQUENCY_IN_HERTZ 0.1 19256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define MAX_LFO_FREQUENCY_IN_PITCHCENTS 1549 19356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define MIN_LFO_FREQUENCY_IN_PITCHCENTS -7624 19456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define MAX_LFO_AMPLITUDE_DEPTH 12 /* in dB, DLS2.1 p 31*/ 19556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define MIN_LFO_AMPLITUDE_DEPTH -12 /* in dB, DLS2.1 p 31*/ 19656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 19756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/* add to pitch cents before pow(2.0, n) to convert to frequency */ 19856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define ABSOLUTE_PITCH_BIAS 238395828 19956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 20056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define A5_PITCH_OFFSET 6900 20156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 20256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/* 20356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave SparksCHUNK_TYPE is a macro that converts the 4 input args into a 32-bit int 20456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparkswhere 20556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparksargument a is placed at the MSB location and 20656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparksargument d is placed at the LSB location. 20756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave SparksThis is useful for determining the DLS chunk types 20856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks*/ 20956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define CHUNK_TYPE(a,b,c,d) ( \ 21056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks ( ((EAS_U32)(a) & 0xFF) << 24 ) \ 21156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks + ( ((EAS_U32)(b) & 0xFF) << 16 ) \ 21256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks + ( ((EAS_U32)(c) & 0xFF) << 8 ) \ 21356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks + ( ((EAS_U32)(d) & 0xFF) ) ) 21456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 21556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define CHUNK_RIFF CHUNK_TYPE('R','I','F','F') 21656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define CHUNK_DLS CHUNK_TYPE('D','L','S',' ') 21756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define CHUNK_CDL CHUNK_TYPE('c','d','l',' ') 21856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define CHUNK_VERS CHUNK_TYPE('v','e','r','s') 21956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define CHUNK_DLID CHUNK_TYPE('d','l','i','d') 22056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define CHUNK_LIST CHUNK_TYPE('L','I','S','T') 22156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define CHUNK_COLH CHUNK_TYPE('c','o','l','h') 22256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define CHUNK_LINS CHUNK_TYPE('l','i','n','s') 22356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define CHUNK_PTBL CHUNK_TYPE('p','t','b','l') 22456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define CHUNK_WVPL CHUNK_TYPE('w','v','p','l') 22556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define CHUNK_INFO CHUNK_TYPE('I','N','F','O') 22656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define CHUNK_INAM CHUNK_TYPE('I','N','A','M') 22756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define CHUNK_INS CHUNK_TYPE('i','n','s',' ') 22856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define CHUNK_INSH CHUNK_TYPE('i','n','s','h') 22956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define CHUNK_LRGN CHUNK_TYPE('l','r','g','n') 23056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define CHUNK_RGN CHUNK_TYPE('r','g','n',' ') 23156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define CHUNK_RGN2 CHUNK_TYPE('r','g','n','2') 23256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define CHUNK_RGNH CHUNK_TYPE('r','g','n','h') 23356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define CHUNK_WSMP CHUNK_TYPE('w','s','m','p') 23456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define CHUNK_WLNK CHUNK_TYPE('w','l','n','k') 23556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define CHUNK_LART CHUNK_TYPE('l','a','r','t') 23656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define CHUNK_LAR2 CHUNK_TYPE('l','a','r','2') 23756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define CHUNK_ART1 CHUNK_TYPE('a','r','t','1') 23856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define CHUNK_ART2 CHUNK_TYPE('a','r','t','2') 23956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define CHUNK_WAVE CHUNK_TYPE('w','a','v','e') 24056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define CHUNK_FMT CHUNK_TYPE('f','m','t',' ') 24156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define CHUNK_DATA CHUNK_TYPE('d','a','t','a') 24256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define CHUNK_DMPR CHUNK_TYPE('d','m','p','r') 24356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 24456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 24556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define WAVE_FORMAT_PCM 0x0001 /* Microsoft PCM format, see DLS2.1 p60 */ 24656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define WAVE_FORMAT_EXTENSIBLE 0xffff 24756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 24856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/* defines for wave table structures */ 24956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 25056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/* initialize each articulation structure to a harmless state */ 25156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/* change art values after we've determined EAS internals */ 25256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define DEFAULT_DLS_FILTER_CUTOFF_FREQUENCY 0x7FFF /* DLS2.1, p 31 means leave filter off */ 25356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 25456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/**********/ 25556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 25656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/* define the waves that we expect to generate instead of store */ 25756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/* NOTE: our comparison routine converts the input string 25856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparksto lowercase, so the following comparison values should all 25956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparksbe in lowercase. 26056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks*/ 26156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define STRING_NOISE "noise" 26256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 26356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 26456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*------------------------------------ 26556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * type definitions 26656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *------------------------------------ 26756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks*/ 26856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#ifdef _STANDALONE_CONVERTER 26956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparkstypedef struct s_dls_params 27056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks{ 27156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks EAS_INT sampleRate; 27256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks EAS_INT samplesPerFrame; 27356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks EAS_INT bitDepth; 27456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks double ditherLevel; 27556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks double ditherFilterCoeff; 27656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks EAS_BOOL compatibility; 27756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks EAS_BOOL encodeADPCM; 27856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks} S_DLS_PARAMS; 27956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#endif 28056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 28156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 28256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/* function prototypes */ 28356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave SparksEAS_RESULT DLSParser (EAS_HW_DATA_HANDLE hwInstData, EAS_FILE_HANDLE fileHandle, EAS_I32 offset, S_DLS **pDLS); 28456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave SparksEAS_RESULT DLSCleanup (EAS_HW_DATA_HANDLE hwInstData, S_DLS *pDLS); 28556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparksvoid DLSAddRef (S_DLS *pDLS); 28656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave SparksEAS_I16 ConvertDelay (EAS_I32 timeCents); 28756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave SparksEAS_I16 ConvertRate (EAS_I32 timeCents); 28856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 28956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 29056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#ifdef _STANDALONE_CONVERTER 29156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparksvoid DLSConvParams (S_DLS_PARAMS *pParams, EAS_BOOL set); 29256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#endif 29356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 29456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#endif 29556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 296