CLAM-Development  1.4.0
SMSAnalysisCore.hxx
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2001-2004 MUSIC TECHNOLOGY GROUP (MTG)
3  * UNIVERSITAT POMPEU FABRA
4  *
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software
18  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19  *
20  */
21 
22 #ifndef __SMSAnalysisCore_hxx__
23 #define __SMSAnalysisCore_hxx__
24 
25 #include "DataTypes.hxx"
26 #include "SpectralPeakDetect.hxx"
27 #include "FundFreqDetect.hxx"
28 #include "SinTracking.hxx"
29 #include "SpectrumSubstracter2.hxx"
30 #include "SpectralAnalysis.hxx"
31 #include "SMSAnalysisConfig.hxx"
32 #include "Audio.hxx"
33 #include "ProcessingComposite.hxx"
34 #include "Spectrum.hxx"
35 #include "SynthSineSpectrum.hxx"
36 
37 #include "OutPortPublisher.hxx"
38 #include "AudioInPortPublisher.hxx"
39 
40 namespace CLAM
41 {
42 
43 class Segment;
44 class Fundamental;
45 class ProcessingConfig;
46 class SpectralPeakArray;
47 
50 {
51 
52 public:
53 
54 // Processing Object compliance methods.
55 
56  const char *GetClassName() const {return "SMSAnalysisCore";}
57 
61 
62 
63  const ProcessingConfig &GetConfig() const {return mConfig;}
64 
66  bool Do(void);
67 
68  bool ConcreteStart();
69 private:
70 
72  SMSAnalysisConfig mConfig;
73 
74 // The internal Processing Objects
75 
78  SpectralAnalysis mSinSpectralAnalysis;
81  SpectralAnalysis mResSpectralAnalysis;
84  SpectralPeakDetect mPeakDetect;
87  FundFreqDetect mFundDetect;
90  SinTracking mSinTracking;
94  SynthSineSpectrum mSynthSineSpectrum;
98  SpectrumSubstracter2 mSpecSubstracter;
99 
100 // Internal convenience methods.
101 
103  void AttachChildren();
105  bool ConfigureChildren();
107  void ConfigureData();
108 
109 
111  bool ConcreteConfigure(const ProcessingConfig&);
112 
114  void ConnectAndPublishPorts();
115 
117  AudioInPortPublisher mInputAudio; // audio input
118  OutPortPublisher<Spectrum> mOutputResSpectrum; // output of resSpectralAnalysis
119  OutPortPublisher<Spectrum> mOutputSinSpectrum; // output of sinSpectralAnalysis
120  OutPortPublisher<SpectralPeakArray> mOutputSpectralPeaks; // output of sintracking
121  OutPortPublisher<Fundamental> mOutputFundamental; // output of fundamental
122  OutPortPublisher<Spectrum> mOutputSubstractedSpectrum; // output of spectrumSubstracter
123 };
124 
125 } //namespace CLAM
126 
127 #endif // __SMSAnalysisCore_hxx__
128