112 lines
3.5 KiB
C
112 lines
3.5 KiB
C
/*
|
|
* 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_*/
|