CLAM-Development  1.4.0
FrameDescriptors.cxx
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 
23 
24 
25 #include "ProcessingData.hxx"
26 #include "FrameDescriptors.hxx"
27 #include "Frame.hxx"
28 
29 
30 namespace CLAM{
31 
33 {
34  MandatoryInit();
35  mpFrame=pFrame;
36 }
37 
39 {
40  MandatoryInit();
41  AddAll();
42  UpdateData();
43  SetSpectralPeakD(SpectralPeakDescriptors(initVal));
44  SetSpectrumD(SpectralDescriptors(initVal));
45  SetResidualSpecD(SpectralDescriptors(initVal));
46  SetSinusoidalSpecD(SpectralDescriptors(initVal));
47  SetAudioFrameD(AudioDescriptors(initVal));
48  SetSinusoidalAudioFrameD(AudioDescriptors(initVal));
49  SetResidualAudioFrameD(AudioDescriptors(initVal));
50  SetSynthAudioFrameD(AudioDescriptors(initVal));
51 }
52 
53 void FrameDescriptors::DefaultInit() {
54  mpFrame=0;
55 }
56 
57 void FrameDescriptors::CopyInit(const FrameDescriptors & copied) {
58  mpFrame=copied.mpFrame;
59 }
60 
62  return mpFrame;
63 }
64 
65 void FrameDescriptors::SetpFrame(const Frame* pFrame){
66  mpFrame=pFrame;
67  //first we add dynamic attributes doing a single UpdateData
68  if(mpFrame->HasSpectrum())
69  AddSpectrumD();
70  if(mpFrame->HasSpectralPeakArray())
71  AddSpectralPeakD();
72  if(mpFrame->HasResidualSpec())
73  AddResidualSpecD();
74  if(mpFrame->HasSinusoidalSpec())
75  AddSinusoidalSpecD();
76  if(mpFrame->HasAudioFrame())
77  AddAudioFrameD();
78  if(mpFrame->HasSinusoidalAudioFrame())
79  AddSinusoidalAudioFrameD();
80  if(mpFrame->HasResidualAudioFrame())
81  AddResidualAudioFrameD();
82  if(mpFrame->HasSynthAudioFrame())
83  AddSynthAudioFrameD();
84  UpdateData();
85  //now we set the data of each descriptor
86  if(mpFrame->HasSpectrum())
87  GetSpectrumD().SetpSpectrum(&mpFrame->GetSpectrum());
88  if(mpFrame->HasSpectralPeakArray())
89  GetSpectralPeakD().SetpSpectralPeakArray(&mpFrame->GetSpectralPeakArray());
90  if(mpFrame->HasResidualSpec())
91  GetResidualSpecD().SetpSpectrum(&mpFrame->GetResidualSpec());
92  if(mpFrame->HasSinusoidalSpec())
93  GetSinusoidalSpecD().SetpSpectrum(&mpFrame->GetSinusoidalSpec());
94  if(mpFrame->HasAudioFrame())
95  GetAudioFrameD().SetpAudio(&mpFrame->GetAudioFrame());
96  if(mpFrame->HasSinusoidalAudioFrame())
97  GetSinusoidalAudioFrameD().SetpAudio(&mpFrame->GetSinusoidalAudioFrame());
98  if(mpFrame->HasResidualAudioFrame())
99  GetResidualAudioFrameD().SetpAudio(&mpFrame->GetResidualAudioFrame());
100  if(mpFrame->HasSynthAudioFrame())
101  GetSynthAudioFrameD().SetpAudio(&mpFrame->GetSynthAudioFrame());
102 
103 }
104 
106 {
107  /*Overriding compute method in base class because right now I don't know
108  what to do with member statistics.*/
109  ConcreteCompute();
110 }
111 
112 
114 {
115  if(mpFrame->HasSpectrum())
116  GetSpectrumD().Compute();
117  if(mpFrame->HasSpectralPeakArray())
118  GetSpectralPeakD().Compute();
119  if(mpFrame->HasResidualSpec())
120  GetResidualSpecD().Compute();
121  if(mpFrame->HasSinusoidalSpec())
122  GetSinusoidalSpecD().Compute();
123  if(mpFrame->HasAudioFrame())
124  GetAudioFrameD().Compute();
125  if(mpFrame->HasSinusoidalAudioFrame())
126  GetSinusoidalAudioFrameD().Compute();
127  if(mpFrame->HasResidualAudioFrame())
128  GetResidualAudioFrameD().Compute();
129  if(mpFrame->HasSynthAudioFrame())
130  GetSynthAudioFrameD().Compute();
131  if(HasCenterTime())
132  SetCenterTime(mpFrame->GetCenterTime());
133 
134 
135 }
136 
138 {
139  FrameDescriptors tmpD;
140  if(a.HasSpectralPeakD() && b.HasSpectralPeakD())
141  {
142  tmpD.AddSpectralPeakD();
143  tmpD.UpdateData();
144  tmpD.SetSpectralPeakD(a.GetSpectralPeakD()*b.GetSpectralPeakD());
145  }
146  if(a.HasSpectrumD() && b.HasSpectrumD())
147  {
148  tmpD.AddSpectrumD();
149  tmpD.UpdateData();
150  tmpD.SetSpectrumD(a.GetSpectrumD()*b.GetSpectrumD());
151  }
152  if(a.HasResidualSpecD() && b.HasResidualSpecD() )
153  {
154  tmpD.AddResidualSpecD();
155  tmpD.UpdateData();
156  tmpD.SetResidualSpecD(a.GetResidualSpecD()*b.GetResidualSpecD());
157  }
158  if(a.HasSinusoidalSpecD() && b.HasSinusoidalSpecD())
159  {
160  tmpD.AddSinusoidalSpecD();
161  tmpD.UpdateData();
162  tmpD.SetSinusoidalSpecD(a.GetSinusoidalSpecD()*b.GetSinusoidalSpecD());
163  }
164  if(a.HasAudioFrameD() && b.HasAudioFrameD() )
165  {
166  tmpD.AddAudioFrameD();
167  tmpD.UpdateData();
168  tmpD.SetAudioFrameD(a.GetAudioFrameD()*b.GetAudioFrameD());
169  }
170  if(a.HasSinusoidalAudioFrameD() && b.HasSinusoidalAudioFrameD() )
171  {
172  tmpD.AddSinusoidalAudioFrameD();
173  tmpD.UpdateData();
174  tmpD.SetSinusoidalAudioFrameD(a.GetSinusoidalAudioFrameD()*b.GetSinusoidalAudioFrameD());
175  }
176  if(a.HasResidualAudioFrameD() && b.HasResidualAudioFrameD() )
177  {
178  tmpD.AddResidualAudioFrameD();
179  tmpD.UpdateData();
180  tmpD.SetResidualAudioFrameD(a.GetResidualAudioFrameD()*b.GetResidualAudioFrameD());
181  }
182  if(a.HasSynthAudioFrameD() && b.HasSynthAudioFrameD() )
183  {
184  tmpD.AddSynthAudioFrameD();
185  tmpD.UpdateData();
186  tmpD.SetSynthAudioFrameD(a.GetSynthAudioFrameD()*b.GetSynthAudioFrameD());
187  }
188 
189  return tmpD;
190 }
191 
192 
194 {
195  FrameDescriptors tmpD;
196  if(a.HasSpectralPeakD() && b.HasSpectralPeakD())
197  {
198  tmpD.AddSpectralPeakD();
199  tmpD.UpdateData();
200  tmpD.SetSpectralPeakD(a.GetSpectralPeakD()+b.GetSpectralPeakD());
201  }
202  if(a.HasSpectrumD() && b.HasSpectrumD())
203  {
204  tmpD.AddSpectrumD();
205  tmpD.UpdateData();
206  tmpD.SetSpectrumD(a.GetSpectrumD()+b.GetSpectrumD());
207  }
208  if(a.HasResidualSpecD() && b.HasResidualSpecD() )
209  {
210  tmpD.AddResidualSpecD();
211  tmpD.UpdateData();
212  tmpD.SetResidualSpecD(a.GetResidualSpecD()+b.GetResidualSpecD());
213  }
214  if(a.HasSinusoidalSpecD() && b.HasSinusoidalSpecD())
215  {
216  tmpD.AddSinusoidalSpecD();
217  tmpD.UpdateData();
218  tmpD.SetSinusoidalSpecD(a.GetSinusoidalSpecD()+b.GetSinusoidalSpecD());
219  }
220  if(a.HasAudioFrameD() && b.HasAudioFrameD() )
221  {
222  tmpD.AddAudioFrameD();
223  tmpD.UpdateData();
224  tmpD.SetAudioFrameD(a.GetAudioFrameD()+b.GetAudioFrameD());
225  }
226  if(a.HasSinusoidalAudioFrameD() && b.HasSinusoidalAudioFrameD() )
227  {
228  tmpD.AddSinusoidalAudioFrameD();
229  tmpD.UpdateData();
230  tmpD.SetSinusoidalAudioFrameD(a.GetSinusoidalAudioFrameD()+b.GetSinusoidalAudioFrameD());
231  }
232  if(a.HasResidualAudioFrameD() && b.HasResidualAudioFrameD() )
233  {
234  tmpD.AddResidualAudioFrameD();
235  tmpD.UpdateData();
236  tmpD.SetResidualAudioFrameD(a.GetResidualAudioFrameD()+b.GetResidualAudioFrameD());
237  }
238  if(a.HasSynthAudioFrameD() && b.HasSynthAudioFrameD() )
239  {
240  tmpD.AddSynthAudioFrameD();
241  tmpD.UpdateData();
242  tmpD.SetSynthAudioFrameD(a.GetSynthAudioFrameD()+b.GetSynthAudioFrameD());
243  }
244 
245  return tmpD;
246 }
247 
248 
250 {
251  FrameDescriptors tmpD(a);
252  if(a.HasSpectralPeakD())
253  {
254  tmpD.SetSpectralPeakD(a.GetSpectralPeakD()*mult);
255  }
256  if(a.HasSpectrumD())
257  {
258  tmpD.SetSpectrumD(a.GetSpectrumD()*mult);
259  }
260  if(a.HasResidualSpecD())
261  {
262  tmpD.SetResidualSpecD(a.GetResidualSpecD()*mult);
263  }
264  if(a.HasSinusoidalSpecD())
265  {
266  tmpD.SetSinusoidalSpecD(a.GetSinusoidalSpecD()*mult);
267  }
268  if(a.HasAudioFrameD())
269  {
270  tmpD.SetAudioFrameD(a.GetAudioFrameD()*mult);
271  }
272  if(a.HasSinusoidalAudioFrameD())
273  {
274  tmpD.SetSinusoidalAudioFrameD(a.GetSinusoidalAudioFrameD()*mult);
275  }
276  if(a.HasResidualAudioFrameD())
277  {
278  tmpD.SetResidualAudioFrameD(a.GetResidualAudioFrameD()*mult);
279  }
280  if(a.HasSynthAudioFrameD())
281  {
282  tmpD.SetSynthAudioFrameD(a.GetSynthAudioFrameD()*mult);
283  }
284 
285  return tmpD;
286 
287 }
288 
290 {
291  return a*mult;
292 }
293 
295 {
296  return a+((-1.0)*b);
297 }
299 {
300  return a*(1/div);
301 }
302 
303 
304 }//CLAM
305