blob: 67457f8462cce9f36ba6caff7306bceec33d2c62 [file] [log] [blame]
/*
* Copyright (C) 2008-2009 SVOX AG, Baslerstr. 30, 8048 Zuerich, Switzerland
*
* 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.
*/
/**
* @file picodsp.h
*
* Include file for DSP related data types and constants in Pico
*
* Copyright (C) 2008-2009 SVOX AG, Baslerstr. 30, 8048 Zuerich, Switzerland
* All rights reserved.
*
* History:
* - 2009-04-20 -- initial version
*
*/
#ifndef PICODSP_H_
#define PICODSP_H_
#ifdef __cplusplus
extern "C" {
#endif
#if 0
}
#endif
/*----------------------------CONSTANTS ----------------------*/
/*Normalization factors used at the start and at the end of the sig*/
#define PICODSP_START_FLOAT_NORM 0.41f
#define PICODSP_ENVSPEC_K1 0.5f
#define PICODSP_ENVSPEC_K2 2
#define PICODSP_GETEXC_K1 1024
#define PICODSP_FIXRESP_NORM 4096.0f
#define PICODSP_END_FLOAT_NORM 1.5f*16.0f
#define PICODSP_FIX_SCALE1 0x4000000
#define PICODSP_FIX_SCALE2 0x4000
#define PICODSP_SHIFT_FACT1 10
#define PICODSP_SHIFT_FACT2 16
#define PICODSP_SHIFT_FACT3 12
#define PICODSP_SHIFT_FACT4 1
#define PICODSP_SHIFT_FACT5 18
#define PICODSP_SHIFT_FACT6 9
#define PICOSIG_NORM1 9.14f /100.0f /*normalization factor*/
#define PICOSIG_MAXAMP (32767)
#define PICOSIG_MINAMP (-32768)
#define PICODSP_M_PI 3.14159265358979323846
#define PICODSP_MAX_EX 32
#define PICODSP_WGT_SHIFT (0x20000000)
#define PICODSP_N_RAND_TABLE (760)
#define PICODSP_COS_TABLE_LEN (512)
#define PICODSP_COS_TABLE_LEN2 (1024)
#define PICODSP_COS_TABLE_LEN4 (2048)
#define PICODSP_PI_SHIFT (4) /* -log2(PICODSP_COS_TABLE_LEN2/0x4000) */
#define PICODSP_V_CUTOFF_FREQ 4500
#define PICODSP_UV_CUTOFF_FREQ 300
#define PICODSP_SAMP_FREQ 16000
#define PICODSP_FREQ_WARP_FACT 0.42f
/*----------------------------CEP/PHASE CONSTANTS----------------------------*/
#define PICODSP_CEPORDER 25
#define PICODSP_PHASEORDER 72
#define CEPST_BUFF_SIZE 3
#define PHASE_BUFF_SIZE 5
/*----------------------------FFT CONSTANTS----------------------------*/
#define PICODSP_FFTSIZE (256)
#define PICODSP_H_FFTSIZE (PICODSP_FFTSIZE/2)
#define PICODSP_DISPLACE PICODSP_FFTSIZE/4
#define PICODSP_H_FFTSIZE (PICODSP_FFTSIZE/2)
#define PICODSP_HFFTSIZE_P1 (PICODSP_H_FFTSIZE+1)
#define FAST_DEVICE(aCount, aAction) \
{ \
int count_ = (aCount); \
int times_ = (count_ + 7) >> 3; \
switch (count_ & 7){ \
case 0: do { aAction; \
case 7: aAction; \
case 6: aAction; \
case 5: aAction; \
case 4: aAction; \
case 3: aAction; \
case 2: aAction; \
case 1: aAction; \
} while (--times_ > 0); \
} \
}
/*------------------------------------------------------------------------------------------
Fast Exp Approximation now remapped to a function in picoos
-----------------------------------------------------------------------------------------*/
#define EXP(y) picoos_quick_exp(y)
#ifdef __cplusplus
}
#endif
#endif /*PICODSP_H_*/