|
|
#ifndef PARAM_H #define PARAM_H class Param; #include "LabelText.h" #include "Analysis.h" /** * Fenêtre de dialogue de réglage des paramètres: permet de definir tous les * paramètres utilisés lors de l'analyse. Ces paramètres peuvent être chargés * et sauvegardés au moyen des boutons appropriés. Ils sont décrits plus en details ci-dessous. * * @short Dialogue de réglage des paramètres * @author Ph.Chose * @version 10/99 */ class Param { /** * Type de boîte de sélection de fichier demandée */ enum FileSelectionType { LOAD, SAVE }; public: /** * Taille de la FFT */ int fft_size; /** * Taille de la fenêtre d'analyse */ int window_size; /** * Nombre maximal de partiels */ int max_partials_number; /** * Pas d'analyse */ int hop_size; /** * Repère temporel de début d'analyse */ float starting_time; /** * Repère tempore de fin d'analyse */ float ending_time; /** * Taille minimale d'un partiel */ int minPartialLength; /** * Variance en fréquence */ float freqVariance; /** * Variance en amplitude */ float amplVariance; /** * Variance en phase */ float phaseVariance; /** * Seuil absolu de fréquence */ float freqAbsThreshold; /** * Seuil relatif de fréquence */ float freqRelThreshold; /** * Paramètre additif fréquentiel */ float freqAdditive; /** * Paramètre additif d'amplitude */ float amplAdditive; /** * Paramètre additif de phase */ float phaseAdditive; /** * Gain de partie fréquentielle du score */ float freqGain; /** * Gain de la partie amplitude du score */ float amplGain; /** * Gain de la partie phase du score */ float phaseGain; /** * Drapeau de détection avancée de fréquences (partial++) */ int enhanced; /** * Drapeau de mise a jour temps-réel */ int updateRT; /** * Drapeau pour demander le calcul de la FFT */ int fftStep; /** * Drapeau pour demander la détection des pics */ int peaksStep; /** * Drapeau pour demander la détection des trajets de pics */ int partialsStep; /** * Fréquence minimale explorée */ float freqMin; /** * Fréquence maximale explorée */ float freqMax; /** * Fréquence d'échantillonage * Ne sert que pour calculer les tailles de la fenêtre d'analyse et du pas d'analyse en secondes */ int samplingFrequency; /** * Drapeau pour bloquer le zoom au cours d'une analyse */ int freezeLimits; /** * Pointeur sur un objet Analysis */ Analysis* theAnalysis; private: /** * Widget regroupant Label Text et Slider * Variable contrôlée: @ref Param::fft_size */ LabelText* tfft; /** * Widget regroupant Label Text et Slider * Variable contrôlée: @ref Param::window_size */ LabelText* twindow; /** * Widget regroupant Label Text et Slider * Variable contrôlée: @ref Param::max_partials_number */ LabelText* tpartials; /** * Widget regroupant Label Text et Slider * Variable contrôlée: @ref Param::hop_size */ LabelText* thop; /** * Widget regroupant Label Text et Slider * Variable contrôlée: @ref Param::starting_time */ LabelText* tstart; /** * Widget regroupant Label Text et Slider * Variable contrôlée: @ref Param::ending_time */ LabelText* tend; /** * Widget regroupant Label Text et Slider * Variable contrôlée: @ref Param::freqVariance */ LabelText* tfreqV; /** * Widget regroupant Label Text et Slider * Variable contrôlée: @ref Param::amplVariance */ LabelText* tamplV; /** * Widget regroupant Label Text et Slider * Variable contrôlée: @ref Param::phaseVariance */ LabelText* tphaseV; /** * Widget regroupant Label Text et Slider * Variable contrôlée: @ref Param::minPartialLength */ LabelText* tminPartial; /** * Widget regroupant Label Text et Slider * Variable contrôlée: @ref Param::freqAbsThreshold */ LabelText* tfreqAbsThreshold; /** * Widget regroupant Label Text et Slider * Variable contrôlée: @ref Param::freqRelThreshold */ LabelText* tfreqRelThreshold; /** * Widget regroupant Label Text et Slider * Variable contrôlée: @ref Param::freqAdditive */ LabelText* tfreqA; /** * Widget regroupant Label Text et Slider * Variable contrôlée: @ref Param::amplAdditive */ LabelText* tamplA; /** * Widget regroupant Label Text et Slider * Variable contrôlée: @ref Param::phaseAdditive */ LabelText* tphaseA; /** * Widget regroupant Label Text et Slider * Variable contrôlée: @ref Param::freqGain */ LabelText* tfreqG; /** * Widget regroupant Label Text et Slider * Variable contrôlée: @ref Param::amplGain */ LabelText* tamplG; /** * Widget regroupant Label Text et Slider * Variable contrôlée: @ref Param::phaseGain */ LabelText* tphaseG; /** * Widget regroupant Label Text et Slider * Variable contrôlée: @ref Param::freqMin */ LabelText* tfreqMin; /** * Widget regroupant Label Text et Slider * Variable contrôlée: @ref Param::freqMax */ LabelText* tfreqMax; /** * Widget regroupant Label Text et Slider * Variable contrôlée: @ref Param::samplingFrequency */ LabelText* tsamplingFrequency; /** * Bouton OK. Accepte les changements et referme le dialogue */ Widget buttonOk; /** * Bouton Cancel. Ferme le dialogue. */ Widget buttonCancel; /** * Bouton Load Parameters. Charge les paramètres à partir d'un fichier au format .param */ Widget buttonLoad; /** * Bouton Save Parameters. Sauve les paramètres dans un fichier au format .param */ Widget buttonSave; /** * Bouton Stop Analysis. Stoppe l'analyse en cours. */ Widget buttonStop; /** * Le dialogue lui-même. */ Widget dialog; /** * Check box pour la détection avancée de pics */ Widget checkEnhanced; /** * Check box pour la mise à jour de l'affichage grahique à chaque modification de paramètre */ Widget checkUpdate; /** * Check box pour valider le calcul de la FFT */ Widget checkFftStep; /** * Check box pour valider la détection de pics */ Widget checkPeaksStep; /** * Check box pour valider la détection des partiels */ Widget checkPartialsStep; /** * Check box pour permuter entre secondes et échantillon (unités des paramètres taille de fenêtre d'analyse * et pas d'analyse. */ Widget checkSamsSecs; /** * Check box pour figer les limites de l'affichage graphique */ Widget checkFreezeLimits; /** * SAVE ou LOAD -> Choix pour la lecture ou l'écriture des paramètres */ FileSelectionType buttonClicked; public: /** * Affiche le dialogue */ void display(); /** * Constructeur. * Initialise les paramètres à leurs valeurs par défaut et construit le dialogue * * @param parent widget père de la fenêtre de dialogue */ Param(Widget parent); /** * Destructeur. * Libère la mémoire */ ~Param(); /** * Charge les paramètres à partir d'un fichier au format .param * * @param inFile nom du fichier de paramètre à charger */ void loadParameters(char inFile[]); /** * Sauve les paramètres dans un fichier au format .param * * @param outFile nom du fichier de sauvegarde */ void saveParameters(char outFile[]); /** * Récupère les paramètres des différentes widgets vers les variables de l'objet. * Exemple: stocke dans @ref Param::fft_size la valeur stockée dans le widget @ref Param::tfft */ void getParameters(); /** * Positionne les différents widgets en fonction des paramètres de la classe. * Exemple: positionne le widget @ref Param::tfft à la valeur @ref Param::fft_size */ void setParameters(); /** * Fonction callback du bouton Load (@ref Param::buttonLoad). Déclenche l'ouverture d'une boîte de dialogue * afin de saisir le nom du fichier à ouvrir. Cette fonction est publique car elle * est appelée par la classe @ref Menu lors du choix Options/Charger Paramètres. * * @param w widget père pour l'affichage de la FileSelectionBox * @param clientData pointeur sur l'instance de la classe (callback MOTIF en C++) */ static void loadButton(Widget w, XtPointer clientData, XtPointer); /** * Fonction callback du bouton Save (@ref Param::buttonSave). Déclenche l'ouverture d'une boîte de dialogue * afin de saisir le nom du fichier de sauvegarde. Cette fonction est publique car elle * est appelée par la classe @ref Menu lors du choix Options/Sauver Paramètres. * * @param w widget père pour l'affichage de la FileSelectionBox * @param clientData pointeur sur l'instance de la classe (callback MOTIF en C++) */ static void saveButton(Widget w, XtPointer clientData, XtPointer); private: /** * Fonction callback du bouton Ok (@ref Param::buttonOk). Récupère les paramètres et ferme la boîte de dialogue. * @param clientData pointeur sur l'instance de la classe (callback MOTIF en C++) */ static void okButton(Widget,XtPointer clientData,XtPointer); /** * Fonction callback du bouton Cancel (@ref Param::buttonCancel). Ferme la boîte de dialogue. * @param clientData pointeur sur l'instance de la classe (callback MOTIF en C++) */ static void cancelButton(Widget,XtPointer clientData,XtPointer); /** * Fonction callback du bouton Stop Analysis (@ref Param::buttonStop). Stoppe l'analyse en cours. * @param clientData pointeur sur l'instance de la classe (callback MOTIF en C++) */ static void stopButton(Widget,XtPointer clientData,XtPointer); /** * Fonction callback du bouton Ok de la boîte de sélection des fichiers. * @param w widget père * @param clientData pointeur sur l'instance de la classe (callback MOTIF en C++) * @param selection pointeur sur la sélection de fichier (cf MOTIF) */ static void selectOk(Widget w, XtPointer clientData, XmFileSelectionBoxCallbackStruct* selection); /** * Fonction callback du bouton Cancel de la boîte de sélection des fichiers. * @param w widget père */ static void selectCancel(Widget w,XtPointer,XtPointer); /** * Fonction callback de la check box permettant de permuter entre secondes et échantillon * pour l'addichage de la taille de la fenêtre d'analyse et du pas d'analyse. * @param clientData pointeur sur l'instance de la classe (callback MOTIF en C++) */ static void samsSecsCheck(Widget, XtPointer clientData, XtPointer); }; #endif
Generated by: chose@josquin on Wed Nov 10 20:57:01 199. |