1/* 2 * Copyright (C) 2008-2009 SVOX AG, Baslerstr. 30, 8048 Zuerich, Switzerland 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16/** 17 * @file picodsp.h 18 * 19 * Include file for DSP related data types and constants in Pico 20 * 21 * Copyright (C) 2008-2009 SVOX AG, Baslerstr. 30, 8048 Zuerich, Switzerland 22 * All rights reserved. 23 * 24 * History: 25 * - 2009-04-20 -- initial version 26 * 27 */ 28 29#ifndef PICODSP_H_ 30#define PICODSP_H_ 31 32#ifdef __cplusplus 33extern "C" { 34#endif 35#if 0 36} 37#endif 38 39/*----------------------------CONSTANTS ----------------------*/ 40/*Normalization factors used at the start and at the end of the sig*/ 41#define PICODSP_START_FLOAT_NORM 0.41f 42#define PICODSP_ENVSPEC_K1 0.5f 43#define PICODSP_ENVSPEC_K2 2 44#define PICODSP_GETEXC_K1 1024 45#define PICODSP_FIXRESP_NORM 4096.0f 46#define PICODSP_END_FLOAT_NORM 1.5f*16.0f 47#define PICODSP_FIX_SCALE1 0x4000000 48#define PICODSP_FIX_SCALE2 0x4000 49#define PICODSP_SHIFT_FACT1 10 50#define PICODSP_SHIFT_FACT2 16 51#define PICODSP_SHIFT_FACT3 12 52#define PICODSP_SHIFT_FACT4 1 53#define PICODSP_SHIFT_FACT5 18 54#define PICODSP_SHIFT_FACT6 9 55#define PICOSIG_NORM1 9.14f /100.0f /*normalization factor*/ 56#define PICOSIG_MAXAMP (32767) 57#define PICOSIG_MINAMP (-32768) 58#define PICODSP_M_PI 3.14159265358979323846 59#define PICODSP_MAX_EX 32 60#define PICODSP_WGT_SHIFT (0x20000000) 61#define PICODSP_N_RAND_TABLE (760) 62#define PICODSP_COS_TABLE_LEN (512) 63#define PICODSP_COS_TABLE_LEN2 (1024) 64#define PICODSP_COS_TABLE_LEN4 (2048) 65#define PICODSP_PI_SHIFT (4) /* -log2(PICODSP_COS_TABLE_LEN2/0x4000) */ 66 67#define PICODSP_V_CUTOFF_FREQ 4500 68#define PICODSP_UV_CUTOFF_FREQ 300 69#define PICODSP_SAMP_FREQ 16000 70#define PICODSP_FREQ_WARP_FACT 0.42f 71 72/*----------------------------CEP/PHASE CONSTANTS----------------------------*/ 73#define PICODSP_CEPORDER 25 74#define PICODSP_PHASEORDER 72 75#define CEPST_BUFF_SIZE 3 76#define PHASE_BUFF_SIZE 5 77/*----------------------------FFT CONSTANTS----------------------------*/ 78#define PICODSP_FFTSIZE (256) 79 80#define PICODSP_H_FFTSIZE (PICODSP_FFTSIZE/2) 81 82#define PICODSP_DISPLACE PICODSP_FFTSIZE/4 83 84#define PICODSP_H_FFTSIZE (PICODSP_FFTSIZE/2) 85#define PICODSP_HFFTSIZE_P1 (PICODSP_H_FFTSIZE+1) 86 87#define FAST_DEVICE(aCount, aAction) \ 88{ \ 89 int count_ = (aCount); \ 90 int times_ = (count_ + 7) >> 3; \ 91 switch (count_ & 7){ \ 92 case 0: do { aAction; \ 93 case 7: aAction; \ 94 case 6: aAction; \ 95 case 5: aAction; \ 96 case 4: aAction; \ 97 case 3: aAction; \ 98 case 2: aAction; \ 99 case 1: aAction; \ 100 } while (--times_ > 0); \ 101} \ 102} 103/*------------------------------------------------------------------------------------------ 104 Fast Exp Approximation now remapped to a function in picoos 105 -----------------------------------------------------------------------------------------*/ 106#define EXP(y) picoos_quick_exp(y) 107 108#ifdef __cplusplus 109} 110#endif 111 112#endif /*PICODSP_H_*/ 113