Commits

Sam Drazin committed a3828fc

Added normalizing, commented it out, and added master gain

  • Participants
  • Parent commits d3670ca

Comments (0)

Files changed (5)

File test/Transform.c

 
 #include "Transform.h"
 
-#define		kNumChannels	kBufferLength/2
-#define		kNumBands		32
-#define		kBandInterval	kNumChannels/kNumBands
-
-#define		SHOULD_FREE		0
+#define		kNumChannels			kBufferLength/2
+#define		kNumBands				32
+#define		kBandInterval			kNumChannels/kNumBands
+#define		kNormalizedAmplitude	0.95
+#define		SHOULD_FREE				0
+#define		gain					25
 
 // --------------------------------------------------------
 
 	return sum/length;
 }
 
+double			*normalize(double *input)
+{
+	double maxVal = 0;
+	int i;
+	for (i = 0; i < kBufferLength; i += 1)
+	{
+		if (fabs(input[i]) > maxVal)
+			maxVal = fabs(input[i]);
+	}
+	
+	for (i = 0; i < kBufferLength; i += 1)
+	{
+		input[i] = (kNormalizedAmplitude*input[i])/maxVal;
+	}	
+	return input;
+}
+
 fftw_complex	*rescale(fftw_complex *data)
 {
 	int i;
 		
 		for (j = i; (j < i + kBandInterval) && (j < kBufferLength); j += 1)
 		{
-			synthOut[j][0] = averageMagnitudeOfBins*(fft_carrier[j][0]);
-			synthOut[j][1] = averageMagnitudeOfBins*(fft_carrier[j][1]);	//0.0;
+			synthOut[j][0] = averageMagnitudeOfBins*(fft_carrier[j][0])*gain;
+			synthOut[j][1] = averageMagnitudeOfBins*(fft_carrier[j][1])*gain;
 		}			
 	}	
 	
 	double *ifft_result = compute_ifft(synthOut);	
 	free(synthOut);
 
+//	ifft_result = normalize(ifft_result);
+	
 	window(ifft_result);
 	return ifft_result;	
 }
 	return input;
 }
 
-double			*time_frequency_transform(double *modulator)//, double *carrier)
+double			*time_frequency_transform(double *modulator)
 {
 	//window(modulator);
 	

File test/Transform.h

 
 // Math Utilities
 double			average(double *, int);
+double			*normalize(double *);
 fftw_complex	*rescale(fftw_complex *);
 	
 // FFT Utilities	

File test/main.cpp

 	
 	SF_INFO	sfinfo ;
 	
-	const char *modfilename = "/Users/sdrazin/Desktop/dip_it.wav";
+	const char *modfilename = "/Users/sdrazin/Desktop/modulator.wav";
 	const char *carfilename = "/Users/sdrazin/Desktop/chord.wav";
-	const char *outfilename = "/Users/sdrazin/Desktop/output2.wav";
+	const char *outfilename = "/Users/sdrazin/Desktop/output3.wav";
 	
 	if (! (modfile = sf_open(modfilename, SFM_READ, &sfinfo)))
     {   printf ("Not able to open modulator file %s.\n", modfilename);

File test/test.xcodeproj/sdrazin.mode1v3

 							<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
 							<array>
 								<array>
-									<integer>2</integer>
+									<integer>4</integer>
 									<integer>1</integer>
 									<integer>0</integer>
 								</array>
 								<key>PBXProjectModuleGUID</key>
 								<string>1CE0B20306471E060097A5F4</string>
 								<key>PBXProjectModuleLabel</key>
-								<string>main.cpp</string>
+								<string>Transform.c</string>
 								<key>PBXSplitModuleInNavigatorKey</key>
 								<dict>
 									<key>Split0</key>
 										<key>PBXProjectModuleGUID</key>
 										<string>1CE0B20406471E060097A5F4</string>
 										<key>PBXProjectModuleLabel</key>
-										<string>main.cpp</string>
+										<string>Transform.c</string>
 										<key>_historyCapacity</key>
 										<integer>0</integer>
 										<key>bookmark</key>
-										<string>F4A2DFD5118893B9003E52C1</string>
+										<string>F4A2E00C11889985003E52C1</string>
 										<key>history</key>
 										<array>
 											<string>F4A2DFCB11888B2F003E52C1</string>
 											<string>F4A2DFCD11888B2F003E52C1</string>
-											<string>F4A2DFD3118893B9003E52C1</string>
-											<string>F4A2DFD4118893B9003E52C1</string>
-											<string>F4A2DFCC11888B2F003E52C1</string>
+											<string>F4A2DFEE1188991D003E52C1</string>
+											<string>F4A2DFEF1188991D003E52C1</string>
+											<string>F4A2DFF01188991D003E52C1</string>
 										</array>
 									</dict>
 									<key>SplitCount</key>
 	<key>StatusbarIsVisible</key>
 	<true/>
 	<key>TimeStamp</key>
-	<real>294163385.34122097</real>
+	<real>294164869.41689801</real>
 	<key>ToolbarConfigUserDefaultsMinorVersion</key>
 	<string>2</string>
 	<key>ToolbarDisplayMode</key>

File test/test.xcodeproj/sdrazin.pbxuser

 			2A1C563F117B8D4E0022B1C3 /* poopie */,
 		);
 		breakpoints = (
-			F4B0A40F11876CCC009D67B2 /* Transform.c:164 */,
-			F4B0A41B11876DE9009D67B2 /* Transform.c:142 */,
-			F4A2DF841187772F003E52C1 /* main.cpp:165 */,
 		);
 		codeSenseManager = F4B52C4511863091009C2A96 /* Code sense */;
 		executables = (
 			F4A2DFD3118893B9003E52C1 /* PBXTextBookmark */ = F4A2DFD3118893B9003E52C1 /* PBXTextBookmark */;
 			F4A2DFD4118893B9003E52C1 /* PBXTextBookmark */ = F4A2DFD4118893B9003E52C1 /* PBXTextBookmark */;
 			F4A2DFD5118893B9003E52C1 /* PBXTextBookmark */ = F4A2DFD5118893B9003E52C1 /* PBXTextBookmark */;
+			F4A2DFD811889585003E52C1 /* PBXTextBookmark */ = F4A2DFD811889585003E52C1 /* PBXTextBookmark */;
+			F4A2DFD9118897AC003E52C1 /* PBXTextBookmark */ = F4A2DFD9118897AC003E52C1 /* PBXTextBookmark */;
+			F4A2DFDA118897AC003E52C1 /* PBXTextBookmark */ = F4A2DFDA118897AC003E52C1 /* PBXTextBookmark */;
+			F4A2DFDB118897AC003E52C1 /* PBXTextBookmark */ = F4A2DFDB118897AC003E52C1 /* PBXTextBookmark */;
+			F4A2DFDC118897EA003E52C1 /* PBXTextBookmark */ = F4A2DFDC118897EA003E52C1 /* PBXTextBookmark */;
+			F4A2DFDD118897EA003E52C1 /* PBXTextBookmark */ = F4A2DFDD118897EA003E52C1 /* PBXTextBookmark */;
+			F4A2DFDE118897EA003E52C1 /* PBXTextBookmark */ = F4A2DFDE118897EA003E52C1 /* PBXTextBookmark */;
+			F4A2DFE31188980B003E52C1 /* PBXTextBookmark */ = F4A2DFE31188980B003E52C1 /* PBXTextBookmark */;
+			F4A2DFE41188980B003E52C1 /* PBXTextBookmark */ = F4A2DFE41188980B003E52C1 /* PBXTextBookmark */;
+			F4A2DFE51188980B003E52C1 /* PBXTextBookmark */ = F4A2DFE51188980B003E52C1 /* PBXTextBookmark */;
+			F4A2DFE811889827003E52C1 /* PBXTextBookmark */ = F4A2DFE811889827003E52C1 /* PBXTextBookmark */;
+			F4A2DFEB11889848003E52C1 /* PBXTextBookmark */ = F4A2DFEB11889848003E52C1 /* PBXTextBookmark */;
+			F4A2DFEE1188991D003E52C1 /* PBXTextBookmark */ = F4A2DFEE1188991D003E52C1 /* PBXTextBookmark */;
+			F4A2DFEF1188991D003E52C1 /* PBXTextBookmark */ = F4A2DFEF1188991D003E52C1 /* PBXTextBookmark */;
+			F4A2DFF01188991D003E52C1 /* PBXTextBookmark */ = F4A2DFF01188991D003E52C1 /* PBXTextBookmark */;
+			F4A2DFF11188991D003E52C1 /* PBXTextBookmark */ = F4A2DFF11188991D003E52C1 /* PBXTextBookmark */;
+			F4A2DFF41188992A003E52C1 /* PBXTextBookmark */ = F4A2DFF41188992A003E52C1 /* PBXTextBookmark */;
+			F4A2DFF711889934003E52C1 /* PBXTextBookmark */ = F4A2DFF711889934003E52C1 /* PBXTextBookmark */;
+			F4A2DFFA11889944003E52C1 /* PBXTextBookmark */ = F4A2DFFA11889944003E52C1 /* PBXTextBookmark */;
+			F4A2DFFD11889950003E52C1 /* PBXTextBookmark */ = F4A2DFFD11889950003E52C1 /* PBXTextBookmark */;
+			F4A2E0001188995C003E52C1 /* PBXTextBookmark */ = F4A2E0001188995C003E52C1 /* PBXTextBookmark */;
+			F4A2E00311889967003E52C1 /* PBXTextBookmark */ = F4A2E00311889967003E52C1 /* PBXTextBookmark */;
+			F4A2E00611889972003E52C1 /* PBXTextBookmark */ = F4A2E00611889972003E52C1 /* PBXTextBookmark */;
+			F4A2E0091188997C003E52C1 /* PBXTextBookmark */ = F4A2E0091188997C003E52C1 /* PBXTextBookmark */;
+			F4A2E00C11889985003E52C1 /* PBXTextBookmark */ = F4A2E00C11889985003E52C1 /* PBXTextBookmark */;
 			F4B0A40C11876B91009D67B2 = F4B0A40C11876B91009D67B2 /* PBXTextBookmark */;
 			F4B0A42C11876E4A009D67B2 = F4B0A42C11876E4A009D67B2 /* PBXTextBookmark */;
 			F4B52C8A11864E27009C2A96 = F4B52C8A11864E27009C2A96 /* PBXTextBookmark */;
 	};
 	2A1C563A117B8D340022B1C3 /* main.cpp */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {983, 2873}}";
-			sepNavSelRange = "{1687, 0}";
-			sepNavVisRange = "{1352, 1234}";
+			sepNavFolds = "{\n    c =     (\n                {\n            r = \"{4673, 283}\";\n            s = 0;\n        },\n                {\n            r = \"{5002, 292}\";\n            s = 0;\n        },\n                {\n            r = \"{5337, 213}\";\n            s = 0;\n        }\n    );\n    r = \"{0, 5551}\";\n    s = 0;\n}";
+			sepNavIntBoundsRect = "{{0, 0}, {983, 2340}}";
+			sepNavSelRange = "{4336, 0}";
+			sepNavVisRange = "{3614, 1022}";
 			sepNavWindowFrame = "{{15, 89}, {729, 784}}";
 		};
 	};
 		fRef = F4B52C4B118637ED009C2A96 /* Transform.c */;
 		name = "Transform.c: 142";
 		rLen = 0;
-		rLoc = 1287;
+		rLoc = 1640;
 		rType = 0;
 		vrLen = 967;
 		vrLoc = 834;
 		fRef = F4B52C4B118637ED009C2A96 /* Transform.c */;
 		name = "Transform.c: 83";
 		rLen = 0;
-		rLoc = 1724;
+		rLoc = 2077;
 		rType = 0;
 		vrLen = 2382;
 		vrLoc = 860;
 	};
-	F4A2DF841187772F003E52C1 /* main.cpp:165 */ = {
-		isa = PBXFileBreakpoint;
-		actions = (
-		);
-		breakpointStyle = 0;
-		continueAfterActions = 0;
-		countType = 0;
-		delayBeforeContinue = 0;
-		fileReference = 2A1C563A117B8D340022B1C3 /* main.cpp */;
-		functionName = "Process(const double *mod_data, double *car_data, double *dataOutput)";
-		hitCount = 4;
-		ignoreCount = 0;
-		lineNumber = 165;
-		location = poopie;
-		modificationTime = 294090562.588142;
-		originalNumberOfMultipleMatches = 1;
-		state = 1;
-	};
 	F4A2DF8811877749003E52C1 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = F4B52C4B118637ED009C2A96 /* Transform.c */;
 		name = "Transform.c: 149";
 		rLen = 0;
-		rLoc = 3085;
+		rLoc = 3438;
 		rType = 0;
 		vrLen = 1111;
 		vrLoc = 3099;
 		fRef = 2A1C563A117B8D340022B1C3 /* main.cpp */;
 		name = "main.cpp: 165";
 		rLen = 0;
-		rLoc = 4019;
+		rLoc = 4022;
 		rType = 0;
 		vrLen = 1022;
 		vrLoc = 3615;
 		fRef = 2A1C563A117B8D340022B1C3 /* main.cpp */;
 		name = "main.cpp: 165";
 		rLen = 0;
-		rLoc = 4019;
+		rLoc = 4022;
 		rType = 0;
 		vrLen = 1022;
 		vrLoc = 3615;
 		fRef = F4B52C4B118637ED009C2A96 /* Transform.c */;
 		name = "Transform.c: 149";
 		rLen = 0;
-		rLoc = 3085;
+		rLoc = 3438;
 		rType = 0;
 		vrLen = 1156;
 		vrLoc = 3055;
 		fRef = F4B52C4B118637ED009C2A96 /* Transform.c */;
 		name = "Transform.c: 167";
 		rLen = 0;
-		rLoc = 3560;
+		rLoc = 3913;
 		rType = 0;
 		vrLen = 1081;
 		vrLoc = 3193;
 		fRef = F4B52C4B118637ED009C2A96 /* Transform.c */;
 		name = "Transform.c: 160";
 		rLen = 0;
-		rLoc = 3375;
+		rLoc = 3728;
 		rType = 0;
 		vrLen = 1083;
 		vrLoc = 3193;
 		fRef = 2A1C563A117B8D340022B1C3 /* main.cpp */;
 		name = "main.cpp: 165";
 		rLen = 0;
-		rLoc = 4019;
+		rLoc = 4022;
 		rType = 0;
 		vrLen = 1022;
 		vrLoc = 3615;
 		fRef = F4B52C4B118637ED009C2A96 /* Transform.c */;
 		name = "Transform.c: 160";
 		rLen = 0;
-		rLoc = 3375;
+		rLoc = 3728;
 		rType = 0;
 		vrLen = 1083;
 		vrLoc = 3193;
 		fRef = F4B52C4B118637ED009C2A96 /* Transform.c */;
 		name = "Transform.c: 159";
 		rLen = 0;
-		rLoc = 3375;
+		rLoc = 3728;
 		rType = 0;
 		vrLen = 1073;
 		vrLoc = 3104;
 		fRef = F4B52C4B118637ED009C2A96 /* Transform.c */;
 		name = "Transform.c: 160";
 		rLen = 0;
-		rLoc = 3699;
+		rLoc = 4055;
 		rType = 0;
 		vrLen = 1180;
 		vrLoc = 2814;
 		fRef = F4B52C4C118637ED009C2A96 /* Transform.h */;
 		name = "Transform.h: 35";
 		rLen = 0;
-		rLoc = 691;
+		rLoc = 722;
 		rType = 0;
 		vrLen = 969;
 		vrLoc = 153;
 		fRef = F4B52C4B118637ED009C2A96 /* Transform.c */;
 		name = "Transform.c: 160";
 		rLen = 0;
-		rLoc = 3699;
+		rLoc = 4055;
 		rType = 0;
 		vrLen = 1329;
 		vrLoc = 2952;
 		fRef = 2A1C563A117B8D340022B1C3 /* main.cpp */;
 		name = "main.cpp: 82";
 		rLen = 0;
-		rLoc = 1687;
+		rLoc = 1690;
 		rType = 0;
 		vrLen = 1234;
 		vrLoc = 1352;
 	};
+	F4A2DFD811889585003E52C1 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 2A1C563A117B8D340022B1C3 /* main.cpp */;
+		name = "main.cpp: 83";
+		rLen = 0;
+		rLoc = 1755;
+		rType = 0;
+		vrLen = 1316;
+		vrLoc = 1359;
+	};
+	F4A2DFD9118897AC003E52C1 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 2A1C563A117B8D340022B1C3 /* main.cpp */;
+		name = "main.cpp: 175";
+		rLen = 0;
+		rLoc = 4336;
+		rType = 0;
+		vrLen = 1012;
+		vrLoc = 3614;
+	};
+	F4A2DFDA118897AC003E52C1 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = F4B52C4B118637ED009C2A96 /* Transform.c */;
+		name = "Transform.c: 167";
+		rLen = 0;
+		rLoc = 4175;
+		rType = 0;
+		vrLen = 1076;
+		vrLoc = 2885;
+	};
+	F4A2DFDB118897AC003E52C1 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = F4B52C4B118637ED009C2A96 /* Transform.c */;
+		name = "Transform.c: 41";
+		rLen = 0;
+		rLoc = 811;
+		rType = 0;
+		vrLen = 1097;
+		vrLoc = 33;
+	};
+	F4A2DFDC118897EA003E52C1 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = F4B52C4B118637ED009C2A96 /* Transform.c */;
+		name = "Transform.c: 29";
+		rLen = 34;
+		rLoc = 582;
+		rType = 0;
+		vrLen = 1199;
+		vrLoc = 176;
+	};
+	F4A2DFDD118897EA003E52C1 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = F4B52C4C118637ED009C2A96 /* Transform.h */;
+		name = "Transform.h: 35";
+		rLen = 0;
+		rLoc = 722;
+		rType = 0;
+		vrLen = 969;
+		vrLoc = 153;
+	};
+	F4A2DFDE118897EA003E52C1 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = F4B52C4C118637ED009C2A96 /* Transform.h */;
+		name = "Transform.h: 35";
+		rLen = 0;
+		rLoc = 657;
+		rType = 0;
+		vrLen = 981;
+		vrLoc = 172;
+	};
+	F4A2DFE31188980B003E52C1 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = F4B52C4C118637ED009C2A96 /* Transform.h */;
+		name = "Transform.h: 35";
+		rLen = 0;
+		rLoc = 657;
+		rType = 0;
+		vrLen = 981;
+		vrLoc = 172;
+	};
+	F4A2DFE41188980B003E52C1 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = F4B52C4B118637ED009C2A96 /* Transform.c */;
+		name = "Transform.c: 29";
+		rLen = 34;
+		rLoc = 484;
+		rType = 0;
+		vrLen = 1054;
+		vrLoc = 1487;
+	};
+	F4A2DFE51188980B003E52C1 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = F4B52C4B118637ED009C2A96 /* Transform.c */;
+		name = "Transform.c: 27";
+		rLen = 0;
+		rLoc = 579;
+		rType = 0;
+		vrLen = 1357;
+		vrLoc = 3297;
+	};
+	F4A2DFE811889827003E52C1 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = F4B52C4B118637ED009C2A96 /* Transform.c */;
+		name = "Transform.c: 184";
+		rLen = 0;
+		rLoc = 4161;
+		rType = 0;
+		vrLen = 1359;
+		vrLoc = 3297;
+	};
+	F4A2DFEB11889848003E52C1 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = F4B52C4B118637ED009C2A96 /* Transform.c */;
+		name = "Transform.c: 184";
+		rLen = 0;
+		rLoc = 4161;
+		rType = 0;
+		vrLen = 1357;
+		vrLoc = 3297;
+	};
+	F4A2DFEE1188991D003E52C1 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 2A1C563A117B8D340022B1C3 /* main.cpp */;
+		name = "main.cpp: 173";
+		rLen = 0;
+		rLoc = 4336;
+		rType = 0;
+		vrLen = 1022;
+		vrLoc = 3614;
+	};
+	F4A2DFEF1188991D003E52C1 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = F4B52C4C118637ED009C2A96 /* Transform.h */;
+		name = "Transform.h: 35";
+		rLen = 0;
+		rLoc = 657;
+		rType = 0;
+		vrLen = 981;
+		vrLoc = 172;
+	};
+	F4A2DFF01188991D003E52C1 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = F4B52C4B118637ED009C2A96 /* Transform.c */;
+		name = "Transform.c: 196";
+		rLen = 0;
+		rLoc = 4372;
+		rType = 0;
+		vrLen = 1332;
+		vrLoc = 3297;
+	};
+	F4A2DFF11188991D003E52C1 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = F4B52C4B118637ED009C2A96 /* Transform.c */;
+		name = "Transform.c: 17";
+		rLen = 0;
+		rLoc = 371;
+		rType = 0;
+		vrLen = 871;
+		vrLoc = 0;
+	};
+	F4A2DFF41188992A003E52C1 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = F4B52C4B118637ED009C2A96 /* Transform.c */;
+		name = "Transform.c: 17";
+		rLen = 0;
+		rLoc = 371;
+		rType = 0;
+		vrLen = 871;
+		vrLoc = 0;
+	};
+	F4A2DFF711889934003E52C1 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = F4B52C4B118637ED009C2A96 /* Transform.c */;
+		name = "Transform.c: 17";
+		rLen = 0;
+		rLoc = 371;
+		rType = 0;
+		vrLen = 872;
+		vrLoc = 0;
+	};
+	F4A2DFFA11889944003E52C1 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = F4B52C4B118637ED009C2A96 /* Transform.c */;
+		name = "Transform.c: 17";
+		rLen = 0;
+		rLoc = 371;
+		rType = 0;
+		vrLen = 872;
+		vrLoc = 0;
+	};
+	F4A2DFFD11889950003E52C1 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = F4B52C4B118637ED009C2A96 /* Transform.c */;
+		name = "Transform.c: 17";
+		rLen = 0;
+		rLoc = 369;
+		rType = 0;
+		vrLen = 872;
+		vrLoc = 0;
+	};
+	F4A2E0001188995C003E52C1 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = F4B52C4B118637ED009C2A96 /* Transform.c */;
+		name = "Transform.c: 17";
+		rLen = 0;
+		rLoc = 369;
+		rType = 0;
+		vrLen = 872;
+		vrLoc = 0;
+	};
+	F4A2E00311889967003E52C1 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = F4B52C4B118637ED009C2A96 /* Transform.c */;
+		name = "Transform.c: 17";
+		rLen = 0;
+		rLoc = 371;
+		rType = 0;
+		vrLen = 872;
+		vrLoc = 0;
+	};
+	F4A2E00611889972003E52C1 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = F4B52C4B118637ED009C2A96 /* Transform.c */;
+		name = "Transform.c: 17";
+		rLen = 0;
+		rLoc = 371;
+		rType = 0;
+		vrLen = 872;
+		vrLoc = 0;
+	};
+	F4A2E0091188997C003E52C1 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = F4B52C4B118637ED009C2A96 /* Transform.c */;
+		name = "Transform.c: 17";
+		rLen = 0;
+		rLoc = 371;
+		rType = 0;
+		vrLen = 872;
+		vrLoc = 0;
+	};
+	F4A2E00C11889985003E52C1 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = F4B52C4B118637ED009C2A96 /* Transform.c */;
+		name = "Transform.c: 17";
+		rLen = 0;
+		rLoc = 371;
+		rType = 0;
+		vrLen = 872;
+		vrLoc = 0;
+	};
 	F4B0A40C11876B91009D67B2 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 2A1C563A117B8D340022B1C3 /* main.cpp */;
 		name = "main.cpp: 170";
 		rLen = 24;
-		rLoc = 4189;
+		rLoc = 4192;
 		rType = 0;
 		vrLen = 1014;
 		vrLoc = 3946;
 	};
-	F4B0A40F11876CCC009D67B2 /* Transform.c:164 */ = {
-		isa = PBXFileBreakpoint;
-		actions = (
-		);
-		breakpointStyle = 0;
-		continueAfterActions = 0;
-		countType = 0;
-		delayBeforeContinue = 0;
-		fileReference = F4B52C4B118637ED009C2A96 /* Transform.c */;
-		functionName = "frequency_domain_process()";
-		hitCount = 5;
-		ignoreCount = 0;
-		lineNumber = 164;
-		location = poopie;
-		modificationTime = 294090562.169138;
-		originalNumberOfMultipleMatches = 1;
-		state = 1;
-	};
-	F4B0A41B11876DE9009D67B2 /* Transform.c:142 */ = {
-		isa = PBXFileBreakpoint;
-		actions = (
-		);
-		breakpointStyle = 0;
-		continueAfterActions = 0;
-		countType = 0;
-		delayBeforeContinue = 0;
-		fileReference = F4B52C4B118637ED009C2A96 /* Transform.c */;
-		functionName = "frequency_domain_process()";
-		hitCount = 5;
-		ignoreCount = 0;
-		lineNumber = 142;
-		location = poopie;
-		modificationTime = 294090561.735982;
-		originalNumberOfMultipleMatches = 1;
-		state = 1;
-	};
 	F4B0A42C11876E4A009D67B2 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = F4B52C4C118637ED009C2A96 /* Transform.h */;
 		name = "Transform.h: 35";
 		rLen = 0;
-		rLoc = 691;
+		rLoc = 722;
 		rType = 0;
 		vrLen = 988;
 		vrLoc = 153;
 	};
 	F4B52C4B118637ED009C2A96 /* Transform.c */ = {
 		uiCtxt = {
-			sepNavFolds = "{\n    c =     (\n                {\n            r = \"{417, 99}\";\n            s = 0;\n        },\n                {\n            r = \"{562, 135}\";\n            s = 0;\n        },\n                {\n            r = \"{722, 107}\";\n            s = 0;\n        },\n                {\n            r = \"{861, 72}\";\n            s = 0;\n        },\n                {\n            r = \"{1044, 300}\";\n            s = 0;\n        },\n                {\n            r = \"{1404, 291}\";\n            s = 0;\n        },\n                {\n            r = \"{1742, 294}\";\n            s = 0;\n        },\n                {\n            r = \"{2083, 298}\";\n            s = 0;\n        },\n                {\n            r = \"{2419, 211}\";\n            s = 0;\n        },\n                {\n            r = \"{3885, 32}\";\n            s = 0;\n        },\n                {\n            r = \"{3995, 285}\";\n            s = 0;\n        }\n    );\n    r = \"{0, 4281}\";\n    s = 0;\n}";
-			sepNavIntBoundsRect = "{{0, 0}, {983, 1261}}";
-			sepNavSelRange = "{1901, 0}";
-			sepNavVisRange = "{1154, 1014}";
+			sepNavFolds = "{\n    c =     (\n                {\n            r = \"{480, 99}\";\n            s = 0;\n        },\n                {\n            r = \"{915, 135}\";\n            s = 0;\n        },\n                {\n            r = \"{1075, 107}\";\n            s = 0;\n        },\n                {\n            r = \"{1214, 72}\";\n            s = 0;\n        },\n                {\n            r = \"{1397, 300}\";\n            s = 0;\n        },\n                {\n            r = \"{1757, 291}\";\n            s = 0;\n        },\n                {\n            r = \"{2095, 294}\";\n            s = 0;\n        },\n                {\n            r = \"{2436, 298}\";\n            s = 0;\n        },\n                {\n            r = \"{2772, 211}\";\n            s = 0;\n        },\n                {\n            r = \"{4284, 32}\";\n            s = 0;\n        },\n                {\n            r = \"{4374, 285}\";\n            s = 0;\n        }\n    );\n    r = \"{0, 4660}\";\n    s = 0;\n}";
+			sepNavIntBoundsRect = "{{0, 0}, {983, 1612}}";
+			sepNavSelRange = "{371, 0}";
+			sepNavVisRange = "{0, 774}";
 		};
 	};
 	F4B52C4C118637ED009C2A96 /* Transform.h */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {983, 676}}";
-			sepNavSelRange = "{691, 0}";
-			sepNavVisRange = "{153, 969}";
+			sepNavIntBoundsRect = "{{0, 0}, {983, 689}}";
+			sepNavSelRange = "{657, 0}";
+			sepNavVisRange = "{172, 981}";
 		};
 	};
 	F4B52C8A11864E27009C2A96 /* PBXTextBookmark */ = {