This file is indexed.

/usr/include/CLAM/SegmentSMSHarmonizer.hxx is in libclam-dev 1.4.0-5build1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
/*
 * Copyright (c) 2001-2004 MUSIC TECHNOLOGY GROUP (MTG)
 *                         UNIVERSITAT POMPEU FABRA
 *
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 *
 */


#ifndef _SegmentSMSHarmonizer_
#define _SegmentSMSHarmonizer_

#include "SMSPitchShift.hxx"
#include "SpectrumAdder2.hxx"
#include "FrameTransformation.hxx"


// TODO: this transformation needs to be ported to inherit from FrameTransformation instead of SegmentTransformation
// 		 also, a solution has to be figured out to make the transformation controllable via ports

namespace CLAM{


	class SegmentSMSHarmonizer: public FrameTransformation
	{
		
		/** This method returns the name of the object
		 *  @return Char pointer with the name of object
		 */
		const char *GetClassName() const {return "SegmentSMSHarmonizer";}
		
		FloatInControl mIndexCtl;//says what the amount sent as control is modifying
		FloatInControl mTransCtl;
		/** xamat:adding residual does not improve results much and adds a lot of overhead, there should
		 *	probably be a configuration parameter to control whether we want to add residual or not, but that
		 *	would mean changing the kind of configuration. For the time being the output residual is the input.*/
		FloatInControl mIgnoreResidualCtl;
		FloatInControl mUpdateBPFCtl;///< "boolean" control used to say that we want to update BPF
	public:
			
		void UpdateBPF(TControlData value)
		{
			CLAM::BPF& bpf= mConfig.GetBPF();
			//this should never happen, it should be initialized at configuration time
			if(bpf.Size()==0)
			{
				InitBPF();
			}
			
			bpf.SetValue((int)mIndexCtl.GetLastValue(), mTransCtl.GetLastValue());
		}
		void IgnoreResidual(TControlData value)
		{
			mPitchShift.mIgnoreResidual.DoControl(value);
		}
	public:
		/** Base constructor of class. Calls Configure method with a SegmentTransformationConfig initialised by default*/
		SegmentSMSHarmonizer()
			: mIndexCtl("Index", this)
			, mTransCtl("Transposition",this)
			, mIgnoreResidualCtl("IgnoreResidual",this, &SegmentSMSHarmonizer::IgnoreResidual)
			, mUpdateBPFCtl("UpdateBPF", this, &SegmentSMSHarmonizer::UpdateBPF)
		{
			Configure(FrameTransformationConfig());
			mTmpFrame.AddAll();
			mTmpFrame.UpdateData();
			mTmpFund.AddElem();
		}
		
		bool ConcreteConfigure(const ProcessingConfig& c)
		{
			CopyAsConcreteConfig( mConfig, c );
			InitBPF();
			mPitchShift.Configure(FrameTransformationConfig());
			//By default we ignore residual!!
			mIgnoreResidualCtl.DoControl(1.);
			return true;
		}

		/** Destructor of the class*/
 		~SegmentSMSHarmonizer()
		{}
		
		bool Do()
		{
			CLAM_ASSERT(false, "Do with ports not implemented");
			return false;
		}
		
		bool Do(const Frame& in, Frame& out);
	private:
		SMSPitchShift mPitchShift;
		SpectrumAdder2 mSpectrumAdder;
		void AddFrame(const Frame& in1, const Frame& in2, Frame& out);
		void Gain(Frame& inputFrame, TData gain);
		
		Fundamental mTmpFund;
		Frame mTmpFrame;
		
		void InitBPF()
		{
			if (!mConfig.HasBPF())
			{
				mConfig.AddBPF();
				mConfig.UpdateData();
			}
			if(mConfig.GetBPF().Size()==0)//else we asume that the user has initialized it before
			{
				BPF& bpf=mConfig.GetBPF();
				bpf.Resize(10);
				bpf.SetSize(10);
				int i;
				//we add ten voices with gain going from -30 to +30 but no transposition (note that X controls gain and Y transposition)
				for (i=0; i< 10; i++)
				{
					bpf.SetValue(i,1);
					bpf.SetXValue(i,(i-5)*6);
				}
			}
		}
		
	
	};		
};//namespace CLAM

#endif // _SegmentSMSHarmonizer_