Source: globals.h


Annotated List
Files
Globals
Hierarchy
Index
#define MY_BIG_VAL 	1000000
#define PI    		3.14159265358979323846
#define ONE_OVER_TWO_PI    	.15915494309189533576
#define TWO_PI    	6.28318530717958647692

//#define CROSSING 1
//#define NO_CROSSING 0
//#define YES 1
#define NO 0

#define HMM_ADDITIVE 0

#define HMM_FORMANT 1

//#define HMM_ADDITIVE_AMOR  2

extern int DEBUG;

/**
 * Structure de tableau avec taille.
 *
 * @short Tableau dimensionné
 */
struct tab
{
  /**
   * Tableau de données
   */
  int* id;
  /**
   * Taille du tableau
   */
  int nb;
};

/**
 * Liste des index des partiels récemment décédés (Carnet mondain section décès)
 *
 * @short Liste des index des partiels récemment décédés
 */ 
class tab_time
{
public:
  /**
   * Tableau d'index des partiels
   */
  int* label;
  /**
   * Nombre de trames écoulées depuis la mort de chaque partiel référence par @ref tab_time::label
   */
  int* time;
  /**
   * Nombre de partiels référencés dans les tableaux @ref tab_time::label et @ref tab_time::time
   */
  int     nb;
  /**
   * Période de deuil durant laquelle la réutilisation de l'index du défunt est interdite
   */
  int     LatTime;

  /**
   * Ajoute un nouvel index dans la liste des morts 
   */
  void add(int new_label, int new_time)
    {
      label[nb] = new_label;
      time[nb] = new_time;
      nb++;
    }
  /**
   * Reserve la mémoire adequate pour les tableaux utilisés en interne
   *
   * @param maxNbOutput nombre maximal de morts dans la liste
   */
  void initArrays(int maxNbOutput)
    {
      label = new int[maxNbOutput];
      time = new int[maxNbOutput];
    }
  /**
   * Constructeur
   */
  tab_time()
    {
      nb = 0;
      LatTime = 10;
    }
  /**
   * Désalloue la mémoire réservée
   */
  ~tab_time()
    {
      if (label)
	delete label;
      if (time)
	delete time;
    }
  /**
   * Retire un mort de la liste
   *
   * @param index index dans la liste du partiel mort à retirer
   */
  void remove(int index)
    {
      nb--;
      label[index] = label[nb] ;
      time[index] = time[nb] ;
    }
  /**
   * Augmente d'une unité le delai de deuil d'un partiel mort
   *
   * @param index index dans la liste du partiel mort considéré
   */
  void increase_time(int index)
    {
      time[index] += 1 ;
    }
  /**
   * Teste si un mort est mort depuis suffisamment longtemps pour le rayer de la liste
   *
   * @param index index dans la liste du partiel mort testé
   */
  int too_old(int index)
    {
      return (time[index] > LatTime);
    }
};

/**
 * Tableau de partiels
 *
 */
class partials
{
public:
  /**
   * Indices des partiels vivants
   */
  int* Alive;
  /**
   * Indices des nouveaux partiels
   */
  int* NewAlive;
  /**
   * Indices des partiels morts
   */
  int* Dead;
  /**
   * Indices des partiels nouveaux-nés
   */
  int* Born;
  
  /**
   * Nombre de partiels vivants
   */
  int     nbAlive;
  /**
   * Nombre de nouveaux partiels
   */
  int     nbNewAlive;
  /**
   * Nombre de partiels morts
   */
  int     nbDead;
  /**
   * Nombre de partiels nouveaux-nés
   */
  int     nbBorn;

  /**
   * Constructeur vide
   */
  partials()
    {      
    }
  /**
   * Destructeur. Libère la mémoire allouée dans la fonction @ref partials::initArrays
   */
  ~partials()
    {
      if (Alive)
	delete Alive;
      if (NewAlive)
	delete NewAlive;
      if (Born)
	delete Born;
      if (Dead)
	delete Dead;
    }
  /**
   * Alloue la mémoire nécessaire
   * @param maxNbOutput nombre maximal de partiels simultanés
   */
  void initArrays(int maxNbOutput)
    {
      Alive = new int[maxNbOutput];
      NewAlive = new int[maxNbOutput];
      Born = new int[maxNbOutput];
      Dead = new int[maxNbOutput];
  
      nbAlive = 0;
      nbDead = 0;
      nbBorn = maxNbOutput;
      
      for(int i=0 ; i < maxNbOutput ; i++ )
	Born[i] = maxNbOutput - i - 1 ;
    }
};

/**
 * Paramètres du programme. Structure destinée à recevoir les variances, paramètres additifs 
 * ainsi que les gains pour le calcul des scores
 */
struct param
{
  /**
   * Paramètre relié à la fréquence
   */
  float freq;
  /**
   * Paramètre relié à l'amplitude
   */
  float	ampl;
  /**
   * Paramètre relié à la phase
   */
  float	ph;
  /**
   * Paramètres relié au lissage des partiels (cf @ref lines::viterbi_formant)
   */
  float	obs;
};

Generated by: chose@josquin on Wed Nov 10 20:55:59 199.