diff --git a/.gitignore b/.gitignore
index 03eba16d052c8e1ebd7b225057c52bbeef6e5775..a87de3072322c0a16b2f345a35da59ad674e16f2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,6 +8,11 @@
 Builds/Linux/build/open-ephys
 Resources/Fonts/font_serializer/Builds/Linux/build/
 JuceLibraryCode/jucer/Builds/Linux/build
+JuceLibraryCode/jucer/Builds/VisualStudio2010/Debug
+JuceLibraryCode/jucer/Builds/VisualStudio2010/Release
+JuceLibraryCode/jucer/Builds/VisualStudio2010/*.user
+JuceLibraryCode/jucer/Builds/VisualStudio2010/The Jucer.sdf
+JuceLibraryCode/jucer/Builds/VisualStudio2010/The Jucer.v11.suo
 
 # 3. extra files
 Builds/Linux/build/data
@@ -22,6 +27,7 @@ Builds/VisualStudio2012/Debug
 Builds/VisualStudio2012/Release
 Builds/VisualStudio2012/ipch
 Builds/VisualStudio2012/open-ephys.sdf
+Builds/VisualStudio2012/open-ephys.opensdf
 Builds/VisualStudio2012/open-ephys.suo
 Builds/VisualStudio2012/open-ephys.v11.suo
 Builds/VisualStudio2012/open-ephys.vcxproj.user
diff --git a/Builds/Linux/Makefile b/Builds/Linux/Makefile
index 2e3060cc0e57d013026b7923f43c3b47375ead9b..c0d5ff30464b3ae73e2d0e80f65c7cb491e890ec 100644
--- a/Builds/Linux/Makefile
+++ b/Builds/Linux/Makefile
@@ -75,6 +75,7 @@ OBJECTS := \
   $(OBJDIR)/SpikeDisplayNode_9c52e4ad.o \
   $(OBJDIR)/WiFiOutput_fa464ec5.o \
   $(OBJDIR)/LfpDisplayNode_30ef22fd.o \
+  $(OBJDIR)/RecordControl_3e1c6062.o \
   $(OBJDIR)/Merger_2f90542e.o \
   $(OBJDIR)/Splitter_6e27a57b.o \
   $(OBJDIR)/SpikePlot_c1cf98bd.o \
@@ -91,6 +92,7 @@ OBJECTS := \
   $(OBJDIR)/SpikeDetector_300d85e7.o \
   $(OBJDIR)/AudioNode_94606ff3.o \
   $(OBJDIR)/EventNode_95c842b7.o \
+  $(OBJDIR)/RecordControlEditor_244084cb.o \
   $(OBJDIR)/ResamplingNodeEditor_f2d6f061.o \
   $(OBJDIR)/FPGAOutputEditor_cfe00f8a.o \
   $(OBJDIR)/ArduinoOutputEditor_1118f008.o \
@@ -317,6 +319,11 @@ $(OBJDIR)/LfpDisplayNode_30ef22fd.o: ../../Source/Processors/LfpDisplayNode.cpp
 	@echo "Compiling LfpDisplayNode.cpp"
 	@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
 
+$(OBJDIR)/RecordControl_3e1c6062.o: ../../Source/Processors/Utilities/RecordControl.cpp
+	-@mkdir -p $(OBJDIR)
+	@echo "Compiling RecordControl.cpp"
+	@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
+
 $(OBJDIR)/Merger_2f90542e.o: ../../Source/Processors/Utilities/Merger.cpp
 	-@mkdir -p $(OBJDIR)
 	@echo "Compiling Merger.cpp"
@@ -397,6 +404,11 @@ $(OBJDIR)/EventNode_95c842b7.o: ../../Source/Processors/EventNode.cpp
 	@echo "Compiling EventNode.cpp"
 	@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
 
+$(OBJDIR)/RecordControlEditor_244084cb.o: ../../Source/Processors/Editors/RecordControlEditor.cpp
+	-@mkdir -p $(OBJDIR)
+	@echo "Compiling RecordControlEditor.cpp"
+	@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
+
 $(OBJDIR)/ResamplingNodeEditor_f2d6f061.o: ../../Source/Processors/Editors/ResamplingNodeEditor.cpp
 	-@mkdir -p $(OBJDIR)
 	@echo "Compiling ResamplingNodeEditor.cpp"
diff --git a/Builds/MacOSX/open-ephys.xcodeproj/project.pbxproj b/Builds/MacOSX/open-ephys.xcodeproj/project.pbxproj
index 3d618c450a5132cd3d8eb211019aa664bb17132b..ddacfeaf642f4422dd5f1e80f007dd56cb7f1975 100644
--- a/Builds/MacOSX/open-ephys.xcodeproj/project.pbxproj
+++ b/Builds/MacOSX/open-ephys.xcodeproj/project.pbxproj
@@ -6,891 +6,1176 @@
 	objectVersion = 44;
 	objects = {
 
-		6125D1F24D314D771E3A350E = { isa = PBXBuildFile; fileRef = FAB58A8AE7DCBAC0CF311D14; };
-		AD58AC45D09BA8A736B3D67C = { isa = PBXBuildFile; fileRef = 39FAF9808D0EFB6C8170D8B8; };
-		F8751DCE1BCF3EC9C7A46154 = { isa = PBXBuildFile; fileRef = 0B661DF3EFF63CFFCCA76AF4; };
-		37F9B7C362F6F31231D10927 = { isa = PBXBuildFile; fileRef = A9B11C1B693E380C29F53F78; };
-		BCA6FAB5DADF0AF804E83F6E = { isa = PBXBuildFile; fileRef = D08C5BF3FF3AC38C2BB5F921; };
-		DB7C2DF80130B2D0D8DD9BD2 = { isa = PBXBuildFile; fileRef = 6A67346CD9B6D590108C7B6E; };
-		11885833D32D03BA7E17138A = { isa = PBXBuildFile; fileRef = 9AFA895DFA2087804F47ECF9; };
-		90C038F480F790988D0F928E = { isa = PBXBuildFile; fileRef = 54662C69F6AA71B55D68F12E; };
-		C038A696FD85E64E249AF737 = { isa = PBXBuildFile; fileRef = 191441B631182A346D494BB5; };
-		881EDBF5D2D6FD7B53B71182 = { isa = PBXBuildFile; fileRef = 1CBCB9D2FE5B967D93785E75; };
-		14BE1E76E7BB3593A5F66DCC = { isa = PBXBuildFile; fileRef = BF41F256D0C244C2C02AE6E1; };
-		09E5633D492B59E418AC11C9 = { isa = PBXBuildFile; fileRef = CA0A1584725D21237DBCD70A; };
-		D379BC3417418182ECFA5716 = { isa = PBXBuildFile; fileRef = 673778A175624FC9F52E7A15; };
-		2C6D200191B27DDF088B3089 = { isa = PBXBuildFile; fileRef = B30EF131FE61BAA4C1818102; };
-		BF78E6E9903CF5A5C53789B9 = { isa = PBXBuildFile; fileRef = 07AE46453303977ED64E38ED; };
-		903C5F83BB9E6DEA71A0D6E5 = { isa = PBXBuildFile; fileRef = 73C6FF74D6A31CA13C0D7C5C; };
-		5EE932D782BFB7100D014399 = { isa = PBXBuildFile; fileRef = 742284C84C72C882E02E7974; };
-		AEA369E154CA607D8D62CC2E = { isa = PBXBuildFile; fileRef = D44DBE2FF15A98834F222766; };
-		F0EB404ED0A4EEAB0F238BDC = { isa = PBXBuildFile; fileRef = 1F9836FC5A8FDF2293C9A232; };
-		B8BF3036DDF5BD761CAF416A = { isa = PBXBuildFile; fileRef = 93FACAE1DC7A236505359477; };
-		BBE4B49A8E596B53CE157EAD = { isa = PBXBuildFile; fileRef = 3E8E2F9C583077B298525FD1; };
-		0BBDB7C2B8CE82F1B0844B70 = { isa = PBXBuildFile; fileRef = E8214D83845C25F39EEC13CD; };
-		FA6CF7D26F81253A3E1D13CB = { isa = PBXBuildFile; fileRef = 293B003BD6E113C5AD1BB131; };
-		BD15E927FB571B9D2F93F82C = { isa = PBXBuildFile; fileRef = A9AF10F6A89F85989C62F856; };
-		40FFED3C981ED12AA4EA0AA0 = { isa = PBXBuildFile; fileRef = 706CBE9178440675868F2379; };
-		49DA796E77871A124D5F49C1 = { isa = PBXBuildFile; fileRef = BF8EB3483F66AA7F61E6D863; };
-		ED44C2F2AA0DC81161075167 = { isa = PBXBuildFile; fileRef = 137CF1AB4144076D79D50975; };
-		14E9BBD79F22198FE23EB88A = { isa = PBXBuildFile; fileRef = E6FF4D4C70794123A52B9E82; };
-		8E138283FC265B58D252AAC3 = { isa = PBXBuildFile; fileRef = F4A53064BA75472765338C1D; };
-		EE1DC0B09AE0727BC7A5A99C = { isa = PBXBuildFile; fileRef = 0D20C3399D0492771F7A808A; };
-		4ACF816CB5CDB285D8005AB8 = { isa = PBXBuildFile; fileRef = F74662D3D82975EDB5AD42E0; };
-		AEE153DB070AD3023780DAED = { isa = PBXBuildFile; fileRef = EF2AF97E68B2C2428A835836; };
-		448F8ACAAE9A5354E4E013E8 = { isa = PBXBuildFile; fileRef = 2AFAED9379D050629F34C033; };
-		E96CEDA0BFB8ED12B26B5AD5 = { isa = PBXBuildFile; fileRef = F040256D2E74A61F4F08B148; };
-		67343B589F0FF80FF8750F29 = { isa = PBXBuildFile; fileRef = 06AB64E97A05B800349E7E23; };
-		A84DF9525DC988520F7C3217 = { isa = PBXBuildFile; fileRef = 3022191E4C192BC10670B935; };
-		DD043D069210932477F01A30 = { isa = PBXBuildFile; fileRef = 90E8F4BDA3DBA5F8D78A2AB0; };
-		D24C62FA0307F51185EE3481 = { isa = PBXBuildFile; fileRef = 3261B4AE147B49EEE9341CF8; };
-		AEB65E53845FA668D89CE15E = { isa = PBXBuildFile; fileRef = C42446F8ABB3627870E9677D; };
-		717D108DC8B2379D556C4B2F = { isa = PBXBuildFile; fileRef = 751C52F2BEA7F1328ED13333; };
-		1F67A9ACD509FB4DC5A633DF = { isa = PBXBuildFile; fileRef = 4AEDD076CCA918481C6F9CF2; };
-		B992DDBFF8928A985EEE1557 = { isa = PBXBuildFile; fileRef = 268005410FB62BCB9099A762; };
-		F1268EC5E783EC8ECEBCA5D3 = { isa = PBXBuildFile; fileRef = 5935F823A2EE45AC36A0201F; };
-		4A00153E1E69A74BC6B7D8A6 = { isa = PBXBuildFile; fileRef = 3973173C7FA07073B4F86B29; };
-		5F13B8FFB1584BFF6C05AD39 = { isa = PBXBuildFile; fileRef = 9A47B52E5E1CD17DC9C72B53; };
-		3D3A992E10308BA189CECE05 = { isa = PBXBuildFile; fileRef = C96A8F49EA22919F09486B96; };
-		55A240CCFCD604CA8DF8FC8C = { isa = PBXBuildFile; fileRef = 41591F74A761BAC908FA8AD8; };
-		8025F04ED261C7F7D2DC0F06 = { isa = PBXBuildFile; fileRef = 24C6D768C87E1C42C644C4BD; };
-		49F046C8BE137BF77338DD7B = { isa = PBXBuildFile; fileRef = B195AD6CEB9B6E3625C8D087; };
-		566E42D2B7105CFB4DB45170 = { isa = PBXBuildFile; fileRef = 2FA2FA826CBAD9C639A61E4A; };
-		BCD7C4797178C8EF65CDC2D7 = { isa = PBXBuildFile; fileRef = 9F208A66C09E80D14F087CB1; };
-		9145D84C7D665BCAFE698432 = { isa = PBXBuildFile; fileRef = E7247F5EE9588903C924994F; };
-		7659F31912D12C91E9554909 = { isa = PBXBuildFile; fileRef = 7A9A31FC1AE8FB238FAE995E; };
-		9D687F73F2FD2462C5D5588C = { isa = PBXBuildFile; fileRef = ED179D5A10DD051DDB3ECB8B; };
-		B13883377C9316B9603336B4 = { isa = PBXBuildFile; fileRef = 2E96DA81EE37A0ECE471A928; };
-		073B178E7EF1759BA0AACCCE = { isa = PBXBuildFile; fileRef = 0C5335B0E57C9DC92FC57E5F; };
-		4BE0DDA01B73223EF0BD934A = { isa = PBXBuildFile; fileRef = 3DD0741FCFBC7563EC722D9B; };
-		08B501E0D7764C6B613AF529 = { isa = PBXBuildFile; fileRef = B7750B27E4F3748ECCCCF69D; };
-		9CBA3837CC8CAA03A03F2D9C = { isa = PBXBuildFile; fileRef = FA57CE4F63FF1592D6B3F9B5; };
-		6F41ED502815AAF2F2EAB8B7 = { isa = PBXBuildFile; fileRef = EE3AAE8BD520868168064D38; };
-		9C77BFFE7BA865E20121E707 = { isa = PBXBuildFile; fileRef = 7738196148E539781B237854; };
-		BA64AA28A3E0DC10AB0A9380 = { isa = PBXBuildFile; fileRef = DAFD5D2E1F875321584C7147; };
-		BCB6C021A03F0AB0248C7F8A = { isa = PBXBuildFile; fileRef = 51D2678E9F30DC261CCB61B0; };
-		632C915D01C42D27E828BFA9 = { isa = PBXBuildFile; fileRef = 47ECF9384C1D27EB2FBEBF9E; };
-		DD22A06702F4CF995893DD5C = { isa = PBXBuildFile; fileRef = F0B09605D4108F0F94EF3B57; };
-		F4CEF74DDCD7EFA0891249B5 = { isa = PBXBuildFile; fileRef = 9A3976537C96B39716B5312D; };
-		93A3E6284F2DAED3F491332B = { isa = PBXBuildFile; fileRef = AD73EA6B24378294003DC2D0; };
-		CB77C89226102EF30F85E3EC = { isa = PBXBuildFile; fileRef = 544DA1EF90EBBDB6FF2DE0A5; };
-		A126280FF39A61DEFD3ABFE5 = { isa = PBXBuildFile; fileRef = 2B11714BCE362D4EA7E377F5; };
-		2ADE508EC26B703176ED915C = { isa = PBXBuildFile; fileRef = 36393F2D58480F61ECDEB5E5; };
-		8B55C700ED8484944FED1EB1 = { isa = PBXBuildFile; fileRef = 087136FA6A7A0E01738EEF03; };
-		D3B54B20674A6BA87CE6FDEC = { isa = PBXBuildFile; fileRef = CF9878CE31A1B41406C3457B; };
-		5D5CAF52A5498EEFB8EA924D = { isa = PBXBuildFile; fileRef = FC5939F3D2A31BB43EA3E393; };
-		203EA3786F7928C0386FFAC2 = { isa = PBXBuildFile; fileRef = C2ED801EA28FBA9764E76349; };
-		28E4724351374881E83BD69C = { isa = PBXBuildFile; fileRef = 399CBACE291A425A2B9497EF; };
-		B092C479F4C92AF2FEBE5A11 = { isa = PBXBuildFile; fileRef = 5DDBEE64DC706CE804E5F0AA; };
-		3B146B8898CEE9965A9A0FB8 = { isa = PBXBuildFile; fileRef = 35AFD01064BF29D90EEDF413; };
-		CFE62980E342BE2875BB3586 = { isa = PBXBuildFile; fileRef = 22FD0613BADE6C36A6A7A25C; };
-		A1B4D286AC7ED372742C41B2 = { isa = PBXBuildFile; fileRef = 0D2903C450AE862C2C0060AA; };
-		25D4C87F4C7C842B0522DA5F = { isa = PBXBuildFile; fileRef = 24616D6D2297C87D371B0363; };
-		E82FBA173C87CE2AADB84942 = { isa = PBXBuildFile; fileRef = 6B156D132738F6C7C948378F; };
-		2F21546229BEF148C74ECA45 = { isa = PBXBuildFile; fileRef = A9142BFEFE7EB34D919ED0A0; };
-		9549DA2D2FF0614B155990A0 = { isa = PBXBuildFile; fileRef = F20726FD9F586FDE2CB42901; };
-		DF15E1683A3722FE88EE5C7F = { isa = PBXBuildFile; fileRef = 6D94C2733E967EC6A91B719A; };
-		FCD66EA8735FE1CCA522B7C5 = { isa = PBXBuildFile; fileRef = 72123888A7DD78159AA032AF; };
-		60FF6BBFC1E9255F190C3146 = { isa = PBXBuildFile; fileRef = B96BF02034F29DE033F16D89; };
-		513EF1439498856E0C8C697E = { isa = PBXBuildFile; fileRef = EBB0E5058615EA1FEDADF189; };
-		03932AC6269AFA895DFA2087 = { isa = PBXBuildFile; fileRef = 5AE7693391C43B4AE475789C; };
-		AD6DD37DB41B1177F9F77F51 = { isa = PBXBuildFile; fileRef = D2342EA3BD783D3A81006606; };
-		CF0149E6ECBA264A264C7BB3 = { isa = PBXBuildFile; fileRef = 7EAD8082130C2384BA9E1206; };
-		63E5D65E7B097CADB277DBB6 = { isa = PBXBuildFile; fileRef = CECE2AB5D5F36CADBC3219A2; };
-		B2BE56A1260E9C87DECD2E4F = { isa = PBXBuildFile; fileRef = C4DA9685E5637B03F00E5E79; };
-		5E07E54EEF69F5BEDE84D535 = { isa = PBXBuildFile; fileRef = E1C6E67757EC5D68093BD760; };
-		2EC3E064E5849D2FDD9BBDBE = { isa = PBXBuildFile; fileRef = 6CD0D896FEB77B261C62447E; };
-		F3F3E688834C724BC35231F1 = { isa = PBXBuildFile; fileRef = EB824B60F600C19193ADFA5F; };
-		ECBA3D0CB756E83C4DA9685E = { isa = PBXBuildFile; fileRef = B28CC9409188C9A200AAAFFC; };
-		13457B3248E7646270A4FF88 = { isa = PBXBuildFile; fileRef = A32D8455B95FD230EBFD7891; };
-		D060C0893EDAE6CBC86A5FE2 = { isa = PBXBuildFile; fileRef = AA00883DC021E36B7EFDAC43; };
-		E36C0018635A85E09D4EDE01 = { isa = PBXBuildFile; fileRef = B977C2809B309C8038CB5D95; };
-		C170A763D33146C74ED4CE4B = { isa = PBXBuildFile; fileRef = EEDA71600D817BF9444FE3E7; };
-		116BB2F62451986C75586F9D = { isa = PBXBuildFile; fileRef = 5AB4A3A63B9FDEAB09EEC9C8; };
-		1F301384375DA0F3652C01DA = { isa = PBXBuildFile; fileRef = 2A78F719BAFBDCD63AE9A88A; };
-		4DA172021AB3AB88E70FAF99 = { isa = PBXBuildFile; fileRef = 77F2E2E7A2419CB172C0B1EA; };
-		F80F061AE618AD08407BCA9A = { isa = PBXBuildFile; fileRef = 19D5134F99CC551B01D5A7EF; };
-		5F102AE69FB814467A298A97 = { isa = PBXBuildFile; fileRef = B56D08AB6374C811F59D760C; };
-		F18F6DF7E80854DE6780531D = { isa = PBXBuildFile; fileRef = 898385F65E64BF6D609B3BF2; };
-		FD157D98C4C31AE782659718 = { isa = PBXBuildFile; fileRef = C3B95EF26B5F3281447FCF42; };
-		09AC8D29A08EE1FFBC4ADB23 = { isa = PBXBuildFile; fileRef = 1CD026FD773BB5A428624381; };
-		05339DCA8C59B707E61F1F2E = { isa = PBXBuildFile; fileRef = 55F7FFF9942627D7FC46C6C1; };
-		FAB58A8AE7DCBAC0CF311D14 = { isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; };
-		39FAF9808D0EFB6C8170D8B8 = { isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = System/Library/Frameworks/Carbon.framework; sourceTree = SDKROOT; };
-		0B661DF3EFF63CFFCCA76AF4 = { isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = System/Library/Frameworks/IOKit.framework; sourceTree = SDKROOT; };
-		A9B11C1B693E380C29F53F78 = { isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; };
-		D08C5BF3FF3AC38C2BB5F921 = { isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMIDI.framework; path = System/Library/Frameworks/CoreMIDI.framework; sourceTree = SDKROOT; };
-		6A67346CD9B6D590108C7B6E = { isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; };
-		9AFA895DFA2087804F47ECF9 = { isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = DiscRecording.framework; path = System/Library/Frameworks/DiscRecording.framework; sourceTree = SDKROOT; };
-		54662C69F6AA71B55D68F12E = { isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = System/Library/Frameworks/OpenGL.framework; sourceTree = SDKROOT; };
-		191441B631182A346D494BB5 = { isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
-		1CBCB9D2FE5B967D93785E75 = { isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QTKit.framework; path = System/Library/Frameworks/QTKit.framework; sourceTree = SDKROOT; };
-		BF41F256D0C244C2C02AE6E1 = { isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuickTime.framework; path = System/Library/Frameworks/QuickTime.framework; sourceTree = SDKROOT; };
-		0837481AD187A1E6CBCAC577 = { isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "open-ephys.app"; sourceTree = BUILT_PRODUCTS_DIR; };
-		D91BA61C12BFEBE59B577805 = { isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = Info.plist; sourceTree = SOURCE_ROOT; };
-		79892A4E41809A09A4711AC3 = { isa = PBXFileReference; lastKnownFileType = file.otf; name = BebasNeue.otf; path = ../../Resources/Fonts/BebasNeue.otf; sourceTree = SOURCE_ROOT; };
-		1B2C20F6F1F1BCF9115F8D53 = { isa = PBXFileReference; lastKnownFileType = file.otf; name = cpmono_bold.otf; path = ../../Resources/Fonts/cpmono_bold.otf; sourceTree = SOURCE_ROOT; };
-		C586714DD22C96F569FDC716 = { isa = PBXFileReference; lastKnownFileType = file.otf; name = cpmono_extra_light.otf; path = ../../Resources/Fonts/cpmono_extra_light.otf; sourceTree = SOURCE_ROOT; };
-		8E7AA0EF1B95BC771FBB10A0 = { isa = PBXFileReference; lastKnownFileType = file.otf; name = cpmono_light.otf; path = ../../Resources/Fonts/cpmono_light.otf; sourceTree = SOURCE_ROOT; };
-		E79C104CD58BBBD5368EEF5A = { isa = PBXFileReference; lastKnownFileType = file.otf; name = cpmono_plain.otf; path = ../../Resources/Fonts/cpmono_plain.otf; sourceTree = SOURCE_ROOT; };
-		060C55E19A414F464C499A47 = { isa = PBXFileReference; lastKnownFileType = file.ttf; name = "miso-bold.ttf"; path = "../../Resources/Fonts/miso-bold.ttf"; sourceTree = SOURCE_ROOT; };
-		50F20268C4572493BB04D269 = { isa = PBXFileReference; lastKnownFileType = file.ttf; name = "miso-light.ttf"; path = "../../Resources/Fonts/miso-light.ttf"; sourceTree = SOURCE_ROOT; };
-		50D4782F4555FED294F40705 = { isa = PBXFileReference; lastKnownFileType = file.ttf; name = "miso-regular.ttf"; path = "../../Resources/Fonts/miso-regular.ttf"; sourceTree = SOURCE_ROOT; };
-		4974E0E46141648F106A818F = { isa = PBXFileReference; lastKnownFileType = file; name = "miso-serialized"; path = "../../Resources/Fonts/miso-serialized"; sourceTree = SOURCE_ROOT; };
-		35352AD0E7B59E35BC3B5F59 = { isa = PBXFileReference; lastKnownFileType = file.ttf; name = nordic.ttf; path = ../../Resources/Fonts/nordic.ttf; sourceTree = SOURCE_ROOT; };
-		44303AB487040AE4B60DCAD5 = { isa = PBXFileReference; lastKnownFileType = file.ttf; name = ostrich.ttf; path = ../../Resources/Fonts/ostrich.ttf; sourceTree = SOURCE_ROOT; };
-		C2A7939DF5ED600BBB2F30C4 = { isa = PBXFileReference; lastKnownFileType = file; name = "silkscreen-serialized"; path = "../../Resources/Fonts/silkscreen-serialized"; sourceTree = SOURCE_ROOT; };
-		F8CAE2412B173788F325BD8B = { isa = PBXFileReference; lastKnownFileType = file.ttf; name = silkscreen.ttf; path = ../../Resources/Fonts/silkscreen.ttf; sourceTree = SOURCE_ROOT; };
-		363B59958615D35C5C948300 = { isa = PBXFileReference; lastKnownFileType = file.otf; name = "unibody-8.otf"; path = "../../Resources/Fonts/unibody-8.otf"; sourceTree = SOURCE_ROOT; };
-		C2C96A81B4033338679E6EFB = { isa = PBXFileReference; lastKnownFileType = image.png; name = ArduinoIcon.png; path = ../../Resources/Images/Icons/ArduinoIcon.png; sourceTree = SOURCE_ROOT; };
-		A582462316439858552387F7 = { isa = PBXFileReference; lastKnownFileType = image.png; name = OpenEphysBoardLogoBlack.png; path = ../../Resources/Images/Icons/OpenEphysBoardLogoBlack.png; sourceTree = SOURCE_ROOT; };
-		9CAD123471BE2E6ED4A96C3B = { isa = PBXFileReference; lastKnownFileType = image.png; name = OpenEphysBoardLogoGray.png; path = ../../Resources/Images/Icons/OpenEphysBoardLogoGray.png; sourceTree = SOURCE_ROOT; };
-		4DB02C352236D9D030E01205 = { isa = PBXFileReference; lastKnownFileType = image.png; name = "RadioButtons-01.png"; path = "../../Resources/Images/Icons/RadioButtons-01.png"; sourceTree = SOURCE_ROOT; };
-		EEAB043F90902D8F9D1102C2 = { isa = PBXFileReference; lastKnownFileType = image.png; name = "RadioButtons-02.png"; path = "../../Resources/Images/Icons/RadioButtons-02.png"; sourceTree = SOURCE_ROOT; };
-		8086EC3AFDEA802E0B43F19E = { isa = PBXFileReference; lastKnownFileType = image.png; name = "RadioButtons-03.png"; path = "../../Resources/Images/Icons/RadioButtons-03.png"; sourceTree = SOURCE_ROOT; };
-		2171C4356B44D4CD6865E06B = { isa = PBXFileReference; lastKnownFileType = image.png; name = "RadioButtons-04.png"; path = "../../Resources/Images/Icons/RadioButtons-04.png"; sourceTree = SOURCE_ROOT; };
-		C25CAC3FC9AE387CD597DF37 = { isa = PBXFileReference; lastKnownFileType = image.png; name = "RadioButtons-05.png"; path = "../../Resources/Images/Icons/RadioButtons-05.png"; sourceTree = SOURCE_ROOT; };
-		59CAEFDE36164ABB19B3CA76 = { isa = PBXFileReference; lastKnownFileType = image.png; name = "RadioButtons_neutral-01.png"; path = "../../Resources/Images/Icons/RadioButtons_neutral-01.png"; sourceTree = SOURCE_ROOT; };
-		E0587F61AD4A92C2661E5073 = { isa = PBXFileReference; lastKnownFileType = image.png; name = "RadioButtons_neutral-02.png"; path = "../../Resources/Images/Icons/RadioButtons_neutral-02.png"; sourceTree = SOURCE_ROOT; };
-		87F60F05136FEBD8A36AE670 = { isa = PBXFileReference; lastKnownFileType = image.png; name = "RadioButtons_neutral-03.png"; path = "../../Resources/Images/Icons/RadioButtons_neutral-03.png"; sourceTree = SOURCE_ROOT; };
-		1E849F999A8333FFF0B57C6D = { isa = PBXFileReference; lastKnownFileType = image.png; name = "RadioButtons_neutral-04.png"; path = "../../Resources/Images/Icons/RadioButtons_neutral-04.png"; sourceTree = SOURCE_ROOT; };
-		A5231F3D01B88C063D10026A = { isa = PBXFileReference; lastKnownFileType = image.png; name = "RadioButtons_neutral-05.png"; path = "../../Resources/Images/Icons/RadioButtons_neutral-05.png"; sourceTree = SOURCE_ROOT; };
-		40A802FCEDFDE7B2FFEBDEA8 = { isa = PBXFileReference; lastKnownFileType = image.png; name = "RadioButtons_selected-01.png"; path = "../../Resources/Images/Icons/RadioButtons_selected-01.png"; sourceTree = SOURCE_ROOT; };
-		8A3AE5CF9D452810BA48A3EF = { isa = PBXFileReference; lastKnownFileType = image.png; name = "RadioButtons_selected-02.png"; path = "../../Resources/Images/Icons/RadioButtons_selected-02.png"; sourceTree = SOURCE_ROOT; };
-		B3CDC8825DAD5A7D75956726 = { isa = PBXFileReference; lastKnownFileType = image.png; name = "RadioButtons_selected-03.png"; path = "../../Resources/Images/Icons/RadioButtons_selected-03.png"; sourceTree = SOURCE_ROOT; };
-		ED50AB550D058BEB30F12C7D = { isa = PBXFileReference; lastKnownFileType = image.png; name = "RadioButtons_selected-04.png"; path = "../../Resources/Images/Icons/RadioButtons_selected-04.png"; sourceTree = SOURCE_ROOT; };
-		17E38F29BD6CBC490B5EF1B4 = { isa = PBXFileReference; lastKnownFileType = image.png; name = "RadioButtons_selected-05.png"; path = "../../Resources/Images/Icons/RadioButtons_selected-05.png"; sourceTree = SOURCE_ROOT; };
-		D95C78F42494CD5995FBC15E = { isa = PBXFileReference; lastKnownFileType = image.png; name = "RadioButtons_selected_over-01.png"; path = "../../Resources/Images/Icons/RadioButtons_selected_over-01.png"; sourceTree = SOURCE_ROOT; };
-		20B50BC2221C593AC67D80F8 = { isa = PBXFileReference; lastKnownFileType = image.png; name = "RadioButtons_selected_over-02.png"; path = "../../Resources/Images/Icons/RadioButtons_selected_over-02.png"; sourceTree = SOURCE_ROOT; };
-		771E8D912F94E52AF7E05F91 = { isa = PBXFileReference; lastKnownFileType = image.png; name = "RadioButtons_selected_over-03.png"; path = "../../Resources/Images/Icons/RadioButtons_selected_over-03.png"; sourceTree = SOURCE_ROOT; };
-		CE771F502D1D710B28632E3A = { isa = PBXFileReference; lastKnownFileType = image.png; name = "RadioButtons_selected_over-04.png"; path = "../../Resources/Images/Icons/RadioButtons_selected_over-04.png"; sourceTree = SOURCE_ROOT; };
-		05D0A12F2A850EEC48D5EDD4 = { isa = PBXFileReference; lastKnownFileType = image.png; name = "RadioButtons_selected_over-05.png"; path = "../../Resources/Images/Icons/RadioButtons_selected_over-05.png"; sourceTree = SOURCE_ROOT; };
-		8F8F55DD042F61BB213AFC0B = { isa = PBXFileReference; lastKnownFileType = image.png; name = noise_wave.png; path = ../../Resources/Images/Icons/noise_wave.png; sourceTree = SOURCE_ROOT; };
-		7C09194091360867C4CAB0E8 = { isa = PBXFileReference; lastKnownFileType = image.png; name = saw_wave.png; path = ../../Resources/Images/Icons/saw_wave.png; sourceTree = SOURCE_ROOT; };
-		126B0DE9B8D4E42DA7D57AAB = { isa = PBXFileReference; lastKnownFileType = image.png; name = sine_wave.png; path = ../../Resources/Images/Icons/sine_wave.png; sourceTree = SOURCE_ROOT; };
-		BDFFB5B0A8E8A022C25D7FDB = { isa = PBXFileReference; lastKnownFileType = image.png; name = square_wave.png; path = ../../Resources/Images/Icons/square_wave.png; sourceTree = SOURCE_ROOT; };
-		3D20C932FB058CC20989B129 = { isa = PBXFileReference; lastKnownFileType = image.png; name = triangle_wave.png; path = ../../Resources/Images/Icons/triangle_wave.png; sourceTree = SOURCE_ROOT; };
-		8E041C8C49F1A5B710CC812C = { isa = PBXFileReference; lastKnownFileType = image.png; name = wifi.png; path = ../../Resources/Images/Icons/wifi.png; sourceTree = SOURCE_ROOT; };
-		2A1D9144C59B92B32483924B = { isa = PBXFileReference; lastKnownFileType = image.png; name = SourceDrop.png; path = ../../Resources/Images/Icons/SourceDrop.png; sourceTree = SOURCE_ROOT; };
-		D99F56FB46F631F67AF23F2C = { isa = PBXFileReference; lastKnownFileType = image.png; name = DefaultDataSource.png; path = ../../Resources/Images/Icons/DefaultDataSource.png; sourceTree = SOURCE_ROOT; };
-		66C7E42D7FDE3600982A1F46 = { isa = PBXFileReference; lastKnownFileType = image.png; name = FileReaderIcon.png; path = ../../Resources/Images/Icons/FileReaderIcon.png; sourceTree = SOURCE_ROOT; };
-		A4C8AB3F5E7A708350F72E7C = { isa = PBXFileReference; lastKnownFileType = image.png; name = IntanIcon.png; path = ../../Resources/Images/Icons/IntanIcon.png; sourceTree = SOURCE_ROOT; };
-		BD0900C3A85F58C34FA91D16 = { isa = PBXFileReference; lastKnownFileType = image.png; name = muteoff.png; path = ../../Resources/Images/Buttons/muteoff.png; sourceTree = SOURCE_ROOT; };
-		1BDA9647E0AA33F642E162BE = { isa = PBXFileReference; lastKnownFileType = image.png; name = muteon.png; path = ../../Resources/Images/Buttons/muteon.png; sourceTree = SOURCE_ROOT; };
-		D2D308542534D043BB12C801 = { isa = PBXFileReference; lastKnownFileType = image.png; name = "MergerA-01.png"; path = "../../Resources/Images/Buttons/MergerA-01.png"; sourceTree = SOURCE_ROOT; };
-		9CD0E7C2C7E49A0DBF301B0F = { isa = PBXFileReference; lastKnownFileType = image.png; name = "MergerA-02.png"; path = "../../Resources/Images/Buttons/MergerA-02.png"; sourceTree = SOURCE_ROOT; };
-		BAAA02122ADD1D5D0670A684 = { isa = PBXFileReference; lastKnownFileType = image.png; name = "MergerB-01.png"; path = "../../Resources/Images/Buttons/MergerB-01.png"; sourceTree = SOURCE_ROOT; };
-		73A7E17FDD8DD717F99E0882 = { isa = PBXFileReference; lastKnownFileType = image.png; name = "MergerB-02.png"; path = "../../Resources/Images/Buttons/MergerB-02.png"; sourceTree = SOURCE_ROOT; };
-		2A54E3D28E10F5D50498BB77 = { isa = PBXFileReference; lastKnownFileType = image.png; name = "PipelineA-01.png"; path = "../../Resources/Images/Buttons/PipelineA-01.png"; sourceTree = SOURCE_ROOT; };
-		294B78ADA337603DE3C87BF9 = { isa = PBXFileReference; lastKnownFileType = image.png; name = "PipelineA-02.png"; path = "../../Resources/Images/Buttons/PipelineA-02.png"; sourceTree = SOURCE_ROOT; };
-		8AD9A0F023B727B34348B95E = { isa = PBXFileReference; lastKnownFileType = image.png; name = "PipelineB-01.png"; path = "../../Resources/Images/Buttons/PipelineB-01.png"; sourceTree = SOURCE_ROOT; };
-		89CF25CB48EEA21B226869E1 = { isa = PBXFileReference; lastKnownFileType = image.png; name = "PipelineB-02.png"; path = "../../Resources/Images/Buttons/PipelineB-02.png"; sourceTree = SOURCE_ROOT; };
-		CA0A1584725D21237DBCD70A = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = AccessClass.cpp; path = ../../Source/AccessClass.cpp; sourceTree = SOURCE_ROOT; };
-		63992CB3AC42F91A51135EAC = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = AccessClass.h; path = ../../Source/AccessClass.h; sourceTree = SOURCE_ROOT; };
-		673778A175624FC9F52E7A15 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = PracticalSocket.cpp; path = ../../Source/Network/PracticalSocket.cpp; sourceTree = SOURCE_ROOT; };
-		2EAE0475B719C3233AD8BB35 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = PracticalSocket.h; path = ../../Source/Network/PracticalSocket.h; sourceTree = SOURCE_ROOT; };
-		B30EF131FE61BAA4C1818102 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Bessel.cpp; path = ../../Source/Dsp/Bessel.cpp; sourceTree = SOURCE_ROOT; };
-		D55947E71EB4AF25C1FC7089 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Bessel.h; path = ../../Source/Dsp/Bessel.h; sourceTree = SOURCE_ROOT; };
-		07AE46453303977ED64E38ED = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Biquad.cpp; path = ../../Source/Dsp/Biquad.cpp; sourceTree = SOURCE_ROOT; };
-		9EBBC43B9522EC9E6B607493 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Biquad.h; path = ../../Source/Dsp/Biquad.h; sourceTree = SOURCE_ROOT; };
-		73C6FF74D6A31CA13C0D7C5C = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Butterworth.cpp; path = ../../Source/Dsp/Butterworth.cpp; sourceTree = SOURCE_ROOT; };
-		8B70886CFCD13A761567DE7B = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Butterworth.h; path = ../../Source/Dsp/Butterworth.h; sourceTree = SOURCE_ROOT; };
-		742284C84C72C882E02E7974 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Cascade.cpp; path = ../../Source/Dsp/Cascade.cpp; sourceTree = SOURCE_ROOT; };
-		2B8E059E57EB92EAC589C6B4 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Cascade.h; path = ../../Source/Dsp/Cascade.h; sourceTree = SOURCE_ROOT; };
-		D44DBE2FF15A98834F222766 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ChebyshevI.cpp; path = ../../Source/Dsp/ChebyshevI.cpp; sourceTree = SOURCE_ROOT; };
-		553E92DB60C7D5104B780781 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ChebyshevI.h; path = ../../Source/Dsp/ChebyshevI.h; sourceTree = SOURCE_ROOT; };
-		1F9836FC5A8FDF2293C9A232 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ChebyshevII.cpp; path = ../../Source/Dsp/ChebyshevII.cpp; sourceTree = SOURCE_ROOT; };
-		833030703B66CDD9DA94155B = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ChebyshevII.h; path = ../../Source/Dsp/ChebyshevII.h; sourceTree = SOURCE_ROOT; };
-		F7620D8D567CCE463ADDE0A6 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Common.h; path = ../../Source/Dsp/Common.h; sourceTree = SOURCE_ROOT; };
-		93FACAE1DC7A236505359477 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Custom.cpp; path = ../../Source/Dsp/Custom.cpp; sourceTree = SOURCE_ROOT; };
-		E4AEAC4AD1D1C6A80A2CD70A = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Custom.h; path = ../../Source/Dsp/Custom.h; sourceTree = SOURCE_ROOT; };
-		3E8E2F9C583077B298525FD1 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Design.cpp; path = ../../Source/Dsp/Design.cpp; sourceTree = SOURCE_ROOT; };
-		CD05957EC804348231739108 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Design.h; path = ../../Source/Dsp/Design.h; sourceTree = SOURCE_ROOT; };
-		E8214D83845C25F39EEC13CD = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Documentation.cpp; path = ../../Source/Dsp/Documentation.cpp; sourceTree = SOURCE_ROOT; };
-		21E5288817625724406FD3A1 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Dsp.h; path = ../../Source/Dsp/Dsp.h; sourceTree = SOURCE_ROOT; };
-		293B003BD6E113C5AD1BB131 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Elliptic.cpp; path = ../../Source/Dsp/Elliptic.cpp; sourceTree = SOURCE_ROOT; };
-		60F060DBD5ACF36E0A407BC1 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Elliptic.h; path = ../../Source/Dsp/Elliptic.h; sourceTree = SOURCE_ROOT; };
-		A9AF10F6A89F85989C62F856 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Filter.cpp; path = ../../Source/Dsp/Filter.cpp; sourceTree = SOURCE_ROOT; };
-		7C225F446A96BED7F585F66B = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Filter.h; path = ../../Source/Dsp/Filter.h; sourceTree = SOURCE_ROOT; };
-		314D53C7C13C28A25588ABCF = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Layout.h; path = ../../Source/Dsp/Layout.h; sourceTree = SOURCE_ROOT; };
-		706CBE9178440675868F2379 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Legendre.cpp; path = ../../Source/Dsp/Legendre.cpp; sourceTree = SOURCE_ROOT; };
-		1EC547C25C29FE679BAF8B4D = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Legendre.h; path = ../../Source/Dsp/Legendre.h; sourceTree = SOURCE_ROOT; };
-		4D63E86C8A9F721B9C0FA95E = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = MathSupplement.h; path = ../../Source/Dsp/MathSupplement.h; sourceTree = SOURCE_ROOT; };
-		BF8EB3483F66AA7F61E6D863 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Param.cpp; path = ../../Source/Dsp/Param.cpp; sourceTree = SOURCE_ROOT; };
-		1E0F3076D1689E83422F6B4E = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Params.h; path = ../../Source/Dsp/Params.h; sourceTree = SOURCE_ROOT; };
-		137CF1AB4144076D79D50975 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = PoleFilter.cpp; path = ../../Source/Dsp/PoleFilter.cpp; sourceTree = SOURCE_ROOT; };
-		5B1D08D98AD9F623962A38B2 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = PoleFilter.h; path = ../../Source/Dsp/PoleFilter.h; sourceTree = SOURCE_ROOT; };
-		E6FF4D4C70794123A52B9E82 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = RBJ.cpp; path = ../../Source/Dsp/RBJ.cpp; sourceTree = SOURCE_ROOT; };
-		E8503A3E123FCFBFA317EAE6 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = RBJ.h; path = ../../Source/Dsp/RBJ.h; sourceTree = SOURCE_ROOT; };
-		F4A53064BA75472765338C1D = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = RootFinder.cpp; path = ../../Source/Dsp/RootFinder.cpp; sourceTree = SOURCE_ROOT; };
-		1D1DF895F34C981407EDB8E8 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = RootFinder.h; path = ../../Source/Dsp/RootFinder.h; sourceTree = SOURCE_ROOT; };
-		1F5435604926FF2C06575DCC = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SmoothedFilter.h; path = ../../Source/Dsp/SmoothedFilter.h; sourceTree = SOURCE_ROOT; };
-		0D20C3399D0492771F7A808A = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = State.cpp; path = ../../Source/Dsp/State.cpp; sourceTree = SOURCE_ROOT; };
-		186F011C1ABC55DB39717105 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = State.h; path = ../../Source/Dsp/State.h; sourceTree = SOURCE_ROOT; };
-		92C241C7F87B5933B0E6E03F = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Types.h; path = ../../Source/Dsp/Types.h; sourceTree = SOURCE_ROOT; };
-		E27B5891A52FDAB2B00901A0 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Utilities.h; path = ../../Source/Dsp/Utilities.h; sourceTree = SOURCE_ROOT; };
-		F74662D3D82975EDB5AD42E0 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = AudioComponent.cpp; path = ../../Source/Audio/AudioComponent.cpp; sourceTree = SOURCE_ROOT; };
-		FA55B9FDE138CCB1F16BA905 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = AudioComponent.h; path = ../../Source/Audio/AudioComponent.h; sourceTree = SOURCE_ROOT; };
-		EF2AF97E68B2C2428A835836 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = PhaseDetector.cpp; path = ../../Source/Processors/PhaseDetector.cpp; sourceTree = SOURCE_ROOT; };
-		552B1370E46646B6B1D40CF8 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = PhaseDetector.h; path = ../../Source/Processors/PhaseDetector.h; sourceTree = SOURCE_ROOT; };
-		2AFAED9379D050629F34C033 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = AudioResamplingNode.cpp; path = ../../Source/Processors/AudioResamplingNode.cpp; sourceTree = SOURCE_ROOT; };
-		530B262BE169DC42E8F505EA = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = AudioResamplingNode.h; path = ../../Source/Processors/AudioResamplingNode.h; sourceTree = SOURCE_ROOT; };
-		F040256D2E74A61F4F08B148 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Channel.cpp; path = ../../Source/Processors/Channel.cpp; sourceTree = SOURCE_ROOT; };
-		8C8C2A42B36655796DCFBAC2 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Channel.h; path = ../../Source/Processors/Channel.h; sourceTree = SOURCE_ROOT; };
-		06AB64E97A05B800349E7E23 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ofArduino.cpp; path = ../../Source/Processors/Serial/ofArduino.cpp; sourceTree = SOURCE_ROOT; };
-		482AFCBBC28835A9548101B1 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ofArduino.h; path = ../../Source/Processors/Serial/ofArduino.h; sourceTree = SOURCE_ROOT; };
-		96D33A963CAAEEAB8770F2A3 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ofConstants.h; path = ../../Source/Processors/Serial/ofConstants.h; sourceTree = SOURCE_ROOT; };
-		3022191E4C192BC10670B935 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ofSerial.cpp; path = ../../Source/Processors/Serial/ofSerial.cpp; sourceTree = SOURCE_ROOT; };
-		AED49EC9B45C93F39002B4B9 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ofSerial.h; path = ../../Source/Processors/Serial/ofSerial.h; sourceTree = SOURCE_ROOT; };
-		90E8F4BDA3DBA5F8D78A2AB0 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = EventDetector.cpp; path = ../../Source/Processors/EventDetector.cpp; sourceTree = SOURCE_ROOT; };
-		5E2258F02911313F494357BF = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = EventDetector.h; path = ../../Source/Processors/EventDetector.h; sourceTree = SOURCE_ROOT; };
-		3261B4AE147B49EEE9341CF8 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = FPGAOutput.cpp; path = ../../Source/Processors/FPGAOutput.cpp; sourceTree = SOURCE_ROOT; };
-		C04E6EDA980CDC09DF061D66 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = FPGAOutput.h; path = ../../Source/Processors/FPGAOutput.h; sourceTree = SOURCE_ROOT; };
-		C42446F8ABB3627870E9677D = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ArduinoOutput.cpp; path = ../../Source/Processors/ArduinoOutput.cpp; sourceTree = SOURCE_ROOT; };
-		5779673F042A62E02C4AC06B = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ArduinoOutput.h; path = ../../Source/Processors/ArduinoOutput.h; sourceTree = SOURCE_ROOT; };
-		751C52F2BEA7F1328ED13333 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Parameter.cpp; path = ../../Source/Processors/Parameter.cpp; sourceTree = SOURCE_ROOT; };
-		7B825983F25D8984E02F6FFB = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Parameter.h; path = ../../Source/Processors/Parameter.h; sourceTree = SOURCE_ROOT; };
-		4AEDD076CCA918481C6F9CF2 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = SpikeDisplayNode.cpp; path = ../../Source/Processors/SpikeDisplayNode.cpp; sourceTree = SOURCE_ROOT; };
-		671CC5EA3DF4F21E9A7E392B = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SpikeDisplayNode.h; path = ../../Source/Processors/SpikeDisplayNode.h; sourceTree = SOURCE_ROOT; };
-		268005410FB62BCB9099A762 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = WiFiOutput.cpp; path = ../../Source/Processors/WiFiOutput.cpp; sourceTree = SOURCE_ROOT; };
-		32959675287F77DD9B7FA96B = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = WiFiOutput.h; path = ../../Source/Processors/WiFiOutput.h; sourceTree = SOURCE_ROOT; };
-		5935F823A2EE45AC36A0201F = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = LfpDisplayNode.cpp; path = ../../Source/Processors/LfpDisplayNode.cpp; sourceTree = SOURCE_ROOT; };
-		B00F207EBEED525FB686AD98 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = LfpDisplayNode.h; path = ../../Source/Processors/LfpDisplayNode.h; sourceTree = SOURCE_ROOT; };
-		3973173C7FA07073B4F86B29 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Merger.cpp; path = ../../Source/Processors/Utilities/Merger.cpp; sourceTree = SOURCE_ROOT; };
-		7977CAB4A151C41F4140FE1A = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Merger.h; path = ../../Source/Processors/Utilities/Merger.h; sourceTree = SOURCE_ROOT; };
-		9A47B52E5E1CD17DC9C72B53 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Splitter.cpp; path = ../../Source/Processors/Utilities/Splitter.cpp; sourceTree = SOURCE_ROOT; };
-		B92E8189F69E0B926C73B654 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Splitter.h; path = ../../Source/Processors/Utilities/Splitter.h; sourceTree = SOURCE_ROOT; };
-		C96A8F49EA22919F09486B96 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = SpikePlot.cpp; path = ../../Source/Processors/Visualization/SpikePlotting/SpikePlot.cpp; sourceTree = SOURCE_ROOT; };
-		06B051747D84858D9C5C0444 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SpikePlot.h; path = ../../Source/Processors/Visualization/SpikePlotting/SpikePlot.h; sourceTree = SOURCE_ROOT; };
-		41591F74A761BAC908FA8AD8 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = BaseUIElement.cpp; path = ../../Source/Processors/Visualization/SpikePlotting/BaseUIElement.cpp; sourceTree = SOURCE_ROOT; };
-		9C8EA29582DBFF6E5A14B8A3 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = BaseUIElement.h; path = ../../Source/Processors/Visualization/SpikePlotting/BaseUIElement.h; sourceTree = SOURCE_ROOT; };
-		24C6D768C87E1C42C644C4BD = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = GenericAxes.cpp; path = ../../Source/Processors/Visualization/SpikePlotting/GenericAxes.cpp; sourceTree = SOURCE_ROOT; };
-		BCBB865ED53E8AFD278D1A53 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = GenericAxes.h; path = ../../Source/Processors/Visualization/SpikePlotting/GenericAxes.h; sourceTree = SOURCE_ROOT; };
-		B195AD6CEB9B6E3625C8D087 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = PlotUtils.cpp; path = ../../Source/Processors/Visualization/SpikePlotting/PlotUtils.cpp; sourceTree = SOURCE_ROOT; };
-		521FECC75E9DDB0D34B22AF8 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = PlotUtils.h; path = ../../Source/Processors/Visualization/SpikePlotting/PlotUtils.h; sourceTree = SOURCE_ROOT; };
-		2FA2FA826CBAD9C639A61E4A = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ProjectionAxes.cpp; path = ../../Source/Processors/Visualization/SpikePlotting/ProjectionAxes.cpp; sourceTree = SOURCE_ROOT; };
-		B1CF7BFC5F1892735D4FA1EE = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ProjectionAxes.h; path = ../../Source/Processors/Visualization/SpikePlotting/ProjectionAxes.h; sourceTree = SOURCE_ROOT; };
-		50E7B88E8140BB293B27ED67 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SimpleKeyEvent.h; path = ../../Source/Processors/Visualization/SpikePlotting/SimpleKeyEvent.h; sourceTree = SOURCE_ROOT; };
-		9F208A66C09E80D14F087CB1 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = WaveAxes.cpp; path = ../../Source/Processors/Visualization/SpikePlotting/WaveAxes.cpp; sourceTree = SOURCE_ROOT; };
-		A3F978AE6999903C47650173 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = WaveAxes.h; path = ../../Source/Processors/Visualization/SpikePlotting/WaveAxes.h; sourceTree = SOURCE_ROOT; };
-		E7247F5EE9588903C924994F = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = SpikeObject.cpp; path = ../../Source/Processors/Visualization/SpikeObject.cpp; sourceTree = SOURCE_ROOT; };
-		B0A6A0635113C4B4CD424BEC = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SpikeObject.h; path = ../../Source/Processors/Visualization/SpikeObject.h; sourceTree = SOURCE_ROOT; };
-		7A9A31FC1AE8FB238FAE995E = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = SpikeDisplayCanvas.cpp; path = ../../Source/Processors/Visualization/SpikeDisplayCanvas.cpp; sourceTree = SOURCE_ROOT; };
-		9E884AEDB6035FFC74886EE8 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SpikeDisplayCanvas.h; path = ../../Source/Processors/Visualization/SpikeDisplayCanvas.h; sourceTree = SOURCE_ROOT; };
-		9ACFB6A181D09434268CE006 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Visualizer.h; path = ../../Source/Processors/Visualization/Visualizer.h; sourceTree = SOURCE_ROOT; };
-		ED179D5A10DD051DDB3ECB8B = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = DataWindow.cpp; path = ../../Source/Processors/Visualization/DataWindow.cpp; sourceTree = SOURCE_ROOT; };
-		63C18F4066C75D3C312877D8 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = DataWindow.h; path = ../../Source/Processors/Visualization/DataWindow.h; sourceTree = SOURCE_ROOT; };
-		2E96DA81EE37A0ECE471A928 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = LfpDisplayCanvas.cpp; path = ../../Source/Processors/Visualization/LfpDisplayCanvas.cpp; sourceTree = SOURCE_ROOT; };
-		A9C2C7AF037050228CD2E026 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = LfpDisplayCanvas.h; path = ../../Source/Processors/Visualization/LfpDisplayCanvas.h; sourceTree = SOURCE_ROOT; };
-		0C5335B0E57C9DC92FC57E5F = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = OpenGLCanvas.cpp; path = ../../Source/Processors/Visualization/OpenGLCanvas.cpp; sourceTree = SOURCE_ROOT; };
-		7738F51AE0EC63D76EE0F761 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = OpenGLCanvas.h; path = ../../Source/Processors/Visualization/OpenGLCanvas.h; sourceTree = SOURCE_ROOT; };
-		3DD0741FCFBC7563EC722D9B = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = SpikeDetector.cpp; path = ../../Source/Processors/SpikeDetector.cpp; sourceTree = SOURCE_ROOT; };
-		6E4B37AA4BFEB5A37E3AC250 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SpikeDetector.h; path = ../../Source/Processors/SpikeDetector.h; sourceTree = SOURCE_ROOT; };
-		B7750B27E4F3748ECCCCF69D = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = AudioNode.cpp; path = ../../Source/Processors/AudioNode.cpp; sourceTree = SOURCE_ROOT; };
-		12866D44BE115E8837468F48 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = AudioNode.h; path = ../../Source/Processors/AudioNode.h; sourceTree = SOURCE_ROOT; };
-		FA57CE4F63FF1592D6B3F9B5 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = EventNode.cpp; path = ../../Source/Processors/EventNode.cpp; sourceTree = SOURCE_ROOT; };
-		32163C956C8A6F5C1DD7FE7F = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = EventNode.h; path = ../../Source/Processors/EventNode.h; sourceTree = SOURCE_ROOT; };
-		EE3AAE8BD520868168064D38 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ResamplingNodeEditor.cpp; path = ../../Source/Processors/Editors/ResamplingNodeEditor.cpp; sourceTree = SOURCE_ROOT; };
-		E177F2FF11601F6E11498390 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ResamplingNodeEditor.h; path = ../../Source/Processors/Editors/ResamplingNodeEditor.h; sourceTree = SOURCE_ROOT; };
-		7738196148E539781B237854 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = FPGAOutputEditor.cpp; path = ../../Source/Processors/Editors/FPGAOutputEditor.cpp; sourceTree = SOURCE_ROOT; };
-		5F43022E89D254273CF827A5 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = FPGAOutputEditor.h; path = ../../Source/Processors/Editors/FPGAOutputEditor.h; sourceTree = SOURCE_ROOT; };
-		DAFD5D2E1F875321584C7147 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ArduinoOutputEditor.cpp; path = ../../Source/Processors/Editors/ArduinoOutputEditor.cpp; sourceTree = SOURCE_ROOT; };
-		5F0DC90995C8E7BB7E3176F7 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ArduinoOutputEditor.h; path = ../../Source/Processors/Editors/ArduinoOutputEditor.h; sourceTree = SOURCE_ROOT; };
-		51D2678E9F30DC261CCB61B0 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ChannelSelector.cpp; path = ../../Source/Processors/Editors/ChannelSelector.cpp; sourceTree = SOURCE_ROOT; };
-		1A64B7009173729093BA3D96 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ChannelSelector.h; path = ../../Source/Processors/Editors/ChannelSelector.h; sourceTree = SOURCE_ROOT; };
-		47ECF9384C1D27EB2FBEBF9E = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ParameterEditor.cpp; path = ../../Source/Processors/Editors/ParameterEditor.cpp; sourceTree = SOURCE_ROOT; };
-		07363B9FB8F988D45C4F0FE2 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ParameterEditor.h; path = ../../Source/Processors/Editors/ParameterEditor.h; sourceTree = SOURCE_ROOT; };
-		F0B09605D4108F0F94EF3B57 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = SpikeDisplayEditor.cpp; path = ../../Source/Processors/Editors/SpikeDisplayEditor.cpp; sourceTree = SOURCE_ROOT; };
-		2A46D8E3EC7207D969A2B202 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SpikeDisplayEditor.h; path = ../../Source/Processors/Editors/SpikeDisplayEditor.h; sourceTree = SOURCE_ROOT; };
-		9A3976537C96B39716B5312D = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = VisualizerEditor.cpp; path = ../../Source/Processors/Editors/VisualizerEditor.cpp; sourceTree = SOURCE_ROOT; };
-		C546D55EDE65ADDD95C6A6F5 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = VisualizerEditor.h; path = ../../Source/Processors/Editors/VisualizerEditor.h; sourceTree = SOURCE_ROOT; };
-		AD73EA6B24378294003DC2D0 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = MergerEditor.cpp; path = ../../Source/Processors/Editors/MergerEditor.cpp; sourceTree = SOURCE_ROOT; };
-		B7FD86B9DA02771D3519FAA0 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = MergerEditor.h; path = ../../Source/Processors/Editors/MergerEditor.h; sourceTree = SOURCE_ROOT; };
-		544DA1EF90EBBDB6FF2DE0A5 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ImageIcon.cpp; path = ../../Source/Processors/Editors/ImageIcon.cpp; sourceTree = SOURCE_ROOT; };
-		04AD8DDD47597AE0875ACDD1 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ImageIcon.h; path = ../../Source/Processors/Editors/ImageIcon.h; sourceTree = SOURCE_ROOT; };
-		2B11714BCE362D4EA7E377F5 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = WiFiOutputEditor.cpp; path = ../../Source/Processors/Editors/WiFiOutputEditor.cpp; sourceTree = SOURCE_ROOT; };
-		4E67CFE458501E763FF3AE94 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = WiFiOutputEditor.h; path = ../../Source/Processors/Editors/WiFiOutputEditor.h; sourceTree = SOURCE_ROOT; };
-		36393F2D58480F61ECDEB5E5 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = EventNodeEditor.cpp; path = ../../Source/Processors/Editors/EventNodeEditor.cpp; sourceTree = SOURCE_ROOT; };
-		A80433BF9686B4E2542C580C = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = EventNodeEditor.h; path = ../../Source/Processors/Editors/EventNodeEditor.h; sourceTree = SOURCE_ROOT; };
-		087136FA6A7A0E01738EEF03 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = SignalGeneratorEditor.cpp; path = ../../Source/Processors/Editors/SignalGeneratorEditor.cpp; sourceTree = SOURCE_ROOT; };
-		10F82563E4A633BC234B2800 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SignalGeneratorEditor.h; path = ../../Source/Processors/Editors/SignalGeneratorEditor.h; sourceTree = SOURCE_ROOT; };
-		CF9878CE31A1B41406C3457B = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = LfpDisplayEditor.cpp; path = ../../Source/Processors/Editors/LfpDisplayEditor.cpp; sourceTree = SOURCE_ROOT; };
-		C02C160190E417B42F73680A = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = LfpDisplayEditor.h; path = ../../Source/Processors/Editors/LfpDisplayEditor.h; sourceTree = SOURCE_ROOT; };
-		FC5939F3D2A31BB43EA3E393 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = SourceNodeEditor.cpp; path = ../../Source/Processors/Editors/SourceNodeEditor.cpp; sourceTree = SOURCE_ROOT; };
-		62DA962299323A2FA134203D = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SourceNodeEditor.h; path = ../../Source/Processors/Editors/SourceNodeEditor.h; sourceTree = SOURCE_ROOT; };
-		C2ED801EA28FBA9764E76349 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = SplitterEditor.cpp; path = ../../Source/Processors/Editors/SplitterEditor.cpp; sourceTree = SOURCE_ROOT; };
-		C177B371A0CEC8E7B9131865 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SplitterEditor.h; path = ../../Source/Processors/Editors/SplitterEditor.h; sourceTree = SOURCE_ROOT; };
-		399CBACE291A425A2B9497EF = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = SpikeDetectorEditor.cpp; path = ../../Source/Processors/Editors/SpikeDetectorEditor.cpp; sourceTree = SOURCE_ROOT; };
-		7FC3C64A06A9FA2C828F8744 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SpikeDetectorEditor.h; path = ../../Source/Processors/Editors/SpikeDetectorEditor.h; sourceTree = SOURCE_ROOT; };
-		5DDBEE64DC706CE804E5F0AA = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = AudioEditor.cpp; path = ../../Source/Processors/Editors/AudioEditor.cpp; sourceTree = SOURCE_ROOT; };
-		303B2522EAC7CD3C33EF150C = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = AudioEditor.h; path = ../../Source/Processors/Editors/AudioEditor.h; sourceTree = SOURCE_ROOT; };
-		35AFD01064BF29D90EEDF413 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = FilterEditor.cpp; path = ../../Source/Processors/Editors/FilterEditor.cpp; sourceTree = SOURCE_ROOT; };
-		AD4BF1BC602902B20AEBF49C = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = FilterEditor.h; path = ../../Source/Processors/Editors/FilterEditor.h; sourceTree = SOURCE_ROOT; };
-		22FD0613BADE6C36A6A7A25C = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = GenericEditor.cpp; path = ../../Source/Processors/Editors/GenericEditor.cpp; sourceTree = SOURCE_ROOT; };
-		F0B8C75B1AA6E8D1BC620653 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = GenericEditor.h; path = ../../Source/Processors/Editors/GenericEditor.h; sourceTree = SOURCE_ROOT; };
-		0D2903C450AE862C2C0060AA = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = FileReaderThread.cpp; path = ../../Source/Processors/DataThreads/FileReaderThread.cpp; sourceTree = SOURCE_ROOT; };
-		BD07C36AC2ECF10942F0A229 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = FileReaderThread.h; path = ../../Source/Processors/DataThreads/FileReaderThread.h; sourceTree = SOURCE_ROOT; };
-		24616D6D2297C87D371B0363 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = okFrontPanelDLL.cpp; path = ../../Source/Processors/DataThreads/okFrontPanelDLL.cpp; sourceTree = SOURCE_ROOT; };
-		AA7B88F969CE43331035DE98 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = okFrontPanelDLL.h; path = ../../Source/Processors/DataThreads/okFrontPanelDLL.h; sourceTree = SOURCE_ROOT; };
-		6B156D132738F6C7C948378F = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = NetworkThread.cpp; path = ../../Source/Processors/DataThreads/NetworkThread.cpp; sourceTree = SOURCE_ROOT; };
-		7BD204C890F9A2F301B15128 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = NetworkThread.h; path = ../../Source/Processors/DataThreads/NetworkThread.h; sourceTree = SOURCE_ROOT; };
-		A9142BFEFE7EB34D919ED0A0 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = FPGAThread.cpp; path = ../../Source/Processors/DataThreads/FPGAThread.cpp; sourceTree = SOURCE_ROOT; };
-		46E436D1B9538DB8487F0D8D = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = FPGAThread.h; path = ../../Source/Processors/DataThreads/FPGAThread.h; sourceTree = SOURCE_ROOT; };
-		F20726FD9F586FDE2CB42901 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = DataBuffer.cpp; path = ../../Source/Processors/DataThreads/DataBuffer.cpp; sourceTree = SOURCE_ROOT; };
-		F062CCE0FB40E6C65A6493F4 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = DataBuffer.h; path = ../../Source/Processors/DataThreads/DataBuffer.h; sourceTree = SOURCE_ROOT; };
-		6D94C2733E967EC6A91B719A = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = IntanThread.cpp; path = ../../Source/Processors/DataThreads/IntanThread.cpp; sourceTree = SOURCE_ROOT; };
-		21C560B017F1C0A48B950155 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = IntanThread.h; path = ../../Source/Processors/DataThreads/IntanThread.h; sourceTree = SOURCE_ROOT; };
-		72123888A7DD78159AA032AF = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = DataThread.cpp; path = ../../Source/Processors/DataThreads/DataThread.cpp; sourceTree = SOURCE_ROOT; };
-		2164BFCDF57A5AA752CAA3A2 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = DataThread.h; path = ../../Source/Processors/DataThreads/DataThread.h; sourceTree = SOURCE_ROOT; };
-		B96BF02034F29DE033F16D89 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = RecordNode.cpp; path = ../../Source/Processors/RecordNode.cpp; sourceTree = SOURCE_ROOT; };
-		FC83C3CD6DC717911B2C3C20 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = RecordNode.h; path = ../../Source/Processors/RecordNode.h; sourceTree = SOURCE_ROOT; };
-		EBB0E5058615EA1FEDADF189 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = SignalGenerator.cpp; path = ../../Source/Processors/SignalGenerator.cpp; sourceTree = SOURCE_ROOT; };
-		E0883576683119727BD54A81 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SignalGenerator.h; path = ../../Source/Processors/SignalGenerator.h; sourceTree = SOURCE_ROOT; };
-		5AE7693391C43B4AE475789C = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ResamplingNode.cpp; path = ../../Source/Processors/ResamplingNode.cpp; sourceTree = SOURCE_ROOT; };
-		C87B84BA79CB9EE547E8762C = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ResamplingNode.h; path = ../../Source/Processors/ResamplingNode.h; sourceTree = SOURCE_ROOT; };
-		D2342EA3BD783D3A81006606 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = FilterNode.cpp; path = ../../Source/Processors/FilterNode.cpp; sourceTree = SOURCE_ROOT; };
-		2CCD3BBDF86EA8D149DAD758 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = FilterNode.h; path = ../../Source/Processors/FilterNode.h; sourceTree = SOURCE_ROOT; };
-		7EAD8082130C2384BA9E1206 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = SourceNode.cpp; path = ../../Source/Processors/SourceNode.cpp; sourceTree = SOURCE_ROOT; };
-		7BD1C1A7C30ED736F4816C31 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SourceNode.h; path = ../../Source/Processors/SourceNode.h; sourceTree = SOURCE_ROOT; };
-		CECE2AB5D5F36CADBC3219A2 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = GenericProcessor.cpp; path = ../../Source/Processors/GenericProcessor.cpp; sourceTree = SOURCE_ROOT; };
-		C4197FDA1B4D4F1D58F6A5A0 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = GenericProcessor.h; path = ../../Source/Processors/GenericProcessor.h; sourceTree = SOURCE_ROOT; };
-		C4DA9685E5637B03F00E5E79 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ProcessorGraph.cpp; path = ../../Source/Processors/ProcessorGraph.cpp; sourceTree = SOURCE_ROOT; };
-		3B60787E97C74E78853DC90F = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ProcessorGraph.h; path = ../../Source/Processors/ProcessorGraph.h; sourceTree = SOURCE_ROOT; };
-		E1C6E67757EC5D68093BD760 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = EditorViewportButtons.cpp; path = ../../Source/UI/EditorViewportButtons.cpp; sourceTree = SOURCE_ROOT; };
-		2BC65E923E245AE23AE7BB8B = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = EditorViewportButtons.h; path = ../../Source/UI/EditorViewportButtons.h; sourceTree = SOURCE_ROOT; };
-		6CD0D896FEB77B261C62447E = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = SignalChainManager.cpp; path = ../../Source/UI/SignalChainManager.cpp; sourceTree = SOURCE_ROOT; };
-		182F8F9073A2007403C10C51 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SignalChainManager.h; path = ../../Source/UI/SignalChainManager.h; sourceTree = SOURCE_ROOT; };
-		EB824B60F600C19193ADFA5F = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = EditorViewport.cpp; path = ../../Source/UI/EditorViewport.cpp; sourceTree = SOURCE_ROOT; };
-		54A33424E41D55153F6EB422 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = EditorViewport.h; path = ../../Source/UI/EditorViewport.h; sourceTree = SOURCE_ROOT; };
-		B28CC9409188C9A200AAAFFC = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ProcessorList.cpp; path = ../../Source/UI/ProcessorList.cpp; sourceTree = SOURCE_ROOT; };
-		242E7E62B8641B1224E25442 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ProcessorList.h; path = ../../Source/UI/ProcessorList.h; sourceTree = SOURCE_ROOT; };
-		A32D8455B95FD230EBFD7891 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = CustomLookAndFeel.cpp; path = ../../Source/UI/CustomLookAndFeel.cpp; sourceTree = SOURCE_ROOT; };
-		F70641473A3E7C0DC5168858 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CustomLookAndFeel.h; path = ../../Source/UI/CustomLookAndFeel.h; sourceTree = SOURCE_ROOT; };
-		AA00883DC021E36B7EFDAC43 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = InfoLabel.cpp; path = ../../Source/UI/InfoLabel.cpp; sourceTree = SOURCE_ROOT; };
-		1561F28CD560AB8F2E177628 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = InfoLabel.h; path = ../../Source/UI/InfoLabel.h; sourceTree = SOURCE_ROOT; };
-		B977C2809B309C8038CB5D95 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = DataViewport.cpp; path = ../../Source/UI/DataViewport.cpp; sourceTree = SOURCE_ROOT; };
-		877F9F9DA7A1B51D3EDCBC07 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = DataViewport.h; path = ../../Source/UI/DataViewport.h; sourceTree = SOURCE_ROOT; };
-		EEDA71600D817BF9444FE3E7 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = MessageCenter.cpp; path = ../../Source/UI/MessageCenter.cpp; sourceTree = SOURCE_ROOT; };
-		4EE6CA70F229EDE04E7E320B = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = MessageCenter.h; path = ../../Source/UI/MessageCenter.h; sourceTree = SOURCE_ROOT; };
-		5AB4A3A63B9FDEAB09EEC9C8 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ControlPanel.cpp; path = ../../Source/UI/ControlPanel.cpp; sourceTree = SOURCE_ROOT; };
-		3B70B21129D91B16A2F1CE80 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ControlPanel.h; path = ../../Source/UI/ControlPanel.h; sourceTree = SOURCE_ROOT; };
-		2A78F719BAFBDCD63AE9A88A = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = UIComponent.cpp; path = ../../Source/UI/UIComponent.cpp; sourceTree = SOURCE_ROOT; };
-		DB605BA15852F367DF625300 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = UIComponent.h; path = ../../Source/UI/UIComponent.h; sourceTree = SOURCE_ROOT; };
-		77F2E2E7A2419CB172C0B1EA = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = MainWindow.cpp; path = ../../Source/MainWindow.cpp; sourceTree = SOURCE_ROOT; };
-		3E3E4F25C71B800C97AC63B9 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = MainWindow.h; path = ../../Source/MainWindow.h; sourceTree = SOURCE_ROOT; };
-		19D5134F99CC551B01D5A7EF = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Main.cpp; path = ../../Source/Main.cpp; sourceTree = SOURCE_ROOT; };
-		BDB56CA7F08DC7EFABBF7846 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = AppConfig.h; path = ../../JuceLibraryCode/AppConfig.h; sourceTree = SOURCE_ROOT; };
-		753133530248EC4F00CBECA6 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = JuceHeader.h; path = ../../JuceLibraryCode/JuceHeader.h; sourceTree = SOURCE_ROOT; };
-		B56D08AB6374C811F59D760C = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = BinaryData.cpp; path = ../../JuceLibraryCode/BinaryData.cpp; sourceTree = SOURCE_ROOT; };
-		9BFC7532965901165C9DDB07 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = BinaryData.h; path = ../../JuceLibraryCode/BinaryData.h; sourceTree = SOURCE_ROOT; };
-		898385F65E64BF6D609B3BF2 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = JuceLibraryCode1.mm; path = ../../JuceLibraryCode/JuceLibraryCode1.mm; sourceTree = SOURCE_ROOT; };
-		C3B95EF26B5F3281447FCF42 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = JuceLibraryCode2.mm; path = ../../JuceLibraryCode/JuceLibraryCode2.mm; sourceTree = SOURCE_ROOT; };
-		1CD026FD773BB5A428624381 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = JuceLibraryCode3.mm; path = ../../JuceLibraryCode/JuceLibraryCode3.mm; sourceTree = SOURCE_ROOT; };
-		55F7FFF9942627D7FC46C6C1 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = JuceLibraryCode4.mm; path = ../../JuceLibraryCode/JuceLibraryCode4.mm; sourceTree = SOURCE_ROOT; };
-		2D8E1C366F21D3C8FE662382 = { isa = PBXGroup; children = (
-				79892A4E41809A09A4711AC3,
-				1B2C20F6F1F1BCF9115F8D53,
-				C586714DD22C96F569FDC716,
-				8E7AA0EF1B95BC771FBB10A0,
-				E79C104CD58BBBD5368EEF5A,
-				060C55E19A414F464C499A47,
-				50F20268C4572493BB04D269,
-				50D4782F4555FED294F40705,
-				4974E0E46141648F106A818F,
-				35352AD0E7B59E35BC3B5F59,
-				44303AB487040AE4B60DCAD5,
-				C2A7939DF5ED600BBB2F30C4,
-				F8CAE2412B173788F325BD8B,
-				363B59958615D35C5C948300 ); name = Fonts; sourceTree = "<group>"; };
-		891C5A157F059822288EDC9F = { isa = PBXGroup; children = (
-				C2C96A81B4033338679E6EFB,
-				A582462316439858552387F7,
-				9CAD123471BE2E6ED4A96C3B,
-				4DB02C352236D9D030E01205,
-				EEAB043F90902D8F9D1102C2,
-				8086EC3AFDEA802E0B43F19E,
-				2171C4356B44D4CD6865E06B,
-				C25CAC3FC9AE387CD597DF37,
-				59CAEFDE36164ABB19B3CA76,
-				E0587F61AD4A92C2661E5073,
-				87F60F05136FEBD8A36AE670,
-				1E849F999A8333FFF0B57C6D,
-				A5231F3D01B88C063D10026A,
-				40A802FCEDFDE7B2FFEBDEA8,
-				8A3AE5CF9D452810BA48A3EF,
-				B3CDC8825DAD5A7D75956726,
-				ED50AB550D058BEB30F12C7D,
-				17E38F29BD6CBC490B5EF1B4,
-				D95C78F42494CD5995FBC15E,
-				20B50BC2221C593AC67D80F8,
-				771E8D912F94E52AF7E05F91,
-				CE771F502D1D710B28632E3A,
-				05D0A12F2A850EEC48D5EDD4,
-				8F8F55DD042F61BB213AFC0B,
-				7C09194091360867C4CAB0E8,
-				126B0DE9B8D4E42DA7D57AAB,
-				BDFFB5B0A8E8A022C25D7FDB,
-				3D20C932FB058CC20989B129,
-				8E041C8C49F1A5B710CC812C,
-				2A1D9144C59B92B32483924B,
-				D99F56FB46F631F67AF23F2C,
-				66C7E42D7FDE3600982A1F46,
-				A4C8AB3F5E7A708350F72E7C ); name = Icons; sourceTree = "<group>"; };
-		3392BC2D90C96126B6D3EDA0 = { isa = PBXGroup; children = (
-				BD0900C3A85F58C34FA91D16,
-				1BDA9647E0AA33F642E162BE,
-				D2D308542534D043BB12C801,
-				9CD0E7C2C7E49A0DBF301B0F,
-				BAAA02122ADD1D5D0670A684,
-				73A7E17FDD8DD717F99E0882,
-				2A54E3D28E10F5D50498BB77,
-				294B78ADA337603DE3C87BF9,
-				8AD9A0F023B727B34348B95E,
-				89CF25CB48EEA21B226869E1 ); name = Buttons; sourceTree = "<group>"; };
-		4E8DA551A1B5D7A2B1229181 = { isa = PBXGroup; children = (
-				891C5A157F059822288EDC9F,
-				3392BC2D90C96126B6D3EDA0 ); name = Images; sourceTree = "<group>"; };
-		1640CC946EDFD5EC9A321954 = { isa = PBXGroup; children = (
-				2D8E1C366F21D3C8FE662382,
-				4E8DA551A1B5D7A2B1229181 ); name = Resources; sourceTree = "<group>"; };
-		21721C7CD4451993F10354CB = { isa = PBXGroup; children = (  ); name = Plugins; sourceTree = "<group>"; };
-		8F98BACF97340868397BA4BB = { isa = PBXGroup; children = (
-				673778A175624FC9F52E7A15,
-				2EAE0475B719C3233AD8BB35 ); name = Network; sourceTree = "<group>"; };
-		B3AB794228C0205240A8F72E = { isa = PBXGroup; children = (
-				B30EF131FE61BAA4C1818102,
-				D55947E71EB4AF25C1FC7089,
-				07AE46453303977ED64E38ED,
-				9EBBC43B9522EC9E6B607493,
-				73C6FF74D6A31CA13C0D7C5C,
-				8B70886CFCD13A761567DE7B,
-				742284C84C72C882E02E7974,
-				2B8E059E57EB92EAC589C6B4,
-				D44DBE2FF15A98834F222766,
-				553E92DB60C7D5104B780781,
-				1F9836FC5A8FDF2293C9A232,
-				833030703B66CDD9DA94155B,
-				F7620D8D567CCE463ADDE0A6,
-				93FACAE1DC7A236505359477,
-				E4AEAC4AD1D1C6A80A2CD70A,
-				3E8E2F9C583077B298525FD1,
-				CD05957EC804348231739108,
-				E8214D83845C25F39EEC13CD,
-				21E5288817625724406FD3A1,
-				293B003BD6E113C5AD1BB131,
-				60F060DBD5ACF36E0A407BC1,
-				A9AF10F6A89F85989C62F856,
-				7C225F446A96BED7F585F66B,
-				314D53C7C13C28A25588ABCF,
-				706CBE9178440675868F2379,
-				1EC547C25C29FE679BAF8B4D,
-				4D63E86C8A9F721B9C0FA95E,
-				BF8EB3483F66AA7F61E6D863,
-				1E0F3076D1689E83422F6B4E,
-				137CF1AB4144076D79D50975,
-				5B1D08D98AD9F623962A38B2,
-				E6FF4D4C70794123A52B9E82,
-				E8503A3E123FCFBFA317EAE6,
-				F4A53064BA75472765338C1D,
-				1D1DF895F34C981407EDB8E8,
-				1F5435604926FF2C06575DCC,
-				0D20C3399D0492771F7A808A,
-				186F011C1ABC55DB39717105,
-				92C241C7F87B5933B0E6E03F,
-				E27B5891A52FDAB2B00901A0 ); name = Dsp; sourceTree = "<group>"; };
-		FFA2631FEEE7932BE08907A6 = { isa = PBXGroup; children = (
-				F74662D3D82975EDB5AD42E0,
-				FA55B9FDE138CCB1F16BA905 ); name = Audio; sourceTree = "<group>"; };
-		49AED3DB3EC67F7DF624D4D9 = { isa = PBXGroup; children = (
-				06AB64E97A05B800349E7E23,
-				482AFCBBC28835A9548101B1,
-				96D33A963CAAEEAB8770F2A3,
-				3022191E4C192BC10670B935,
-				AED49EC9B45C93F39002B4B9 ); name = Serial; sourceTree = "<group>"; };
-		20FFF487B65BF8567EFE70F8 = { isa = PBXGroup; children = (
-				3973173C7FA07073B4F86B29,
-				7977CAB4A151C41F4140FE1A,
-				9A47B52E5E1CD17DC9C72B53,
-				B92E8189F69E0B926C73B654 ); name = Utilities; sourceTree = "<group>"; };
-		1255E9B28ADAA1A1CADC4A6E = { isa = PBXGroup; children = (
-				C96A8F49EA22919F09486B96,
-				06B051747D84858D9C5C0444,
-				41591F74A761BAC908FA8AD8,
-				9C8EA29582DBFF6E5A14B8A3,
-				24C6D768C87E1C42C644C4BD,
-				BCBB865ED53E8AFD278D1A53,
-				B195AD6CEB9B6E3625C8D087,
-				521FECC75E9DDB0D34B22AF8,
-				2FA2FA826CBAD9C639A61E4A,
-				B1CF7BFC5F1892735D4FA1EE,
-				50E7B88E8140BB293B27ED67,
-				9F208A66C09E80D14F087CB1,
-				A3F978AE6999903C47650173 ); name = SpikePlotting; sourceTree = "<group>"; };
-		15543D7982B26B70879960F4 = { isa = PBXGroup; children = (
-				1255E9B28ADAA1A1CADC4A6E,
-				E7247F5EE9588903C924994F,
-				B0A6A0635113C4B4CD424BEC,
-				7A9A31FC1AE8FB238FAE995E,
-				9E884AEDB6035FFC74886EE8,
-				9ACFB6A181D09434268CE006,
-				ED179D5A10DD051DDB3ECB8B,
-				63C18F4066C75D3C312877D8,
-				2E96DA81EE37A0ECE471A928,
-				A9C2C7AF037050228CD2E026,
-				0C5335B0E57C9DC92FC57E5F,
-				7738F51AE0EC63D76EE0F761 ); name = Visualization; sourceTree = "<group>"; };
-		953CC35B9116404D6AA8D1C7 = { isa = PBXGroup; children = (
-				EE3AAE8BD520868168064D38,
-				E177F2FF11601F6E11498390,
-				7738196148E539781B237854,
-				5F43022E89D254273CF827A5,
-				DAFD5D2E1F875321584C7147,
-				5F0DC90995C8E7BB7E3176F7,
-				51D2678E9F30DC261CCB61B0,
-				1A64B7009173729093BA3D96,
-				47ECF9384C1D27EB2FBEBF9E,
-				07363B9FB8F988D45C4F0FE2,
-				F0B09605D4108F0F94EF3B57,
-				2A46D8E3EC7207D969A2B202,
-				9A3976537C96B39716B5312D,
-				C546D55EDE65ADDD95C6A6F5,
-				AD73EA6B24378294003DC2D0,
-				B7FD86B9DA02771D3519FAA0,
-				544DA1EF90EBBDB6FF2DE0A5,
-				04AD8DDD47597AE0875ACDD1,
-				2B11714BCE362D4EA7E377F5,
-				4E67CFE458501E763FF3AE94,
-				36393F2D58480F61ECDEB5E5,
-				A80433BF9686B4E2542C580C,
-				087136FA6A7A0E01738EEF03,
-				10F82563E4A633BC234B2800,
-				CF9878CE31A1B41406C3457B,
-				C02C160190E417B42F73680A,
-				FC5939F3D2A31BB43EA3E393,
-				62DA962299323A2FA134203D,
-				C2ED801EA28FBA9764E76349,
-				C177B371A0CEC8E7B9131865,
-				399CBACE291A425A2B9497EF,
-				7FC3C64A06A9FA2C828F8744,
-				5DDBEE64DC706CE804E5F0AA,
-				303B2522EAC7CD3C33EF150C,
-				35AFD01064BF29D90EEDF413,
-				AD4BF1BC602902B20AEBF49C,
-				22FD0613BADE6C36A6A7A25C,
-				F0B8C75B1AA6E8D1BC620653 ); name = Editors; sourceTree = "<group>"; };
-		A1AD89D398583E71F6ED8A6E = { isa = PBXGroup; children = (
-				0D2903C450AE862C2C0060AA,
-				BD07C36AC2ECF10942F0A229,
-				24616D6D2297C87D371B0363,
-				AA7B88F969CE43331035DE98,
-				6B156D132738F6C7C948378F,
-				7BD204C890F9A2F301B15128,
-				A9142BFEFE7EB34D919ED0A0,
-				46E436D1B9538DB8487F0D8D,
-				F20726FD9F586FDE2CB42901,
-				F062CCE0FB40E6C65A6493F4,
-				6D94C2733E967EC6A91B719A,
-				21C560B017F1C0A48B950155,
-				72123888A7DD78159AA032AF,
-				2164BFCDF57A5AA752CAA3A2 ); name = DataThreads; sourceTree = "<group>"; };
-		33A88A7C3FF426F051834D6A = { isa = PBXGroup; children = (
-				EF2AF97E68B2C2428A835836,
-				552B1370E46646B6B1D40CF8,
-				2AFAED9379D050629F34C033,
-				530B262BE169DC42E8F505EA,
-				F040256D2E74A61F4F08B148,
-				8C8C2A42B36655796DCFBAC2,
-				49AED3DB3EC67F7DF624D4D9,
-				90E8F4BDA3DBA5F8D78A2AB0,
-				5E2258F02911313F494357BF,
-				3261B4AE147B49EEE9341CF8,
-				C04E6EDA980CDC09DF061D66,
-				C42446F8ABB3627870E9677D,
-				5779673F042A62E02C4AC06B,
-				751C52F2BEA7F1328ED13333,
-				7B825983F25D8984E02F6FFB,
-				4AEDD076CCA918481C6F9CF2,
-				671CC5EA3DF4F21E9A7E392B,
-				268005410FB62BCB9099A762,
-				32959675287F77DD9B7FA96B,
-				5935F823A2EE45AC36A0201F,
-				B00F207EBEED525FB686AD98,
-				20FFF487B65BF8567EFE70F8,
-				15543D7982B26B70879960F4,
-				3DD0741FCFBC7563EC722D9B,
-				6E4B37AA4BFEB5A37E3AC250,
-				B7750B27E4F3748ECCCCF69D,
-				12866D44BE115E8837468F48,
-				FA57CE4F63FF1592D6B3F9B5,
-				32163C956C8A6F5C1DD7FE7F,
-				953CC35B9116404D6AA8D1C7,
-				A1AD89D398583E71F6ED8A6E,
-				B96BF02034F29DE033F16D89,
-				FC83C3CD6DC717911B2C3C20,
-				EBB0E5058615EA1FEDADF189,
-				E0883576683119727BD54A81,
-				5AE7693391C43B4AE475789C,
-				C87B84BA79CB9EE547E8762C,
-				D2342EA3BD783D3A81006606,
-				2CCD3BBDF86EA8D149DAD758,
-				7EAD8082130C2384BA9E1206,
-				7BD1C1A7C30ED736F4816C31,
-				CECE2AB5D5F36CADBC3219A2,
-				C4197FDA1B4D4F1D58F6A5A0,
-				C4DA9685E5637B03F00E5E79,
-				3B60787E97C74E78853DC90F ); name = Processors; sourceTree = "<group>"; };
-		DA0DBF6B29B99364A145484A = { isa = PBXGroup; children = (
-				E1C6E67757EC5D68093BD760,
-				2BC65E923E245AE23AE7BB8B,
-				6CD0D896FEB77B261C62447E,
-				182F8F9073A2007403C10C51,
-				EB824B60F600C19193ADFA5F,
-				54A33424E41D55153F6EB422,
-				B28CC9409188C9A200AAAFFC,
-				242E7E62B8641B1224E25442,
-				A32D8455B95FD230EBFD7891,
-				F70641473A3E7C0DC5168858,
-				AA00883DC021E36B7EFDAC43,
-				1561F28CD560AB8F2E177628,
-				B977C2809B309C8038CB5D95,
-				877F9F9DA7A1B51D3EDCBC07,
-				EEDA71600D817BF9444FE3E7,
-				4EE6CA70F229EDE04E7E320B,
-				5AB4A3A63B9FDEAB09EEC9C8,
-				3B70B21129D91B16A2F1CE80,
-				2A78F719BAFBDCD63AE9A88A,
-				DB605BA15852F367DF625300 ); name = UI; sourceTree = "<group>"; };
-		98D3BECE25EB3CF1F64F54B4 = { isa = PBXGroup; children = (
-				21721C7CD4451993F10354CB,
-				CA0A1584725D21237DBCD70A,
-				63992CB3AC42F91A51135EAC,
-				8F98BACF97340868397BA4BB,
-				B3AB794228C0205240A8F72E,
-				FFA2631FEEE7932BE08907A6,
-				33A88A7C3FF426F051834D6A,
-				DA0DBF6B29B99364A145484A,
-				77F2E2E7A2419CB172C0B1EA,
-				3E3E4F25C71B800C97AC63B9,
-				19D5134F99CC551B01D5A7EF ); name = Source; sourceTree = "<group>"; };
-		1BAC20F9B88EE03AB534ED66 = { isa = PBXGroup; children = (
-				BDB56CA7F08DC7EFABBF7846,
-				753133530248EC4F00CBECA6,
-				B56D08AB6374C811F59D760C,
-				9BFC7532965901165C9DDB07,
-				898385F65E64BF6D609B3BF2,
-				C3B95EF26B5F3281447FCF42,
-				1CD026FD773BB5A428624381,
-				55F7FFF9942627D7FC46C6C1 ); name = "Juce Library Code"; sourceTree = "<group>"; };
-		D01A90ED1DFB15778648E288 = { isa = PBXGroup; children = (
-				D91BA61C12BFEBE59B577805 ); name = Resources; sourceTree = "<group>"; };
-		F3C957A2F364B760F6959DE9 = { isa = PBXGroup; children = (
-				FAB58A8AE7DCBAC0CF311D14,
-				39FAF9808D0EFB6C8170D8B8,
-				0B661DF3EFF63CFFCCA76AF4,
-				A9B11C1B693E380C29F53F78,
-				D08C5BF3FF3AC38C2BB5F921,
-				6A67346CD9B6D590108C7B6E,
-				9AFA895DFA2087804F47ECF9,
-				54662C69F6AA71B55D68F12E,
-				191441B631182A346D494BB5,
-				1CBCB9D2FE5B967D93785E75,
-				BF41F256D0C244C2C02AE6E1 ); name = Frameworks; sourceTree = "<group>"; };
-		0ECE243E52A42297D09AE145 = { isa = PBXGroup; children = (
-				0837481AD187A1E6CBCAC577 ); name = Products; sourceTree = "<group>"; };
-		4EC15B00A5B83F4BF29C25C5 = { isa = PBXGroup; children = (
-				1640CC946EDFD5EC9A321954,
-				98D3BECE25EB3CF1F64F54B4,
-				1BAC20F9B88EE03AB534ED66,
-				D01A90ED1DFB15778648E288,
-				F3C957A2F364B760F6959DE9,
-				0ECE243E52A42297D09AE145 ); name = Source; sourceTree = "<group>"; };
-		C3E8FB47D6069235EA9D6FD7 = { isa = XCBuildConfiguration; buildSettings = {
-				ARCHS = "$(ARCHS_STANDARD_32_BIT)";
-				PREBINDING = NO;
-				HEADER_SEARCH_PATHS = "/usr/local/include /usr/local/include/freetype2 $(inherited)";
-				GCC_OPTIMIZATION_LEVEL = 0;
-				INFOPLIST_FILE = Info.plist;
-				INSTALL_PATH = "$(HOME)/Applications";
-				MACOSX_DEPLOYMENT_TARGET_ppc = 10.4;
-				OTHER_LDFLAGS = "-lftdi -lftgl";
-				ONLY_ACTIVE_ARCH = YES;
-				COPY_PHASE_STRIP = NO;
-				GCC_DYNAMIC_NO_PIC = NO;
-				GCC_ENABLE_FIX_AND_CONTINUE = NO;
-				GCC_PREPROCESSOR_DEFINITIONS = (
-				"_DEBUG=1",
-				"DEBUG=1",
-				"JUCE_ObjCExtraSuffix=fea2mT",
-				"JUCER_XCODE_MAC_F6D2F4CF=1"); }; name = Debug; };
-		5D7484BAF16E272FF0E9EEAE = { isa = XCBuildConfiguration; buildSettings = {
-				ARCHS = "$(ARCHS_STANDARD_32_BIT)";
-				PREBINDING = NO;
-				HEADER_SEARCH_PATHS = "/usr/local/include /usr/local/include/freetype2 $(inherited)";
-				GCC_OPTIMIZATION_LEVEL = 3;
-				INFOPLIST_FILE = Info.plist;
-				INSTALL_PATH = "$(HOME)/Applications";
-				MACOSX_DEPLOYMENT_TARGET_ppc = 10.4;
-				OTHER_LDFLAGS = "-lftdi -lftgl";
-				GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
-				GCC_SYMBOLS_PRIVATE_EXTERN = YES;
-				GCC_PREPROCESSOR_DEFINITIONS = (
-				"_NDEBUG=1",
-				"NDEBUG=1",
-				"JUCE_ObjCExtraSuffix=fea2mT",
-				"JUCER_XCODE_MAC_F6D2F4CF=1"); }; name = Release; };
-		4E274274B609972E0988736B = { isa = XCBuildConfiguration; buildSettings = {
+/* Begin PBXBuildFile section */
+		03932AC6269AFA895DFA2087 /* ResamplingNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5AE7693391C43B4AE475789C /* ResamplingNode.cpp */; };
+		05339DCA8C59B707E61F1F2E /* JuceLibraryCode4.mm in Sources */ = {isa = PBXBuildFile; fileRef = 55F7FFF9942627D7FC46C6C1 /* JuceLibraryCode4.mm */; };
+		073B178E7EF1759BA0AACCCE /* OpenGLCanvas.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0C5335B0E57C9DC92FC57E5F /* OpenGLCanvas.cpp */; };
+		08B501E0D7764C6B613AF529 /* AudioNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B7750B27E4F3748ECCCCF69D /* AudioNode.cpp */; };
+		09AC8D29A08EE1FFBC4ADB23 /* JuceLibraryCode3.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1CD026FD773BB5A428624381 /* JuceLibraryCode3.mm */; };
+		09E5633D492B59E418AC11C9 /* AccessClass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CA0A1584725D21237DBCD70A /* AccessClass.cpp */; };
+		0BBDB7C2B8CE82F1B0844B70 /* Documentation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E8214D83845C25F39EEC13CD /* Documentation.cpp */; };
+		116BB2F62451986C75586F9D /* ControlPanel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5AB4A3A63B9FDEAB09EEC9C8 /* ControlPanel.cpp */; };
+		11885833D32D03BA7E17138A /* DiscRecording.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9AFA895DFA2087804F47ECF9 /* DiscRecording.framework */; };
+		13457B3248E7646270A4FF88 /* CustomLookAndFeel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A32D8455B95FD230EBFD7891 /* CustomLookAndFeel.cpp */; };
+		14BE1E76E7BB3593A5F66DCC /* QuickTime.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BF41F256D0C244C2C02AE6E1 /* QuickTime.framework */; };
+		14E9BBD79F22198FE23EB88A /* RBJ.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E6FF4D4C70794123A52B9E82 /* RBJ.cpp */; };
+		1F301384375DA0F3652C01DA /* UIComponent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2A78F719BAFBDCD63AE9A88A /* UIComponent.cpp */; };
+		1F67A9ACD509FB4DC5A633DF /* SpikeDisplayNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4AEDD076CCA918481C6F9CF2 /* SpikeDisplayNode.cpp */; };
+		203EA3786F7928C0386FFAC2 /* SplitterEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C2ED801EA28FBA9764E76349 /* SplitterEditor.cpp */; };
+		25D4C87F4C7C842B0522DA5F /* okFrontPanelDLL.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 24616D6D2297C87D371B0363 /* okFrontPanelDLL.cpp */; };
+		28E4724351374881E83BD69C /* SpikeDetectorEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 399CBACE291A425A2B9497EF /* SpikeDetectorEditor.cpp */; };
+		2ADE508EC26B703176ED915C /* EventNodeEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 36393F2D58480F61ECDEB5E5 /* EventNodeEditor.cpp */; };
+		2C6D200191B27DDF088B3089 /* Bessel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B30EF131FE61BAA4C1818102 /* Bessel.cpp */; };
+		2EC3E064E5849D2FDD9BBDBE /* SignalChainManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6CD0D896FEB77B261C62447E /* SignalChainManager.cpp */; };
+		2F21546229BEF148C74ECA45 /* FPGAThread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9142BFEFE7EB34D919ED0A0 /* FPGAThread.cpp */; };
+		37F9B7C362F6F31231D10927 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A9B11C1B693E380C29F53F78 /* CoreAudio.framework */; };
+		3B146B8898CEE9965A9A0FB8 /* FilterEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 35AFD01064BF29D90EEDF413 /* FilterEditor.cpp */; };
+		3D3A992E10308BA189CECE05 /* SpikePlot.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C96A8F49EA22919F09486B96 /* SpikePlot.cpp */; };
+		40FFED3C981ED12AA4EA0AA0 /* Legendre.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 706CBE9178440675868F2379 /* Legendre.cpp */; };
+		448F8ACAAE9A5354E4E013E8 /* AudioResamplingNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2AFAED9379D050629F34C033 /* AudioResamplingNode.cpp */; };
+		49DA796E77871A124D5F49C1 /* Param.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BF8EB3483F66AA7F61E6D863 /* Param.cpp */; };
+		49F046C8BE137BF77338DD7B /* PlotUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B195AD6CEB9B6E3625C8D087 /* PlotUtils.cpp */; };
+		4A00153E1E69A74BC6B7D8A6 /* Merger.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3973173C7FA07073B4F86B29 /* Merger.cpp */; };
+		4ACF816CB5CDB285D8005AB8 /* AudioComponent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F74662D3D82975EDB5AD42E0 /* AudioComponent.cpp */; };
+		4BE0DDA01B73223EF0BD934A /* SpikeDetector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3DD0741FCFBC7563EC722D9B /* SpikeDetector.cpp */; };
+		4DA172021AB3AB88E70FAF99 /* MainWindow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 77F2E2E7A2419CB172C0B1EA /* MainWindow.cpp */; };
+		513EF1439498856E0C8C697E /* SignalGenerator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EBB0E5058615EA1FEDADF189 /* SignalGenerator.cpp */; };
+		55A240CCFCD604CA8DF8FC8C /* BaseUIElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 41591F74A761BAC908FA8AD8 /* BaseUIElement.cpp */; };
+		566E42D2B7105CFB4DB45170 /* ProjectionAxes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2FA2FA826CBAD9C639A61E4A /* ProjectionAxes.cpp */; };
+		5D5CAF52A5498EEFB8EA924D /* SourceNodeEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FC5939F3D2A31BB43EA3E393 /* SourceNodeEditor.cpp */; };
+		5E07E54EEF69F5BEDE84D535 /* EditorViewportButtons.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E1C6E67757EC5D68093BD760 /* EditorViewportButtons.cpp */; };
+		5EE932D782BFB7100D014399 /* Cascade.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 742284C84C72C882E02E7974 /* Cascade.cpp */; };
+		5F102AE69FB814467A298A97 /* BinaryData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B56D08AB6374C811F59D760C /* BinaryData.cpp */; };
+		5F13B8FFB1584BFF6C05AD39 /* Splitter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A47B52E5E1CD17DC9C72B53 /* Splitter.cpp */; };
+		60FF6BBFC1E9255F190C3146 /* RecordNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B96BF02034F29DE033F16D89 /* RecordNode.cpp */; };
+		6125D1F24D314D771E3A350E /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FAB58A8AE7DCBAC0CF311D14 /* Cocoa.framework */; };
+		632C915D01C42D27E828BFA9 /* ParameterEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 47ECF9384C1D27EB2FBEBF9E /* ParameterEditor.cpp */; };
+		63E5D65E7B097CADB277DBB6 /* GenericProcessor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CECE2AB5D5F36CADBC3219A2 /* GenericProcessor.cpp */; };
+		67343B589F0FF80FF8750F29 /* ofArduino.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 06AB64E97A05B800349E7E23 /* ofArduino.cpp */; };
+		6F41ED502815AAF2F2EAB8B7 /* ResamplingNodeEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE3AAE8BD520868168064D38 /* ResamplingNodeEditor.cpp */; };
+		717D108DC8B2379D556C4B2F /* Parameter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 751C52F2BEA7F1328ED13333 /* Parameter.cpp */; };
+		7659F31912D12C91E9554909 /* SpikeDisplayCanvas.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7A9A31FC1AE8FB238FAE995E /* SpikeDisplayCanvas.cpp */; };
+		8025F04ED261C7F7D2DC0F06 /* GenericAxes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 24C6D768C87E1C42C644C4BD /* GenericAxes.cpp */; };
+		881EDBF5D2D6FD7B53B71182 /* QTKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1CBCB9D2FE5B967D93785E75 /* QTKit.framework */; };
+		8B55C700ED8484944FED1EB1 /* SignalGeneratorEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 087136FA6A7A0E01738EEF03 /* SignalGeneratorEditor.cpp */; };
+		8E138283FC265B58D252AAC3 /* RootFinder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F4A53064BA75472765338C1D /* RootFinder.cpp */; };
+		903C5F83BB9E6DEA71A0D6E5 /* Butterworth.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 73C6FF74D6A31CA13C0D7C5C /* Butterworth.cpp */; };
+		90C038F480F790988D0F928E /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 54662C69F6AA71B55D68F12E /* OpenGL.framework */; };
+		9145D84C7D665BCAFE698432 /* SpikeObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E7247F5EE9588903C924994F /* SpikeObject.cpp */; };
+		93A3E6284F2DAED3F491332B /* MergerEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AD73EA6B24378294003DC2D0 /* MergerEditor.cpp */; };
+		9549DA2D2FF0614B155990A0 /* DataBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F20726FD9F586FDE2CB42901 /* DataBuffer.cpp */; };
+		9C77BFFE7BA865E20121E707 /* FPGAOutputEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7738196148E539781B237854 /* FPGAOutputEditor.cpp */; };
+		9CBA3837CC8CAA03A03F2D9C /* EventNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FA57CE4F63FF1592D6B3F9B5 /* EventNode.cpp */; };
+		9D687F73F2FD2462C5D5588C /* DataWindow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ED179D5A10DD051DDB3ECB8B /* DataWindow.cpp */; };
+		A126280FF39A61DEFD3ABFE5 /* WiFiOutputEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B11714BCE362D4EA7E377F5 /* WiFiOutputEditor.cpp */; };
+		A1B4D286AC7ED372742C41B2 /* FileReaderThread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0D2903C450AE862C2C0060AA /* FileReaderThread.cpp */; };
+		A84DF9525DC988520F7C3217 /* ofSerial.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3022191E4C192BC10670B935 /* ofSerial.cpp */; };
+		AAC4D8DB08B2A05A576A5F17 /* RecordControlEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF4469EAC57A21DD7241C9A4 /* RecordControlEditor.cpp */; };
+		AD58AC45D09BA8A736B3D67C /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 39FAF9808D0EFB6C8170D8B8 /* Carbon.framework */; };
+		AD6DD37DB41B1177F9F77F51 /* FilterNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D2342EA3BD783D3A81006606 /* FilterNode.cpp */; };
+		AEA369E154CA607D8D62CC2E /* ChebyshevI.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D44DBE2FF15A98834F222766 /* ChebyshevI.cpp */; };
+		AEB65E53845FA668D89CE15E /* ArduinoOutput.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C42446F8ABB3627870E9677D /* ArduinoOutput.cpp */; };
+		AEE153DB070AD3023780DAED /* PhaseDetector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EF2AF97E68B2C2428A835836 /* PhaseDetector.cpp */; };
+		B092C479F4C92AF2FEBE5A11 /* AudioEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5DDBEE64DC706CE804E5F0AA /* AudioEditor.cpp */; };
+		B13883377C9316B9603336B4 /* LfpDisplayCanvas.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2E96DA81EE37A0ECE471A928 /* LfpDisplayCanvas.cpp */; };
+		B2BE56A1260E9C87DECD2E4F /* ProcessorGraph.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C4DA9685E5637B03F00E5E79 /* ProcessorGraph.cpp */; };
+		B8BF3036DDF5BD761CAF416A /* Custom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93FACAE1DC7A236505359477 /* Custom.cpp */; };
+		B992DDBFF8928A985EEE1557 /* WiFiOutput.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 268005410FB62BCB9099A762 /* WiFiOutput.cpp */; };
+		BA64AA28A3E0DC10AB0A9380 /* ArduinoOutputEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DAFD5D2E1F875321584C7147 /* ArduinoOutputEditor.cpp */; };
+		BBE4B49A8E596B53CE157EAD /* Design.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3E8E2F9C583077B298525FD1 /* Design.cpp */; };
+		BCA6FAB5DADF0AF804E83F6E /* CoreMIDI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D08C5BF3FF3AC38C2BB5F921 /* CoreMIDI.framework */; };
+		BCB6C021A03F0AB0248C7F8A /* ChannelSelector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51D2678E9F30DC261CCB61B0 /* ChannelSelector.cpp */; };
+		BCD7C4797178C8EF65CDC2D7 /* WaveAxes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9F208A66C09E80D14F087CB1 /* WaveAxes.cpp */; };
+		BD15E927FB571B9D2F93F82C /* Filter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9AF10F6A89F85989C62F856 /* Filter.cpp */; };
+		BF78E6E9903CF5A5C53789B9 /* Biquad.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07AE46453303977ED64E38ED /* Biquad.cpp */; };
+		C038A696FD85E64E249AF737 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 191441B631182A346D494BB5 /* QuartzCore.framework */; };
+		C170A763D33146C74ED4CE4B /* MessageCenter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EEDA71600D817BF9444FE3E7 /* MessageCenter.cpp */; };
+		CB77C89226102EF30F85E3EC /* ImageIcon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 544DA1EF90EBBDB6FF2DE0A5 /* ImageIcon.cpp */; };
+		CF0149E6ECBA264A264C7BB3 /* SourceNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7EAD8082130C2384BA9E1206 /* SourceNode.cpp */; };
+		CFE62980E342BE2875BB3586 /* GenericEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 22FD0613BADE6C36A6A7A25C /* GenericEditor.cpp */; };
+		D060C0893EDAE6CBC86A5FE2 /* InfoLabel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AA00883DC021E36B7EFDAC43 /* InfoLabel.cpp */; };
+		D24C62FA0307F51185EE3481 /* FPGAOutput.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3261B4AE147B49EEE9341CF8 /* FPGAOutput.cpp */; };
+		D379BC3417418182ECFA5716 /* PracticalSocket.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 673778A175624FC9F52E7A15 /* PracticalSocket.cpp */; };
+		D3B54B20674A6BA87CE6FDEC /* LfpDisplayEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CF9878CE31A1B41406C3457B /* LfpDisplayEditor.cpp */; };
+		DB7C2DF80130B2D0D8DD9BD2 /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6A67346CD9B6D590108C7B6E /* WebKit.framework */; };
+		DD043D069210932477F01A30 /* EventDetector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 90E8F4BDA3DBA5F8D78A2AB0 /* EventDetector.cpp */; };
+		DD22A06702F4CF995893DD5C /* SpikeDisplayEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F0B09605D4108F0F94EF3B57 /* SpikeDisplayEditor.cpp */; };
+		DF15E1683A3722FE88EE5C7F /* IntanThread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6D94C2733E967EC6A91B719A /* IntanThread.cpp */; };
+		E36C0018635A85E09D4EDE01 /* DataViewport.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B977C2809B309C8038CB5D95 /* DataViewport.cpp */; };
+		E82FBA173C87CE2AADB84942 /* NetworkThread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6B156D132738F6C7C948378F /* NetworkThread.cpp */; };
+		E96CEDA0BFB8ED12B26B5AD5 /* Channel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F040256D2E74A61F4F08B148 /* Channel.cpp */; };
+		EAE9186154287129292E7982 /* RecordControl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9EE49894F14895CEA36FD0F4 /* RecordControl.cpp */; };
+		ECBA3D0CB756E83C4DA9685E /* ProcessorList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B28CC9409188C9A200AAAFFC /* ProcessorList.cpp */; };
+		ED44C2F2AA0DC81161075167 /* PoleFilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 137CF1AB4144076D79D50975 /* PoleFilter.cpp */; };
+		EE1DC0B09AE0727BC7A5A99C /* State.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0D20C3399D0492771F7A808A /* State.cpp */; };
+		F0EB404ED0A4EEAB0F238BDC /* ChebyshevII.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1F9836FC5A8FDF2293C9A232 /* ChebyshevII.cpp */; };
+		F1268EC5E783EC8ECEBCA5D3 /* LfpDisplayNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5935F823A2EE45AC36A0201F /* LfpDisplayNode.cpp */; };
+		F18F6DF7E80854DE6780531D /* JuceLibraryCode1.mm in Sources */ = {isa = PBXBuildFile; fileRef = 898385F65E64BF6D609B3BF2 /* JuceLibraryCode1.mm */; };
+		F3F3E688834C724BC35231F1 /* EditorViewport.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EB824B60F600C19193ADFA5F /* EditorViewport.cpp */; };
+		F4CEF74DDCD7EFA0891249B5 /* VisualizerEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A3976537C96B39716B5312D /* VisualizerEditor.cpp */; };
+		F80F061AE618AD08407BCA9A /* Main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 19D5134F99CC551B01D5A7EF /* Main.cpp */; };
+		F8751DCE1BCF3EC9C7A46154 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0B661DF3EFF63CFFCCA76AF4 /* IOKit.framework */; };
+		FA6CF7D26F81253A3E1D13CB /* Elliptic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 293B003BD6E113C5AD1BB131 /* Elliptic.cpp */; };
+		FCD66EA8735FE1CCA522B7C5 /* DataThread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 72123888A7DD78159AA032AF /* DataThread.cpp */; };
+		FD157D98C4C31AE782659718 /* JuceLibraryCode2.mm in Sources */ = {isa = PBXBuildFile; fileRef = C3B95EF26B5F3281447FCF42 /* JuceLibraryCode2.mm */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+		04AD8DDD47597AE0875ACDD1 /* ImageIcon.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ImageIcon.h; path = ../../Source/Processors/Editors/ImageIcon.h; sourceTree = SOURCE_ROOT; };
+		05D0A12F2A850EEC48D5EDD4 /* RadioButtons_selected_over-05.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "RadioButtons_selected_over-05.png"; path = "../../Resources/Images/Icons/RadioButtons_selected_over-05.png"; sourceTree = SOURCE_ROOT; };
+		060C55E19A414F464C499A47 /* miso-bold.ttf */ = {isa = PBXFileReference; lastKnownFileType = file.ttf; name = "miso-bold.ttf"; path = "../../Resources/Fonts/miso-bold.ttf"; sourceTree = SOURCE_ROOT; };
+		06AB64E97A05B800349E7E23 /* ofArduino.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ofArduino.cpp; path = ../../Source/Processors/Serial/ofArduino.cpp; sourceTree = SOURCE_ROOT; };
+		06B051747D84858D9C5C0444 /* SpikePlot.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SpikePlot.h; path = ../../Source/Processors/Visualization/SpikePlotting/SpikePlot.h; sourceTree = SOURCE_ROOT; };
+		07363B9FB8F988D45C4F0FE2 /* ParameterEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ParameterEditor.h; path = ../../Source/Processors/Editors/ParameterEditor.h; sourceTree = SOURCE_ROOT; };
+		07AE46453303977ED64E38ED /* Biquad.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Biquad.cpp; path = ../../Source/Dsp/Biquad.cpp; sourceTree = SOURCE_ROOT; };
+		0837481AD187A1E6CBCAC577 /* open-ephys.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "open-ephys.app"; sourceTree = BUILT_PRODUCTS_DIR; };
+		087136FA6A7A0E01738EEF03 /* SignalGeneratorEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = SignalGeneratorEditor.cpp; path = ../../Source/Processors/Editors/SignalGeneratorEditor.cpp; sourceTree = SOURCE_ROOT; };
+		0998E3F08E61271CE0FA930C /* RecordControl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = RecordControl.h; path = ../../Source/Processors/Utilities/RecordControl.h; sourceTree = SOURCE_ROOT; };
+		0B661DF3EFF63CFFCCA76AF4 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = System/Library/Frameworks/IOKit.framework; sourceTree = SDKROOT; };
+		0C5335B0E57C9DC92FC57E5F /* OpenGLCanvas.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = OpenGLCanvas.cpp; path = ../../Source/Processors/Visualization/OpenGLCanvas.cpp; sourceTree = SOURCE_ROOT; };
+		0D20C3399D0492771F7A808A /* State.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = State.cpp; path = ../../Source/Dsp/State.cpp; sourceTree = SOURCE_ROOT; };
+		0D2903C450AE862C2C0060AA /* FileReaderThread.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = FileReaderThread.cpp; path = ../../Source/Processors/DataThreads/FileReaderThread.cpp; sourceTree = SOURCE_ROOT; };
+		10F82563E4A633BC234B2800 /* SignalGeneratorEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SignalGeneratorEditor.h; path = ../../Source/Processors/Editors/SignalGeneratorEditor.h; sourceTree = SOURCE_ROOT; };
+		126B0DE9B8D4E42DA7D57AAB /* sine_wave.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = sine_wave.png; path = ../../Resources/Images/Icons/sine_wave.png; sourceTree = SOURCE_ROOT; };
+		12866D44BE115E8837468F48 /* AudioNode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = AudioNode.h; path = ../../Source/Processors/AudioNode.h; sourceTree = SOURCE_ROOT; };
+		137CF1AB4144076D79D50975 /* PoleFilter.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = PoleFilter.cpp; path = ../../Source/Dsp/PoleFilter.cpp; sourceTree = SOURCE_ROOT; };
+		1561F28CD560AB8F2E177628 /* InfoLabel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = InfoLabel.h; path = ../../Source/UI/InfoLabel.h; sourceTree = SOURCE_ROOT; };
+		17E38F29BD6CBC490B5EF1B4 /* RadioButtons_selected-05.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "RadioButtons_selected-05.png"; path = "../../Resources/Images/Icons/RadioButtons_selected-05.png"; sourceTree = SOURCE_ROOT; };
+		182F8F9073A2007403C10C51 /* SignalChainManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SignalChainManager.h; path = ../../Source/UI/SignalChainManager.h; sourceTree = SOURCE_ROOT; };
+		186F011C1ABC55DB39717105 /* State.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = State.h; path = ../../Source/Dsp/State.h; sourceTree = SOURCE_ROOT; };
+		191441B631182A346D494BB5 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
+		19D5134F99CC551B01D5A7EF /* Main.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Main.cpp; path = ../../Source/Main.cpp; sourceTree = SOURCE_ROOT; };
+		1A64B7009173729093BA3D96 /* ChannelSelector.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ChannelSelector.h; path = ../../Source/Processors/Editors/ChannelSelector.h; sourceTree = SOURCE_ROOT; };
+		1B2C20F6F1F1BCF9115F8D53 /* cpmono_bold.otf */ = {isa = PBXFileReference; lastKnownFileType = file.otf; name = cpmono_bold.otf; path = ../../Resources/Fonts/cpmono_bold.otf; sourceTree = SOURCE_ROOT; };
+		1BDA9647E0AA33F642E162BE /* muteon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = muteon.png; path = ../../Resources/Images/Buttons/muteon.png; sourceTree = SOURCE_ROOT; };
+		1CBCB9D2FE5B967D93785E75 /* QTKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QTKit.framework; path = System/Library/Frameworks/QTKit.framework; sourceTree = SDKROOT; };
+		1CD026FD773BB5A428624381 /* JuceLibraryCode3.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = JuceLibraryCode3.mm; path = ../../JuceLibraryCode/JuceLibraryCode3.mm; sourceTree = SOURCE_ROOT; };
+		1D1DF895F34C981407EDB8E8 /* RootFinder.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = RootFinder.h; path = ../../Source/Dsp/RootFinder.h; sourceTree = SOURCE_ROOT; };
+		1E0F3076D1689E83422F6B4E /* Params.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Params.h; path = ../../Source/Dsp/Params.h; sourceTree = SOURCE_ROOT; };
+		1E849F999A8333FFF0B57C6D /* RadioButtons_neutral-04.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "RadioButtons_neutral-04.png"; path = "../../Resources/Images/Icons/RadioButtons_neutral-04.png"; sourceTree = SOURCE_ROOT; };
+		1EC547C25C29FE679BAF8B4D /* Legendre.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Legendre.h; path = ../../Source/Dsp/Legendre.h; sourceTree = SOURCE_ROOT; };
+		1F5435604926FF2C06575DCC /* SmoothedFilter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SmoothedFilter.h; path = ../../Source/Dsp/SmoothedFilter.h; sourceTree = SOURCE_ROOT; };
+		1F9836FC5A8FDF2293C9A232 /* ChebyshevII.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ChebyshevII.cpp; path = ../../Source/Dsp/ChebyshevII.cpp; sourceTree = SOURCE_ROOT; };
+		20B50BC2221C593AC67D80F8 /* RadioButtons_selected_over-02.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "RadioButtons_selected_over-02.png"; path = "../../Resources/Images/Icons/RadioButtons_selected_over-02.png"; sourceTree = SOURCE_ROOT; };
+		2164BFCDF57A5AA752CAA3A2 /* DataThread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = DataThread.h; path = ../../Source/Processors/DataThreads/DataThread.h; sourceTree = SOURCE_ROOT; };
+		2171C4356B44D4CD6865E06B /* RadioButtons-04.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "RadioButtons-04.png"; path = "../../Resources/Images/Icons/RadioButtons-04.png"; sourceTree = SOURCE_ROOT; };
+		21C560B017F1C0A48B950155 /* IntanThread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = IntanThread.h; path = ../../Source/Processors/DataThreads/IntanThread.h; sourceTree = SOURCE_ROOT; };
+		21E5288817625724406FD3A1 /* Dsp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Dsp.h; path = ../../Source/Dsp/Dsp.h; sourceTree = SOURCE_ROOT; };
+		22FD0613BADE6C36A6A7A25C /* GenericEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = GenericEditor.cpp; path = ../../Source/Processors/Editors/GenericEditor.cpp; sourceTree = SOURCE_ROOT; };
+		242E7E62B8641B1224E25442 /* ProcessorList.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ProcessorList.h; path = ../../Source/UI/ProcessorList.h; sourceTree = SOURCE_ROOT; };
+		24616D6D2297C87D371B0363 /* okFrontPanelDLL.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = okFrontPanelDLL.cpp; path = ../../Source/Processors/DataThreads/okFrontPanelDLL.cpp; sourceTree = SOURCE_ROOT; };
+		24C6D768C87E1C42C644C4BD /* GenericAxes.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = GenericAxes.cpp; path = ../../Source/Processors/Visualization/SpikePlotting/GenericAxes.cpp; sourceTree = SOURCE_ROOT; };
+		268005410FB62BCB9099A762 /* WiFiOutput.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = WiFiOutput.cpp; path = ../../Source/Processors/WiFiOutput.cpp; sourceTree = SOURCE_ROOT; };
+		293B003BD6E113C5AD1BB131 /* Elliptic.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Elliptic.cpp; path = ../../Source/Dsp/Elliptic.cpp; sourceTree = SOURCE_ROOT; };
+		294B78ADA337603DE3C87BF9 /* PipelineA-02.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "PipelineA-02.png"; path = "../../Resources/Images/Buttons/PipelineA-02.png"; sourceTree = SOURCE_ROOT; };
+		2A1D9144C59B92B32483924B /* SourceDrop.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = SourceDrop.png; path = ../../Resources/Images/Icons/SourceDrop.png; sourceTree = SOURCE_ROOT; };
+		2A46D8E3EC7207D969A2B202 /* SpikeDisplayEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SpikeDisplayEditor.h; path = ../../Source/Processors/Editors/SpikeDisplayEditor.h; sourceTree = SOURCE_ROOT; };
+		2A54E3D28E10F5D50498BB77 /* PipelineA-01.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "PipelineA-01.png"; path = "../../Resources/Images/Buttons/PipelineA-01.png"; sourceTree = SOURCE_ROOT; };
+		2A78F719BAFBDCD63AE9A88A /* UIComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = UIComponent.cpp; path = ../../Source/UI/UIComponent.cpp; sourceTree = SOURCE_ROOT; };
+		2AFAED9379D050629F34C033 /* AudioResamplingNode.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = AudioResamplingNode.cpp; path = ../../Source/Processors/AudioResamplingNode.cpp; sourceTree = SOURCE_ROOT; };
+		2B11714BCE362D4EA7E377F5 /* WiFiOutputEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = WiFiOutputEditor.cpp; path = ../../Source/Processors/Editors/WiFiOutputEditor.cpp; sourceTree = SOURCE_ROOT; };
+		2B8E059E57EB92EAC589C6B4 /* Cascade.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Cascade.h; path = ../../Source/Dsp/Cascade.h; sourceTree = SOURCE_ROOT; };
+		2BC65E923E245AE23AE7BB8B /* EditorViewportButtons.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = EditorViewportButtons.h; path = ../../Source/UI/EditorViewportButtons.h; sourceTree = SOURCE_ROOT; };
+		2CCD3BBDF86EA8D149DAD758 /* FilterNode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = FilterNode.h; path = ../../Source/Processors/FilterNode.h; sourceTree = SOURCE_ROOT; };
+		2E96DA81EE37A0ECE471A928 /* LfpDisplayCanvas.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = LfpDisplayCanvas.cpp; path = ../../Source/Processors/Visualization/LfpDisplayCanvas.cpp; sourceTree = SOURCE_ROOT; };
+		2EAE0475B719C3233AD8BB35 /* PracticalSocket.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = PracticalSocket.h; path = ../../Source/Network/PracticalSocket.h; sourceTree = SOURCE_ROOT; };
+		2FA2FA826CBAD9C639A61E4A /* ProjectionAxes.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ProjectionAxes.cpp; path = ../../Source/Processors/Visualization/SpikePlotting/ProjectionAxes.cpp; sourceTree = SOURCE_ROOT; };
+		3022191E4C192BC10670B935 /* ofSerial.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ofSerial.cpp; path = ../../Source/Processors/Serial/ofSerial.cpp; sourceTree = SOURCE_ROOT; };
+		303B2522EAC7CD3C33EF150C /* AudioEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = AudioEditor.h; path = ../../Source/Processors/Editors/AudioEditor.h; sourceTree = SOURCE_ROOT; };
+		314D53C7C13C28A25588ABCF /* Layout.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Layout.h; path = ../../Source/Dsp/Layout.h; sourceTree = SOURCE_ROOT; };
+		32163C956C8A6F5C1DD7FE7F /* EventNode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = EventNode.h; path = ../../Source/Processors/EventNode.h; sourceTree = SOURCE_ROOT; };
+		3261B4AE147B49EEE9341CF8 /* FPGAOutput.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = FPGAOutput.cpp; path = ../../Source/Processors/FPGAOutput.cpp; sourceTree = SOURCE_ROOT; };
+		32959675287F77DD9B7FA96B /* WiFiOutput.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = WiFiOutput.h; path = ../../Source/Processors/WiFiOutput.h; sourceTree = SOURCE_ROOT; };
+		35352AD0E7B59E35BC3B5F59 /* nordic.ttf */ = {isa = PBXFileReference; lastKnownFileType = file.ttf; name = nordic.ttf; path = ../../Resources/Fonts/nordic.ttf; sourceTree = SOURCE_ROOT; };
+		35AFD01064BF29D90EEDF413 /* FilterEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = FilterEditor.cpp; path = ../../Source/Processors/Editors/FilterEditor.cpp; sourceTree = SOURCE_ROOT; };
+		36393F2D58480F61ECDEB5E5 /* EventNodeEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = EventNodeEditor.cpp; path = ../../Source/Processors/Editors/EventNodeEditor.cpp; sourceTree = SOURCE_ROOT; };
+		363B59958615D35C5C948300 /* unibody-8.otf */ = {isa = PBXFileReference; lastKnownFileType = file.otf; name = "unibody-8.otf"; path = "../../Resources/Fonts/unibody-8.otf"; sourceTree = SOURCE_ROOT; };
+		3973173C7FA07073B4F86B29 /* Merger.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Merger.cpp; path = ../../Source/Processors/Utilities/Merger.cpp; sourceTree = SOURCE_ROOT; };
+		399CBACE291A425A2B9497EF /* SpikeDetectorEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = SpikeDetectorEditor.cpp; path = ../../Source/Processors/Editors/SpikeDetectorEditor.cpp; sourceTree = SOURCE_ROOT; };
+		39FAF9808D0EFB6C8170D8B8 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = System/Library/Frameworks/Carbon.framework; sourceTree = SDKROOT; };
+		3B60787E97C74E78853DC90F /* ProcessorGraph.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ProcessorGraph.h; path = ../../Source/Processors/ProcessorGraph.h; sourceTree = SOURCE_ROOT; };
+		3B70B21129D91B16A2F1CE80 /* ControlPanel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ControlPanel.h; path = ../../Source/UI/ControlPanel.h; sourceTree = SOURCE_ROOT; };
+		3D20C932FB058CC20989B129 /* triangle_wave.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = triangle_wave.png; path = ../../Resources/Images/Icons/triangle_wave.png; sourceTree = SOURCE_ROOT; };
+		3DD0741FCFBC7563EC722D9B /* SpikeDetector.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = SpikeDetector.cpp; path = ../../Source/Processors/SpikeDetector.cpp; sourceTree = SOURCE_ROOT; };
+		3E3E4F25C71B800C97AC63B9 /* MainWindow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = MainWindow.h; path = ../../Source/MainWindow.h; sourceTree = SOURCE_ROOT; };
+		3E8E2F9C583077B298525FD1 /* Design.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Design.cpp; path = ../../Source/Dsp/Design.cpp; sourceTree = SOURCE_ROOT; };
+		40A802FCEDFDE7B2FFEBDEA8 /* RadioButtons_selected-01.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "RadioButtons_selected-01.png"; path = "../../Resources/Images/Icons/RadioButtons_selected-01.png"; sourceTree = SOURCE_ROOT; };
+		41591F74A761BAC908FA8AD8 /* BaseUIElement.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = BaseUIElement.cpp; path = ../../Source/Processors/Visualization/SpikePlotting/BaseUIElement.cpp; sourceTree = SOURCE_ROOT; };
+		44303AB487040AE4B60DCAD5 /* ostrich.ttf */ = {isa = PBXFileReference; lastKnownFileType = file.ttf; name = ostrich.ttf; path = ../../Resources/Fonts/ostrich.ttf; sourceTree = SOURCE_ROOT; };
+		46E436D1B9538DB8487F0D8D /* FPGAThread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = FPGAThread.h; path = ../../Source/Processors/DataThreads/FPGAThread.h; sourceTree = SOURCE_ROOT; };
+		47ECF9384C1D27EB2FBEBF9E /* ParameterEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ParameterEditor.cpp; path = ../../Source/Processors/Editors/ParameterEditor.cpp; sourceTree = SOURCE_ROOT; };
+		482AFCBBC28835A9548101B1 /* ofArduino.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ofArduino.h; path = ../../Source/Processors/Serial/ofArduino.h; sourceTree = SOURCE_ROOT; };
+		4974E0E46141648F106A818F /* miso-serialized */ = {isa = PBXFileReference; lastKnownFileType = file; name = "miso-serialized"; path = "../../Resources/Fonts/miso-serialized"; sourceTree = SOURCE_ROOT; };
+		4AEDD076CCA918481C6F9CF2 /* SpikeDisplayNode.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = SpikeDisplayNode.cpp; path = ../../Source/Processors/SpikeDisplayNode.cpp; sourceTree = SOURCE_ROOT; };
+		4D63E86C8A9F721B9C0FA95E /* MathSupplement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = MathSupplement.h; path = ../../Source/Dsp/MathSupplement.h; sourceTree = SOURCE_ROOT; };
+		4DB02C352236D9D030E01205 /* RadioButtons-01.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "RadioButtons-01.png"; path = "../../Resources/Images/Icons/RadioButtons-01.png"; sourceTree = SOURCE_ROOT; };
+		4E67CFE458501E763FF3AE94 /* WiFiOutputEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = WiFiOutputEditor.h; path = ../../Source/Processors/Editors/WiFiOutputEditor.h; sourceTree = SOURCE_ROOT; };
+		4EE6CA70F229EDE04E7E320B /* MessageCenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = MessageCenter.h; path = ../../Source/UI/MessageCenter.h; sourceTree = SOURCE_ROOT; };
+		50D4782F4555FED294F40705 /* miso-regular.ttf */ = {isa = PBXFileReference; lastKnownFileType = file.ttf; name = "miso-regular.ttf"; path = "../../Resources/Fonts/miso-regular.ttf"; sourceTree = SOURCE_ROOT; };
+		50E7B88E8140BB293B27ED67 /* SimpleKeyEvent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SimpleKeyEvent.h; path = ../../Source/Processors/Visualization/SpikePlotting/SimpleKeyEvent.h; sourceTree = SOURCE_ROOT; };
+		50F20268C4572493BB04D269 /* miso-light.ttf */ = {isa = PBXFileReference; lastKnownFileType = file.ttf; name = "miso-light.ttf"; path = "../../Resources/Fonts/miso-light.ttf"; sourceTree = SOURCE_ROOT; };
+		51D2678E9F30DC261CCB61B0 /* ChannelSelector.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ChannelSelector.cpp; path = ../../Source/Processors/Editors/ChannelSelector.cpp; sourceTree = SOURCE_ROOT; };
+		521FECC75E9DDB0D34B22AF8 /* PlotUtils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = PlotUtils.h; path = ../../Source/Processors/Visualization/SpikePlotting/PlotUtils.h; sourceTree = SOURCE_ROOT; };
+		530B262BE169DC42E8F505EA /* AudioResamplingNode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = AudioResamplingNode.h; path = ../../Source/Processors/AudioResamplingNode.h; sourceTree = SOURCE_ROOT; };
+		544DA1EF90EBBDB6FF2DE0A5 /* ImageIcon.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ImageIcon.cpp; path = ../../Source/Processors/Editors/ImageIcon.cpp; sourceTree = SOURCE_ROOT; };
+		54662C69F6AA71B55D68F12E /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = System/Library/Frameworks/OpenGL.framework; sourceTree = SDKROOT; };
+		54A33424E41D55153F6EB422 /* EditorViewport.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = EditorViewport.h; path = ../../Source/UI/EditorViewport.h; sourceTree = SOURCE_ROOT; };
+		552B1370E46646B6B1D40CF8 /* PhaseDetector.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = PhaseDetector.h; path = ../../Source/Processors/PhaseDetector.h; sourceTree = SOURCE_ROOT; };
+		553E92DB60C7D5104B780781 /* ChebyshevI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ChebyshevI.h; path = ../../Source/Dsp/ChebyshevI.h; sourceTree = SOURCE_ROOT; };
+		55F7FFF9942627D7FC46C6C1 /* JuceLibraryCode4.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = JuceLibraryCode4.mm; path = ../../JuceLibraryCode/JuceLibraryCode4.mm; sourceTree = SOURCE_ROOT; };
+		5779673F042A62E02C4AC06B /* ArduinoOutput.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ArduinoOutput.h; path = ../../Source/Processors/ArduinoOutput.h; sourceTree = SOURCE_ROOT; };
+		5935F823A2EE45AC36A0201F /* LfpDisplayNode.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = LfpDisplayNode.cpp; path = ../../Source/Processors/LfpDisplayNode.cpp; sourceTree = SOURCE_ROOT; };
+		59CAEFDE36164ABB19B3CA76 /* RadioButtons_neutral-01.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "RadioButtons_neutral-01.png"; path = "../../Resources/Images/Icons/RadioButtons_neutral-01.png"; sourceTree = SOURCE_ROOT; };
+		5AB4A3A63B9FDEAB09EEC9C8 /* ControlPanel.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ControlPanel.cpp; path = ../../Source/UI/ControlPanel.cpp; sourceTree = SOURCE_ROOT; };
+		5AE7693391C43B4AE475789C /* ResamplingNode.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ResamplingNode.cpp; path = ../../Source/Processors/ResamplingNode.cpp; sourceTree = SOURCE_ROOT; };
+		5B1D08D98AD9F623962A38B2 /* PoleFilter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = PoleFilter.h; path = ../../Source/Dsp/PoleFilter.h; sourceTree = SOURCE_ROOT; };
+		5DDBEE64DC706CE804E5F0AA /* AudioEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = AudioEditor.cpp; path = ../../Source/Processors/Editors/AudioEditor.cpp; sourceTree = SOURCE_ROOT; };
+		5E2258F02911313F494357BF /* EventDetector.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = EventDetector.h; path = ../../Source/Processors/EventDetector.h; sourceTree = SOURCE_ROOT; };
+		5F0DC90995C8E7BB7E3176F7 /* ArduinoOutputEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ArduinoOutputEditor.h; path = ../../Source/Processors/Editors/ArduinoOutputEditor.h; sourceTree = SOURCE_ROOT; };
+		5F43022E89D254273CF827A5 /* FPGAOutputEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = FPGAOutputEditor.h; path = ../../Source/Processors/Editors/FPGAOutputEditor.h; sourceTree = SOURCE_ROOT; };
+		60F060DBD5ACF36E0A407BC1 /* Elliptic.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Elliptic.h; path = ../../Source/Dsp/Elliptic.h; sourceTree = SOURCE_ROOT; };
+		61CA6A2E58E2025508D42FCF /* RecordControlEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = RecordControlEditor.h; path = ../../Source/Processors/Editors/RecordControlEditor.h; sourceTree = SOURCE_ROOT; };
+		62DA962299323A2FA134203D /* SourceNodeEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SourceNodeEditor.h; path = ../../Source/Processors/Editors/SourceNodeEditor.h; sourceTree = SOURCE_ROOT; };
+		63992CB3AC42F91A51135EAC /* AccessClass.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = AccessClass.h; path = ../../Source/AccessClass.h; sourceTree = SOURCE_ROOT; };
+		63C18F4066C75D3C312877D8 /* DataWindow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = DataWindow.h; path = ../../Source/Processors/Visualization/DataWindow.h; sourceTree = SOURCE_ROOT; };
+		66C7E42D7FDE3600982A1F46 /* FileReaderIcon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = FileReaderIcon.png; path = ../../Resources/Images/Icons/FileReaderIcon.png; sourceTree = SOURCE_ROOT; };
+		671CC5EA3DF4F21E9A7E392B /* SpikeDisplayNode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SpikeDisplayNode.h; path = ../../Source/Processors/SpikeDisplayNode.h; sourceTree = SOURCE_ROOT; };
+		673778A175624FC9F52E7A15 /* PracticalSocket.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = PracticalSocket.cpp; path = ../../Source/Network/PracticalSocket.cpp; sourceTree = SOURCE_ROOT; };
+		6A67346CD9B6D590108C7B6E /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; };
+		6B156D132738F6C7C948378F /* NetworkThread.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = NetworkThread.cpp; path = ../../Source/Processors/DataThreads/NetworkThread.cpp; sourceTree = SOURCE_ROOT; };
+		6CD0D896FEB77B261C62447E /* SignalChainManager.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = SignalChainManager.cpp; path = ../../Source/UI/SignalChainManager.cpp; sourceTree = SOURCE_ROOT; };
+		6D94C2733E967EC6A91B719A /* IntanThread.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = IntanThread.cpp; path = ../../Source/Processors/DataThreads/IntanThread.cpp; sourceTree = SOURCE_ROOT; };
+		6E4B37AA4BFEB5A37E3AC250 /* SpikeDetector.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SpikeDetector.h; path = ../../Source/Processors/SpikeDetector.h; sourceTree = SOURCE_ROOT; };
+		706CBE9178440675868F2379 /* Legendre.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Legendre.cpp; path = ../../Source/Dsp/Legendre.cpp; sourceTree = SOURCE_ROOT; };
+		72123888A7DD78159AA032AF /* DataThread.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = DataThread.cpp; path = ../../Source/Processors/DataThreads/DataThread.cpp; sourceTree = SOURCE_ROOT; };
+		73A7E17FDD8DD717F99E0882 /* MergerB-02.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "MergerB-02.png"; path = "../../Resources/Images/Buttons/MergerB-02.png"; sourceTree = SOURCE_ROOT; };
+		73C6FF74D6A31CA13C0D7C5C /* Butterworth.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Butterworth.cpp; path = ../../Source/Dsp/Butterworth.cpp; sourceTree = SOURCE_ROOT; };
+		742284C84C72C882E02E7974 /* Cascade.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Cascade.cpp; path = ../../Source/Dsp/Cascade.cpp; sourceTree = SOURCE_ROOT; };
+		751C52F2BEA7F1328ED13333 /* Parameter.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Parameter.cpp; path = ../../Source/Processors/Parameter.cpp; sourceTree = SOURCE_ROOT; };
+		753133530248EC4F00CBECA6 /* JuceHeader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = JuceHeader.h; path = ../../JuceLibraryCode/JuceHeader.h; sourceTree = SOURCE_ROOT; };
+		771E8D912F94E52AF7E05F91 /* RadioButtons_selected_over-03.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "RadioButtons_selected_over-03.png"; path = "../../Resources/Images/Icons/RadioButtons_selected_over-03.png"; sourceTree = SOURCE_ROOT; };
+		7738196148E539781B237854 /* FPGAOutputEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = FPGAOutputEditor.cpp; path = ../../Source/Processors/Editors/FPGAOutputEditor.cpp; sourceTree = SOURCE_ROOT; };
+		7738F51AE0EC63D76EE0F761 /* OpenGLCanvas.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = OpenGLCanvas.h; path = ../../Source/Processors/Visualization/OpenGLCanvas.h; sourceTree = SOURCE_ROOT; };
+		77F2E2E7A2419CB172C0B1EA /* MainWindow.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = MainWindow.cpp; path = ../../Source/MainWindow.cpp; sourceTree = SOURCE_ROOT; };
+		7977CAB4A151C41F4140FE1A /* Merger.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Merger.h; path = ../../Source/Processors/Utilities/Merger.h; sourceTree = SOURCE_ROOT; };
+		79892A4E41809A09A4711AC3 /* BebasNeue.otf */ = {isa = PBXFileReference; lastKnownFileType = file.otf; name = BebasNeue.otf; path = ../../Resources/Fonts/BebasNeue.otf; sourceTree = SOURCE_ROOT; };
+		7A9A31FC1AE8FB238FAE995E /* SpikeDisplayCanvas.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = SpikeDisplayCanvas.cpp; path = ../../Source/Processors/Visualization/SpikeDisplayCanvas.cpp; sourceTree = SOURCE_ROOT; };
+		7B825983F25D8984E02F6FFB /* Parameter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Parameter.h; path = ../../Source/Processors/Parameter.h; sourceTree = SOURCE_ROOT; };
+		7BD1C1A7C30ED736F4816C31 /* SourceNode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SourceNode.h; path = ../../Source/Processors/SourceNode.h; sourceTree = SOURCE_ROOT; };
+		7BD204C890F9A2F301B15128 /* NetworkThread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = NetworkThread.h; path = ../../Source/Processors/DataThreads/NetworkThread.h; sourceTree = SOURCE_ROOT; };
+		7C09194091360867C4CAB0E8 /* saw_wave.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = saw_wave.png; path = ../../Resources/Images/Icons/saw_wave.png; sourceTree = SOURCE_ROOT; };
+		7C225F446A96BED7F585F66B /* Filter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Filter.h; path = ../../Source/Dsp/Filter.h; sourceTree = SOURCE_ROOT; };
+		7EAD8082130C2384BA9E1206 /* SourceNode.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = SourceNode.cpp; path = ../../Source/Processors/SourceNode.cpp; sourceTree = SOURCE_ROOT; };
+		7FC3C64A06A9FA2C828F8744 /* SpikeDetectorEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SpikeDetectorEditor.h; path = ../../Source/Processors/Editors/SpikeDetectorEditor.h; sourceTree = SOURCE_ROOT; };
+		8086EC3AFDEA802E0B43F19E /* RadioButtons-03.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "RadioButtons-03.png"; path = "../../Resources/Images/Icons/RadioButtons-03.png"; sourceTree = SOURCE_ROOT; };
+		833030703B66CDD9DA94155B /* ChebyshevII.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ChebyshevII.h; path = ../../Source/Dsp/ChebyshevII.h; sourceTree = SOURCE_ROOT; };
+		877F9F9DA7A1B51D3EDCBC07 /* DataViewport.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = DataViewport.h; path = ../../Source/UI/DataViewport.h; sourceTree = SOURCE_ROOT; };
+		87F60F05136FEBD8A36AE670 /* RadioButtons_neutral-03.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "RadioButtons_neutral-03.png"; path = "../../Resources/Images/Icons/RadioButtons_neutral-03.png"; sourceTree = SOURCE_ROOT; };
+		898385F65E64BF6D609B3BF2 /* JuceLibraryCode1.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = JuceLibraryCode1.mm; path = ../../JuceLibraryCode/JuceLibraryCode1.mm; sourceTree = SOURCE_ROOT; };
+		89CF25CB48EEA21B226869E1 /* PipelineB-02.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "PipelineB-02.png"; path = "../../Resources/Images/Buttons/PipelineB-02.png"; sourceTree = SOURCE_ROOT; };
+		8A3AE5CF9D452810BA48A3EF /* RadioButtons_selected-02.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "RadioButtons_selected-02.png"; path = "../../Resources/Images/Icons/RadioButtons_selected-02.png"; sourceTree = SOURCE_ROOT; };
+		8AD9A0F023B727B34348B95E /* PipelineB-01.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "PipelineB-01.png"; path = "../../Resources/Images/Buttons/PipelineB-01.png"; sourceTree = SOURCE_ROOT; };
+		8B70886CFCD13A761567DE7B /* Butterworth.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Butterworth.h; path = ../../Source/Dsp/Butterworth.h; sourceTree = SOURCE_ROOT; };
+		8C8C2A42B36655796DCFBAC2 /* Channel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Channel.h; path = ../../Source/Processors/Channel.h; sourceTree = SOURCE_ROOT; };
+		8E041C8C49F1A5B710CC812C /* wifi.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = wifi.png; path = ../../Resources/Images/Icons/wifi.png; sourceTree = SOURCE_ROOT; };
+		8E7AA0EF1B95BC771FBB10A0 /* cpmono_light.otf */ = {isa = PBXFileReference; lastKnownFileType = file.otf; name = cpmono_light.otf; path = ../../Resources/Fonts/cpmono_light.otf; sourceTree = SOURCE_ROOT; };
+		8F8F55DD042F61BB213AFC0B /* noise_wave.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = noise_wave.png; path = ../../Resources/Images/Icons/noise_wave.png; sourceTree = SOURCE_ROOT; };
+		90E8F4BDA3DBA5F8D78A2AB0 /* EventDetector.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = EventDetector.cpp; path = ../../Source/Processors/EventDetector.cpp; sourceTree = SOURCE_ROOT; };
+		92C241C7F87B5933B0E6E03F /* Types.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Types.h; path = ../../Source/Dsp/Types.h; sourceTree = SOURCE_ROOT; };
+		93FACAE1DC7A236505359477 /* Custom.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Custom.cpp; path = ../../Source/Dsp/Custom.cpp; sourceTree = SOURCE_ROOT; };
+		96D33A963CAAEEAB8770F2A3 /* ofConstants.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ofConstants.h; path = ../../Source/Processors/Serial/ofConstants.h; sourceTree = SOURCE_ROOT; };
+		9A3976537C96B39716B5312D /* VisualizerEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = VisualizerEditor.cpp; path = ../../Source/Processors/Editors/VisualizerEditor.cpp; sourceTree = SOURCE_ROOT; };
+		9A47B52E5E1CD17DC9C72B53 /* Splitter.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Splitter.cpp; path = ../../Source/Processors/Utilities/Splitter.cpp; sourceTree = SOURCE_ROOT; };
+		9ACFB6A181D09434268CE006 /* Visualizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Visualizer.h; path = ../../Source/Processors/Visualization/Visualizer.h; sourceTree = SOURCE_ROOT; };
+		9AFA895DFA2087804F47ECF9 /* DiscRecording.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = DiscRecording.framework; path = System/Library/Frameworks/DiscRecording.framework; sourceTree = SDKROOT; };
+		9BFC7532965901165C9DDB07 /* BinaryData.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = BinaryData.h; path = ../../JuceLibraryCode/BinaryData.h; sourceTree = SOURCE_ROOT; };
+		9C8EA29582DBFF6E5A14B8A3 /* BaseUIElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = BaseUIElement.h; path = ../../Source/Processors/Visualization/SpikePlotting/BaseUIElement.h; sourceTree = SOURCE_ROOT; };
+		9CAD123471BE2E6ED4A96C3B /* OpenEphysBoardLogoGray.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = OpenEphysBoardLogoGray.png; path = ../../Resources/Images/Icons/OpenEphysBoardLogoGray.png; sourceTree = SOURCE_ROOT; };
+		9CD0E7C2C7E49A0DBF301B0F /* MergerA-02.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "MergerA-02.png"; path = "../../Resources/Images/Buttons/MergerA-02.png"; sourceTree = SOURCE_ROOT; };
+		9E884AEDB6035FFC74886EE8 /* SpikeDisplayCanvas.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SpikeDisplayCanvas.h; path = ../../Source/Processors/Visualization/SpikeDisplayCanvas.h; sourceTree = SOURCE_ROOT; };
+		9EBBC43B9522EC9E6B607493 /* Biquad.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Biquad.h; path = ../../Source/Dsp/Biquad.h; sourceTree = SOURCE_ROOT; };
+		9EE49894F14895CEA36FD0F4 /* RecordControl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = RecordControl.cpp; path = ../../Source/Processors/Utilities/RecordControl.cpp; sourceTree = SOURCE_ROOT; };
+		9F208A66C09E80D14F087CB1 /* WaveAxes.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = WaveAxes.cpp; path = ../../Source/Processors/Visualization/SpikePlotting/WaveAxes.cpp; sourceTree = SOURCE_ROOT; };
+		A32D8455B95FD230EBFD7891 /* CustomLookAndFeel.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = CustomLookAndFeel.cpp; path = ../../Source/UI/CustomLookAndFeel.cpp; sourceTree = SOURCE_ROOT; };
+		A3F978AE6999903C47650173 /* WaveAxes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = WaveAxes.h; path = ../../Source/Processors/Visualization/SpikePlotting/WaveAxes.h; sourceTree = SOURCE_ROOT; };
+		A4C8AB3F5E7A708350F72E7C /* IntanIcon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = IntanIcon.png; path = ../../Resources/Images/Icons/IntanIcon.png; sourceTree = SOURCE_ROOT; };
+		A5231F3D01B88C063D10026A /* RadioButtons_neutral-05.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "RadioButtons_neutral-05.png"; path = "../../Resources/Images/Icons/RadioButtons_neutral-05.png"; sourceTree = SOURCE_ROOT; };
+		A582462316439858552387F7 /* OpenEphysBoardLogoBlack.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = OpenEphysBoardLogoBlack.png; path = ../../Resources/Images/Icons/OpenEphysBoardLogoBlack.png; sourceTree = SOURCE_ROOT; };
+		A80433BF9686B4E2542C580C /* EventNodeEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = EventNodeEditor.h; path = ../../Source/Processors/Editors/EventNodeEditor.h; sourceTree = SOURCE_ROOT; };
+		A9142BFEFE7EB34D919ED0A0 /* FPGAThread.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = FPGAThread.cpp; path = ../../Source/Processors/DataThreads/FPGAThread.cpp; sourceTree = SOURCE_ROOT; };
+		A9AF10F6A89F85989C62F856 /* Filter.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Filter.cpp; path = ../../Source/Dsp/Filter.cpp; sourceTree = SOURCE_ROOT; };
+		A9B11C1B693E380C29F53F78 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; };
+		A9C2C7AF037050228CD2E026 /* LfpDisplayCanvas.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = LfpDisplayCanvas.h; path = ../../Source/Processors/Visualization/LfpDisplayCanvas.h; sourceTree = SOURCE_ROOT; };
+		AA00883DC021E36B7EFDAC43 /* InfoLabel.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = InfoLabel.cpp; path = ../../Source/UI/InfoLabel.cpp; sourceTree = SOURCE_ROOT; };
+		AA7B88F969CE43331035DE98 /* okFrontPanelDLL.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = okFrontPanelDLL.h; path = ../../Source/Processors/DataThreads/okFrontPanelDLL.h; sourceTree = SOURCE_ROOT; };
+		AD4BF1BC602902B20AEBF49C /* FilterEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = FilterEditor.h; path = ../../Source/Processors/Editors/FilterEditor.h; sourceTree = SOURCE_ROOT; };
+		AD73EA6B24378294003DC2D0 /* MergerEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = MergerEditor.cpp; path = ../../Source/Processors/Editors/MergerEditor.cpp; sourceTree = SOURCE_ROOT; };
+		AED49EC9B45C93F39002B4B9 /* ofSerial.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ofSerial.h; path = ../../Source/Processors/Serial/ofSerial.h; sourceTree = SOURCE_ROOT; };
+		AF4469EAC57A21DD7241C9A4 /* RecordControlEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = RecordControlEditor.cpp; path = ../../Source/Processors/Editors/RecordControlEditor.cpp; sourceTree = SOURCE_ROOT; };
+		B00F207EBEED525FB686AD98 /* LfpDisplayNode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = LfpDisplayNode.h; path = ../../Source/Processors/LfpDisplayNode.h; sourceTree = SOURCE_ROOT; };
+		B0A6A0635113C4B4CD424BEC /* SpikeObject.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SpikeObject.h; path = ../../Source/Processors/Visualization/SpikeObject.h; sourceTree = SOURCE_ROOT; };
+		B195AD6CEB9B6E3625C8D087 /* PlotUtils.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = PlotUtils.cpp; path = ../../Source/Processors/Visualization/SpikePlotting/PlotUtils.cpp; sourceTree = SOURCE_ROOT; };
+		B1CF7BFC5F1892735D4FA1EE /* ProjectionAxes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ProjectionAxes.h; path = ../../Source/Processors/Visualization/SpikePlotting/ProjectionAxes.h; sourceTree = SOURCE_ROOT; };
+		B28CC9409188C9A200AAAFFC /* ProcessorList.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ProcessorList.cpp; path = ../../Source/UI/ProcessorList.cpp; sourceTree = SOURCE_ROOT; };
+		B30EF131FE61BAA4C1818102 /* Bessel.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Bessel.cpp; path = ../../Source/Dsp/Bessel.cpp; sourceTree = SOURCE_ROOT; };
+		B3CDC8825DAD5A7D75956726 /* RadioButtons_selected-03.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "RadioButtons_selected-03.png"; path = "../../Resources/Images/Icons/RadioButtons_selected-03.png"; sourceTree = SOURCE_ROOT; };
+		B56D08AB6374C811F59D760C /* BinaryData.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = BinaryData.cpp; path = ../../JuceLibraryCode/BinaryData.cpp; sourceTree = SOURCE_ROOT; };
+		B7750B27E4F3748ECCCCF69D /* AudioNode.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = AudioNode.cpp; path = ../../Source/Processors/AudioNode.cpp; sourceTree = SOURCE_ROOT; };
+		B7FD86B9DA02771D3519FAA0 /* MergerEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = MergerEditor.h; path = ../../Source/Processors/Editors/MergerEditor.h; sourceTree = SOURCE_ROOT; };
+		B92E8189F69E0B926C73B654 /* Splitter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Splitter.h; path = ../../Source/Processors/Utilities/Splitter.h; sourceTree = SOURCE_ROOT; };
+		B96BF02034F29DE033F16D89 /* RecordNode.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = RecordNode.cpp; path = ../../Source/Processors/RecordNode.cpp; sourceTree = SOURCE_ROOT; };
+		B977C2809B309C8038CB5D95 /* DataViewport.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = DataViewport.cpp; path = ../../Source/UI/DataViewport.cpp; sourceTree = SOURCE_ROOT; };
+		BAAA02122ADD1D5D0670A684 /* MergerB-01.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "MergerB-01.png"; path = "../../Resources/Images/Buttons/MergerB-01.png"; sourceTree = SOURCE_ROOT; };
+		BCBB865ED53E8AFD278D1A53 /* GenericAxes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = GenericAxes.h; path = ../../Source/Processors/Visualization/SpikePlotting/GenericAxes.h; sourceTree = SOURCE_ROOT; };
+		BD07C36AC2ECF10942F0A229 /* FileReaderThread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = FileReaderThread.h; path = ../../Source/Processors/DataThreads/FileReaderThread.h; sourceTree = SOURCE_ROOT; };
+		BD0900C3A85F58C34FA91D16 /* muteoff.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = muteoff.png; path = ../../Resources/Images/Buttons/muteoff.png; sourceTree = SOURCE_ROOT; };
+		BDB56CA7F08DC7EFABBF7846 /* AppConfig.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = AppConfig.h; path = ../../JuceLibraryCode/AppConfig.h; sourceTree = SOURCE_ROOT; };
+		BDFFB5B0A8E8A022C25D7FDB /* square_wave.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = square_wave.png; path = ../../Resources/Images/Icons/square_wave.png; sourceTree = SOURCE_ROOT; };
+		BF41F256D0C244C2C02AE6E1 /* QuickTime.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuickTime.framework; path = System/Library/Frameworks/QuickTime.framework; sourceTree = SDKROOT; };
+		BF8EB3483F66AA7F61E6D863 /* Param.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Param.cpp; path = ../../Source/Dsp/Param.cpp; sourceTree = SOURCE_ROOT; };
+		C02C160190E417B42F73680A /* LfpDisplayEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = LfpDisplayEditor.h; path = ../../Source/Processors/Editors/LfpDisplayEditor.h; sourceTree = SOURCE_ROOT; };
+		C04E6EDA980CDC09DF061D66 /* FPGAOutput.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = FPGAOutput.h; path = ../../Source/Processors/FPGAOutput.h; sourceTree = SOURCE_ROOT; };
+		C177B371A0CEC8E7B9131865 /* SplitterEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SplitterEditor.h; path = ../../Source/Processors/Editors/SplitterEditor.h; sourceTree = SOURCE_ROOT; };
+		C25CAC3FC9AE387CD597DF37 /* RadioButtons-05.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "RadioButtons-05.png"; path = "../../Resources/Images/Icons/RadioButtons-05.png"; sourceTree = SOURCE_ROOT; };
+		C2A7939DF5ED600BBB2F30C4 /* silkscreen-serialized */ = {isa = PBXFileReference; lastKnownFileType = file; name = "silkscreen-serialized"; path = "../../Resources/Fonts/silkscreen-serialized"; sourceTree = SOURCE_ROOT; };
+		C2C96A81B4033338679E6EFB /* ArduinoIcon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = ArduinoIcon.png; path = ../../Resources/Images/Icons/ArduinoIcon.png; sourceTree = SOURCE_ROOT; };
+		C2ED801EA28FBA9764E76349 /* SplitterEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = SplitterEditor.cpp; path = ../../Source/Processors/Editors/SplitterEditor.cpp; sourceTree = SOURCE_ROOT; };
+		C3B95EF26B5F3281447FCF42 /* JuceLibraryCode2.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = JuceLibraryCode2.mm; path = ../../JuceLibraryCode/JuceLibraryCode2.mm; sourceTree = SOURCE_ROOT; };
+		C4197FDA1B4D4F1D58F6A5A0 /* GenericProcessor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = GenericProcessor.h; path = ../../Source/Processors/GenericProcessor.h; sourceTree = SOURCE_ROOT; };
+		C42446F8ABB3627870E9677D /* ArduinoOutput.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ArduinoOutput.cpp; path = ../../Source/Processors/ArduinoOutput.cpp; sourceTree = SOURCE_ROOT; };
+		C4DA9685E5637B03F00E5E79 /* ProcessorGraph.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ProcessorGraph.cpp; path = ../../Source/Processors/ProcessorGraph.cpp; sourceTree = SOURCE_ROOT; };
+		C546D55EDE65ADDD95C6A6F5 /* VisualizerEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = VisualizerEditor.h; path = ../../Source/Processors/Editors/VisualizerEditor.h; sourceTree = SOURCE_ROOT; };
+		C586714DD22C96F569FDC716 /* cpmono_extra_light.otf */ = {isa = PBXFileReference; lastKnownFileType = file.otf; name = cpmono_extra_light.otf; path = ../../Resources/Fonts/cpmono_extra_light.otf; sourceTree = SOURCE_ROOT; };
+		C87B84BA79CB9EE547E8762C /* ResamplingNode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ResamplingNode.h; path = ../../Source/Processors/ResamplingNode.h; sourceTree = SOURCE_ROOT; };
+		C96A8F49EA22919F09486B96 /* SpikePlot.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = SpikePlot.cpp; path = ../../Source/Processors/Visualization/SpikePlotting/SpikePlot.cpp; sourceTree = SOURCE_ROOT; };
+		CA0A1584725D21237DBCD70A /* AccessClass.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = AccessClass.cpp; path = ../../Source/AccessClass.cpp; sourceTree = SOURCE_ROOT; };
+		CD05957EC804348231739108 /* Design.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Design.h; path = ../../Source/Dsp/Design.h; sourceTree = SOURCE_ROOT; };
+		CE771F502D1D710B28632E3A /* RadioButtons_selected_over-04.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "RadioButtons_selected_over-04.png"; path = "../../Resources/Images/Icons/RadioButtons_selected_over-04.png"; sourceTree = SOURCE_ROOT; };
+		CECE2AB5D5F36CADBC3219A2 /* GenericProcessor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = GenericProcessor.cpp; path = ../../Source/Processors/GenericProcessor.cpp; sourceTree = SOURCE_ROOT; };
+		CF9878CE31A1B41406C3457B /* LfpDisplayEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = LfpDisplayEditor.cpp; path = ../../Source/Processors/Editors/LfpDisplayEditor.cpp; sourceTree = SOURCE_ROOT; };
+		D08C5BF3FF3AC38C2BB5F921 /* CoreMIDI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMIDI.framework; path = System/Library/Frameworks/CoreMIDI.framework; sourceTree = SDKROOT; };
+		D2342EA3BD783D3A81006606 /* FilterNode.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = FilterNode.cpp; path = ../../Source/Processors/FilterNode.cpp; sourceTree = SOURCE_ROOT; };
+		D2D308542534D043BB12C801 /* MergerA-01.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "MergerA-01.png"; path = "../../Resources/Images/Buttons/MergerA-01.png"; sourceTree = SOURCE_ROOT; };
+		D44DBE2FF15A98834F222766 /* ChebyshevI.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ChebyshevI.cpp; path = ../../Source/Dsp/ChebyshevI.cpp; sourceTree = SOURCE_ROOT; };
+		D55947E71EB4AF25C1FC7089 /* Bessel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Bessel.h; path = ../../Source/Dsp/Bessel.h; sourceTree = SOURCE_ROOT; };
+		D91BA61C12BFEBE59B577805 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = SOURCE_ROOT; };
+		D95C78F42494CD5995FBC15E /* RadioButtons_selected_over-01.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "RadioButtons_selected_over-01.png"; path = "../../Resources/Images/Icons/RadioButtons_selected_over-01.png"; sourceTree = SOURCE_ROOT; };
+		D99F56FB46F631F67AF23F2C /* DefaultDataSource.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = DefaultDataSource.png; path = ../../Resources/Images/Icons/DefaultDataSource.png; sourceTree = SOURCE_ROOT; };
+		DAFD5D2E1F875321584C7147 /* ArduinoOutputEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ArduinoOutputEditor.cpp; path = ../../Source/Processors/Editors/ArduinoOutputEditor.cpp; sourceTree = SOURCE_ROOT; };
+		DB605BA15852F367DF625300 /* UIComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = UIComponent.h; path = ../../Source/UI/UIComponent.h; sourceTree = SOURCE_ROOT; };
+		E0587F61AD4A92C2661E5073 /* RadioButtons_neutral-02.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "RadioButtons_neutral-02.png"; path = "../../Resources/Images/Icons/RadioButtons_neutral-02.png"; sourceTree = SOURCE_ROOT; };
+		E0883576683119727BD54A81 /* SignalGenerator.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SignalGenerator.h; path = ../../Source/Processors/SignalGenerator.h; sourceTree = SOURCE_ROOT; };
+		E177F2FF11601F6E11498390 /* ResamplingNodeEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ResamplingNodeEditor.h; path = ../../Source/Processors/Editors/ResamplingNodeEditor.h; sourceTree = SOURCE_ROOT; };
+		E1C6E67757EC5D68093BD760 /* EditorViewportButtons.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = EditorViewportButtons.cpp; path = ../../Source/UI/EditorViewportButtons.cpp; sourceTree = SOURCE_ROOT; };
+		E27B5891A52FDAB2B00901A0 /* Utilities.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Utilities.h; path = ../../Source/Dsp/Utilities.h; sourceTree = SOURCE_ROOT; };
+		E4AEAC4AD1D1C6A80A2CD70A /* Custom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Custom.h; path = ../../Source/Dsp/Custom.h; sourceTree = SOURCE_ROOT; };
+		E6FF4D4C70794123A52B9E82 /* RBJ.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = RBJ.cpp; path = ../../Source/Dsp/RBJ.cpp; sourceTree = SOURCE_ROOT; };
+		E7247F5EE9588903C924994F /* SpikeObject.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = SpikeObject.cpp; path = ../../Source/Processors/Visualization/SpikeObject.cpp; sourceTree = SOURCE_ROOT; };
+		E79C104CD58BBBD5368EEF5A /* cpmono_plain.otf */ = {isa = PBXFileReference; lastKnownFileType = file.otf; name = cpmono_plain.otf; path = ../../Resources/Fonts/cpmono_plain.otf; sourceTree = SOURCE_ROOT; };
+		E8214D83845C25F39EEC13CD /* Documentation.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Documentation.cpp; path = ../../Source/Dsp/Documentation.cpp; sourceTree = SOURCE_ROOT; };
+		E8503A3E123FCFBFA317EAE6 /* RBJ.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = RBJ.h; path = ../../Source/Dsp/RBJ.h; sourceTree = SOURCE_ROOT; };
+		EB824B60F600C19193ADFA5F /* EditorViewport.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = EditorViewport.cpp; path = ../../Source/UI/EditorViewport.cpp; sourceTree = SOURCE_ROOT; };
+		EBB0E5058615EA1FEDADF189 /* SignalGenerator.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = SignalGenerator.cpp; path = ../../Source/Processors/SignalGenerator.cpp; sourceTree = SOURCE_ROOT; };
+		ED179D5A10DD051DDB3ECB8B /* DataWindow.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = DataWindow.cpp; path = ../../Source/Processors/Visualization/DataWindow.cpp; sourceTree = SOURCE_ROOT; };
+		ED50AB550D058BEB30F12C7D /* RadioButtons_selected-04.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "RadioButtons_selected-04.png"; path = "../../Resources/Images/Icons/RadioButtons_selected-04.png"; sourceTree = SOURCE_ROOT; };
+		EE3AAE8BD520868168064D38 /* ResamplingNodeEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ResamplingNodeEditor.cpp; path = ../../Source/Processors/Editors/ResamplingNodeEditor.cpp; sourceTree = SOURCE_ROOT; };
+		EEAB043F90902D8F9D1102C2 /* RadioButtons-02.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "RadioButtons-02.png"; path = "../../Resources/Images/Icons/RadioButtons-02.png"; sourceTree = SOURCE_ROOT; };
+		EEDA71600D817BF9444FE3E7 /* MessageCenter.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = MessageCenter.cpp; path = ../../Source/UI/MessageCenter.cpp; sourceTree = SOURCE_ROOT; };
+		EF2AF97E68B2C2428A835836 /* PhaseDetector.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = PhaseDetector.cpp; path = ../../Source/Processors/PhaseDetector.cpp; sourceTree = SOURCE_ROOT; };
+		F040256D2E74A61F4F08B148 /* Channel.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Channel.cpp; path = ../../Source/Processors/Channel.cpp; sourceTree = SOURCE_ROOT; };
+		F062CCE0FB40E6C65A6493F4 /* DataBuffer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = DataBuffer.h; path = ../../Source/Processors/DataThreads/DataBuffer.h; sourceTree = SOURCE_ROOT; };
+		F0B09605D4108F0F94EF3B57 /* SpikeDisplayEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = SpikeDisplayEditor.cpp; path = ../../Source/Processors/Editors/SpikeDisplayEditor.cpp; sourceTree = SOURCE_ROOT; };
+		F0B8C75B1AA6E8D1BC620653 /* GenericEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = GenericEditor.h; path = ../../Source/Processors/Editors/GenericEditor.h; sourceTree = SOURCE_ROOT; };
+		F20726FD9F586FDE2CB42901 /* DataBuffer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = DataBuffer.cpp; path = ../../Source/Processors/DataThreads/DataBuffer.cpp; sourceTree = SOURCE_ROOT; };
+		F4A53064BA75472765338C1D /* RootFinder.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = RootFinder.cpp; path = ../../Source/Dsp/RootFinder.cpp; sourceTree = SOURCE_ROOT; };
+		F70641473A3E7C0DC5168858 /* CustomLookAndFeel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CustomLookAndFeel.h; path = ../../Source/UI/CustomLookAndFeel.h; sourceTree = SOURCE_ROOT; };
+		F74662D3D82975EDB5AD42E0 /* AudioComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = AudioComponent.cpp; path = ../../Source/Audio/AudioComponent.cpp; sourceTree = SOURCE_ROOT; };
+		F7620D8D567CCE463ADDE0A6 /* Common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Common.h; path = ../../Source/Dsp/Common.h; sourceTree = SOURCE_ROOT; };
+		F8CAE2412B173788F325BD8B /* silkscreen.ttf */ = {isa = PBXFileReference; lastKnownFileType = file.ttf; name = silkscreen.ttf; path = ../../Resources/Fonts/silkscreen.ttf; sourceTree = SOURCE_ROOT; };
+		FA55B9FDE138CCB1F16BA905 /* AudioComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = AudioComponent.h; path = ../../Source/Audio/AudioComponent.h; sourceTree = SOURCE_ROOT; };
+		FA57CE4F63FF1592D6B3F9B5 /* EventNode.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = EventNode.cpp; path = ../../Source/Processors/EventNode.cpp; sourceTree = SOURCE_ROOT; };
+		FAB58A8AE7DCBAC0CF311D14 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; };
+		FC5939F3D2A31BB43EA3E393 /* SourceNodeEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = SourceNodeEditor.cpp; path = ../../Source/Processors/Editors/SourceNodeEditor.cpp; sourceTree = SOURCE_ROOT; };
+		FC83C3CD6DC717911B2C3C20 /* RecordNode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = RecordNode.h; path = ../../Source/Processors/RecordNode.h; sourceTree = SOURCE_ROOT; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+		FDDDE8762356EE886B1C1C9E /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				6125D1F24D314D771E3A350E /* Cocoa.framework in Frameworks */,
+				AD58AC45D09BA8A736B3D67C /* Carbon.framework in Frameworks */,
+				F8751DCE1BCF3EC9C7A46154 /* IOKit.framework in Frameworks */,
+				37F9B7C362F6F31231D10927 /* CoreAudio.framework in Frameworks */,
+				BCA6FAB5DADF0AF804E83F6E /* CoreMIDI.framework in Frameworks */,
+				DB7C2DF80130B2D0D8DD9BD2 /* WebKit.framework in Frameworks */,
+				11885833D32D03BA7E17138A /* DiscRecording.framework in Frameworks */,
+				90C038F480F790988D0F928E /* OpenGL.framework in Frameworks */,
+				C038A696FD85E64E249AF737 /* QuartzCore.framework in Frameworks */,
+				881EDBF5D2D6FD7B53B71182 /* QTKit.framework in Frameworks */,
+				14BE1E76E7BB3593A5F66DCC /* QuickTime.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+		0ECE243E52A42297D09AE145 /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				0837481AD187A1E6CBCAC577 /* open-ephys.app */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+		1255E9B28ADAA1A1CADC4A6E /* SpikePlotting */ = {
+			isa = PBXGroup;
+			children = (
+				C96A8F49EA22919F09486B96 /* SpikePlot.cpp */,
+				06B051747D84858D9C5C0444 /* SpikePlot.h */,
+				41591F74A761BAC908FA8AD8 /* BaseUIElement.cpp */,
+				9C8EA29582DBFF6E5A14B8A3 /* BaseUIElement.h */,
+				24C6D768C87E1C42C644C4BD /* GenericAxes.cpp */,
+				BCBB865ED53E8AFD278D1A53 /* GenericAxes.h */,
+				B195AD6CEB9B6E3625C8D087 /* PlotUtils.cpp */,
+				521FECC75E9DDB0D34B22AF8 /* PlotUtils.h */,
+				2FA2FA826CBAD9C639A61E4A /* ProjectionAxes.cpp */,
+				B1CF7BFC5F1892735D4FA1EE /* ProjectionAxes.h */,
+				50E7B88E8140BB293B27ED67 /* SimpleKeyEvent.h */,
+				9F208A66C09E80D14F087CB1 /* WaveAxes.cpp */,
+				A3F978AE6999903C47650173 /* WaveAxes.h */,
+			);
+			name = SpikePlotting;
+			sourceTree = "<group>";
+		};
+		15543D7982B26B70879960F4 /* Visualization */ = {
+			isa = PBXGroup;
+			children = (
+				1255E9B28ADAA1A1CADC4A6E /* SpikePlotting */,
+				E7247F5EE9588903C924994F /* SpikeObject.cpp */,
+				B0A6A0635113C4B4CD424BEC /* SpikeObject.h */,
+				7A9A31FC1AE8FB238FAE995E /* SpikeDisplayCanvas.cpp */,
+				9E884AEDB6035FFC74886EE8 /* SpikeDisplayCanvas.h */,
+				9ACFB6A181D09434268CE006 /* Visualizer.h */,
+				ED179D5A10DD051DDB3ECB8B /* DataWindow.cpp */,
+				63C18F4066C75D3C312877D8 /* DataWindow.h */,
+				2E96DA81EE37A0ECE471A928 /* LfpDisplayCanvas.cpp */,
+				A9C2C7AF037050228CD2E026 /* LfpDisplayCanvas.h */,
+				0C5335B0E57C9DC92FC57E5F /* OpenGLCanvas.cpp */,
+				7738F51AE0EC63D76EE0F761 /* OpenGLCanvas.h */,
+			);
+			name = Visualization;
+			sourceTree = "<group>";
+		};
+		1640CC946EDFD5EC9A321954 /* Resources */ = {
+			isa = PBXGroup;
+			children = (
+				2D8E1C366F21D3C8FE662382 /* Fonts */,
+				4E8DA551A1B5D7A2B1229181 /* Images */,
+			);
+			name = Resources;
+			sourceTree = "<group>";
+		};
+		1BAC20F9B88EE03AB534ED66 /* Juce Library Code */ = {
+			isa = PBXGroup;
+			children = (
+				BDB56CA7F08DC7EFABBF7846 /* AppConfig.h */,
+				753133530248EC4F00CBECA6 /* JuceHeader.h */,
+				B56D08AB6374C811F59D760C /* BinaryData.cpp */,
+				9BFC7532965901165C9DDB07 /* BinaryData.h */,
+				898385F65E64BF6D609B3BF2 /* JuceLibraryCode1.mm */,
+				C3B95EF26B5F3281447FCF42 /* JuceLibraryCode2.mm */,
+				1CD026FD773BB5A428624381 /* JuceLibraryCode3.mm */,
+				55F7FFF9942627D7FC46C6C1 /* JuceLibraryCode4.mm */,
+			);
+			name = "Juce Library Code";
+			sourceTree = "<group>";
+		};
+		20FFF487B65BF8567EFE70F8 /* Utilities */ = {
+			isa = PBXGroup;
+			children = (
+				9EE49894F14895CEA36FD0F4 /* RecordControl.cpp */,
+				0998E3F08E61271CE0FA930C /* RecordControl.h */,
+				3973173C7FA07073B4F86B29 /* Merger.cpp */,
+				7977CAB4A151C41F4140FE1A /* Merger.h */,
+				9A47B52E5E1CD17DC9C72B53 /* Splitter.cpp */,
+				B92E8189F69E0B926C73B654 /* Splitter.h */,
+			);
+			name = Utilities;
+			sourceTree = "<group>";
+		};
+		21721C7CD4451993F10354CB /* Plugins */ = {
+			isa = PBXGroup;
+			children = (
+			);
+			name = Plugins;
+			sourceTree = "<group>";
+		};
+		2D8E1C366F21D3C8FE662382 /* Fonts */ = {
+			isa = PBXGroup;
+			children = (
+				79892A4E41809A09A4711AC3 /* BebasNeue.otf */,
+				1B2C20F6F1F1BCF9115F8D53 /* cpmono_bold.otf */,
+				C586714DD22C96F569FDC716 /* cpmono_extra_light.otf */,
+				8E7AA0EF1B95BC771FBB10A0 /* cpmono_light.otf */,
+				E79C104CD58BBBD5368EEF5A /* cpmono_plain.otf */,
+				060C55E19A414F464C499A47 /* miso-bold.ttf */,
+				50F20268C4572493BB04D269 /* miso-light.ttf */,
+				50D4782F4555FED294F40705 /* miso-regular.ttf */,
+				4974E0E46141648F106A818F /* miso-serialized */,
+				35352AD0E7B59E35BC3B5F59 /* nordic.ttf */,
+				44303AB487040AE4B60DCAD5 /* ostrich.ttf */,
+				C2A7939DF5ED600BBB2F30C4 /* silkscreen-serialized */,
+				F8CAE2412B173788F325BD8B /* silkscreen.ttf */,
+				363B59958615D35C5C948300 /* unibody-8.otf */,
+			);
+			name = Fonts;
+			sourceTree = "<group>";
+		};
+		3392BC2D90C96126B6D3EDA0 /* Buttons */ = {
+			isa = PBXGroup;
+			children = (
+				BD0900C3A85F58C34FA91D16 /* muteoff.png */,
+				1BDA9647E0AA33F642E162BE /* muteon.png */,
+				D2D308542534D043BB12C801 /* MergerA-01.png */,
+				9CD0E7C2C7E49A0DBF301B0F /* MergerA-02.png */,
+				BAAA02122ADD1D5D0670A684 /* MergerB-01.png */,
+				73A7E17FDD8DD717F99E0882 /* MergerB-02.png */,
+				2A54E3D28E10F5D50498BB77 /* PipelineA-01.png */,
+				294B78ADA337603DE3C87BF9 /* PipelineA-02.png */,
+				8AD9A0F023B727B34348B95E /* PipelineB-01.png */,
+				89CF25CB48EEA21B226869E1 /* PipelineB-02.png */,
+			);
+			name = Buttons;
+			sourceTree = "<group>";
+		};
+		33A88A7C3FF426F051834D6A /* Processors */ = {
+			isa = PBXGroup;
+			children = (
+				EF2AF97E68B2C2428A835836 /* PhaseDetector.cpp */,
+				552B1370E46646B6B1D40CF8 /* PhaseDetector.h */,
+				2AFAED9379D050629F34C033 /* AudioResamplingNode.cpp */,
+				530B262BE169DC42E8F505EA /* AudioResamplingNode.h */,
+				F040256D2E74A61F4F08B148 /* Channel.cpp */,
+				8C8C2A42B36655796DCFBAC2 /* Channel.h */,
+				49AED3DB3EC67F7DF624D4D9 /* Serial */,
+				90E8F4BDA3DBA5F8D78A2AB0 /* EventDetector.cpp */,
+				5E2258F02911313F494357BF /* EventDetector.h */,
+				3261B4AE147B49EEE9341CF8 /* FPGAOutput.cpp */,
+				C04E6EDA980CDC09DF061D66 /* FPGAOutput.h */,
+				C42446F8ABB3627870E9677D /* ArduinoOutput.cpp */,
+				5779673F042A62E02C4AC06B /* ArduinoOutput.h */,
+				751C52F2BEA7F1328ED13333 /* Parameter.cpp */,
+				7B825983F25D8984E02F6FFB /* Parameter.h */,
+				4AEDD076CCA918481C6F9CF2 /* SpikeDisplayNode.cpp */,
+				671CC5EA3DF4F21E9A7E392B /* SpikeDisplayNode.h */,
+				268005410FB62BCB9099A762 /* WiFiOutput.cpp */,
+				32959675287F77DD9B7FA96B /* WiFiOutput.h */,
+				5935F823A2EE45AC36A0201F /* LfpDisplayNode.cpp */,
+				B00F207EBEED525FB686AD98 /* LfpDisplayNode.h */,
+				20FFF487B65BF8567EFE70F8 /* Utilities */,
+				15543D7982B26B70879960F4 /* Visualization */,
+				3DD0741FCFBC7563EC722D9B /* SpikeDetector.cpp */,
+				6E4B37AA4BFEB5A37E3AC250 /* SpikeDetector.h */,
+				B7750B27E4F3748ECCCCF69D /* AudioNode.cpp */,
+				12866D44BE115E8837468F48 /* AudioNode.h */,
+				FA57CE4F63FF1592D6B3F9B5 /* EventNode.cpp */,
+				32163C956C8A6F5C1DD7FE7F /* EventNode.h */,
+				953CC35B9116404D6AA8D1C7 /* Editors */,
+				A1AD89D398583E71F6ED8A6E /* DataThreads */,
+				B96BF02034F29DE033F16D89 /* RecordNode.cpp */,
+				FC83C3CD6DC717911B2C3C20 /* RecordNode.h */,
+				EBB0E5058615EA1FEDADF189 /* SignalGenerator.cpp */,
+				E0883576683119727BD54A81 /* SignalGenerator.h */,
+				5AE7693391C43B4AE475789C /* ResamplingNode.cpp */,
+				C87B84BA79CB9EE547E8762C /* ResamplingNode.h */,
+				D2342EA3BD783D3A81006606 /* FilterNode.cpp */,
+				2CCD3BBDF86EA8D149DAD758 /* FilterNode.h */,
+				7EAD8082130C2384BA9E1206 /* SourceNode.cpp */,
+				7BD1C1A7C30ED736F4816C31 /* SourceNode.h */,
+				CECE2AB5D5F36CADBC3219A2 /* GenericProcessor.cpp */,
+				C4197FDA1B4D4F1D58F6A5A0 /* GenericProcessor.h */,
+				C4DA9685E5637B03F00E5E79 /* ProcessorGraph.cpp */,
+				3B60787E97C74E78853DC90F /* ProcessorGraph.h */,
+			);
+			name = Processors;
+			sourceTree = "<group>";
+		};
+		49AED3DB3EC67F7DF624D4D9 /* Serial */ = {
+			isa = PBXGroup;
+			children = (
+				06AB64E97A05B800349E7E23 /* ofArduino.cpp */,
+				482AFCBBC28835A9548101B1 /* ofArduino.h */,
+				96D33A963CAAEEAB8770F2A3 /* ofConstants.h */,
+				3022191E4C192BC10670B935 /* ofSerial.cpp */,
+				AED49EC9B45C93F39002B4B9 /* ofSerial.h */,
+			);
+			name = Serial;
+			sourceTree = "<group>";
+		};
+		4E8DA551A1B5D7A2B1229181 /* Images */ = {
+			isa = PBXGroup;
+			children = (
+				891C5A157F059822288EDC9F /* Icons */,
+				3392BC2D90C96126B6D3EDA0 /* Buttons */,
+			);
+			name = Images;
+			sourceTree = "<group>";
+		};
+		4EC15B00A5B83F4BF29C25C5 /* Source */ = {
+			isa = PBXGroup;
+			children = (
+				1640CC946EDFD5EC9A321954 /* Resources */,
+				98D3BECE25EB3CF1F64F54B4 /* Source */,
+				1BAC20F9B88EE03AB534ED66 /* Juce Library Code */,
+				D01A90ED1DFB15778648E288 /* Resources */,
+				F3C957A2F364B760F6959DE9 /* Frameworks */,
+				0ECE243E52A42297D09AE145 /* Products */,
+			);
+			name = Source;
+			sourceTree = "<group>";
+		};
+		891C5A157F059822288EDC9F /* Icons */ = {
+			isa = PBXGroup;
+			children = (
+				C2C96A81B4033338679E6EFB /* ArduinoIcon.png */,
+				A582462316439858552387F7 /* OpenEphysBoardLogoBlack.png */,
+				9CAD123471BE2E6ED4A96C3B /* OpenEphysBoardLogoGray.png */,
+				4DB02C352236D9D030E01205 /* RadioButtons-01.png */,
+				EEAB043F90902D8F9D1102C2 /* RadioButtons-02.png */,
+				8086EC3AFDEA802E0B43F19E /* RadioButtons-03.png */,
+				2171C4356B44D4CD6865E06B /* RadioButtons-04.png */,
+				C25CAC3FC9AE387CD597DF37 /* RadioButtons-05.png */,
+				59CAEFDE36164ABB19B3CA76 /* RadioButtons_neutral-01.png */,
+				E0587F61AD4A92C2661E5073 /* RadioButtons_neutral-02.png */,
+				87F60F05136FEBD8A36AE670 /* RadioButtons_neutral-03.png */,
+				1E849F999A8333FFF0B57C6D /* RadioButtons_neutral-04.png */,
+				A5231F3D01B88C063D10026A /* RadioButtons_neutral-05.png */,
+				40A802FCEDFDE7B2FFEBDEA8 /* RadioButtons_selected-01.png */,
+				8A3AE5CF9D452810BA48A3EF /* RadioButtons_selected-02.png */,
+				B3CDC8825DAD5A7D75956726 /* RadioButtons_selected-03.png */,
+				ED50AB550D058BEB30F12C7D /* RadioButtons_selected-04.png */,
+				17E38F29BD6CBC490B5EF1B4 /* RadioButtons_selected-05.png */,
+				D95C78F42494CD5995FBC15E /* RadioButtons_selected_over-01.png */,
+				20B50BC2221C593AC67D80F8 /* RadioButtons_selected_over-02.png */,
+				771E8D912F94E52AF7E05F91 /* RadioButtons_selected_over-03.png */,
+				CE771F502D1D710B28632E3A /* RadioButtons_selected_over-04.png */,
+				05D0A12F2A850EEC48D5EDD4 /* RadioButtons_selected_over-05.png */,
+				8F8F55DD042F61BB213AFC0B /* noise_wave.png */,
+				7C09194091360867C4CAB0E8 /* saw_wave.png */,
+				126B0DE9B8D4E42DA7D57AAB /* sine_wave.png */,
+				BDFFB5B0A8E8A022C25D7FDB /* square_wave.png */,
+				3D20C932FB058CC20989B129 /* triangle_wave.png */,
+				8E041C8C49F1A5B710CC812C /* wifi.png */,
+				2A1D9144C59B92B32483924B /* SourceDrop.png */,
+				D99F56FB46F631F67AF23F2C /* DefaultDataSource.png */,
+				66C7E42D7FDE3600982A1F46 /* FileReaderIcon.png */,
+				A4C8AB3F5E7A708350F72E7C /* IntanIcon.png */,
+			);
+			name = Icons;
+			sourceTree = "<group>";
+		};
+		8F98BACF97340868397BA4BB /* Network */ = {
+			isa = PBXGroup;
+			children = (
+				673778A175624FC9F52E7A15 /* PracticalSocket.cpp */,
+				2EAE0475B719C3233AD8BB35 /* PracticalSocket.h */,
+			);
+			name = Network;
+			sourceTree = "<group>";
+		};
+		953CC35B9116404D6AA8D1C7 /* Editors */ = {
+			isa = PBXGroup;
+			children = (
+				AF4469EAC57A21DD7241C9A4 /* RecordControlEditor.cpp */,
+				61CA6A2E58E2025508D42FCF /* RecordControlEditor.h */,
+				EE3AAE8BD520868168064D38 /* ResamplingNodeEditor.cpp */,
+				E177F2FF11601F6E11498390 /* ResamplingNodeEditor.h */,
+				7738196148E539781B237854 /* FPGAOutputEditor.cpp */,
+				5F43022E89D254273CF827A5 /* FPGAOutputEditor.h */,
+				DAFD5D2E1F875321584C7147 /* ArduinoOutputEditor.cpp */,
+				5F0DC90995C8E7BB7E3176F7 /* ArduinoOutputEditor.h */,
+				51D2678E9F30DC261CCB61B0 /* ChannelSelector.cpp */,
+				1A64B7009173729093BA3D96 /* ChannelSelector.h */,
+				47ECF9384C1D27EB2FBEBF9E /* ParameterEditor.cpp */,
+				07363B9FB8F988D45C4F0FE2 /* ParameterEditor.h */,
+				F0B09605D4108F0F94EF3B57 /* SpikeDisplayEditor.cpp */,
+				2A46D8E3EC7207D969A2B202 /* SpikeDisplayEditor.h */,
+				9A3976537C96B39716B5312D /* VisualizerEditor.cpp */,
+				C546D55EDE65ADDD95C6A6F5 /* VisualizerEditor.h */,
+				AD73EA6B24378294003DC2D0 /* MergerEditor.cpp */,
+				B7FD86B9DA02771D3519FAA0 /* MergerEditor.h */,
+				544DA1EF90EBBDB6FF2DE0A5 /* ImageIcon.cpp */,
+				04AD8DDD47597AE0875ACDD1 /* ImageIcon.h */,
+				2B11714BCE362D4EA7E377F5 /* WiFiOutputEditor.cpp */,
+				4E67CFE458501E763FF3AE94 /* WiFiOutputEditor.h */,
+				36393F2D58480F61ECDEB5E5 /* EventNodeEditor.cpp */,
+				A80433BF9686B4E2542C580C /* EventNodeEditor.h */,
+				087136FA6A7A0E01738EEF03 /* SignalGeneratorEditor.cpp */,
+				10F82563E4A633BC234B2800 /* SignalGeneratorEditor.h */,
+				CF9878CE31A1B41406C3457B /* LfpDisplayEditor.cpp */,
+				C02C160190E417B42F73680A /* LfpDisplayEditor.h */,
+				FC5939F3D2A31BB43EA3E393 /* SourceNodeEditor.cpp */,
+				62DA962299323A2FA134203D /* SourceNodeEditor.h */,
+				C2ED801EA28FBA9764E76349 /* SplitterEditor.cpp */,
+				C177B371A0CEC8E7B9131865 /* SplitterEditor.h */,
+				399CBACE291A425A2B9497EF /* SpikeDetectorEditor.cpp */,
+				7FC3C64A06A9FA2C828F8744 /* SpikeDetectorEditor.h */,
+				5DDBEE64DC706CE804E5F0AA /* AudioEditor.cpp */,
+				303B2522EAC7CD3C33EF150C /* AudioEditor.h */,
+				35AFD01064BF29D90EEDF413 /* FilterEditor.cpp */,
+				AD4BF1BC602902B20AEBF49C /* FilterEditor.h */,
+				22FD0613BADE6C36A6A7A25C /* GenericEditor.cpp */,
+				F0B8C75B1AA6E8D1BC620653 /* GenericEditor.h */,
+			);
+			name = Editors;
+			sourceTree = "<group>";
+		};
+		98D3BECE25EB3CF1F64F54B4 /* Source */ = {
+			isa = PBXGroup;
+			children = (
+				21721C7CD4451993F10354CB /* Plugins */,
+				CA0A1584725D21237DBCD70A /* AccessClass.cpp */,
+				63992CB3AC42F91A51135EAC /* AccessClass.h */,
+				8F98BACF97340868397BA4BB /* Network */,
+				B3AB794228C0205240A8F72E /* Dsp */,
+				FFA2631FEEE7932BE08907A6 /* Audio */,
+				33A88A7C3FF426F051834D6A /* Processors */,
+				DA0DBF6B29B99364A145484A /* UI */,
+				77F2E2E7A2419CB172C0B1EA /* MainWindow.cpp */,
+				3E3E4F25C71B800C97AC63B9 /* MainWindow.h */,
+				19D5134F99CC551B01D5A7EF /* Main.cpp */,
+			);
+			name = Source;
+			sourceTree = "<group>";
+		};
+		A1AD89D398583E71F6ED8A6E /* DataThreads */ = {
+			isa = PBXGroup;
+			children = (
+				0D2903C450AE862C2C0060AA /* FileReaderThread.cpp */,
+				BD07C36AC2ECF10942F0A229 /* FileReaderThread.h */,
+				24616D6D2297C87D371B0363 /* okFrontPanelDLL.cpp */,
+				AA7B88F969CE43331035DE98 /* okFrontPanelDLL.h */,
+				6B156D132738F6C7C948378F /* NetworkThread.cpp */,
+				7BD204C890F9A2F301B15128 /* NetworkThread.h */,
+				A9142BFEFE7EB34D919ED0A0 /* FPGAThread.cpp */,
+				46E436D1B9538DB8487F0D8D /* FPGAThread.h */,
+				F20726FD9F586FDE2CB42901 /* DataBuffer.cpp */,
+				F062CCE0FB40E6C65A6493F4 /* DataBuffer.h */,
+				6D94C2733E967EC6A91B719A /* IntanThread.cpp */,
+				21C560B017F1C0A48B950155 /* IntanThread.h */,
+				72123888A7DD78159AA032AF /* DataThread.cpp */,
+				2164BFCDF57A5AA752CAA3A2 /* DataThread.h */,
+			);
+			name = DataThreads;
+			sourceTree = "<group>";
+		};
+		B3AB794228C0205240A8F72E /* Dsp */ = {
+			isa = PBXGroup;
+			children = (
+				B30EF131FE61BAA4C1818102 /* Bessel.cpp */,
+				D55947E71EB4AF25C1FC7089 /* Bessel.h */,
+				07AE46453303977ED64E38ED /* Biquad.cpp */,
+				9EBBC43B9522EC9E6B607493 /* Biquad.h */,
+				73C6FF74D6A31CA13C0D7C5C /* Butterworth.cpp */,
+				8B70886CFCD13A761567DE7B /* Butterworth.h */,
+				742284C84C72C882E02E7974 /* Cascade.cpp */,
+				2B8E059E57EB92EAC589C6B4 /* Cascade.h */,
+				D44DBE2FF15A98834F222766 /* ChebyshevI.cpp */,
+				553E92DB60C7D5104B780781 /* ChebyshevI.h */,
+				1F9836FC5A8FDF2293C9A232 /* ChebyshevII.cpp */,
+				833030703B66CDD9DA94155B /* ChebyshevII.h */,
+				F7620D8D567CCE463ADDE0A6 /* Common.h */,
+				93FACAE1DC7A236505359477 /* Custom.cpp */,
+				E4AEAC4AD1D1C6A80A2CD70A /* Custom.h */,
+				3E8E2F9C583077B298525FD1 /* Design.cpp */,
+				CD05957EC804348231739108 /* Design.h */,
+				E8214D83845C25F39EEC13CD /* Documentation.cpp */,
+				21E5288817625724406FD3A1 /* Dsp.h */,
+				293B003BD6E113C5AD1BB131 /* Elliptic.cpp */,
+				60F060DBD5ACF36E0A407BC1 /* Elliptic.h */,
+				A9AF10F6A89F85989C62F856 /* Filter.cpp */,
+				7C225F446A96BED7F585F66B /* Filter.h */,
+				314D53C7C13C28A25588ABCF /* Layout.h */,
+				706CBE9178440675868F2379 /* Legendre.cpp */,
+				1EC547C25C29FE679BAF8B4D /* Legendre.h */,
+				4D63E86C8A9F721B9C0FA95E /* MathSupplement.h */,
+				BF8EB3483F66AA7F61E6D863 /* Param.cpp */,
+				1E0F3076D1689E83422F6B4E /* Params.h */,
+				137CF1AB4144076D79D50975 /* PoleFilter.cpp */,
+				5B1D08D98AD9F623962A38B2 /* PoleFilter.h */,
+				E6FF4D4C70794123A52B9E82 /* RBJ.cpp */,
+				E8503A3E123FCFBFA317EAE6 /* RBJ.h */,
+				F4A53064BA75472765338C1D /* RootFinder.cpp */,
+				1D1DF895F34C981407EDB8E8 /* RootFinder.h */,
+				1F5435604926FF2C06575DCC /* SmoothedFilter.h */,
+				0D20C3399D0492771F7A808A /* State.cpp */,
+				186F011C1ABC55DB39717105 /* State.h */,
+				92C241C7F87B5933B0E6E03F /* Types.h */,
+				E27B5891A52FDAB2B00901A0 /* Utilities.h */,
+			);
+			name = Dsp;
+			sourceTree = "<group>";
+		};
+		D01A90ED1DFB15778648E288 /* Resources */ = {
+			isa = PBXGroup;
+			children = (
+				D91BA61C12BFEBE59B577805 /* Info.plist */,
+			);
+			name = Resources;
+			sourceTree = "<group>";
+		};
+		DA0DBF6B29B99364A145484A /* UI */ = {
+			isa = PBXGroup;
+			children = (
+				E1C6E67757EC5D68093BD760 /* EditorViewportButtons.cpp */,
+				2BC65E923E245AE23AE7BB8B /* EditorViewportButtons.h */,
+				6CD0D896FEB77B261C62447E /* SignalChainManager.cpp */,
+				182F8F9073A2007403C10C51 /* SignalChainManager.h */,
+				EB824B60F600C19193ADFA5F /* EditorViewport.cpp */,
+				54A33424E41D55153F6EB422 /* EditorViewport.h */,
+				B28CC9409188C9A200AAAFFC /* ProcessorList.cpp */,
+				242E7E62B8641B1224E25442 /* ProcessorList.h */,
+				A32D8455B95FD230EBFD7891 /* CustomLookAndFeel.cpp */,
+				F70641473A3E7C0DC5168858 /* CustomLookAndFeel.h */,
+				AA00883DC021E36B7EFDAC43 /* InfoLabel.cpp */,
+				1561F28CD560AB8F2E177628 /* InfoLabel.h */,
+				B977C2809B309C8038CB5D95 /* DataViewport.cpp */,
+				877F9F9DA7A1B51D3EDCBC07 /* DataViewport.h */,
+				EEDA71600D817BF9444FE3E7 /* MessageCenter.cpp */,
+				4EE6CA70F229EDE04E7E320B /* MessageCenter.h */,
+				5AB4A3A63B9FDEAB09EEC9C8 /* ControlPanel.cpp */,
+				3B70B21129D91B16A2F1CE80 /* ControlPanel.h */,
+				2A78F719BAFBDCD63AE9A88A /* UIComponent.cpp */,
+				DB605BA15852F367DF625300 /* UIComponent.h */,
+			);
+			name = UI;
+			sourceTree = "<group>";
+		};
+		F3C957A2F364B760F6959DE9 /* Frameworks */ = {
+			isa = PBXGroup;
+			children = (
+				FAB58A8AE7DCBAC0CF311D14 /* Cocoa.framework */,
+				39FAF9808D0EFB6C8170D8B8 /* Carbon.framework */,
+				0B661DF3EFF63CFFCCA76AF4 /* IOKit.framework */,
+				A9B11C1B693E380C29F53F78 /* CoreAudio.framework */,
+				D08C5BF3FF3AC38C2BB5F921 /* CoreMIDI.framework */,
+				6A67346CD9B6D590108C7B6E /* WebKit.framework */,
+				9AFA895DFA2087804F47ECF9 /* DiscRecording.framework */,
+				54662C69F6AA71B55D68F12E /* OpenGL.framework */,
+				191441B631182A346D494BB5 /* QuartzCore.framework */,
+				1CBCB9D2FE5B967D93785E75 /* QTKit.framework */,
+				BF41F256D0C244C2C02AE6E1 /* QuickTime.framework */,
+			);
+			name = Frameworks;
+			sourceTree = "<group>";
+		};
+		FFA2631FEEE7932BE08907A6 /* Audio */ = {
+			isa = PBXGroup;
+			children = (
+				F74662D3D82975EDB5AD42E0 /* AudioComponent.cpp */,
+				FA55B9FDE138CCB1F16BA905 /* AudioComponent.h */,
+			);
+			name = Audio;
+			sourceTree = "<group>";
+		};
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+		C1E94289C8EA03969CA6896C /* open-ephys */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 91E2BBD5023776511AE6753C /* Build configuration list for PBXNativeTarget "open-ephys" */;
+			buildPhases = (
+				7D11CCCE7B7FAA037837E9F0 /* Resources */,
+				49B8C83C4A6BA460E2492EAD /* Sources */,
+				FDDDE8762356EE886B1C1C9E /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = "open-ephys";
+			productInstallPath = "$(HOME)/Applications";
+			productName = "open-ephys";
+			productReference = 0837481AD187A1E6CBCAC577 /* open-ephys.app */;
+			productType = "com.apple.product-type.application";
+		};
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+		CC82D4D2B9F0219708ACBEB3 /* Project object */ = {
+			isa = PBXProject;
+			buildConfigurationList = FAAFAE9A22D4CD0A7BE65048 /* Build configuration list for PBXProject "open-ephys" */;
+			compatibilityVersion = "Xcode 3.0";
+			developmentRegion = English;
+			hasScannedForEncodings = 0;
+			knownRegions = (
+				en,
+			);
+			mainGroup = 4EC15B00A5B83F4BF29C25C5 /* Source */;
+			projectDirPath = "";
+			projectRoot = "";
+			targets = (
+				C1E94289C8EA03969CA6896C /* open-ephys */,
+			);
+		};
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+		7D11CCCE7B7FAA037837E9F0 /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+		49B8C83C4A6BA460E2492EAD /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				09E5633D492B59E418AC11C9 /* AccessClass.cpp in Sources */,
+				D379BC3417418182ECFA5716 /* PracticalSocket.cpp in Sources */,
+				2C6D200191B27DDF088B3089 /* Bessel.cpp in Sources */,
+				BF78E6E9903CF5A5C53789B9 /* Biquad.cpp in Sources */,
+				903C5F83BB9E6DEA71A0D6E5 /* Butterworth.cpp in Sources */,
+				5EE932D782BFB7100D014399 /* Cascade.cpp in Sources */,
+				AEA369E154CA607D8D62CC2E /* ChebyshevI.cpp in Sources */,
+				F0EB404ED0A4EEAB0F238BDC /* ChebyshevII.cpp in Sources */,
+				B8BF3036DDF5BD761CAF416A /* Custom.cpp in Sources */,
+				BBE4B49A8E596B53CE157EAD /* Design.cpp in Sources */,
+				0BBDB7C2B8CE82F1B0844B70 /* Documentation.cpp in Sources */,
+				FA6CF7D26F81253A3E1D13CB /* Elliptic.cpp in Sources */,
+				BD15E927FB571B9D2F93F82C /* Filter.cpp in Sources */,
+				40FFED3C981ED12AA4EA0AA0 /* Legendre.cpp in Sources */,
+				49DA796E77871A124D5F49C1 /* Param.cpp in Sources */,
+				ED44C2F2AA0DC81161075167 /* PoleFilter.cpp in Sources */,
+				14E9BBD79F22198FE23EB88A /* RBJ.cpp in Sources */,
+				8E138283FC265B58D252AAC3 /* RootFinder.cpp in Sources */,
+				EE1DC0B09AE0727BC7A5A99C /* State.cpp in Sources */,
+				4ACF816CB5CDB285D8005AB8 /* AudioComponent.cpp in Sources */,
+				AEE153DB070AD3023780DAED /* PhaseDetector.cpp in Sources */,
+				448F8ACAAE9A5354E4E013E8 /* AudioResamplingNode.cpp in Sources */,
+				E96CEDA0BFB8ED12B26B5AD5 /* Channel.cpp in Sources */,
+				67343B589F0FF80FF8750F29 /* ofArduino.cpp in Sources */,
+				A84DF9525DC988520F7C3217 /* ofSerial.cpp in Sources */,
+				DD043D069210932477F01A30 /* EventDetector.cpp in Sources */,
+				D24C62FA0307F51185EE3481 /* FPGAOutput.cpp in Sources */,
+				AEB65E53845FA668D89CE15E /* ArduinoOutput.cpp in Sources */,
+				717D108DC8B2379D556C4B2F /* Parameter.cpp in Sources */,
+				1F67A9ACD509FB4DC5A633DF /* SpikeDisplayNode.cpp in Sources */,
+				B992DDBFF8928A985EEE1557 /* WiFiOutput.cpp in Sources */,
+				F1268EC5E783EC8ECEBCA5D3 /* LfpDisplayNode.cpp in Sources */,
+				EAE9186154287129292E7982 /* RecordControl.cpp in Sources */,
+				4A00153E1E69A74BC6B7D8A6 /* Merger.cpp in Sources */,
+				5F13B8FFB1584BFF6C05AD39 /* Splitter.cpp in Sources */,
+				3D3A992E10308BA189CECE05 /* SpikePlot.cpp in Sources */,
+				55A240CCFCD604CA8DF8FC8C /* BaseUIElement.cpp in Sources */,
+				8025F04ED261C7F7D2DC0F06 /* GenericAxes.cpp in Sources */,
+				49F046C8BE137BF77338DD7B /* PlotUtils.cpp in Sources */,
+				566E42D2B7105CFB4DB45170 /* ProjectionAxes.cpp in Sources */,
+				BCD7C4797178C8EF65CDC2D7 /* WaveAxes.cpp in Sources */,
+				9145D84C7D665BCAFE698432 /* SpikeObject.cpp in Sources */,
+				7659F31912D12C91E9554909 /* SpikeDisplayCanvas.cpp in Sources */,
+				9D687F73F2FD2462C5D5588C /* DataWindow.cpp in Sources */,
+				B13883377C9316B9603336B4 /* LfpDisplayCanvas.cpp in Sources */,
+				073B178E7EF1759BA0AACCCE /* OpenGLCanvas.cpp in Sources */,
+				4BE0DDA01B73223EF0BD934A /* SpikeDetector.cpp in Sources */,
+				08B501E0D7764C6B613AF529 /* AudioNode.cpp in Sources */,
+				9CBA3837CC8CAA03A03F2D9C /* EventNode.cpp in Sources */,
+				AAC4D8DB08B2A05A576A5F17 /* RecordControlEditor.cpp in Sources */,
+				6F41ED502815AAF2F2EAB8B7 /* ResamplingNodeEditor.cpp in Sources */,
+				9C77BFFE7BA865E20121E707 /* FPGAOutputEditor.cpp in Sources */,
+				BA64AA28A3E0DC10AB0A9380 /* ArduinoOutputEditor.cpp in Sources */,
+				BCB6C021A03F0AB0248C7F8A /* ChannelSelector.cpp in Sources */,
+				632C915D01C42D27E828BFA9 /* ParameterEditor.cpp in Sources */,
+				DD22A06702F4CF995893DD5C /* SpikeDisplayEditor.cpp in Sources */,
+				F4CEF74DDCD7EFA0891249B5 /* VisualizerEditor.cpp in Sources */,
+				93A3E6284F2DAED3F491332B /* MergerEditor.cpp in Sources */,
+				CB77C89226102EF30F85E3EC /* ImageIcon.cpp in Sources */,
+				A126280FF39A61DEFD3ABFE5 /* WiFiOutputEditor.cpp in Sources */,
+				2ADE508EC26B703176ED915C /* EventNodeEditor.cpp in Sources */,
+				8B55C700ED8484944FED1EB1 /* SignalGeneratorEditor.cpp in Sources */,
+				D3B54B20674A6BA87CE6FDEC /* LfpDisplayEditor.cpp in Sources */,
+				5D5CAF52A5498EEFB8EA924D /* SourceNodeEditor.cpp in Sources */,
+				203EA3786F7928C0386FFAC2 /* SplitterEditor.cpp in Sources */,
+				28E4724351374881E83BD69C /* SpikeDetectorEditor.cpp in Sources */,
+				B092C479F4C92AF2FEBE5A11 /* AudioEditor.cpp in Sources */,
+				3B146B8898CEE9965A9A0FB8 /* FilterEditor.cpp in Sources */,
+				CFE62980E342BE2875BB3586 /* GenericEditor.cpp in Sources */,
+				A1B4D286AC7ED372742C41B2 /* FileReaderThread.cpp in Sources */,
+				25D4C87F4C7C842B0522DA5F /* okFrontPanelDLL.cpp in Sources */,
+				E82FBA173C87CE2AADB84942 /* NetworkThread.cpp in Sources */,
+				2F21546229BEF148C74ECA45 /* FPGAThread.cpp in Sources */,
+				9549DA2D2FF0614B155990A0 /* DataBuffer.cpp in Sources */,
+				DF15E1683A3722FE88EE5C7F /* IntanThread.cpp in Sources */,
+				FCD66EA8735FE1CCA522B7C5 /* DataThread.cpp in Sources */,
+				60FF6BBFC1E9255F190C3146 /* RecordNode.cpp in Sources */,
+				513EF1439498856E0C8C697E /* SignalGenerator.cpp in Sources */,
+				03932AC6269AFA895DFA2087 /* ResamplingNode.cpp in Sources */,
+				AD6DD37DB41B1177F9F77F51 /* FilterNode.cpp in Sources */,
+				CF0149E6ECBA264A264C7BB3 /* SourceNode.cpp in Sources */,
+				63E5D65E7B097CADB277DBB6 /* GenericProcessor.cpp in Sources */,
+				B2BE56A1260E9C87DECD2E4F /* ProcessorGraph.cpp in Sources */,
+				5E07E54EEF69F5BEDE84D535 /* EditorViewportButtons.cpp in Sources */,
+				2EC3E064E5849D2FDD9BBDBE /* SignalChainManager.cpp in Sources */,
+				F3F3E688834C724BC35231F1 /* EditorViewport.cpp in Sources */,
+				ECBA3D0CB756E83C4DA9685E /* ProcessorList.cpp in Sources */,
+				13457B3248E7646270A4FF88 /* CustomLookAndFeel.cpp in Sources */,
+				D060C0893EDAE6CBC86A5FE2 /* InfoLabel.cpp in Sources */,
+				E36C0018635A85E09D4EDE01 /* DataViewport.cpp in Sources */,
+				C170A763D33146C74ED4CE4B /* MessageCenter.cpp in Sources */,
+				116BB2F62451986C75586F9D /* ControlPanel.cpp in Sources */,
+				1F301384375DA0F3652C01DA /* UIComponent.cpp in Sources */,
+				4DA172021AB3AB88E70FAF99 /* MainWindow.cpp in Sources */,
+				F80F061AE618AD08407BCA9A /* Main.cpp in Sources */,
+				5F102AE69FB814467A298A97 /* BinaryData.cpp in Sources */,
+				F18F6DF7E80854DE6780531D /* JuceLibraryCode1.mm in Sources */,
+				FD157D98C4C31AE782659718 /* JuceLibraryCode2.mm in Sources */,
+				09AC8D29A08EE1FFBC4ADB23 /* JuceLibraryCode3.mm in Sources */,
+				05339DCA8C59B707E61F1F2E /* JuceLibraryCode4.mm in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+		31BDF5E09EB0A9A32E66857E /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
 				ALWAYS_SEARCH_USER_PATHS = NO;
+				ARCHS = "$(ARCHS_STANDARD_64_BIT_PRE_XCODE_3_1)";
+				ARCHS_STANDARD_64_BIT_PRE_XCODE_3_1 = x86_64;
+				DEBUG_INFORMATION_FORMAT = dwarf;
 				GCC_C_LANGUAGE_STANDARD = c99;
+				GCC_INLINES_ARE_PRIVATE_EXTERN = YES;
+				GCC_MODEL_TUNING = G5;
 				GCC_WARN_ABOUT_RETURN_TYPE = YES;
 				GCC_WARN_CHECK_SWITCH_STATEMENTS = YES;
-				GCC_WARN_UNUSED_VARIABLE = YES;
 				GCC_WARN_MISSING_PARENTHESES = YES;
 				GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
 				GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES;
-				WARNING_CFLAGS = -Wreorder;
-				GCC_MODEL_TUNING = G5;
-				GCC_INLINES_ARE_PRIVATE_EXTERN = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				PRODUCT_NAME = "open-ephys";
+				SDKROOT = macosx;
+				WARNING_CFLAGS = "-Wreorder";
 				ZERO_LINK = NO;
-				DEBUG_INFORMATION_FORMAT = "dwarf";
-				PRODUCT_NAME = "open-ephys"; }; name = Debug; };
-		31BDF5E09EB0A9A32E66857E = { isa = XCBuildConfiguration; buildSettings = {
+			};
+			name = Release;
+		};
+		4E274274B609972E0988736B /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
 				ALWAYS_SEARCH_USER_PATHS = NO;
+				ARCHS = "$(ARCHS_STANDARD_64_BIT_PRE_XCODE_3_1)";
+				ARCHS_STANDARD_64_BIT_PRE_XCODE_3_1 = x86_64;
+				DEBUG_INFORMATION_FORMAT = dwarf;
 				GCC_C_LANGUAGE_STANDARD = c99;
+				GCC_INLINES_ARE_PRIVATE_EXTERN = YES;
+				GCC_MODEL_TUNING = G5;
 				GCC_WARN_ABOUT_RETURN_TYPE = YES;
 				GCC_WARN_CHECK_SWITCH_STATEMENTS = YES;
-				GCC_WARN_UNUSED_VARIABLE = YES;
 				GCC_WARN_MISSING_PARENTHESES = YES;
 				GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
 				GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES;
-				WARNING_CFLAGS = -Wreorder;
-				GCC_MODEL_TUNING = G5;
-				GCC_INLINES_ARE_PRIVATE_EXTERN = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				PRODUCT_NAME = "open-ephys";
+				SDKROOT = macosx;
+				WARNING_CFLAGS = "-Wreorder";
 				ZERO_LINK = NO;
-				DEBUG_INFORMATION_FORMAT = "dwarf";
-				PRODUCT_NAME = "open-ephys"; }; name = Release; };
-		FAAFAE9A22D4CD0A7BE65048 = { isa = XCConfigurationList; buildConfigurations = (
-				4E274274B609972E0988736B,
-				31BDF5E09EB0A9A32E66857E ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; };
-		91E2BBD5023776511AE6753C = { isa = XCConfigurationList; buildConfigurations = (
-				C3E8FB47D6069235EA9D6FD7,
-				5D7484BAF16E272FF0E9EEAE ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; };
-		7D11CCCE7B7FAA037837E9F0 = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = (  ); runOnlyForDeploymentPostprocessing = 0; };
-		49B8C83C4A6BA460E2492EAD = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = (
-				09E5633D492B59E418AC11C9,
-				D379BC3417418182ECFA5716,
-				2C6D200191B27DDF088B3089,
-				BF78E6E9903CF5A5C53789B9,
-				903C5F83BB9E6DEA71A0D6E5,
-				5EE932D782BFB7100D014399,
-				AEA369E154CA607D8D62CC2E,
-				F0EB404ED0A4EEAB0F238BDC,
-				B8BF3036DDF5BD761CAF416A,
-				BBE4B49A8E596B53CE157EAD,
-				0BBDB7C2B8CE82F1B0844B70,
-				FA6CF7D26F81253A3E1D13CB,
-				BD15E927FB571B9D2F93F82C,
-				40FFED3C981ED12AA4EA0AA0,
-				49DA796E77871A124D5F49C1,
-				ED44C2F2AA0DC81161075167,
-				14E9BBD79F22198FE23EB88A,
-				8E138283FC265B58D252AAC3,
-				EE1DC0B09AE0727BC7A5A99C,
-				4ACF816CB5CDB285D8005AB8,
-				AEE153DB070AD3023780DAED,
-				448F8ACAAE9A5354E4E013E8,
-				E96CEDA0BFB8ED12B26B5AD5,
-				67343B589F0FF80FF8750F29,
-				A84DF9525DC988520F7C3217,
-				DD043D069210932477F01A30,
-				D24C62FA0307F51185EE3481,
-				AEB65E53845FA668D89CE15E,
-				717D108DC8B2379D556C4B2F,
-				1F67A9ACD509FB4DC5A633DF,
-				B992DDBFF8928A985EEE1557,
-				F1268EC5E783EC8ECEBCA5D3,
-				4A00153E1E69A74BC6B7D8A6,
-				5F13B8FFB1584BFF6C05AD39,
-				3D3A992E10308BA189CECE05,
-				55A240CCFCD604CA8DF8FC8C,
-				8025F04ED261C7F7D2DC0F06,
-				49F046C8BE137BF77338DD7B,
-				566E42D2B7105CFB4DB45170,
-				BCD7C4797178C8EF65CDC2D7,
-				9145D84C7D665BCAFE698432,
-				7659F31912D12C91E9554909,
-				9D687F73F2FD2462C5D5588C,
-				B13883377C9316B9603336B4,
-				073B178E7EF1759BA0AACCCE,
-				4BE0DDA01B73223EF0BD934A,
-				08B501E0D7764C6B613AF529,
-				9CBA3837CC8CAA03A03F2D9C,
-				6F41ED502815AAF2F2EAB8B7,
-				9C77BFFE7BA865E20121E707,
-				BA64AA28A3E0DC10AB0A9380,
-				BCB6C021A03F0AB0248C7F8A,
-				632C915D01C42D27E828BFA9,
-				DD22A06702F4CF995893DD5C,
-				F4CEF74DDCD7EFA0891249B5,
-				93A3E6284F2DAED3F491332B,
-				CB77C89226102EF30F85E3EC,
-				A126280FF39A61DEFD3ABFE5,
-				2ADE508EC26B703176ED915C,
-				8B55C700ED8484944FED1EB1,
-				D3B54B20674A6BA87CE6FDEC,
-				5D5CAF52A5498EEFB8EA924D,
-				203EA3786F7928C0386FFAC2,
-				28E4724351374881E83BD69C,
-				B092C479F4C92AF2FEBE5A11,
-				3B146B8898CEE9965A9A0FB8,
-				CFE62980E342BE2875BB3586,
-				A1B4D286AC7ED372742C41B2,
-				25D4C87F4C7C842B0522DA5F,
-				E82FBA173C87CE2AADB84942,
-				2F21546229BEF148C74ECA45,
-				9549DA2D2FF0614B155990A0,
-				DF15E1683A3722FE88EE5C7F,
-				FCD66EA8735FE1CCA522B7C5,
-				60FF6BBFC1E9255F190C3146,
-				513EF1439498856E0C8C697E,
-				03932AC6269AFA895DFA2087,
-				AD6DD37DB41B1177F9F77F51,
-				CF0149E6ECBA264A264C7BB3,
-				63E5D65E7B097CADB277DBB6,
-				B2BE56A1260E9C87DECD2E4F,
-				5E07E54EEF69F5BEDE84D535,
-				2EC3E064E5849D2FDD9BBDBE,
-				F3F3E688834C724BC35231F1,
-				ECBA3D0CB756E83C4DA9685E,
-				13457B3248E7646270A4FF88,
-				D060C0893EDAE6CBC86A5FE2,
-				E36C0018635A85E09D4EDE01,
-				C170A763D33146C74ED4CE4B,
-				116BB2F62451986C75586F9D,
-				1F301384375DA0F3652C01DA,
-				4DA172021AB3AB88E70FAF99,
-				F80F061AE618AD08407BCA9A,
-				5F102AE69FB814467A298A97,
-				F18F6DF7E80854DE6780531D,
-				FD157D98C4C31AE782659718,
-				09AC8D29A08EE1FFBC4ADB23,
-				05339DCA8C59B707E61F1F2E ); runOnlyForDeploymentPostprocessing = 0; };
-		FDDDE8762356EE886B1C1C9E = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = (
-				6125D1F24D314D771E3A350E,
-				AD58AC45D09BA8A736B3D67C,
-				F8751DCE1BCF3EC9C7A46154,
-				37F9B7C362F6F31231D10927,
-				BCA6FAB5DADF0AF804E83F6E,
-				DB7C2DF80130B2D0D8DD9BD2,
-				11885833D32D03BA7E17138A,
-				90C038F480F790988D0F928E,
-				C038A696FD85E64E249AF737,
-				881EDBF5D2D6FD7B53B71182,
-				14BE1E76E7BB3593A5F66DCC ); runOnlyForDeploymentPostprocessing = 0; };
-		C1E94289C8EA03969CA6896C = { isa = PBXNativeTarget; buildConfigurationList = 91E2BBD5023776511AE6753C; buildPhases = (
-				7D11CCCE7B7FAA037837E9F0,
-				49B8C83C4A6BA460E2492EAD,
-				FDDDE8762356EE886B1C1C9E ); buildRules = ( ); dependencies = ( ); name = "open-ephys"; productName = "open-ephys"; productReference = 0837481AD187A1E6CBCAC577; productInstallPath = "$(HOME)/Applications"; productType = "com.apple.product-type.application"; };
-		CC82D4D2B9F0219708ACBEB3 = { isa = PBXProject; buildConfigurationList = FAAFAE9A22D4CD0A7BE65048; compatibilityVersion = "Xcode 3.0"; hasScannedForEncodings = 0; mainGroup = 4EC15B00A5B83F4BF29C25C5; projectDirPath = ""; projectRoot = ""; targets = ( C1E94289C8EA03969CA6896C ); };
+			};
+			name = Debug;
+		};
+		5D7484BAF16E272FF0E9EEAE /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ARCHS = "$(ARCHS_STANDARD_64_BIT_PRE_XCODE_3_1)";
+				ARCHS_STANDARD_64_BIT_PRE_XCODE_3_1 = x86_64;
+				GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
+				GCC_OPTIMIZATION_LEVEL = 3;
+				GCC_PREPROCESSOR_DEFINITIONS = (
+					"_NDEBUG=1",
+					"NDEBUG=1",
+					"JUCE_ObjCExtraSuffix=fea2mT",
+					"JUCER_XCODE_MAC_F6D2F4CF=1",
+				);
+				GCC_SYMBOLS_PRIVATE_EXTERN = YES;
+				HEADER_SEARCH_PATHS = (
+					/usr/local/include,
+					/usr/local/include/freetype2,
+					"$(inherited)",
+					/opt/local/include,
+				);
+				INFOPLIST_FILE = Info.plist;
+				INSTALL_PATH = "$(HOME)/Applications";
+				LIBRARY_SEARCH_PATHS = /opt/local/lib;
+				MACOSX_DEPLOYMENT_TARGET_ppc = 10.4;
+				OTHER_LDFLAGS = (
+					"-lftdi",
+					"-lftgl",
+				);
+				PREBINDING = NO;
+			};
+			name = Release;
+		};
+		C3E8FB47D6069235EA9D6FD7 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ARCHS = "$(ONLY_ACTIVE_ARCH_PRE_XCODE_3_1)";
+				COPY_PHASE_STRIP = NO;
+				GCC_DYNAMIC_NO_PIC = NO;
+				GCC_ENABLE_FIX_AND_CONTINUE = NO;
+				GCC_OPTIMIZATION_LEVEL = 0;
+				GCC_PREPROCESSOR_DEFINITIONS = (
+					"_DEBUG=1",
+					"DEBUG=1",
+					"JUCE_ObjCExtraSuffix=fea2mT",
+					"JUCER_XCODE_MAC_F6D2F4CF=1",
+				);
+				HEADER_SEARCH_PATHS = (
+					/usr/local/include,
+					/usr/local/include/freetype2,
+					"$(inherited)",
+					/opt/local/include,
+				);
+				INFOPLIST_FILE = Info.plist;
+				INSTALL_PATH = "$(HOME)/Applications";
+				LIBRARY_SEARCH_PATHS = /opt/local/lib;
+				MACOSX_DEPLOYMENT_TARGET_ppc = 10.4;
+				ONLY_ACTIVE_ARCH_PRE_XCODE_3_1 = "$(NATIVE_ARCH_64)";
+				OTHER_LDFLAGS = (
+					"-lftdi",
+					"-lftgl",
+				);
+				PREBINDING = NO;
+			};
+			name = Debug;
+		};
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+		91E2BBD5023776511AE6753C /* Build configuration list for PBXNativeTarget "open-ephys" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				C3E8FB47D6069235EA9D6FD7 /* Debug */,
+				5D7484BAF16E272FF0E9EEAE /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Debug;
+		};
+		FAAFAE9A22D4CD0A7BE65048 /* Build configuration list for PBXProject "open-ephys" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				4E274274B609972E0988736B /* Debug */,
+				31BDF5E09EB0A9A32E66857E /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Debug;
+		};
+/* End XCConfigurationList section */
 	};
-	rootObject = CC82D4D2B9F0219708ACBEB3;
+	rootObject = CC82D4D2B9F0219708ACBEB3 /* Project object */;
 }
diff --git a/Builds/MacOSX/open-ephys.xcodeproj/project.xcworkspace/xcuserdata/Josh.xcuserdatad/UserInterfaceState.xcuserstate b/Builds/MacOSX/open-ephys.xcodeproj/project.xcworkspace/xcuserdata/Josh.xcuserdatad/UserInterfaceState.xcuserstate
index 7d2088b618ae8f2a0a461691f993fbe288e5d192..a90d0461589413e26684eb87716d6f26abe2b8d6 100755
Binary files a/Builds/MacOSX/open-ephys.xcodeproj/project.xcworkspace/xcuserdata/Josh.xcuserdatad/UserInterfaceState.xcuserstate and b/Builds/MacOSX/open-ephys.xcodeproj/project.xcworkspace/xcuserdata/Josh.xcuserdatad/UserInterfaceState.xcuserstate differ
diff --git a/Builds/VisualStudio2010/open-ephys.vcxproj b/Builds/VisualStudio2010/open-ephys.vcxproj
index 376c5d5fe4e3360d30bffb5fe5261eafad780905..c158daa20df9bae2d17fdb859c78c72a7f90fe48 100644
--- a/Builds/VisualStudio2010/open-ephys.vcxproj
+++ b/Builds/VisualStudio2010/open-ephys.vcxproj
@@ -154,6 +154,7 @@
     <ClCompile Include="..\..\Source\Processors\SpikeDisplayNode.cpp"/>
     <ClCompile Include="..\..\Source\Processors\WiFiOutput.cpp"/>
     <ClCompile Include="..\..\Source\Processors\LfpDisplayNode.cpp"/>
+    <ClCompile Include="..\..\Source\Processors\Utilities\RecordControl.cpp"/>
     <ClCompile Include="..\..\Source\Processors\Utilities\Merger.cpp"/>
     <ClCompile Include="..\..\Source\Processors\Utilities\Splitter.cpp"/>
     <ClCompile Include="..\..\Source\Processors\Visualization\SpikePlotting\SpikePlot.cpp"/>
@@ -170,6 +171,7 @@
     <ClCompile Include="..\..\Source\Processors\SpikeDetector.cpp"/>
     <ClCompile Include="..\..\Source\Processors\AudioNode.cpp"/>
     <ClCompile Include="..\..\Source\Processors\EventNode.cpp"/>
+    <ClCompile Include="..\..\Source\Processors\Editors\RecordControlEditor.cpp"/>
     <ClCompile Include="..\..\Source\Processors\Editors\ResamplingNodeEditor.cpp"/>
     <ClCompile Include="..\..\Source\Processors\Editors\FPGAOutputEditor.cpp"/>
     <ClCompile Include="..\..\Source\Processors\Editors\ArduinoOutputEditor.cpp"/>
@@ -261,6 +263,7 @@
     <ClInclude Include="..\..\Source\Processors\SpikeDisplayNode.h"/>
     <ClInclude Include="..\..\Source\Processors\WiFiOutput.h"/>
     <ClInclude Include="..\..\Source\Processors\LfpDisplayNode.h"/>
+    <ClInclude Include="..\..\Source\Processors\Utilities\RecordControl.h"/>
     <ClInclude Include="..\..\Source\Processors\Utilities\Merger.h"/>
     <ClInclude Include="..\..\Source\Processors\Utilities\Splitter.h"/>
     <ClInclude Include="..\..\Source\Processors\Visualization\SpikePlotting\SpikePlot.h"/>
@@ -279,6 +282,7 @@
     <ClInclude Include="..\..\Source\Processors\SpikeDetector.h"/>
     <ClInclude Include="..\..\Source\Processors\AudioNode.h"/>
     <ClInclude Include="..\..\Source\Processors\EventNode.h"/>
+    <ClInclude Include="..\..\Source\Processors\Editors\RecordControlEditor.h"/>
     <ClInclude Include="..\..\Source\Processors\Editors\ResamplingNodeEditor.h"/>
     <ClInclude Include="..\..\Source\Processors\Editors\FPGAOutputEditor.h"/>
     <ClInclude Include="..\..\Source\Processors\Editors\ArduinoOutputEditor.h"/>
diff --git a/Builds/VisualStudio2010/open-ephys.vcxproj.filters b/Builds/VisualStudio2010/open-ephys.vcxproj.filters
index 3c7cd14678885f35dddc2df1d995a523626fafc6..92c3d410e4844cfd769c4720b43744f5db8db41b 100644
--- a/Builds/VisualStudio2010/open-ephys.vcxproj.filters
+++ b/Builds/VisualStudio2010/open-ephys.vcxproj.filters
@@ -331,6 +331,9 @@
     <ClCompile Include="..\..\Source\Processors\LfpDisplayNode.cpp">
       <Filter>open-ephys\Source\Processors</Filter>
     </ClCompile>
+    <ClCompile Include="..\..\Source\Processors\Utilities\RecordControl.cpp">
+      <Filter>open-ephys\Source\Processors\Utilities</Filter>
+    </ClCompile>
     <ClCompile Include="..\..\Source\Processors\Utilities\Merger.cpp">
       <Filter>open-ephys\Source\Processors\Utilities</Filter>
     </ClCompile>
@@ -379,6 +382,9 @@
     <ClCompile Include="..\..\Source\Processors\EventNode.cpp">
       <Filter>open-ephys\Source\Processors</Filter>
     </ClCompile>
+    <ClCompile Include="..\..\Source\Processors\Editors\RecordControlEditor.cpp">
+      <Filter>open-ephys\Source\Processors\Editors</Filter>
+    </ClCompile>
     <ClCompile Include="..\..\Source\Processors\Editors\ResamplingNodeEditor.cpp">
       <Filter>open-ephys\Source\Processors\Editors</Filter>
     </ClCompile>
@@ -648,6 +654,9 @@
     <ClInclude Include="..\..\Source\Processors\LfpDisplayNode.h">
       <Filter>open-ephys\Source\Processors</Filter>
     </ClInclude>
+    <ClInclude Include="..\..\Source\Processors\Utilities\RecordControl.h">
+      <Filter>open-ephys\Source\Processors\Utilities</Filter>
+    </ClInclude>
     <ClInclude Include="..\..\Source\Processors\Utilities\Merger.h">
       <Filter>open-ephys\Source\Processors\Utilities</Filter>
     </ClInclude>
@@ -702,6 +711,9 @@
     <ClInclude Include="..\..\Source\Processors\EventNode.h">
       <Filter>open-ephys\Source\Processors</Filter>
     </ClInclude>
+    <ClInclude Include="..\..\Source\Processors\Editors\RecordControlEditor.h">
+      <Filter>open-ephys\Source\Processors\Editors</Filter>
+    </ClInclude>
     <ClInclude Include="..\..\Source\Processors\Editors\ResamplingNodeEditor.h">
       <Filter>open-ephys\Source\Processors\Editors</Filter>
     </ClInclude>
diff --git a/Builds/VisualStudio2012/open-ephys.vcxproj b/Builds/VisualStudio2012/open-ephys.vcxproj
index 1c5912cca90e24ba1a65ff79f2ba2bc6d7b9221a..490b27b7cbd1892b79b0cbfb0a740941f4bdc038 100644
--- a/Builds/VisualStudio2012/open-ephys.vcxproj
+++ b/Builds/VisualStudio2012/open-ephys.vcxproj
@@ -161,12 +161,18 @@
     <ClCompile Include="..\..\Source\Dsp\State.cpp" />
     <ClCompile Include="..\..\Source\Audio\AudioComponent.cpp" />
     <ClCompile Include="..\..\Source\Processors\ArduinoOutput.cpp" />
+    <ClCompile Include="..\..\Source\Processors\AudioResamplingNode.cpp" />
+    <ClCompile Include="..\..\Source\Processors\Channel.cpp" />
+    <ClCompile Include="..\..\Source\Processors\Editors\RecordControlEditor.cpp" />
+    <ClCompile Include="..\..\Source\Processors\Editors\ResamplingNodeEditor.cpp" />
     <ClCompile Include="..\..\Source\Processors\EventDetector.cpp" />
     <ClCompile Include="..\..\Source\Processors\FPGAOutput.cpp" />
     <ClCompile Include="..\..\Source\Processors\Parameter.cpp" />
+    <ClCompile Include="..\..\Source\Processors\PhaseDetector.cpp" />
     <ClCompile Include="..\..\Source\Processors\Serial\ofArduino.cpp" />
     <ClCompile Include="..\..\Source\Processors\Serial\ofSerial.cpp" />
     <ClCompile Include="..\..\Source\Processors\SpikeDisplayNode.cpp" />
+    <ClCompile Include="..\..\Source\Processors\Utilities\RecordControl.cpp" />
     <ClCompile Include="..\..\Source\Processors\WiFiOutput.cpp" />
     <ClCompile Include="..\..\Source\Processors\LfpDisplayNode.cpp" />
     <ClCompile Include="..\..\Source\Processors\Utilities\Merger.cpp" />
@@ -263,13 +269,19 @@
     <ClInclude Include="..\..\Source\Dsp\Utilities.h" />
     <ClInclude Include="..\..\Source\Audio\AudioComponent.h" />
     <ClInclude Include="..\..\Source\Processors\ArduinoOutput.h" />
+    <ClInclude Include="..\..\Source\Processors\AudioResamplingNode.h" />
+    <ClInclude Include="..\..\Source\Processors\Channel.h" />
+    <ClInclude Include="..\..\Source\Processors\Editors\RecordControlEditor.h" />
+    <ClInclude Include="..\..\Source\Processors\Editors\ResamplingNodeEditor.h" />
     <ClInclude Include="..\..\Source\Processors\EventDetector.h" />
     <ClInclude Include="..\..\Source\Processors\FPGAOutput.h" />
     <ClInclude Include="..\..\Source\Processors\Parameter.h" />
+    <ClInclude Include="..\..\Source\Processors\PhaseDetector.h" />
     <ClInclude Include="..\..\Source\Processors\Serial\ofArduino.h" />
     <ClInclude Include="..\..\Source\Processors\Serial\ofConstants.h" />
     <ClInclude Include="..\..\Source\Processors\Serial\ofSerial.h" />
     <ClInclude Include="..\..\Source\Processors\SpikeDisplayNode.h" />
+    <ClInclude Include="..\..\Source\Processors\Utilities\RecordControl.h" />
     <ClInclude Include="..\..\Source\Processors\WiFiOutput.h" />
     <ClInclude Include="..\..\Source\Processors\LfpDisplayNode.h" />
     <ClInclude Include="..\..\Source\Processors\Utilities\Merger.h" />
diff --git a/Builds/VisualStudio2012/open-ephys.vcxproj.filters b/Builds/VisualStudio2012/open-ephys.vcxproj.filters
index eccf8853b1214bfc951a1a00d2b4958fdbff2dc3..cd6d308eeb81a7b125111fd790e142faa48599aa 100644
--- a/Builds/VisualStudio2012/open-ephys.vcxproj.filters
+++ b/Builds/VisualStudio2012/open-ephys.vcxproj.filters
@@ -345,6 +345,24 @@
     <ClCompile Include="..\..\Source\Processors\FPGAOutput.cpp">
       <Filter>open-ephys\Source\Processors</Filter>
     </ClCompile>
+    <ClCompile Include="..\..\Source\Processors\Channel.cpp">
+      <Filter>open-ephys\Source\Processors</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\Source\Processors\AudioResamplingNode.cpp">
+      <Filter>open-ephys\Source\Processors</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\Source\Processors\Editors\ResamplingNodeEditor.cpp">
+      <Filter>open-ephys\Source\Processors\Editors</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\Source\Processors\PhaseDetector.cpp">
+      <Filter>open-ephys\Source\Processors</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\Source\Processors\Editors\RecordControlEditor.cpp">
+      <Filter>open-ephys\Source\Processors\Editors</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\Source\Processors\Utilities\RecordControl.cpp">
+      <Filter>open-ephys\Source\Processors\Utilities</Filter>
+    </ClCompile>
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="..\..\Source\AccessClass.h">
@@ -647,5 +665,23 @@
     <ClInclude Include="..\..\Source\Processors\FPGAOutput.h">
       <Filter>open-ephys\Source\Processors</Filter>
     </ClInclude>
+    <ClInclude Include="..\..\Source\Processors\Channel.h">
+      <Filter>open-ephys\Source\Processors</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\Source\Processors\AudioResamplingNode.h">
+      <Filter>open-ephys\Source\Processors</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\Source\Processors\Editors\ResamplingNodeEditor.h">
+      <Filter>open-ephys\Source\Processors\Editors</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\Source\Processors\PhaseDetector.h">
+      <Filter>open-ephys\Source\Processors</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\Source\Processors\Editors\RecordControlEditor.h">
+      <Filter>open-ephys\Source\Processors\Editors</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\Source\Processors\Utilities\RecordControl.h">
+      <Filter>open-ephys\Source\Processors\Utilities</Filter>
+    </ClInclude>
   </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/JuceLibraryCode/BinaryData.cpp b/JuceLibraryCode/BinaryData.cpp
index d9b13021641b6549852c3366a440dc7f9c08fc2a..66ced203fbce03be542ba80121ec8370eaadd549 100644
--- a/JuceLibraryCode/BinaryData.cpp
+++ b/JuceLibraryCode/BinaryData.cpp
@@ -82,7 +82,7 @@ const char* BinaryData::getNamedResource (const char* resourceNameUTF8, int& num
 
 
 //================== BebasNeue.otf ==================
-static const unsigned char temp_6bd12552[] =
+static const unsigned char temp_5340bfc4[] =
 { 79,84,84,79,0,11,0,128,0,3,0,48,67,70,70,32,57,136,64,140,0,0,39,76,0,0,70,154,71,80,79,83,223,12,110,56,0,0,116,248,0,0,73,16,71,83,85,66,114,203,114,178,0,0,116,0,0,0,0,246,79,83,47,50,102,169,27,20,0,0,1,32,0,0,0,96,99,109,97,112,211,17,247,228,0,
 0,35,232,0,0,3,68,104,101,97,100,243,84,238,113,0,0,0,188,0,0,0,54,104,104,101,97,6,215,3,186,0,0,0,244,0,0,0,36,104,109,116,120,67,128,39,22,0,0,109,232,0,0,6,24,109,97,120,112,1,134,80,0,0,0,1,24,0,0,0,6,110,97,109,101,230,56,31,140,0,0,1,128,0,0,34,
 101,112,111,115,116,255,184,0,50,0,0,39,44,0,0,0,32,0,1,0,0,0,1,0,131,131,184,68,27,95,15,60,245,0,3,3,232,0,0,0,0,200,111,85,40,0,0,0,0,200,111,85,40,255,119,255,60,3,232,3,130,0,0,0,3,0,2,0,0,0,0,0,0,0,1,0,0,2,188,254,212,0,185,3,232,255,119,255,119,
@@ -692,10 +692,10 @@ static const unsigned char temp_6bd12552[] =
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,10,0,3,0,10,0,3,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,0,24,0,22,0,24,0,22,0,24,0,22,0,24,0,4,0,11,0,4,0,11,0,4,0,11,0,23,0,25,0,23,0,25,0,23,0,25,0,23,0,25,0,23,0,25,0,23,0,25,0,5,0,12,0,6,0,13,0,6,0,19,
 0,21,0,19,0,21,0,19,0,21,0,15,0,17,0,3,0,10,0,22,0,24,0,4,0,11,0,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,0,24,0,4,0,11,0,5,0,12,0,5,0,12,0,5,0,12,0,6,0,13,0,0 };
 
-const char* BinaryData::BebasNeue_otf = (const char*) temp_6bd12552;
+const char* BinaryData::BebasNeue_otf = (const char*) temp_5340bfc4;
 
 //================== cpmono_bold.otf ==================
-static const unsigned char temp_9105132e[] =
+static const unsigned char temp_5af7d920[] =
 { 79,84,84,79,0,10,0,128,0,3,0,32,67,70,70,32,35,187,57,254,0,0,10,112,0,0,84,205,71,83,85,66,106,18,122,98,0,0,98,20,0,0,5,216,79,83,47,50,104,215,98,101,0,0,1,16,0,0,0,96,99,109,97,112,38,198,129,33,0,0,5,56,0,0,5,24,104,101,97,100,237,187,124,213,0,
 0,0,172,0,0,0,54,104,104,101,97,6,229,0,115,0,0,0,228,0,0,0,36,104,109,116,120,58,11,56,208,0,0,95,64,0,0,2,212,109,97,120,112,1,105,80,0,0,0,1,8,0,0,0,6,110,97,109,101,226,66,147,104,0,0,1,112,0,0,3,198,112,111,115,116,255,181,0,161,0,0,10,80,0,0,0,
 32,0,1,0,0,0,1,0,0,64,149,238,152,95,15,60,245,0,3,3,232,0,0,0,0,198,13,28,168,0,0,0,0,198,13,28,168,255,7,255,16,3,131,3,149,0,0,0,3,0,2,0,0,0,0,0,0,0,1,0,0,3,144,254,224,0,200,2,138,255,7,255,7,3,131,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,80,0,1,105,
@@ -1039,10 +1039,10 @@ static const unsigned char temp_9105132e[] =
 0,2,0,21,0,4,0,12,0,0,0,14,0,19,0,9,0,21,0,23,0,15,0,28,0,28,0,18,0,36,0,51,0,19,0,53,0,54,0,35,0,57,0,60,0,37,0,63,0,66,0,41,0,71,0,72,0,45,0,82,0,82,0,47,0,92,0,92,0,48,0,99,0,99,0,49,0,103,0,106,0,50,0,140,0,162,0,54,0,165,0,168,0,77,0,179,0,184,0,
 81,0,208,0,209,0,87,0,214,0,214,0,89,0,224,1,6,0,90,1,8,1,8,0,129,1,13,1,13,0,130,0,1,0,26,0,3,0,13,0,20,0,24,0,25,0,26,0,27,0,52,0,55,0,56,0,61,0,62,0,67,0,68,0,69,0,70,0,134,0,135,0,136,0,137,0,138,0,139,0,163,0,164,0,169,1,7,0,0 };
 
-const char* BinaryData::cpmono_bold_otf = (const char*) temp_9105132e;
+const char* BinaryData::cpmono_bold_otf = (const char*) temp_5af7d920;
 
 //================== cpmono_extra_light.otf ==================
-static const unsigned char temp_695ee124[] =
+static const unsigned char temp_6590e6f2[] =
 { 79,84,84,79,0,10,0,128,0,3,0,32,67,70,70,32,248,217,201,134,0,0,10,164,0,0,78,103,71,83,85,66,106,18,122,98,0,0,91,224,0,0,5,216,79,83,47,50,104,210,98,59,0,0,1,16,0,0,0,96,99,109,97,112,38,198,129,33,0,0,5,108,0,0,5,24,104,101,97,100,237,187,115,86,
 0,0,0,172,0,0,0,54,104,104,101,97,6,229,0,179,0,0,0,228,0,0,0,36,104,109,116,120,81,57,79,54,0,0,89,12,0,0,2,212,109,97,120,112,1,105,80,0,0,0,1,8,0,0,0,6,110,97,109,101,101,109,217,12,0,0,1,112,0,0,3,252,112,111,115,116,255,181,0,161,0,0,10,132,0,0,
 0,32,0,1,0,0,0,1,0,0,97,176,60,66,95,15,60,245,0,3,3,232,0,0,0,0,198,13,23,248,0,0,0,0,198,13,23,248,255,71,255,16,3,67,3,118,0,0,0,3,0,2,0,0,0,0,0,0,0,1,0,0,3,144,254,224,0,200,2,138,255,71,255,71,3,67,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,80,0,1,
@@ -1367,10 +1367,10 @@ static const unsigned char temp_695ee124[] =
 0,55,0,61,0,62,0,70,0,2,0,21,0,4,0,12,0,0,0,14,0,19,0,9,0,21,0,23,0,15,0,28,0,28,0,18,0,36,0,51,0,19,0,53,0,54,0,35,0,57,0,60,0,37,0,63,0,66,0,41,0,71,0,72,0,45,0,82,0,82,0,47,0,92,0,92,0,48,0,99,0,99,0,49,0,103,0,106,0,50,0,140,0,162,0,54,0,165,0,168,
 0,77,0,179,0,184,0,81,0,208,0,209,0,87,0,214,0,214,0,89,0,224,1,6,0,90,1,8,1,8,0,129,1,13,1,13,0,130,0,1,0,26,0,3,0,13,0,20,0,24,0,25,0,26,0,27,0,52,0,55,0,56,0,61,0,62,0,67,0,68,0,69,0,70,0,134,0,135,0,136,0,137,0,138,0,139,0,163,0,164,0,169,1,7,0,0 };
 
-const char* BinaryData::cpmono_extra_light_otf = (const char*) temp_695ee124;
+const char* BinaryData::cpmono_extra_light_otf = (const char*) temp_6590e6f2;
 
 //================== cpmono_light.otf ==================
-static const unsigned char temp_ed13a613[] =
+static const unsigned char temp_61799e61[] =
 { 79,84,84,79,0,10,0,128,0,3,0,32,67,70,70,32,64,226,171,159,0,0,10,124,0,0,81,133,71,83,85,66,106,18,122,98,0,0,94,216,0,0,5,216,79,83,47,50,104,211,98,73,0,0,1,16,0,0,0,96,99,109,97,112,38,198,129,33,0,0,5,68,0,0,5,24,104,101,97,100,237,187,127,116,0,
 0,0,172,0,0,0,54,104,104,101,97,6,229,0,158,0,0,0,228,0,0,0,36,104,109,116,120,73,105,71,167,0,0,92,4,0,0,2,212,109,97,120,112,1,105,80,0,0,0,1,8,0,0,0,6,110,97,109,101,106,76,91,179,0,0,1,112,0,0,3,209,112,111,115,116,255,181,0,161,0,0,10,92,0,0,0,32,
 0,1,0,0,0,1,0,0,215,127,97,71,95,15,60,245,0,3,3,232,0,0,0,0,198,13,30,2,0,0,0,0,198,13,30,2,255,50,255,16,3,88,3,128,0,0,0,3,0,2,0,0,0,0,0,0,0,1,0,0,3,144,254,224,0,200,2,138,255,50,255,50,3,88,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,80,0,1,105,0,0,
@@ -1705,10 +1705,10 @@ static const unsigned char temp_ed13a613[] =
 0,4,0,12,0,0,0,14,0,19,0,9,0,21,0,23,0,15,0,28,0,28,0,18,0,36,0,51,0,19,0,53,0,54,0,35,0,57,0,60,0,37,0,63,0,66,0,41,0,71,0,72,0,45,0,82,0,82,0,47,0,92,0,92,0,48,0,99,0,99,0,49,0,103,0,106,0,50,0,140,0,162,0,54,0,165,0,168,0,77,0,179,0,184,0,81,0,208,
 0,209,0,87,0,214,0,214,0,89,0,224,1,6,0,90,1,8,1,8,0,129,1,13,1,13,0,130,0,1,0,26,0,3,0,13,0,20,0,24,0,25,0,26,0,27,0,52,0,55,0,56,0,61,0,62,0,67,0,68,0,69,0,70,0,134,0,135,0,136,0,137,0,138,0,139,0,163,0,164,0,169,1,7,0,0 };
 
-const char* BinaryData::cpmono_light_otf = (const char*) temp_ed13a613;
+const char* BinaryData::cpmono_light_otf = (const char*) temp_61799e61;
 
 //================== cpmono_plain.otf ==================
-static const unsigned char temp_39c3d0c7[] =
+static const unsigned char temp_ae29c915[] =
 { 79,84,84,79,0,10,0,128,0,3,0,32,67,70,70,32,153,52,71,27,0,0,10,124,0,0,81,49,71,83,85,66,106,18,122,98,0,0,94,132,0,0,5,216,79,83,47,50,104,213,98,87,0,0,1,16,0,0,0,96,99,109,97,112,38,198,129,33,0,0,5,68,0,0,5,24,104,101,97,100,237,186,121,35,0,0,0,
 172,0,0,0,54,104,104,101,97,6,228,0,137,0,0,0,228,0,0,0,36,104,109,116,120,65,179,64,52,0,0,91,176,0,0,2,212,109,97,120,112,1,105,80,0,0,0,1,8,0,0,0,6,110,97,109,101,95,80,74,175,0,0,1,112,0,0,3,209,112,111,115,116,255,181,0,161,0,0,10,92,0,0,0,32,0,
 1,0,0,0,1,0,0,76,64,104,233,95,15,60,245,0,3,3,232,0,0,0,0,198,13,26,212,0,0,0,0,198,13,26,212,255,28,255,16,3,109,3,139,0,0,0,3,0,2,0,0,0,0,0,0,0,1,0,0,3,144,254,224,0,200,2,138,255,28,255,29,3,109,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,80,0,1,105,
@@ -2042,10 +2042,10 @@ static const unsigned char temp_39c3d0c7[] =
 0,50,0,140,0,162,0,54,0,165,0,168,0,77,0,179,0,184,0,81,0,208,0,209,0,87,0,214,0,214,0,89,0,224,1,6,0,90,1,8,1,8,0,129,1,13,1,13,0,130,0,1,0,26,0,3,0,13,0,20,0,24,0,25,0,26,0,27,0,52,0,55,0,56,0,61,0,62,0,67,0,68,0,69,0,70,0,134,0,135,0,136,0,137,0,138,
 0,139,0,163,0,164,0,169,1,7,0,0 };
 
-const char* BinaryData::cpmono_plain_otf = (const char*) temp_39c3d0c7;
+const char* BinaryData::cpmono_plain_otf = (const char*) temp_ae29c915;
 
 //================== miso-bold.ttf ==================
-static const unsigned char temp_6e43b659[] =
+static const unsigned char temp_55b350cb[] =
 { 0,1,0,0,0,17,1,0,0,4,0,16,76,84,83,72,237,157,221,60,0,0,5,108,0,0,0,227,79,83,47,50,81,16,250,27,0,0,1,152,0,0,0,86,86,68,77,88,108,156,116,37,0,0,231,220,0,0,5,224,99,109,97,112,117,108,128,122,0,0,26,212,0,0,6,164,99,118,116,32,0,20,0,0,0,0,34,224,
 0,0,0,2,102,112,103,109,50,77,115,102,0,0,33,120,0,0,1,98,103,108,121,102,122,237,74,59,0,0,34,228,0,0,184,220,104,100,109,120,139,147,218,195,0,0,6,80,0,0,20,132,104,101,97,100,230,15,38,231,0,0,1,28,0,0,0,54,104,104,101,97,6,202,7,163,0,0,1,84,0,0,
 0,36,104,109,116,120,82,131,27,122,0,0,1,240,0,0,3,124,107,101,114,110,23,5,21,255,0,0,221,128,0,0,4,68,108,111,99,97,100,35,145,228,0,0,219,192,0,0,1,192,109,97,120,112,2,241,2,157,0,0,1,120,0,0,0,32,110,97,109,101,215,203,101,65,0,0,225,196,0,0,3,225,
@@ -2729,10 +2729,10 @@ static const unsigned char temp_6e43b659[] =
 255,203,0,239,0,212,255,203,0,240,0,213,255,203,0,241,0,214,255,202,0,242,0,215,255,202,0,243,0,216,255,202,0,244,0,217,255,202,0,245,0,218,255,202,0,246,0,218,255,201,0,247,0,219,255,201,0,248,0,220,255,201,0,249,0,221,255,201,0,250,0,222,255,201,0,
 251,0,223,255,200,0,252,0,224,255,200,0,253,0,225,255,200,0,254,0,226,255,200,0,255,0,226,255,199,0,0 };
 
-const char* BinaryData::misobold_ttf = (const char*) temp_6e43b659;
+const char* BinaryData::misobold_ttf = (const char*) temp_55b350cb;
 
 //================== miso-light.ttf ==================
-static const unsigned char temp_b7a73532[] =
+static const unsigned char temp_be2ae900[] =
 { 0,1,0,0,0,17,1,0,0,4,0,16,76,84,83,72,109,206,108,252,0,0,5,108,0,0,0,227,79,83,47,50,79,98,250,86,0,0,1,152,0,0,0,86,86,68,77,88,108,201,116,87,0,0,229,68,0,0,5,224,99,109,97,112,117,108,128,122,0,0,26,212,0,0,6,164,99,118,116,32,0,20,0,0,0,0,34,224,
 0,0,0,2,102,112,103,109,50,77,115,102,0,0,33,120,0,0,1,98,103,108,121,102,9,54,37,173,0,0,34,228,0,0,182,56,104,100,109,120,120,118,213,147,0,0,6,80,0,0,20,132,104,101,97,100,230,13,38,194,0,0,1,28,0,0,0,54,104,104,101,97,6,201,7,195,0,0,1,84,0,0,0,36,
 104,109,116,120,82,124,51,141,0,0,1,240,0,0,3,124,107,101,114,110,23,5,21,255,0,0,218,220,0,0,4,68,108,111,99,97,249,219,39,62,0,0,217,28,0,0,1,192,109,97,120,112,2,241,2,188,0,0,1,120,0,0,0,32,110,97,109,101,174,204,29,32,0,0,223,32,0,0,3,240,112,111,
@@ -3398,10 +3398,10 @@ static const unsigned char temp_b7a73532[] =
 203,0,243,0,216,255,203,0,244,0,217,255,203,0,245,0,218,255,202,0,246,0,218,255,202,0,247,0,219,255,202,0,248,0,220,255,202,0,249,0,221,255,201,0,250,0,222,255,201,0,251,0,223,255,201,0,252,0,224,255,201,0,253,0,225,255,201,0,254,0,226,255,200,0,255,
 0,226,255,200,0,0 };
 
-const char* BinaryData::misolight_ttf = (const char*) temp_b7a73532;
+const char* BinaryData::misolight_ttf = (const char*) temp_be2ae900;
 
 //================== miso-regular.ttf ==================
-static const unsigned char temp_cedf3b8[] =
+static const unsigned char temp_8153ec06[] =
 { 0,1,0,0,0,17,1,0,0,4,0,16,76,84,83,72,96,206,125,196,0,0,5,108,0,0,0,227,79,83,47,50,79,197,250,61,0,0,1,152,0,0,0,86,86,68,77,88,108,201,116,86,0,0,225,224,0,0,5,224,99,109,97,112,117,108,128,122,0,0,26,212,0,0,6,164,99,118,116,32,0,20,0,0,0,0,34,224,
 0,0,0,2,102,112,103,109,50,77,115,102,0,0,33,120,0,0,1,98,103,108,121,102,144,118,127,194,0,0,34,228,0,0,179,20,104,100,109,120,123,104,215,146,0,0,6,80,0,0,20,132,104,101,97,100,230,14,38,213,0,0,1,28,0,0,0,54,104,104,101,97,6,189,7,195,0,0,1,84,0,0,
 0,36,104,109,116,120,82,124,40,229,0,0,1,240,0,0,3,124,107,101,114,110,23,5,21,255,0,0,215,184,0,0,4,68,108,111,99,97,156,38,200,236,0,0,213,248,0,0,1,192,109,97,120,112,2,241,2,186,0,0,1,120,0,0,0,32,110,97,109,101,65,189,188,90,0,0,219,252,0,0,3,174,
@@ -4065,10 +4065,10 @@ static const unsigned char temp_cedf3b8[] =
 0,206,255,208,0,236,0,207,255,207,0,237,0,207,255,207,0,238,0,208,255,207,0,239,0,209,255,207,0,240,0,210,255,207,0,241,0,211,255,206,0,242,0,212,255,206,0,243,0,213,255,206,0,244,0,214,255,206,0,245,0,214,255,206,0,246,0,215,255,205,0,247,0,216,255,
 205,0,248,0,217,255,205,0,249,0,218,255,205,0,250,0,219,255,205,0,251,0,220,255,204,0,252,0,220,255,204,0,253,0,221,255,204,0,254,0,222,255,204,0,255,0,223,255,203,0,0 };
 
-const char* BinaryData::misoregular_ttf = (const char*) temp_cedf3b8;
+const char* BinaryData::misoregular_ttf = (const char*) temp_8153ec06;
 
 //================== miso-serialized ==================
-static const unsigned char temp_28bba9e0[] =
+static const unsigned char temp_f2ae6fd2[] =
 { 120,156,236,221,11,252,253,197,180,63,254,79,244,237,170,139,164,123,73,55,116,165,146,240,221,239,175,168,148,75,95,145,144,16,187,143,67,246,231,155,173,155,131,82,169,164,72,233,34,149,110,18,37,183,82,74,159,253,222,137,238,36,33,169,164,66,116,145,
 20,161,19,254,243,124,205,222,31,250,31,231,156,56,156,195,227,119,122,60,62,205,250,238,247,204,154,153,53,51,107,214,90,179,102,205,139,223,188,219,174,19,19,19,231,156,250,226,57,171,78,252,161,64,243,77,28,59,103,195,102,222,228,163,70,233,163,71,
 233,252,163,116,214,40,93,96,148,46,56,74,23,26,165,11,143,210,69,70,233,162,163,244,49,163,116,177,81,186,248,40,93,98,148,46,57,74,31,59,74,151,26,165,143,27,165,75,143,210,199,143,210,101,70,233,178,163,116,185,81,186,252,40,93,97,148,174,56,74,87,
@@ -5119,10 +5119,10 @@ static const unsigned char temp_28bba9e0[] =
 219,114,86,91,239,25,109,89,219,189,161,215,207,60,247,238,205,109,203,166,45,119,111,203,250,157,123,151,118,230,189,119,251,157,251,182,245,247,109,219,239,219,214,223,183,212,95,163,80,149,125,75,61,229,188,222,155,243,251,188,182,254,188,182,254,
 188,182,254,188,82,223,122,206,43,245,149,251,181,245,246,107,235,237,215,214,219,175,212,91,173,244,183,95,169,167,124,91,91,239,109,109,189,203,123,251,166,252,89,91,222,212,150,255,15,63,201,76,247,0,0 };
 
-const char* BinaryData::misoserialized = (const char*) temp_28bba9e0;
+const char* BinaryData::misoserialized = (const char*) temp_f2ae6fd2;
 
 //================== nordic.ttf ==================
-static const unsigned char temp_607a5bbe[] =
+static const unsigned char temp_b59c268c[] =
 { 0,1,0,0,0,14,0,128,0,3,0,96,79,83,47,50,123,137,164,77,0,0,1,136,0,0,0,86,99,109,97,112,54,197,178,209,0,0,31,240,0,0,1,202,99,118,116,32,15,192,16,0,0,0,26,184,0,0,2,0,102,112,103,109,1,82,156,24,0,0,28,184,0,0,0,179,103,97,115,112,0,23,0,6,0,0,26,168,
 0,0,0,16,103,108,121,102,108,103,13,174,0,0,40,168,0,0,51,44,104,101,97,100,98,133,67,155,0,0,0,236,0,0,0,54,104,104,101,97,6,68,3,192,0,0,1,36,0,0,0,36,104,109,116,120,180,81,19,127,0,0,37,52,0,0,3,116,108,111,99,97,0,33,207,92,0,0,33,188,0,0,3,120,
 109,97,120,112,24,248,0,170,0,0,1,72,0,0,0,32,110,97,109,101,185,229,179,231,0,0,1,224,0,0,24,198,112,111,115,116,255,163,0,48,0,0,1,104,0,0,0,32,112,114,101,112,15,37,62,165,0,0,29,108,0,0,2,130,0,1,0,0,0,5,0,0,166,84,57,97,95,15,60,245,0,1,4,0,0,0,
@@ -5363,10 +5363,10 @@ static const unsigned char temp_607a5bbe[] =
 6,7,6,39,53,54,55,51,22,23,185,30,74,27,4,1,23,86,22,3,204,31,74,27,4,2,22,86,22,4,2,126,88,56,12,28,214,22,3,3,22,86,88,56,12,28,214,22,3,3,22,0,0,0,2,0,50,1,226,1,133,2,237,0,10,0,21,0,3,0,48,49,19,6,7,6,39,53,54,55,51,22,31,1,6,7,6,39,53,54,55,51,
 22,23,185,30,74,27,4,1,23,86,22,3,204,31,74,27,4,2,22,86,22,4,2,126,88,56,12,28,214,22,3,3,22,86,88,56,12,28,214,22,3,3,22,0,0,0,0 };
 
-const char* BinaryData::nordic_ttf = (const char*) temp_607a5bbe;
+const char* BinaryData::nordic_ttf = (const char*) temp_b59c268c;
 
 //================== ostrich.ttf ==================
-static const unsigned char temp_eec668cb[] =
+static const unsigned char temp_3dddf7bd[] =
 { 0,1,0,0,0,16,1,0,0,4,0,0,70,70,84,77,91,245,3,49,0,0,1,12,0,0,0,28,71,68,69,70,0,172,0,3,0,0,1,40,0,0,0,32,79,83,47,50,147,188,109,12,0,0,1,72,0,0,0,96,99,109,97,112,43,226,86,187,0,0,1,168,0,0,1,162,99,118,116,32,13,119,11,140,0,0,3,76,0,0,0,34,102,
 112,103,109,15,180,47,167,0,0,3,112,0,0,2,101,103,97,115,112,0,0,0,16,0,0,5,216,0,0,0,8,103,108,121,102,143,7,37,77,0,0,5,224,0,0,69,164,104,101,97,100,248,105,156,174,0,0,75,132,0,0,0,54,104,104,101,97,11,58,5,41,0,0,75,188,0,0,0,36,104,109,116,120,
 102,145,6,220,0,0,75,224,0,0,1,252,108,111,99,97,36,35,54,72,0,0,77,220,0,0,1,0,109,97,120,112,1,156,1,252,0,0,78,220,0,0,0,32,110,97,109,101,44,100,71,147,0,0,78,252,0,0,2,6,112,111,115,116,68,107,181,125,0,0,81,4,0,0,1,187,112,114,101,112,2,242,181,
@@ -5618,10 +5618,10 @@ static const unsigned char temp_eec668cb[] =
 32,69,176,3,43,68,176,12,32,69,186,0,11,127,255,0,2,43,177,3,70,118,43,68,176,13,32,69,178,12,9,2,43,177,3,70,118,43,68,176,14,32,69,178,13,8,2,43,177,3,70,118,43,68,176,15,32,69,186,0,14,1,56,0,2,43,177,3,70,118,43,68,176,16,32,69,178,15,7,2,43,177,
 3,70,118,43,68,89,176,20,43,0,0,0,0 };
 
-const char* BinaryData::ostrich_ttf = (const char*) temp_eec668cb;
+const char* BinaryData::ostrich_ttf = (const char*) temp_3dddf7bd;
 
 //================== silkscreen-serialized ==================
-static const unsigned char temp_bf72eaf7[] =
+static const unsigned char temp_f921f369[] =
 { 120,156,237,155,7,148,20,69,16,134,215,156,48,39,80,84,204,57,160,120,162,48,123,42,98,206,120,230,132,99,171,200,238,170,140,162,24,49,97,206,57,231,128,57,158,1,238,206,132,1,195,153,21,207,128,17,179,232,138,138,9,39,117,119,245,116,207,78,47,252,
 199,221,170,188,199,123,205,78,239,215,213,85,213,85,93,53,203,128,65,133,193,158,59,132,177,82,46,151,235,217,165,95,125,143,220,20,127,52,131,255,55,87,95,42,246,26,57,185,175,63,26,94,8,6,254,227,150,66,145,77,204,139,65,240,200,45,142,27,59,62,239,
 63,31,93,8,6,19,242,125,90,252,217,195,28,49,8,30,185,108,70,56,113,38,56,113,102,56,113,22,56,113,86,56,113,54,56,113,118,56,113,14,56,113,78,56,113,46,56,177,11,156,56,55,156,56,15,156,56,47,156,56,31,156,56,63,156,184,0,156,184,32,156,184,16,156,184,
@@ -5656,10 +5656,10 @@ static const unsigned char temp_bf72eaf7[] =
 2,78,156,0,39,126,9,39,126,5,39,126,13,39,126,3,39,126,11,39,126,7,39,126,15,39,254,0,39,78,132,19,127,132,19,127,130,19,203,112,226,207,112,226,36,56,241,23,56,241,87,56,241,55,56,113,50,156,248,59,156,248,7,156,248,39,156,248,23,156,248,55,156,56,5,
 78,12,128,255,0,255,66,227,172,0,0 };
 
-const char* BinaryData::silkscreenserialized = (const char*) temp_bf72eaf7;
+const char* BinaryData::silkscreenserialized = (const char*) temp_f921f369;
 
 //================== silkscreen.ttf ==================
-static const unsigned char temp_46c3ac32[] =
+static const unsigned char temp_4d476000[] =
 { 0,1,0,0,0,15,0,48,0,3,0,192,79,83,47,50,121,166,129,146,0,0,64,208,0,0,0,78,80,67,76,84,173,52,110,22,0,0,65,32,0,0,0,54,99,109,97,112,198,58,142,190,0,0,61,32,0,0,2,4,99,118,116,32,7,83,8,77,0,0,64,172,0,0,0,36,102,112,103,109,152,92,220,162,0,0,3,224,
 0,0,0,100,103,108,121,102,48,157,174,66,0,0,4,152,0,0,54,18,104,100,109,120,137,166,202,30,0,0,65,88,0,0,6,72,104,101,97,100,213,88,95,61,0,0,0,252,0,0,0,54,104,104,101,97,2,213,6,14,0,0,1,52,0,0,0,36,104,109,116,120,44,25,4,90,0,0,63,36,0,0,1,136,108,
 111,99,97,0,10,37,204,0,0,58,172,0,0,1,140,109,97,120,112,1,9,0,219,0,0,1,88,0,0,0,32,110,97,109,101,63,98,60,192,0,0,1,120,0,0,2,103,112,111,115,116,9,71,9,62,0,0,60,56,0,0,0,230,112,114,101,112,5,176,112,7,0,0,4,68,0,0,0,83,0,1,0,0,0,1,0,0,124,56,31,
@@ -5866,10 +5866,10 @@ static const unsigned char temp_46c3ac32[] =
 14,16,19,16,16,16,16,14,14,16,16,8,16,16,14,19,19,16,16,16,16,16,14,16,19,19,19,19,14,11,14,11,14,16,11,16,16,16,16,14,14,16,16,8,16,16,14,19,19,16,16,16,16,16,14,16,19,19,19,19,14,14,8,14,16,24,20,12,0,11,11,9,14,20,17,20,17,9,11,11,20,20,9,14,6,14,
 17,14,17,17,17,17,17,17,17,17,6,9,14,14,14,17,20,17,17,17,17,14,14,17,17,9,17,17,14,20,20,17,17,17,17,17,14,17,20,20,20,20,14,11,14,11,14,17,11,17,17,17,17,14,14,17,17,9,17,17,14,20,20,17,17,17,17,17,14,17,20,20,20,20,14,14,9,14,17,0,0 };
 
-const char* BinaryData::silkscreen_ttf = (const char*) temp_46c3ac32;
+const char* BinaryData::silkscreen_ttf = (const char*) temp_4d476000;
 
 //================== ArduinoIcon.png ==================
-static const unsigned char temp_c544033e[] =
+static const unsigned char temp_2e3e6c5[] =
 { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,6,47,0,0,4,111,8,6,0,0,0,96,133,119,144,0,0,0,9,112,72,89,115,0,0,46,35,0,0,46,35,1,120,165,63,118,0,0,10,79,105,67,67,80,80,104,111,116,111,115,104,111,112,32,73,67,67,32,112,114,111,102,105,108,101,
 0,0,120,218,157,83,103,84,83,233,22,61,247,222,244,66,75,136,128,148,75,111,82,21,8,32,82,66,139,128,20,145,38,42,33,9,16,74,136,33,161,217,21,81,193,17,69,69,4,27,200,160,136,3,142,142,128,140,21,81,44,12,138,10,216,7,228,33,162,142,131,163,136,138,
 202,251,225,123,163,107,214,188,247,230,205,254,181,215,62,231,172,243,157,179,207,7,192,8,12,150,72,51,81,53,128,12,169,66,30,17,224,131,199,196,198,225,228,46,64,129,10,36,112,0,16,8,179,100,33,115,253,35,1,0,248,126,60,60,43,34,192,7,190,0,1,120,211,
@@ -6658,10 +6658,10 @@ static const unsigned char temp_c544033e[] =
 223,255,212,213,121,32,27,7,166,188,232,223,182,138,0,0,0,0,0,32,99,109,205,214,129,253,183,63,255,249,207,94,222,126,236,75,57,185,187,67,8,23,75,2,0,0,0,0,32,163,252,123,8,225,191,255,169,171,243,68,54,14,206,157,23,76,13,33,108,19,3,0,0,0,0,64,198,
 248,117,8,97,92,182,22,23,33,184,243,130,147,190,148,147,59,46,132,48,51,132,240,223,165,1,0,0,0,0,16,73,39,66,8,91,255,212,213,249,84,182,15,244,255,63,0,215,70,173,194,31,62,235,52,0,0,0,0,73,69,78,68,174,66,96,130,0,0 };
 
-const char* BinaryData::ArduinoIcon_png = (const char*) temp_c544033e;
+const char* BinaryData::ArduinoIcon_png = (const char*) temp_2e3e6c5;
 
 //================== OpenEphysBoardLogoBlack.png ==================
-static const unsigned char temp_f6d2b578[] =
+static const unsigned char temp_b3ce867f[] =
 { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,7,115,0,0,5,27,8,6,0,0,0,52,231,138,245,0,0,0,9,112,72,89,115,0,0,46,35,0,0,46,35,1,120,165,63,118,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,
 97,100,121,113,201,101,60,0,0,140,165,73,68,65,84,120,218,236,221,209,149,19,71,162,199,225,54,231,30,29,233,9,54,2,228,8,152,141,96,180,17,120,110,4,200,17,236,108,4,30,71,176,16,129,69,4,59,68,176,34,2,102,34,176,136,224,194,147,116,244,194,173,178,
 122,188,44,6,3,51,211,221,127,73,223,119,78,185,13,6,117,119,169,103,95,126,91,213,223,189,127,255,190,33,195,104,60,121,84,14,39,237,47,103,31,252,167,217,71,127,116,90,198,99,51,6,0,0,0,0,0,192,87,122,83,198,234,163,223,91,126,226,223,175,182,155,245,
@@ -7135,10 +7135,10 @@ static const unsigned char temp_f6d2b578[] =
 38,188,253,43,192,21,222,214,75,152,155,65,10,120,183,225,238,40,149,248,181,93,188,0,0,0,0,0,0,228,118,87,109,194,218,69,42,243,248,20,220,54,79,152,91,152,116,76,115,188,135,119,148,74,245,197,215,187,226,247,220,209,11,0,0,0,0,0,192,215,196,99,144,
 23,247,124,127,177,243,253,237,215,183,235,213,242,218,144,149,227,255,1,23,88,237,144,160,48,169,201,0,0,0,0,73,69,78,68,174,66,96,130,0,0 };
 
-const char* BinaryData::OpenEphysBoardLogoBlack_png = (const char*) temp_f6d2b578;
+const char* BinaryData::OpenEphysBoardLogoBlack_png = (const char*) temp_b3ce867f;
 
 //================== OpenEphysBoardLogoGray.png ==================
-static const unsigned char temp_1c506aa0[] =
+static const unsigned char temp_9a2dcb9[] =
 { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,7,115,0,0,5,27,8,6,0,0,0,52,231,138,245,0,0,0,9,112,72,89,115,0,0,46,35,0,0,46,35,1,120,165,63,118,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,
 97,100,121,113,201,101,60,0,0,139,144,73,68,65,84,120,218,236,221,223,117,220,198,193,198,97,68,39,247,100,7,98,42,16,115,133,75,174,43,16,191,10,180,174,192,76,5,166,43,8,85,129,86,21,132,170,32,171,203,185,50,89,65,168,14,168,10,242,13,188,160,163,
 40,148,197,63,11,224,197,238,243,156,51,134,100,75,11,96,22,204,205,47,51,248,211,191,255,253,239,134,12,165,148,195,122,56,238,127,187,248,226,63,45,190,250,163,71,117,188,52,99,0,0,0,0,0,0,60,208,167,58,110,190,250,119,235,123,126,125,213,182,237,173,
@@ -7609,10 +7609,10 @@ static const unsigned char temp_1c506aa0[] =
 194,221,105,190,210,239,85,241,2,0,0,0,0,0,80,218,125,179,13,107,55,249,90,167,187,224,182,127,194,220,202,228,109,154,211,57,188,211,124,53,127,249,253,190,244,103,206,232,5,0,0,0,0,0,224,107,210,54,200,155,7,254,124,179,247,231,187,223,223,133,16,110,
 12,89,61,254,7,181,146,230,16,82,63,166,171,0,0,0,0,73,69,78,68,174,66,96,130,0,0 };
 
-const char* BinaryData::OpenEphysBoardLogoGray_png = (const char*) temp_1c506aa0;
+const char* BinaryData::OpenEphysBoardLogoGray_png = (const char*) temp_9a2dcb9;
 
 //================== RadioButtons-01.png ==================
-static const unsigned char temp_819db025[] =
+static const unsigned char temp_5e02782c[] =
 { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,32,0,0,0,19,8,6,0,0,0,241,148,15,247,0,0,0,9,112,72,89,115,0,0,11,19,0,0,11,19,1,0,154,156,24,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,97,
 100,121,113,201,101,60,0,0,2,191,73,68,65,84,120,218,196,150,219,78,19,81,20,134,255,61,199,118,128,136,209,132,150,27,98,226,133,70,99,104,69,206,82,18,9,166,49,122,161,9,23,92,250,4,190,129,190,130,207,161,55,106,76,19,37,86,40,162,40,109,154,84,4,
 34,98,5,76,228,2,16,122,156,233,28,92,211,169,74,109,109,13,69,88,201,206,236,116,239,174,245,173,127,173,189,103,24,200,60,30,207,29,122,4,104,180,226,144,141,81,240,123,62,255,197,187,221,221,189,80,20,229,80,131,71,34,83,16,36,73,12,140,94,13,226,
@@ -7626,10 +7626,10 @@ static const unsigned char temp_819db025[] =
 139,193,13,163,246,157,221,112,9,202,148,32,17,195,47,19,116,2,18,208,41,176,105,214,127,97,252,42,65,58,157,174,251,62,248,31,166,235,142,2,247,227,241,216,176,215,219,78,23,198,225,66,100,179,25,231,142,164,143,146,97,122,12,31,197,55,193,15,1,6,0,
 156,20,41,102,255,70,71,224,0,0,0,0,73,69,78,68,174,66,96,130,0,0 };
 
-const char* BinaryData::RadioButtons01_png = (const char*) temp_819db025;
+const char* BinaryData::RadioButtons01_png = (const char*) temp_5e02782c;
 
 //================== RadioButtons-02.png ==================
-static const unsigned char temp_81abc7a6[] =
+static const unsigned char temp_5e108fad[] =
 { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,31,0,0,0,19,8,6,0,0,0,104,108,214,66,0,0,0,9,112,72,89,115,0,0,11,19,0,0,11,19,1,0,154,156,24,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,97,
 100,121,113,201,101,60,0,0,2,197,73,68,65,84,120,218,196,150,107,79,19,65,20,134,223,153,157,221,110,11,36,152,20,104,52,154,144,160,40,69,32,164,40,136,52,38,24,141,31,252,79,254,31,191,154,104,248,224,133,86,80,145,134,91,32,70,32,202,69,46,134,91,
 111,123,233,94,60,179,106,44,180,24,109,19,152,228,100,119,178,115,206,115,230,61,115,38,203,98,177,216,43,156,211,16,137,129,219,247,70,70,146,103,14,78,165,198,33,20,69,129,22,10,157,57,92,114,133,34,8,174,105,167,46,98,140,228,81,200,132,15,159,230,
@@ -7643,10 +7643,10 @@ static const unsigned char temp_81abc7a6[] =
 11,27,40,149,78,239,65,201,21,129,236,150,85,243,77,37,93,83,233,37,76,125,252,132,11,205,13,216,219,207,83,89,124,42,135,255,215,254,175,75,246,147,9,20,10,192,254,126,241,159,47,156,95,178,215,183,243,90,135,228,138,98,177,128,157,237,237,51,135,75,
 46,163,63,153,39,231,245,39,243,67,128,1,0,60,21,103,165,70,150,193,96,0,0,0,0,73,69,78,68,174,66,96,130,0,0 };
 
-const char* BinaryData::RadioButtons02_png = (const char*) temp_81abc7a6;
+const char* BinaryData::RadioButtons02_png = (const char*) temp_5e108fad;
 
 //================== RadioButtons-03.png ==================
-static const unsigned char temp_81b9df27[] =
+static const unsigned char temp_5e1ea72e[] =
 { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,31,0,0,0,19,8,6,0,0,0,104,108,214,66,0,0,0,9,112,72,89,115,0,0,11,19,0,0,11,19,1,0,154,156,24,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,97,
 100,121,113,201,101,60,0,0,2,77,73,68,65,84,120,218,196,150,219,110,211,64,16,134,255,61,196,109,66,165,86,106,47,242,32,173,8,23,69,240,16,136,103,225,142,151,42,92,34,40,32,113,1,151,160,34,78,82,213,67,148,66,147,56,118,236,181,119,205,76,156,162,
 172,157,22,25,161,116,164,141,226,221,153,249,230,228,149,69,183,219,125,129,91,18,189,187,119,247,193,254,254,253,149,131,15,15,95,65,43,165,16,172,173,173,28,206,92,173,52,193,131,160,118,40,37,32,4,45,126,16,75,172,11,192,209,42,230,171,49,92,51,92,
@@ -7658,10 +7658,10 @@ static const unsigned char temp_81b9df27[] =
 253,155,136,179,130,202,88,194,31,61,126,114,163,110,191,63,32,93,202,60,245,225,204,45,203,158,54,203,60,163,88,191,255,56,193,206,246,75,186,44,236,245,21,162,183,228,232,243,49,205,71,74,109,170,102,254,143,101,103,57,59,51,56,120,254,14,66,220,208,
 30,190,255,169,31,214,214,111,160,121,217,155,103,254,63,132,185,58,142,35,244,207,207,87,14,103,174,160,47,153,167,183,245,37,243,91,128,1,0,11,149,65,182,96,70,58,8,0,0,0,0,73,69,78,68,174,66,96,130,0,0 };
 
-const char* BinaryData::RadioButtons03_png = (const char*) temp_81b9df27;
+const char* BinaryData::RadioButtons03_png = (const char*) temp_5e1ea72e;
 
 //================== RadioButtons-04.png ==================
-static const unsigned char temp_81c7f6a8[] =
+static const unsigned char temp_5e2cbeaf[] =
 { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,31,0,0,0,19,8,6,0,0,0,104,108,214,66,0,0,0,9,112,72,89,115,0,0,11,19,0,0,11,19,1,0,154,156,24,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,97,
 100,121,113,201,101,60,0,0,2,165,73,68,65,84,120,218,196,150,237,79,211,80,24,197,207,109,111,1,157,74,50,144,76,226,198,139,128,2,66,162,66,136,31,48,42,248,217,232,95,228,127,102,2,74,130,38,203,192,12,84,134,1,231,88,145,142,194,218,117,107,215,23,
 159,219,161,216,161,198,200,132,155,52,109,239,189,233,239,60,231,60,109,202,18,137,196,75,156,211,224,83,211,51,15,103,103,31,156,57,120,113,113,1,92,150,101,180,181,183,159,57,92,112,185,204,9,222,214,118,98,145,177,227,235,32,248,15,112,46,224,146,
@@ -7674,10 +7674,10 @@ static const unsigned char temp_81c7f6a8[] =
 83,92,187,240,93,35,132,215,5,220,9,154,224,30,184,235,122,161,255,167,29,66,196,171,165,45,164,51,219,152,156,184,142,241,241,41,112,101,8,165,210,14,89,236,208,155,19,245,79,112,27,182,219,118,203,190,92,66,196,194,98,14,233,244,39,18,208,143,106,213,
 167,134,182,195,202,209,74,219,255,52,42,21,134,61,109,61,188,246,253,224,196,7,233,200,246,214,86,254,183,67,112,185,101,85,176,171,170,103,14,23,92,70,127,50,47,206,235,79,230,155,0,3,0,91,7,91,249,23,102,61,167,0,0,0,0,73,69,78,68,174,66,96,130,0,0 };
 
-const char* BinaryData::RadioButtons04_png = (const char*) temp_81c7f6a8;
+const char* BinaryData::RadioButtons04_png = (const char*) temp_5e2cbeaf;
 
 //================== RadioButtons-05.png ==================
-static const unsigned char temp_81d60e29[] =
+static const unsigned char temp_5e3ad630[] =
 { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,30,0,0,0,19,8,6,0,0,0,135,174,189,124,0,0,0,9,112,72,89,115,0,0,11,19,0,0,11,19,1,0,154,156,24,0,0,10,79,105,67,67,80,80,104,111,116,111,115,104,111,112,32,73,67,67,32,112,114,111,102,105,108,101,0,
 0,120,218,157,83,103,84,83,233,22,61,247,222,244,66,75,136,128,148,75,111,82,21,8,32,82,66,139,128,20,145,38,42,33,9,16,74,136,33,161,217,21,81,193,17,69,69,4,27,200,160,136,3,142,142,128,140,21,81,44,12,138,10,216,7,228,33,162,142,131,163,136,138,202,
 251,225,123,163,107,214,188,247,230,205,254,181,215,62,231,172,243,157,179,207,7,192,8,12,150,72,51,81,53,128,12,169,66,30,17,224,131,199,196,198,225,228,46,64,129,10,36,112,0,16,8,179,100,33,115,253,35,1,0,248,126,60,60,43,34,192,7,190,0,1,120,211,11,
@@ -7729,10 +7729,10 @@ static const unsigned char temp_81d60e29[] =
 162,63,207,207,191,252,78,47,76,49,6,14,15,19,62,191,243,5,198,88,140,57,95,51,207,205,73,170,147,228,66,176,16,240,240,225,99,176,159,49,24,68,52,91,17,113,60,230,203,175,118,209,74,32,4,164,153,37,207,237,84,135,186,200,254,53,213,207,44,73,224,94,
 237,224,164,117,254,119,192,197,96,131,206,243,127,62,241,255,97,121,158,163,163,104,72,171,217,188,84,112,20,13,17,213,106,245,211,23,241,3,249,115,0,245,214,95,36,216,96,243,208,0,0,0,0,73,69,78,68,174,66,96,130,0,0 };
 
-const char* BinaryData::RadioButtons05_png = (const char*) temp_81d60e29;
+const char* BinaryData::RadioButtons05_png = (const char*) temp_5e3ad630;
 
 //================== RadioButtons_neutral-01.png ==================
-static const unsigned char temp_38c869d[] =
+static const unsigned char temp_c08857a4[] =
 { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,32,0,0,0,19,8,6,0,0,0,241,148,15,247,0,0,0,9,112,72,89,115,0,0,11,19,0,0,11,19,1,0,154,156,24,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,97,
 100,121,113,201,101,60,0,0,2,103,73,68,65,84,120,218,196,86,221,75,83,97,28,126,206,217,217,161,177,205,64,177,121,154,125,96,132,23,125,144,36,117,219,77,222,108,115,36,74,11,22,140,210,182,187,162,174,130,46,250,83,6,121,83,162,99,69,69,17,164,77,152,
 168,67,48,203,106,141,105,160,172,109,110,147,181,185,243,181,211,123,142,37,68,251,10,199,250,193,15,94,206,251,62,239,243,252,62,248,157,151,82,20,5,28,199,221,49,27,141,55,201,218,140,22,27,67,200,31,234,245,250,251,54,199,32,123,200,194,181,148,252,
@@ -7745,10 +7745,10 @@ static const unsigned char temp_38c869d[] =
 209,58,51,61,253,79,231,101,53,3,162,36,255,136,126,90,197,177,158,19,45,255,25,169,101,99,120,129,127,176,188,242,62,176,83,42,193,108,110,237,123,68,18,69,80,191,94,68,151,140,6,131,75,71,211,7,90,157,133,159,2,12,0,238,13,9,71,19,58,158,165,0,0,0,
 0,73,69,78,68,174,66,96,130,0,0 };
 
-const char* BinaryData::RadioButtons_neutral01_png = (const char*) temp_38c869d;
+const char* BinaryData::RadioButtons_neutral01_png = (const char*) temp_c08857a4;
 
 //================== RadioButtons_neutral-02.png ==================
-static const unsigned char temp_39a9e1e[] =
+static const unsigned char temp_c0966f25[] =
 { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,31,0,0,0,19,8,6,0,0,0,104,108,214,66,0,0,0,9,112,72,89,115,0,0,11,19,0,0,11,19,1,0,154,156,24,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,97,
 100,121,113,201,101,60,0,0,2,54,73,68,65,84,120,218,196,150,207,79,19,65,20,199,191,187,157,182,86,131,166,254,72,69,19,13,141,137,49,30,12,218,131,225,102,106,140,129,112,52,210,150,67,19,53,130,240,223,104,188,123,210,196,171,98,148,6,127,20,104,145,
 32,28,48,129,130,201,66,65,91,160,148,110,161,178,219,157,226,204,28,56,176,187,13,182,164,125,201,203,190,153,247,94,62,243,230,205,76,86,186,226,247,43,104,146,144,182,54,255,229,59,119,239,53,28,252,57,246,9,196,225,112,192,229,118,55,28,206,185,68,
@@ -7760,10 +7760,10 @@ static const unsigned char temp_39a9e1e[] =
 158,112,24,14,246,30,124,249,26,199,204,244,76,213,60,81,121,133,87,94,7,156,75,60,62,42,212,235,245,34,111,113,126,44,225,188,114,42,122,174,29,201,123,157,205,102,14,29,75,69,207,217,150,233,53,246,188,30,225,92,98,148,203,88,77,47,55,28,206,185,68,
 85,11,175,152,54,229,79,230,159,0,3,0,178,38,58,166,235,164,14,20,0,0,0,0,73,69,78,68,174,66,96,130,0,0 };
 
-const char* BinaryData::RadioButtons_neutral02_png = (const char*) temp_39a9e1e;
+const char* BinaryData::RadioButtons_neutral02_png = (const char*) temp_c0966f25;
 
 //================== RadioButtons_neutral-03.png ==================
-static const unsigned char temp_3a8b59f[] =
+static const unsigned char temp_c0a486a6[] =
 { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,31,0,0,0,19,8,6,0,0,0,104,108,214,66,0,0,0,9,112,72,89,115,0,0,11,19,0,0,11,19,1,0,154,156,24,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,97,
 100,121,113,201,101,60,0,0,1,165,73,68,65,84,120,218,196,150,109,75,194,80,20,199,207,220,221,172,12,21,122,130,40,76,139,94,7,245,162,122,19,73,244,213,194,143,209,75,251,0,69,169,212,103,136,232,77,132,154,104,69,234,210,72,216,195,189,235,222,13,133,
 218,217,70,19,244,63,198,6,255,115,206,111,231,222,187,187,73,91,185,92,13,166,36,146,205,230,50,199,39,167,19,7,223,150,111,128,200,178,12,106,60,62,113,184,224,146,88,44,6,241,41,192,5,215,129,43,138,226,49,91,141,58,88,166,25,88,192,182,25,100,54,
@@ -7773,10 +7773,10 @@ static const unsigned char temp_3a8b59f[] =
 66,33,48,174,82,42,65,235,237,3,239,156,137,206,35,192,219,29,13,170,181,122,104,220,211,115,21,173,47,184,132,58,115,254,127,184,200,185,40,22,35,239,237,212,153,115,190,98,141,8,115,62,174,4,151,136,143,71,179,241,50,113,184,224,146,126,191,119,206,
 207,169,252,201,252,8,48,0,227,76,197,247,89,122,10,69,0,0,0,0,73,69,78,68,174,66,96,130,0,0 };
 
-const char* BinaryData::RadioButtons_neutral03_png = (const char*) temp_3a8b59f;
+const char* BinaryData::RadioButtons_neutral03_png = (const char*) temp_c0a486a6;
 
 //================== RadioButtons_neutral-04.png ==================
-static const unsigned char temp_3b6cd20[] =
+static const unsigned char temp_c0b29e27[] =
 { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,31,0,0,0,19,8,6,0,0,0,104,108,214,66,0,0,0,9,112,72,89,115,0,0,11,19,0,0,11,19,1,0,154,156,24,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,97,
 100,121,113,201,101,60,0,0,2,27,73,68,65,84,120,218,196,150,109,79,211,80,24,134,239,182,167,29,219,50,100,176,110,200,48,203,22,127,5,209,15,4,162,63,68,72,36,209,175,26,241,215,248,7,28,159,36,129,69,92,228,69,167,113,250,9,156,16,141,14,98,125,9,91,
 11,117,93,123,138,61,167,209,4,219,17,18,203,246,36,39,79,211,59,231,190,158,231,188,52,21,174,150,74,159,48,160,32,197,98,169,48,61,123,163,239,224,181,202,10,136,36,73,80,98,177,190,195,25,151,136,162,136,216,0,224,140,203,225,178,44,7,196,159,223,
@@ -7788,10 +7788,10 @@ static const unsigned char temp_3b6cd20[] =
 106,149,103,195,180,60,111,59,212,159,113,9,229,123,110,93,200,247,251,217,218,211,158,26,229,123,78,233,185,14,87,212,193,184,132,221,229,253,47,159,251,14,103,92,162,235,237,71,222,24,200,159,204,111,1,6,0,203,214,249,255,62,204,159,178,0,0,0,0,73,
 69,78,68,174,66,96,130,0,0 };
 
-const char* BinaryData::RadioButtons_neutral04_png = (const char*) temp_3b6cd20;
+const char* BinaryData::RadioButtons_neutral04_png = (const char*) temp_c0b29e27;
 
 //================== RadioButtons_neutral-05.png ==================
-static const unsigned char temp_3c4e4a1[] =
+static const unsigned char temp_c0c0b5a8[] =
 { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,30,0,0,0,19,8,6,0,0,0,135,174,189,124,0,0,0,9,112,72,89,115,0,0,11,19,0,0,11,19,1,0,154,156,24,0,0,10,79,105,67,67,80,80,104,111,116,111,115,104,111,112,32,73,67,67,32,112,114,111,102,105,108,101,0,
 0,120,218,157,83,103,84,83,233,22,61,247,222,244,66,75,136,128,148,75,111,82,21,8,32,82,66,139,128,20,145,38,42,33,9,16,74,136,33,161,217,21,81,193,17,69,69,4,27,200,160,136,3,142,142,128,140,21,81,44,12,138,10,216,7,228,33,162,142,131,163,136,138,202,
 251,225,123,163,107,214,188,247,230,205,254,181,215,62,231,172,243,157,179,207,7,192,8,12,150,72,51,81,53,128,12,169,66,30,17,224,131,199,196,198,225,228,46,64,129,10,36,112,0,16,8,179,100,33,115,253,35,1,0,248,126,60,60,43,34,192,7,190,0,1,120,211,11,
@@ -7842,10 +7842,10 @@ static const unsigned char temp_3c4e4a1[] =
 229,42,213,143,142,62,250,227,151,203,24,65,139,24,130,192,255,173,248,237,236,204,95,123,50,69,12,90,68,234,14,193,191,10,17,65,135,229,50,139,153,249,134,130,195,114,25,157,207,187,183,242,121,183,225,63,144,239,3,0,218,200,55,245,184,64,106,163,0,
 0,0,0,73,69,78,68,174,66,96,130,0,0 };
 
-const char* BinaryData::RadioButtons_neutral05_png = (const char*) temp_3c4e4a1;
+const char* BinaryData::RadioButtons_neutral05_png = (const char*) temp_c0c0b5a8;
 
 //================== RadioButtons_selected-01.png ==================
-static const unsigned char temp_647cc073[] =
+static const unsigned char temp_46fb104c[] =
 { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,32,0,0,0,19,8,6,0,0,0,241,148,15,247,0,0,0,9,112,72,89,115,0,0,11,19,0,0,11,19,1,0,154,156,24,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,97,
 100,121,113,201,101,60,0,0,2,134,73,68,65,84,120,218,196,86,75,104,19,81,20,61,47,153,76,147,104,90,146,214,106,68,65,116,81,116,99,43,72,109,87,21,139,65,171,82,161,152,44,20,233,39,70,10,69,219,69,161,16,138,96,65,186,112,227,82,139,248,87,106,53,169,
 46,20,252,130,138,40,45,88,41,46,130,198,66,193,79,98,205,111,38,49,153,207,115,146,148,34,152,31,166,140,15,238,48,188,251,206,187,231,157,185,239,222,33,148,82,88,173,214,147,235,170,140,221,162,76,77,80,121,48,74,240,83,134,10,118,104,120,231,6,118,
@@ -7858,10 +7858,10 @@ static const unsigned char temp_647cc073[] =
 201,56,82,41,9,166,77,13,152,187,228,46,9,35,137,52,171,0,207,211,101,41,173,252,195,9,229,57,81,242,122,81,82,20,72,73,50,247,52,160,67,163,73,84,189,25,101,114,32,250,75,112,79,250,5,79,108,173,1,171,85,110,138,73,65,6,89,252,35,106,169,54,232,28,74,
 103,210,171,173,194,111,1,6,0,169,191,241,34,56,210,107,35,0,0,0,0,73,69,78,68,174,66,96,130,0,0 };
 
-const char* BinaryData::RadioButtons_selected01_png = (const char*) temp_647cc073;
+const char* BinaryData::RadioButtons_selected01_png = (const char*) temp_46fb104c;
 
 //================== RadioButtons_selected-02.png ==================
-static const unsigned char temp_648ad7f4[] =
+static const unsigned char temp_470927cd[] =
 { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,31,0,0,0,19,8,6,0,0,0,104,108,214,66,0,0,0,9,112,72,89,115,0,0,11,19,0,0,11,19,1,0,154,156,24,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,97,
 100,121,113,201,101,60,0,0,2,102,73,68,65,84,120,218,196,150,77,104,19,65,20,199,255,187,153,181,201,134,212,24,42,126,32,86,15,133,10,69,26,40,162,17,84,68,41,10,18,84,90,171,205,69,37,135,74,241,82,240,3,188,120,241,100,241,224,199,69,17,60,104,75,
 43,22,105,197,70,35,226,71,139,7,17,63,138,20,139,208,18,164,24,107,178,105,178,155,110,146,221,117,102,11,10,238,166,132,180,164,11,111,118,118,222,188,249,241,248,207,155,89,210,88,183,121,18,203,244,144,237,155,106,106,187,154,86,85,28,220,253,62,
@@ -7874,10 +7874,10 @@ static const unsigned char temp_648ad7f4[] =
 177,168,3,67,121,209,135,31,212,156,94,31,213,57,81,82,12,227,146,130,166,67,150,141,37,57,175,101,249,119,201,115,25,215,212,92,206,26,21,191,88,76,205,213,188,142,47,169,202,223,106,140,75,98,178,113,47,38,107,203,242,39,243,71,128,1,0,163,90,231,150,
 52,232,169,252,0,0,0,0,73,69,78,68,174,66,96,130,0,0 };
 
-const char* BinaryData::RadioButtons_selected02_png = (const char*) temp_648ad7f4;
+const char* BinaryData::RadioButtons_selected02_png = (const char*) temp_470927cd;
 
 //================== RadioButtons_selected-03.png ==================
-static const unsigned char temp_6498ef75[] =
+static const unsigned char temp_47173f4e[] =
 { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,31,0,0,0,19,8,6,0,0,0,104,108,214,66,0,0,0,9,112,72,89,115,0,0,11,19,0,0,11,19,1,0,154,156,24,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,97,
 100,121,113,201,101,60,0,0,1,190,73,68,65,84,120,218,196,150,189,79,194,80,20,197,207,43,79,144,26,163,68,6,29,140,50,24,29,77,208,196,56,56,184,57,27,157,116,112,116,246,223,80,255,5,227,226,234,224,199,164,51,241,35,58,56,104,116,129,176,16,48,10,161,
 69,90,222,135,125,69,166,190,130,96,130,55,13,29,238,61,231,215,155,243,82,74,230,103,82,89,252,83,209,165,233,228,212,222,66,162,239,224,131,251,79,80,18,33,136,154,70,223,225,138,75,13,239,39,22,239,63,92,113,155,155,15,146,64,243,170,48,140,34,27,
@@ -7887,10 +7887,10 @@ static const unsigned char temp_6498ef75[] =
 133,212,250,251,240,134,191,185,236,26,30,27,107,26,174,31,92,181,157,187,187,60,209,250,43,46,229,76,162,246,213,61,220,204,102,80,127,56,237,56,55,116,123,140,90,61,232,175,184,148,113,1,219,238,30,14,187,134,199,163,195,158,223,237,138,235,103,110,
 247,176,249,95,203,207,220,105,8,60,85,250,255,175,166,184,52,111,203,227,188,205,255,229,75,230,91,128,1,0,165,175,191,223,100,163,205,167,0,0,0,0,73,69,78,68,174,66,96,130,0,0 };
 
-const char* BinaryData::RadioButtons_selected03_png = (const char*) temp_6498ef75;
+const char* BinaryData::RadioButtons_selected03_png = (const char*) temp_47173f4e;
 
 //================== RadioButtons_selected-04.png ==================
-static const unsigned char temp_64a706f6[] =
+static const unsigned char temp_472556cf[] =
 { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,31,0,0,0,19,8,6,0,0,0,104,108,214,66,0,0,0,9,112,72,89,115,0,0,11,19,0,0,11,19,1,0,154,156,24,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,97,
 100,121,113,201,101,60,0,0,2,100,73,68,65,84,120,218,196,150,77,104,211,96,24,199,255,111,154,102,205,92,221,186,85,17,71,173,58,198,188,232,6,14,84,148,162,172,226,7,76,70,65,119,216,209,195,64,60,41,130,99,87,15,122,24,168,7,5,79,83,97,8,165,155,122,
 17,199,16,25,58,61,104,81,118,152,173,171,19,183,22,109,221,154,146,164,31,107,154,248,38,21,81,147,94,180,235,2,239,75,194,147,252,127,255,231,125,222,143,144,174,246,29,159,177,78,23,187,127,187,219,123,177,219,85,115,240,200,155,52,88,98,35,224,234,
@@ -7903,10 +7903,10 @@ static const unsigned char temp_64a706f6[] =
 225,201,103,241,213,66,95,231,178,74,73,133,44,107,107,178,127,71,158,62,174,24,211,185,70,205,229,156,86,243,131,197,168,121,161,168,98,54,83,251,83,77,231,146,206,157,219,70,215,235,79,230,135,0,3,0,71,200,242,251,63,187,157,122,0,0,0,0,73,69,78,68,
 174,66,96,130,0,0 };
 
-const char* BinaryData::RadioButtons_selected04_png = (const char*) temp_64a706f6;
+const char* BinaryData::RadioButtons_selected04_png = (const char*) temp_472556cf;
 
 //================== RadioButtons_selected-05.png ==================
-static const unsigned char temp_64b51e77[] =
+static const unsigned char temp_47336e50[] =
 { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,30,0,0,0,19,8,6,0,0,0,135,174,189,124,0,0,0,9,112,72,89,115,0,0,11,19,0,0,11,19,1,0,154,156,24,0,0,10,79,105,67,67,80,80,104,111,116,111,115,104,111,112,32,73,67,67,32,112,114,111,102,105,108,101,0,
 0,120,218,157,83,103,84,83,233,22,61,247,222,244,66,75,136,128,148,75,111,82,21,8,32,82,66,139,128,20,145,38,42,33,9,16,74,136,33,161,217,21,81,193,17,69,69,4,27,200,160,136,3,142,142,128,140,21,81,44,12,138,10,216,7,228,33,162,142,131,163,136,138,202,
 251,225,123,163,107,214,188,247,230,205,254,181,215,62,231,172,243,157,179,207,7,192,8,12,150,72,51,81,53,128,12,169,66,30,17,224,131,199,196,198,225,228,46,64,129,10,36,112,0,16,8,179,100,33,115,253,35,1,0,248,126,60,60,43,34,192,7,190,0,1,120,211,11,
@@ -7957,10 +7957,10 @@ static const unsigned char temp_64b51e77[] =
 67,47,42,109,196,133,131,158,216,185,173,106,221,105,147,89,82,137,21,26,39,18,154,254,235,201,213,60,226,64,151,202,198,52,99,235,6,155,222,129,127,54,50,165,90,172,177,249,59,150,208,89,45,165,141,110,69,109,250,195,137,253,157,172,168,141,30,48,99,
 15,3,166,34,209,235,207,0,161,143,20,90,35,156,236,45,0,0,0,0,73,69,78,68,174,66,96,130,0,0 };
 
-const char* BinaryData::RadioButtons_selected05_png = (const char*) temp_64b51e77;
+const char* BinaryData::RadioButtons_selected05_png = (const char*) temp_47336e50;
 
 //================== RadioButtons_selected_over-01.png ==================
-static const unsigned char temp_4d6e0f0c[] =
+static const unsigned char temp_8ad4bed3[] =
 { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,32,0,0,0,19,8,6,0,0,0,241,148,15,247,0,0,0,9,112,72,89,115,0,0,11,19,0,0,11,19,1,0,154,156,24,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,97,
 100,121,113,201,101,60,0,0,2,239,73,68,65,84,120,218,196,86,93,72,20,81,20,254,238,236,236,56,179,174,43,91,130,187,130,136,97,81,22,244,3,105,8,134,105,168,245,32,229,147,15,10,25,37,173,81,212,67,15,86,15,65,68,244,212,83,62,244,24,65,68,166,32,18,
 132,63,69,17,82,61,20,171,65,81,216,139,144,238,34,106,59,59,251,51,51,247,118,103,86,130,220,137,149,86,182,129,195,12,115,206,61,223,119,190,57,247,204,37,140,49,4,131,193,75,213,91,188,251,240,31,46,145,131,223,80,138,164,129,211,117,85,82,169,34,
@@ -7974,10 +7974,10 @@ static const unsigned char temp_4d6e0f0c[] =
 210,200,69,104,11,12,70,130,75,111,58,47,213,51,4,0,45,145,231,72,227,242,106,99,67,8,38,77,148,214,236,194,252,232,29,104,81,10,211,2,167,127,95,102,242,166,180,21,136,199,55,103,184,171,35,195,246,76,128,201,96,234,185,135,164,97,114,5,210,38,85,167,
 34,110,212,151,24,155,244,143,219,120,49,86,15,144,64,32,112,130,63,143,52,87,40,40,47,236,113,0,95,227,156,192,218,137,168,105,171,226,238,226,127,38,185,208,39,162,95,2,12,0,137,200,31,90,212,72,119,82,0,0,0,0,73,69,78,68,174,66,96,130,0,0 };
 
-const char* BinaryData::RadioButtons_selected_over01_png = (const char*) temp_4d6e0f0c;
+const char* BinaryData::RadioButtons_selected_over01_png = (const char*) temp_8ad4bed3;
 
 //================== RadioButtons_selected_over-02.png ==================
-static const unsigned char temp_4d7c268d[] =
+static const unsigned char temp_8ae2d654[] =
 { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,31,0,0,0,19,8,6,0,0,0,104,108,214,66,0,0,0,9,112,72,89,115,0,0,11,19,0,0,11,19,1,0,154,156,24,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,97,
 100,121,113,201,101,60,0,0,2,216,73,68,65,84,120,218,196,149,79,72,84,65,28,199,191,51,239,237,190,221,183,184,166,22,145,84,70,137,97,90,33,107,218,22,129,18,17,29,162,67,66,209,255,78,117,137,14,29,11,138,200,110,17,116,232,84,80,116,8,73,41,188,164,
 93,182,63,104,148,34,149,186,176,22,37,122,200,63,152,171,187,179,239,173,251,254,52,111,246,80,235,110,82,107,232,240,230,49,204,252,230,247,249,205,124,103,126,67,130,91,202,31,96,153,138,188,110,165,255,116,83,213,234,37,7,183,14,142,67,46,81,101,
@@ -7991,10 +7991,10 @@ static const unsigned char temp_4d7c268d[] =
 152,175,120,22,147,161,155,152,126,23,130,33,206,65,238,121,14,87,54,121,150,74,104,139,72,214,60,247,176,246,86,140,116,182,65,45,41,130,30,157,134,153,180,97,25,88,240,254,59,92,217,48,45,48,246,31,94,138,152,141,217,169,169,116,251,47,220,57,92,161,
 57,211,236,37,127,82,133,230,201,148,133,254,25,186,228,112,135,43,143,50,251,225,40,51,177,28,229,167,0,3,0,110,188,26,228,110,165,221,163,0,0,0,0,73,69,78,68,174,66,96,130,0,0 };
 
-const char* BinaryData::RadioButtons_selected_over02_png = (const char*) temp_4d7c268d;
+const char* BinaryData::RadioButtons_selected_over02_png = (const char*) temp_8ae2d654;
 
 //================== RadioButtons_selected_over-03.png ==================
-static const unsigned char temp_4d8a3e0e[] =
+static const unsigned char temp_8af0edd5[] =
 { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,31,0,0,0,19,8,6,0,0,0,104,108,214,66,0,0,0,9,112,72,89,115,0,0,11,19,0,0,11,19,1,0,154,156,24,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,97,
 100,121,113,201,101,60,0,0,2,101,73,68,65,84,120,218,196,150,61,143,211,64,16,134,223,89,111,226,195,7,220,33,78,66,128,34,16,80,5,209,32,1,66,162,165,161,166,160,65,80,208,242,51,248,13,84,72,92,139,104,168,40,40,174,58,10,26,78,66,87,33,133,143,0,34,
 137,20,146,216,107,39,142,215,203,172,147,226,108,135,128,41,114,43,37,78,188,51,243,236,188,51,187,54,221,108,94,122,142,67,26,178,177,117,252,193,221,203,167,86,14,126,185,223,129,60,233,73,220,56,99,86,14,223,249,36,33,133,67,112,143,136,242,44,21,
@@ -8007,10 +8007,10 @@ static const unsigned char temp_4d8a3e0e[] =
 233,51,62,35,150,31,110,188,153,144,140,121,129,186,80,115,61,175,185,138,254,243,233,48,250,71,191,5,102,89,205,39,124,122,125,24,138,149,63,82,45,87,182,149,217,110,43,125,40,111,50,191,5,24,0,98,67,27,130,54,13,67,66,0,0,0,0,73,69,78,68,174,66,96,
 130,0,0 };
 
-const char* BinaryData::RadioButtons_selected_over03_png = (const char*) temp_4d8a3e0e;
+const char* BinaryData::RadioButtons_selected_over03_png = (const char*) temp_8af0edd5;
 
 //================== RadioButtons_selected_over-04.png ==================
-static const unsigned char temp_4d98558f[] =
+static const unsigned char temp_8aff0556[] =
 { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,31,0,0,0,19,8,6,0,0,0,104,108,214,66,0,0,0,9,112,72,89,115,0,0,11,19,0,0,11,19,1,0,154,156,24,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,97,
 100,121,113,201,101,60,0,0,2,211,73,68,65,84,120,218,196,150,205,75,20,97,28,199,191,207,204,179,186,179,187,90,90,184,100,25,26,43,149,122,176,64,74,33,37,148,204,50,12,234,84,135,110,65,151,110,29,252,51,58,132,208,169,46,5,33,228,91,210,139,96,16,
 145,93,180,178,14,97,104,33,42,235,186,235,174,59,179,187,243,246,60,61,179,43,184,57,219,69,86,125,96,102,96,158,121,158,207,247,247,250,12,105,109,8,61,193,62,13,90,115,184,252,206,205,198,224,158,131,7,127,132,65,15,249,40,206,85,243,61,135,79,46,
@@ -8024,10 +8024,10 @@ static const unsigned char temp_4d98558f[] =
 109,113,164,210,69,236,159,73,142,228,203,87,66,196,56,202,58,175,192,79,85,68,23,8,212,117,6,61,143,227,112,169,37,154,133,166,237,66,243,222,224,248,250,98,12,114,73,174,166,109,131,131,153,121,49,183,55,99,174,165,119,249,84,35,238,30,144,141,185,
 110,50,204,38,164,61,63,82,29,46,93,212,248,211,69,205,222,151,63,153,191,2,12,0,199,181,70,142,38,155,205,86,0,0,0,0,73,69,78,68,174,66,96,130,0,0 };
 
-const char* BinaryData::RadioButtons_selected_over04_png = (const char*) temp_4d98558f;
+const char* BinaryData::RadioButtons_selected_over04_png = (const char*) temp_8aff0556;
 
 //================== RadioButtons_selected_over-05.png ==================
-static const unsigned char temp_4da66d10[] =
+static const unsigned char temp_8b0d1cd7[] =
 { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,30,0,0,0,19,8,6,0,0,0,135,174,189,124,0,0,0,9,112,72,89,115,0,0,11,19,0,0,11,19,1,0,154,156,24,0,0,10,79,105,67,67,80,80,104,111,116,111,115,104,111,112,32,73,67,67,32,112,114,111,102,105,108,101,0,
 0,120,218,157,83,103,84,83,233,22,61,247,222,244,66,75,136,128,148,75,111,82,21,8,32,82,66,139,128,20,145,38,42,33,9,16,74,136,33,161,217,21,81,193,17,69,69,4,27,200,160,136,3,142,142,128,140,21,81,44,12,138,10,216,7,228,33,162,142,131,163,136,138,202,
 251,225,123,163,107,214,188,247,230,205,254,181,215,62,231,172,243,157,179,207,7,192,8,12,150,72,51,81,53,128,12,169,66,30,17,224,131,199,196,198,225,228,46,64,129,10,36,112,0,16,8,179,100,33,115,253,35,1,0,248,126,60,60,43,34,192,7,190,0,1,120,211,11,
@@ -8080,10 +8080,10 @@ static const unsigned char temp_4da66d10[] =
 210,38,160,217,252,135,89,141,144,218,222,213,127,69,126,47,211,166,159,227,102,123,180,167,147,214,1,202,239,5,92,241,228,72,133,253,94,128,218,110,134,159,111,55,205,200,111,32,127,13,0,111,180,58,50,205,148,146,75,0,0,0,0,73,69,78,68,174,66,96,130,
 0,0 };
 
-const char* BinaryData::RadioButtons_selected_over05_png = (const char*) temp_4da66d10;
+const char* BinaryData::RadioButtons_selected_over05_png = (const char*) temp_8b0d1cd7;
 
 //================== noise_wave.png ==================
-static const unsigned char temp_9db0b117[] =
+static const unsigned char temp_3452c0b0[] =
 { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,4,101,0,0,2,30,8,6,0,0,0,18,223,178,102,0,0,0,9,112,72,89,115,0,0,23,18,0,0,23,18,1,103,159,210,82,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,
 97,100,121,113,201,101,60,0,0,76,229,73,68,65,84,120,218,236,221,235,149,21,55,214,48,96,13,203,255,221,95,4,212,68,64,59,2,202,17,24,71,48,77,4,47,142,192,77,4,120,34,160,39,2,112,4,20,17,24,34,112,57,2,67,4,243,181,56,167,135,6,250,114,46,117,145,180,
 159,103,173,90,96,3,125,78,237,146,84,210,46,149,244,143,4,0,0,0,172,229,228,242,56,189,60,186,237,113,155,225,242,248,112,121,188,19,50,0,0,0,128,253,229,36,204,217,229,241,242,242,248,243,242,248,239,1,199,155,203,227,60,109,146,57,0,0,0,0,220,225,
@@ -8365,10 +8365,10 @@ static const unsigned char temp_9db0b117[] =
 73,212,228,227,97,186,249,117,163,15,151,199,251,203,99,220,30,131,176,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 176,175,255,47,192,0,205,180,140,11,223,168,97,120,0,0,0,0,73,69,78,68,174,66,96,130,0,0 };
 
-const char* BinaryData::noise_wave_png = (const char*) temp_9db0b117;
+const char* BinaryData::noise_wave_png = (const char*) temp_3452c0b0;
 
 //================== saw_wave.png ==================
-static const unsigned char temp_c4474a8[] =
+static const unsigned char temp_cf279681[] =
 { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,4,180,0,0,2,143,8,6,0,0,0,116,54,147,247,0,0,0,9,112,72,89,115,0,0,23,18,0,0,23,18,1,103,159,210,82,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,
 97,100,121,113,201,101,60,0,0,41,190,73,68,65,84,120,218,236,221,141,149,212,102,186,174,225,103,38,129,211,206,64,206,0,71,176,69,6,56,130,45,34,216,16,1,69,4,248,68,208,58,17,152,12,90,19,1,236,8,80,6,144,129,143,100,53,174,6,131,145,212,245,163,159,
 235,90,235,93,94,158,25,51,174,183,170,87,21,55,42,125,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,242,
@@ -8510,10 +8510,10 @@ static const unsigned char temp_c4474a8[] =
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,231,254,191,0,3,0,11,98,146,161,132,82,43,233,0,0,0,0,73,69,78,68,174,66,96,130,0,0 };
 
-const char* BinaryData::saw_wave_png = (const char*) temp_c4474a8;
+const char* BinaryData::saw_wave_png = (const char*) temp_cf279681;
 
 //================== sine_wave.png ==================
-static const unsigned char temp_77db788[] =
+static const unsigned char temp_a0fed0cf[] =
 { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,4,180,0,0,2,171,8,6,0,0,0,232,11,212,215,0,0,0,9,112,72,89,115,0,0,23,18,0,0,23,18,1,103,159,210,82,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,
 97,100,121,113,201,101,60,0,0,49,204,73,68,65,84,120,218,236,221,175,151,36,199,149,40,224,24,205,3,122,200,13,197,156,203,196,92,102,102,78,49,9,109,137,237,178,52,123,102,229,191,96,211,232,157,69,101,182,176,198,200,107,84,18,178,141,170,133,158,88,
 143,153,30,170,22,211,67,51,98,54,242,203,112,85,107,122,52,61,221,153,89,249,43,50,191,239,156,123,122,108,31,219,163,232,200,31,113,51,238,141,15,2,0,0,0,0,36,228,3,67,0,0,0,0,64,74,36,180,0,0,0,0,72,138,132,22,0,0,0,0,73,145,208,2,0,0,0,32,41,18,90,
@@ -8686,10 +8686,10 @@ static const unsigned char temp_77db788[] =
 104,1,0,0,0,144,20,9,45,0,0,0,0,146,34,161,5,0,0,0,64,82,36,180,0,0,0,0,72,138,132,22,0,0,0,0,73,145,208,2,0,0,0,32,41,18,90,0,0,0,0,36,69,66,11,0,0,0,128,164,72,104,1,0,0,0,144,20,9,45,0,0,0,0,146,242,255,5,24,0,142,248,78,14,98,33,228,71,0,0,0,0,73,
 69,78,68,174,66,96,130,0,0 };
 
-const char* BinaryData::sine_wave_png = (const char*) temp_77db788;
+const char* BinaryData::sine_wave_png = (const char*) temp_a0fed0cf;
 
 //================== square_wave.png ==================
-static const unsigned char temp_5a5e8e78[] =
+static const unsigned char temp_97fe71ff[] =
 { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,4,164,0,0,2,171,8,6,0,0,0,207,165,85,63,0,0,0,9,112,72,89,115,0,0,23,18,0,0,23,18,1,103,159,210,82,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,
 97,100,121,113,201,101,60,0,0,23,205,73,68,65,84,120,218,236,221,63,146,148,199,1,198,225,214,138,64,153,55,116,230,225,4,94,157,128,209,9,88,78,160,37,115,6,156,0,113,2,164,208,17,67,228,114,36,136,28,50,202,156,105,201,148,121,148,217,25,206,164,204,
 221,254,190,45,244,7,73,32,161,151,233,238,231,169,234,98,237,64,59,221,223,4,83,191,237,238,41,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
@@ -8760,10 +8760,10 @@ static const unsigned char temp_5a5e8e78[] =
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,14,253,79,128,1,0,153,2,27,8,33,213,49,244,0,0,0,0,73,69,78,68,174,66,96,130,0,0 };
 
-const char* BinaryData::square_wave_png = (const char*) temp_5a5e8e78;
+const char* BinaryData::square_wave_png = (const char*) temp_97fe71ff;
 
 //================== triangle_wave.png ==================
-static const unsigned char temp_d696456d[] =
+static const unsigned char temp_2bcb6334[] =
 { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,4,172,0,0,2,113,8,6,0,0,0,111,215,42,130,0,0,0,9,112,72,89,115,0,0,23,18,0,0,23,18,1,103,159,210,82,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,
 97,100,121,113,201,101,60,0,0,32,173,73,68,65,84,120,218,236,221,251,145,85,199,122,198,225,214,113,2,100,224,9,129,12,204,201,128,16,94,101,64,8,100,160,16,80,6,132,128,28,1,114,4,216,17,72,25,224,189,197,12,12,48,151,125,89,151,175,187,159,167,170,
 171,252,199,41,219,181,46,189,250,251,157,13,180,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
@@ -8872,10 +8872,10 @@ static const unsigned char temp_d696456d[] =
 253,85,213,43,183,1,0,0,0,128,31,189,110,95,226,209,150,161,42,46,59,0,0,0,0,207,121,117,88,239,219,122,161,234,248,107,174,184,204,0,0,0,0,156,235,248,247,73,165,125,137,87,215,254,171,130,199,72,245,166,125,249,203,222,1,88,193,47,46,1,0,0,48,161,151,
 183,235,230,176,254,235,153,255,236,127,31,214,223,135,245,231,97,253,225,210,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,244,239,255,5,24,0,2,125,7,137,153,101,243,194,0,0,0,0,73,69,78,68,174,66,96,130,0,0 };
 
-const char* BinaryData::triangle_wave_png = (const char*) temp_d696456d;
+const char* BinaryData::triangle_wave_png = (const char*) temp_2bcb6334;
 
 //================== wifi.png ==================
-static const unsigned char temp_43e5b62e[] =
+static const unsigned char temp_42cdac87[] =
 { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,1,64,0,0,0,247,8,6,0,0,0,108,40,141,211,0,0,0,9,112,72,89,115,0,0,46,35,0,0,46,35,1,120,165,63,118,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,
 97,100,121,113,201,101,60,0,0,12,225,73,68,65,84,120,218,236,221,139,117,27,199,21,128,225,81,5,102,7,70,7,70,7,130,43,8,58,8,84,65,144,10,12,87,0,167,2,56,21,192,169,128,84,5,164,42,32,93,1,169,10,28,236,209,64,130,104,62,0,98,95,51,247,251,207,185,
 135,142,148,248,132,187,51,255,222,59,51,187,55,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,242,206,37,64,75,92,236,98,250,196,159,79,243,223,157,202,205,46,30,30,253,217,67,254,115,128,0,209,57,123,121,77,114,52,
@@ -8925,10 +8925,10 @@ static const unsigned char temp_43e5b62e[] =
 242,3,16,82,130,228,7,32,164,4,201,15,64,72,9,146,31,128,144,18,36,63,0,33,37,72,126,0,66,74,144,252,0,132,148,32,249,1,8,41,65,242,3,16,82,130,228,7,32,164,4,201,15,64,72,9,146,31,128,144,18,36,63,0,33,37,72,126,0,66,74,144,252,0,0,0,0,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,45,252,95,128,1,0,166,155,18,218,219,72,225,153,0,0,0,0,73,69,78,68,174,66,96,130,0,0 };
 
-const char* BinaryData::wifi_png = (const char*) temp_43e5b62e;
+const char* BinaryData::wifi_png = (const char*) temp_42cdac87;
 
 //================== SourceDrop.png ==================
-static const unsigned char temp_e9da47e3[] =
+static const unsigned char temp_807c577c[] =
 { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,154,0,0,2,209,8,6,0,0,0,163,255,186,145,0,0,0,9,112,72,89,115,0,0,46,35,0,0,46,35,1,120,165,63,118,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,
 97,100,121,113,201,101,60,0,0,24,15,73,68,65,84,120,218,236,157,49,118,219,58,155,64,225,252,234,199,59,120,76,55,93,244,78,154,233,66,173,192,206,10,34,55,108,99,175,64,210,10,226,180,106,44,175,32,206,10,68,151,83,228,68,89,65,152,106,202,167,233,166,
 203,224,139,32,255,50,4,82,36,69,144,50,113,239,57,140,98,218,164,36,232,234,3,64,2,31,206,212,137,144,36,201,185,126,24,234,45,214,219,95,122,139,244,38,251,190,206,231,243,105,195,207,181,52,207,211,36,35,253,58,211,6,95,163,188,190,101,133,67,178,
@@ -9018,10 +9018,10 @@ static const unsigned char temp_e9da47e3[] =
 26,164,75,209,72,34,211,28,63,74,138,38,66,201,96,214,123,31,215,202,78,82,52,153,53,99,58,3,113,133,118,4,84,67,196,90,153,246,239,131,61,5,46,8,209,140,108,43,83,16,183,166,173,177,173,50,183,237,162,119,53,170,131,166,73,95,128,80,217,182,35,165,183,
 255,53,143,89,151,98,217,252,191,0,3,0,92,224,0,25,78,103,130,40,0,0,0,0,73,69,78,68,174,66,96,130,0,0 };
 
-const char* BinaryData::SourceDrop_png = (const char*) temp_e9da47e3;
+const char* BinaryData::SourceDrop_png = (const char*) temp_807c577c;
 
 //================== DefaultDataSource.png ==================
-static const unsigned char temp_83d17403[] =
+static const unsigned char temp_da24564a[] =
 { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,2,14,0,0,2,14,8,6,0,0,0,208,187,133,57,0,0,0,9,112,72,89,115,0,0,46,35,0,0,46,35,1,120,165,63,118,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,97,
 100,121,113,201,101,60,0,0,54,204,73,68,65,84,120,218,236,221,219,113,27,71,211,198,241,33,234,187,55,51,240,58,2,193,55,46,251,74,171,8,76,69,32,40,2,137,17,144,140,64,100,4,130,34,16,20,129,86,87,118,249,198,80,4,239,58,3,58,131,15,35,244,90,16,5,146,
 56,236,244,116,207,252,127,85,44,218,239,129,0,22,187,179,207,246,156,78,2,0,247,254,248,243,175,118,227,95,167,171,159,211,141,127,255,65,254,179,109,78,31,248,239,182,185,93,253,44,31,248,239,63,221,249,247,165,252,127,190,252,127,127,251,245,151,37,
@@ -9220,10 +9220,10 @@ static const unsigned char temp_83d17403[] =
 124,222,248,247,158,65,139,0,193,1,192,126,193,98,168,90,68,177,106,209,200,63,55,193,126,229,98,168,20,12,255,252,175,252,243,80,45,88,50,72,17,32,56,0,200,27,52,54,181,59,252,95,159,110,249,207,134,39,255,135,220,74,24,248,166,114,64,133,0,40,207,255,
 11,48,0,82,9,189,51,228,54,205,183,0,0,0,0,73,69,78,68,174,66,96,130,0,0 };
 
-const char* BinaryData::DefaultDataSource_png = (const char*) temp_83d17403;
+const char* BinaryData::DefaultDataSource_png = (const char*) temp_da24564a;
 
 //================== FileReaderIcon.png ==================
-static const unsigned char temp_a3ff92b1[] =
+static const unsigned char temp_f56e2dca[] =
 { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,2,43,0,0,2,165,8,6,0,0,0,10,20,172,128,0,0,0,9,112,72,89,115,0,0,46,35,0,0,46,35,1,120,165,63,118,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,97,
 100,121,113,201,101,60,0,0,13,207,73,68,65,84,120,218,236,221,193,109,219,102,24,199,97,167,224,189,217,160,26,33,39,130,60,69,222,32,27,68,217,160,157,64,244,6,217,32,242,4,237,6,97,78,36,120,202,8,234,6,206,4,233,171,194,45,138,130,110,42,231,179,244,
 138,126,30,224,3,115,50,132,191,232,234,87,17,65,94,12,227,244,245,234,219,250,171,60,62,37,122,45,159,227,220,101,121,45,109,83,223,93,1,192,194,188,248,159,177,2,23,27,113,113,190,216,69,220,2,98,5,96,9,17,183,143,243,123,162,215,178,207,242,90,34,
@@ -9269,10 +9269,10 @@ static const unsigned char temp_a3ff92b1[] =
 127,254,79,195,56,173,205,12,0,100,141,149,205,253,1,0,120,20,143,129,0,0,177,2,0,32,86,0,0,177,2,0,32,86,0,0,196,10,0,32,86,0,0,196,10,0,32,86,0,0,196,10,0,128,88,1,0,196,10,0,128,88,1,0,196,10,0,128,88,1,0,16,43,0,128,88,1,0,16,43,0,128,88,1,0,16,43,
 0,0,98,5,0,16,43,0,0,167,240,135,0,3,0,22,72,102,252,69,115,49,232,0,0,0,0,73,69,78,68,174,66,96,130,0,0 };
 
-const char* BinaryData::FileReaderIcon_png = (const char*) temp_a3ff92b1;
+const char* BinaryData::FileReaderIcon_png = (const char*) temp_f56e2dca;
 
 //================== IntanIcon.png ==================
-static const unsigned char temp_1c931bf2[] =
+static const unsigned char temp_b6143539[] =
 { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,2,88,0,0,2,88,8,6,0,0,0,190,102,152,220,0,0,0,9,112,72,89,115,0,0,46,35,0,0,46,35,1,120,165,63,118,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,
 97,100,121,113,201,101,60,0,0,63,109,73,68,65,84,120,218,236,221,219,117,219,198,162,6,96,56,43,239,155,187,130,208,21,88,126,201,74,158,76,87,96,185,2,83,21,88,170,64,82,5,146,43,16,93,129,229,10,68,63,37,43,47,86,42,48,83,193,81,42,216,7,99,13,19,154,
 230,5,131,27,1,242,251,214,194,102,182,197,203,112,0,2,63,102,6,131,39,89,71,252,246,251,31,71,249,67,88,134,249,242,44,95,6,241,79,71,11,255,13,0,240,144,47,247,11,255,253,103,190,204,194,191,253,250,203,207,247,93,40,224,147,29,7,170,227,124,121,145,
@@ -9503,10 +9503,10 @@ static const unsigned char temp_1c931bf2[] =
 105,213,2,0,154,55,203,151,219,124,121,95,245,202,192,206,6,172,21,97,107,148,47,175,178,199,150,45,115,105,1,0,85,133,57,172,66,144,250,152,47,211,54,67,85,39,2,214,154,192,53,140,97,235,167,236,223,22,174,97,166,181,11,0,248,215,44,46,243,255,254,43,
 134,170,217,174,2,213,178,255,23,96,0,208,173,232,3,246,227,153,225,0,0,0,0,73,69,78,68,174,66,96,130,0,0 };
 
-const char* BinaryData::IntanIcon_png = (const char*) temp_1c931bf2;
+const char* BinaryData::IntanIcon_png = (const char*) temp_b6143539;
 
 //================== muteoff.png ==================
-static const unsigned char temp_db8d15fa[] =
+static const unsigned char temp_1b4bd001[] =
 { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,165,0,0,0,119,8,6,0,0,0,98,221,128,254,0,0,0,9,112,72,89,115,0,0,46,35,0,0,46,35,1,120,165,63,118,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,
 97,100,121,113,201,101,60,0,0,7,127,73,68,65,84,120,218,236,93,237,141,219,56,16,157,13,238,255,169,131,232,42,136,58,136,174,130,115,42,136,182,3,167,130,213,85,160,77,5,74,7,218,171,64,238,64,78,5,187,169,192,123,21,236,217,128,140,91,24,182,197,33,
 135,228,144,126,15,32,2,36,182,98,146,79,111,190,248,65,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,23,119,24,2,49,52,251,246,215,190,21,251,182,221,183,239,251,246,130,97,1,98,224,64,194,105,223,222,78,218,110,223,86,24,30,64,11,33,223,183,10,195,4,132,194,106,
@@ -9537,10 +9537,10 @@ static const unsigned char temp_db8d15fa[] =
 182,24,66,64,147,106,154,30,135,13,0,193,84,19,102,16,80,165,154,3,134,10,8,141,134,174,87,64,96,182,129,104,196,220,157,81,72,16,210,2,119,24,2,81,172,102,34,110,136,127,239,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,224,63,1,6,0,199,74,112,
 188,78,34,32,245,0,0,0,0,73,69,78,68,174,66,96,130,0,0 };
 
-const char* BinaryData::muteoff_png = (const char*) temp_db8d15fa;
+const char* BinaryData::muteoff_png = (const char*) temp_1b4bd001;
 
 //================== muteon.png ==================
-static const unsigned char temp_b4d8aaca[] =
+static const unsigned char temp_b6e713e3[] =
 { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,165,0,0,0,119,8,6,0,0,0,98,221,128,254,0,0,0,9,112,72,89,115,0,0,46,35,0,0,46,35,1,120,165,63,118,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,
 97,100,121,113,201,101,60,0,0,5,175,73,68,65,84,120,218,236,157,225,113,219,54,20,128,41,95,7,144,39,40,51,65,153,9,66,79,80,101,130,72,19,84,158,32,242,4,106,38,176,55,80,58,129,212,9,228,78,32,101,2,187,19,176,192,9,185,178,172,34,63,146,32,240,32,
 126,223,29,207,254,33,203,226,227,167,247,0,16,0,179,12,0,0,0,0,0,0,0,0,0,32,46,19,66,224,135,170,170,230,230,199,175,230,152,154,227,217,28,95,38,147,201,145,200,64,12,25,167,230,216,87,255,231,197,28,51,34,4,90,132,172,83,16,41,8,37,228,204,101,195,
@@ -9565,10 +9565,10 @@ static const unsigned char temp_b4d8aaca[] =
 38,65,91,214,228,14,14,168,202,154,60,228,30,130,203,121,233,105,25,123,202,54,196,20,179,57,87,115,131,144,221,96,31,27,191,114,218,182,163,21,113,215,246,185,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,61,252,35,192,0,171,7,136,102,133,179,227,147,0,0,0,
 0,73,69,78,68,174,66,96,130,0,0 };
 
-const char* BinaryData::muteon_png = (const char*) temp_b4d8aaca;
+const char* BinaryData::muteon_png = (const char*) temp_b6e713e3;
 
 //================== MergerA-01.png ==================
-static const unsigned char temp_1d080779[] =
+static const unsigned char temp_311a3c12[] =
 { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,2,69,0,0,1,169,8,6,0,0,0,131,16,66,165,0,0,0,9,112,72,89,115,0,0,46,35,0,0,46,35,1,120,165,63,118,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,97,
 100,121,113,201,101,60,0,0,21,118,73,68,65,84,120,218,236,221,189,111,93,71,122,7,224,33,205,133,100,55,75,195,69,108,96,131,28,117,74,82,136,238,210,36,190,238,220,45,221,109,170,92,117,73,181,218,46,157,168,191,64,18,130,0,219,241,170,76,37,186,220,
 138,87,221,22,73,72,45,16,239,166,226,81,103,87,146,58,17,145,172,204,240,156,107,82,50,181,226,199,189,119,230,156,243,60,192,64,194,98,23,246,190,188,31,63,190,243,158,153,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
@@ -9646,10 +9646,10 @@ static const unsigned char temp_1d080779[] =
 248,195,31,30,43,12,66,17,148,105,26,154,109,180,127,89,116,32,18,138,24,98,32,26,159,252,207,126,241,139,191,60,90,127,252,246,219,240,242,229,255,41,18,66,17,148,97,18,215,111,98,24,186,179,204,71,246,189,163,25,108,32,154,249,139,79,63,13,127,253,
 55,127,27,254,251,191,254,83,48,66,40,130,124,82,39,232,183,113,253,99,12,67,15,114,28,238,248,255,2,12,0,160,41,104,168,212,59,220,159,0,0,0,0,73,69,78,68,174,66,96,130,0,0 };
 
-const char* BinaryData::MergerA01_png = (const char*) temp_1d080779;
+const char* BinaryData::MergerA01_png = (const char*) temp_311a3c12;
 
 //================== MergerA-02.png ==================
-static const unsigned char temp_1d161efa[] =
+static const unsigned char temp_31285393[] =
 { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,2,69,0,0,1,169,8,6,0,0,0,131,16,66,165,0,0,0,9,112,72,89,115,0,0,46,35,0,0,46,35,1,120,165,63,118,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,97,
 100,121,113,201,101,60,0,0,21,221,73,68,65,84,120,218,236,221,207,143,220,229,125,192,241,199,6,20,145,3,24,113,104,14,84,76,14,68,42,145,98,71,109,165,68,106,203,112,171,0,41,246,49,39,236,219,70,171,85,234,191,0,175,170,168,205,41,187,26,141,58,55,
 102,149,246,18,21,177,72,148,156,130,191,62,1,39,198,28,210,10,34,49,78,140,212,139,221,129,74,56,17,152,246,251,236,124,7,111,28,227,95,187,51,207,243,253,62,175,151,52,26,43,34,96,127,118,215,251,222,231,121,190,223,239,145,0,29,55,24,142,94,174,223,
@@ -9729,10 +9729,10 @@ static const unsigned char temp_1d161efa[] =
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,0,7,243,255,2,12,0,244,180,87,201,128,90,137,162,0,0,0,0,73,69,78,68,174,66,96,130,0,0 };
 
-const char* BinaryData::MergerA02_png = (const char*) temp_1d161efa;
+const char* BinaryData::MergerA02_png = (const char*) temp_31285393;
 
 //================== MergerB-01.png ==================
-static const unsigned char temp_84e93458[] =
+static const unsigned char temp_98fb68f1[] =
 { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,2,69,0,0,1,169,8,6,0,0,0,131,16,66,165,0,0,0,9,112,72,89,115,0,0,46,35,0,0,46,35,1,120,165,63,118,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,97,
 100,121,113,201,101,60,0,0,22,71,73,68,65,84,120,218,236,221,193,110,92,215,125,192,225,35,195,64,150,97,158,160,147,39,16,253,4,30,111,219,2,161,159,32,163,29,1,130,144,252,4,146,94,160,148,58,24,100,18,47,56,68,187,106,211,74,6,28,103,149,112,180,106,
 187,210,72,221,217,5,60,130,232,165,108,102,99,67,128,1,245,156,185,119,68,202,162,109,82,26,206,57,247,222,239,67,47,168,4,110,98,255,69,101,126,60,231,220,123,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
@@ -9813,10 +9813,10 @@ static const unsigned char temp_84e93458[] =
 90,156,33,18,68,136,34,40,194,36,100,60,119,36,138,232,108,24,185,195,12,81,4,197,154,214,113,52,21,69,112,201,254,254,31,254,241,240,179,63,125,218,55,9,68,17,20,109,30,214,248,42,17,81,68,23,221,138,215,77,99,64,20,65,99,164,67,217,31,94,246,182,218,
 187,230,76,199,92,248,185,69,0,100,51,13,107,124,50,182,40,66,16,1,80,154,73,200,240,14,53,81,132,32,2,160,4,199,117,12,221,205,117,247,217,255,11,48,0,4,145,141,135,126,85,212,174,0,0,0,0,73,69,78,68,174,66,96,130,0,0 };
 
-const char* BinaryData::MergerB01_png = (const char*) temp_84e93458;
+const char* BinaryData::MergerB01_png = (const char*) temp_98fb68f1;
 
 //================== MergerB-02.png ==================
-static const unsigned char temp_84f74bd9[] =
+static const unsigned char temp_99098072[] =
 { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,2,69,0,0,1,169,8,6,0,0,0,131,16,66,165,0,0,0,9,112,72,89,115,0,0,46,35,0,0,46,35,1,120,165,63,118,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,97,
 100,121,113,201,101,60,0,0,18,109,73,68,65,84,120,218,236,221,253,109,28,199,25,192,225,161,97,88,127,90,174,192,231,10,76,87,224,77,5,145,42,48,85,129,237,10,44,86,16,177,2,31,43,200,165,2,175,42,200,169,2,173,42,200,249,207,0,1,156,27,237,94,72,43,
 148,248,117,119,243,238,204,243,0,7,25,65,128,216,175,201,240,199,249,216,253,60,65,253,126,221,126,206,140,129,154,125,254,228,137,33,48,87,203,237,231,242,63,255,254,119,95,252,251,200,191,11,4,17,0,71,182,153,98,232,98,27,67,67,152,95,46,252,123,65,
@@ -9883,10 +9883,10 @@ static const unsigned char temp_84f74bd9[] =
 0,0,68,17,0,128,40,2,0,16,69,0,0,162,8,0,64,20,1,0,136,34,0,0,81,4,0,32,138,0,0,68,17,0,128,40,2,0,16,69,0,0,162,8,0,64,20,1,0,136,34,0,0,81,4,0,32,138,0,0,68,17,0,128,40,2,0,16,69,0,0,162,8,0,64,20,1,0,136,34,0,0,81,4,0,32,138,0,0,68,17,0,128,40,2,0,
 16,69,0,0,162,8,0,64,20,1,0,136,34,0,0,81,4,0,32,138,0,0,68,17,0,128,40,2,0,16,69,0,0,181,248,175,0,3,0,94,88,236,111,126,120,246,51,0,0,0,0,73,69,78,68,174,66,96,130,0,0 };
 
-const char* BinaryData::MergerB02_png = (const char*) temp_84f74bd9;
+const char* BinaryData::MergerB02_png = (const char*) temp_99098072;
 
 //================== PipelineA-01.png ==================
-static const unsigned char temp_d2682521[] =
+static const unsigned char temp_2abf977a[] =
 { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,2,49,0,0,1,169,8,6,0,0,0,124,178,103,71,0,0,0,9,112,72,89,115,0,0,46,35,0,0,46,35,1,120,165,63,118,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,
 97,100,121,113,201,101,60,0,0,20,161,73,68,65,84,120,218,236,221,77,118,220,198,213,6,224,82,236,121,232,89,102,129,87,96,122,5,106,175,192,202,10,212,90,129,153,21,136,90,1,165,21,176,51,250,134,162,71,223,80,240,10,68,205,50,19,178,2,209,179,204,148,
 174,3,180,217,110,145,84,55,8,116,85,1,207,115,78,29,57,63,199,150,47,33,246,203,91,183,80,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,22,190,81,2,128,193,124,92,175,39,235,245,239,245,250,175,114,0,0,165,248,220,173,79,235,
@@ -9961,10 +9961,10 @@ static const unsigned char temp_d2682521[] =
 0,132,24,40,73,28,224,125,17,12,242,2,8,49,80,88,128,137,91,72,6,121,1,132,24,40,138,147,72,0,66,12,20,25,96,174,148,1,64,136,129,210,2,204,74,25,0,132,24,40,201,107,1,6,96,222,188,39,134,18,197,240,242,66,25,0,230,77,39,6,1,6,0,33,6,4,24,0,132,24,16,
 96,0,16,98,16,96,0,152,154,111,149,128,204,57,70,13,192,157,116,98,16,96,0,40,210,255,4,24,0,27,12,93,110,21,245,184,159,0,0,0,0,73,69,78,68,174,66,96,130,0,0 };
 
-const char* BinaryData::PipelineA01_png = (const char*) temp_d2682521;
+const char* BinaryData::PipelineA01_png = (const char*) temp_2abf977a;
 
 //================== PipelineA-02.png ==================
-static const unsigned char temp_d2763ca2[] =
+static const unsigned char temp_2acdaefb[] =
 { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,2,49,0,0,1,169,8,6,0,0,0,124,178,103,71,0,0,0,9,112,72,89,115,0,0,46,35,0,0,46,35,1,120,165,63,118,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,
 97,100,121,113,201,101,60,0,0,25,18,73,68,65,84,120,218,236,221,191,114,28,199,157,192,241,214,149,67,178,12,101,167,75,52,10,200,84,36,93,133,2,18,97,121,14,233,42,83,145,228,72,96,157,157,185,78,160,99,203,36,66,251,2,146,137,47,228,224,94,64,240,19,
 104,20,1,133,132,208,19,104,239,9,4,63,1,111,154,59,123,128,36,252,217,157,253,51,221,51,159,79,213,214,74,182,69,139,63,146,139,47,122,122,166,67,8,225,173,151,87,74,175,91,183,111,191,125,93,254,207,15,71,199,39,247,2,0,92,225,189,230,11,7,36,225,206,
@@ -10056,10 +10056,10 @@ static const unsigned char temp_d2763ca2[] =
 25,5,136,24,128,212,157,133,243,243,140,198,198,1,34,6,32,117,49,88,28,9,0,34,6,32,27,85,152,172,186,28,26,5,136,24,128,28,148,77,188,156,26,5,136,24,128,212,77,143,4,40,237,119,1,17,3,144,131,24,44,251,110,145,6,17,3,144,139,170,137,151,202,40,64,196,
 0,228,160,12,142,4,0,17,3,144,137,24,44,142,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,240,127,2,12,0,195,72,32,13,219,83,201,41,0,0,0,0,73,69,78,68,174,66,96,130,0,0 };
 
-const char* BinaryData::PipelineA02_png = (const char*) temp_d2763ca2;
+const char* BinaryData::PipelineA02_png = (const char*) temp_2acdaefb;
 
 //================== PipelineB-01.png ==================
-static const unsigned char temp_3a495200[] =
+static const unsigned char temp_92a0c459[] =
 { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,2,49,0,0,1,169,8,6,0,0,0,124,178,103,71,0,0,0,9,112,72,89,115,0,0,46,35,0,0,46,35,1,120,165,63,118,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,
 97,100,121,113,201,101,60,0,0,23,202,73,68,65,84,120,218,236,221,191,111,164,199,125,192,225,177,99,56,141,4,159,75,167,241,186,184,107,69,157,1,130,108,196,85,107,5,208,165,58,5,72,34,30,98,215,186,75,109,231,142,165,227,66,199,198,46,245,242,47,16,
 13,196,85,18,248,149,155,93,108,99,10,112,106,189,174,148,146,130,221,43,239,104,223,21,87,247,131,183,187,220,221,153,217,247,121,128,5,37,69,145,229,239,209,224,231,102,230,125,39,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,
@@ -10146,10 +10146,10 @@ static const unsigned char temp_3a495200[] =
 175,127,249,203,162,231,100,4,12,0,223,240,55,237,231,137,49,144,218,31,254,240,73,248,235,95,255,18,14,14,14,5,12,0,34,134,178,252,239,159,254,20,254,239,243,207,195,221,31,223,13,223,253,238,223,206,254,114,124,140,250,196,116,0,120,145,47,125,124,
 114,250,220,190,115,231,203,255,250,239,255,249,114,52,158,28,251,159,39,0,47,243,255,2,12,0,38,140,193,224,172,166,247,238,0,0,0,0,73,69,78,68,174,66,96,130,0,0 };
 
-const char* BinaryData::PipelineB01_png = (const char*) temp_3a495200;
+const char* BinaryData::PipelineB01_png = (const char*) temp_92a0c459;
 
 //================== PipelineB-02.png ==================
-static const unsigned char temp_3a576981[] =
+static const unsigned char temp_92aedbda[] =
 { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,2,49,0,0,1,169,8,6,0,0,0,124,178,103,71,0,0,0,9,112,72,89,115,0,0,46,35,0,0,46,35,1,120,165,63,118,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,
 97,100,121,113,201,101,60,0,0,20,155,73,68,65,84,120,218,236,221,189,122,28,71,118,6,224,162,54,217,141,4,101,155,169,121,5,132,50,103,28,101,206,22,190,130,29,101,206,12,103,206,22,186,2,72,87,192,209,21,16,190,2,54,51,103,4,51,109,132,118,182,142,72,
 101,206,184,93,238,30,99,22,4,64,204,95,119,157,238,247,125,158,122,160,213,15,151,60,232,25,124,83,117,170,234,89,74,233,83,130,242,124,108,199,247,237,184,86,10,0,238,243,76,136,161,240,32,243,67,59,174,148,2,0,33,134,136,114,144,89,41,3,0,66,12,130,
@@ -10224,4 +10224,4 @@ static const unsigned char temp_3a576981[] =
 228,45,210,23,73,191,11,0,16,36,196,184,18,0,0,8,21,98,242,146,209,66,105,1,128,8,33,38,247,187,92,38,253,46,0,64,144,16,227,74,0,0,32,84,136,201,253,46,103,202,7,0,68,9,49,185,223,229,84,217,0,128,8,33,102,125,37,64,165,92,0,64,132,16,179,238,119,1,
 0,8,17,98,114,191,203,66,105,0,128,40,33,198,149,0,0,64,24,174,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,241,119,1,6,0,159,157,76,71,98,187,78,10,0,0,0,0,73,69,78,68,174,66,96,130,0,0 };
 
-const char* BinaryData::PipelineB02_png = (const char*) temp_3a576981;
+const char* BinaryData::PipelineB02_png = (const char*) temp_92aedbda;
diff --git a/JuceLibraryCode/JuceHeader.h b/JuceLibraryCode/JuceHeader.h
index deec28dd3f67863f3f3b52ee5caeb9b69861365d..285c774e6e293755ea6fd71c7ec5c779b40671a1 100644
--- a/JuceLibraryCode/JuceHeader.h
+++ b/JuceLibraryCode/JuceHeader.h
@@ -10,8 +10,8 @@
 
 */
 
-#ifndef __APPHEADERFILE_DFAE8F6C__
-#define __APPHEADERFILE_DFAE8F6C__
+#ifndef __APPHEADERFILE_4C95AFCD__
+#define __APPHEADERFILE_4C95AFCD__
 
 #include "AppConfig.h"
 #include "juce_amalgamated.h"
@@ -24,4 +24,4 @@ namespace ProjectInfo
     const int          versionNumber  = 0x0;
 }
 
-#endif   // __APPHEADERFILE_DFAE8F6C__
+#endif   // __APPHEADERFILE_4C95AFCD__
diff --git a/Source/Processors/ArduinoOutput.cpp b/Source/Processors/ArduinoOutput.cpp
index 936a6a14435f4c9a0fad77252fbfb8c38c4e9b65..45c3dc54ac67a821c9c546c72355c72385af1162 100755
--- a/Source/Processors/ArduinoOutput.cpp
+++ b/Source/Processors/ArduinoOutput.cpp
@@ -42,7 +42,7 @@ AudioProcessorEditor* ArduinoOutput::createEditor()
  	return editor;
 }
 
-void ArduinoOutput::handleEvent(int eventType, MidiMessage& event)
+void ArduinoOutput::handleEvent(int eventType, MidiMessage& event, int sampleNum)
 {
     if (eventType == TTL)
     {
diff --git a/Source/Processors/ArduinoOutput.h b/Source/Processors/ArduinoOutput.h
index d33f06b9efb0521eb3da16012b167a7225ca5bc8..3c95ff0d459c131cf21d24e1bc5166a67a0385af 100755
--- a/Source/Processors/ArduinoOutput.h
+++ b/Source/Processors/ArduinoOutput.h
@@ -57,7 +57,7 @@ public:
 	
 	void setParameter (int parameterIndex, float newValue);
 
-    void handleEvent(int eventType, MidiMessage& event);
+    void handleEvent(int eventType, MidiMessage& event, int sampleNum);
 
     bool enable();
     bool disable();
diff --git a/Source/Processors/AudioNode.cpp b/Source/Processors/AudioNode.cpp
index 6cd6abb311668f47006883be5a4f6a1691685ed1..cf8971f42d14f3363a69cc1b4552514473dbbd14 100755
--- a/Source/Processors/AudioNode.cpp
+++ b/Source/Processors/AudioNode.cpp
@@ -166,32 +166,35 @@ void AudioNode::process(AudioSampleBuffer &buffer,
 	// clear the left and right channels
 	buffer.clear(0,0,buffer.getNumSamples());
 	buffer.clear(1,0,buffer.getNumSamples());
-
-	for (int i = 2; i < buffer.getNumChannels(); i++)
+	
+	if (channelPointers.size() > 0) 
 	{
-
-		if (channelPointers[i-2]->isMonitored)
+		for (int i = 2; i < buffer.getNumChannels(); i++)
 		{
-			buffer.addFrom(0,  		// destination channel
-					   0,  			// destination start sample
-					   buffer,      // source
-					   i, 			// source channel
-					   0,           // source start sample
-					   buffer.getNumSamples(), //  number of samples
-					   volume       // gain to apply
-					   );
-
-			buffer.addFrom(1,  		// destination channel
-					   0,  			// destination start sample
-					   buffer,      // source
-					   i, 			// source channel
-					   0,           // source start sample
-					   buffer.getNumSamples(), //  number of samples
-					   volume       // gain to apply
-					   );
 
-		}
+			if (channelPointers[i-2]->isMonitored)
+			{
+				buffer.addFrom(0,  		// destination channel
+					0,  			// destination start sample
+					buffer,      // source
+					i, 			// source channel
+					0,           // source start sample
+					buffer.getNumSamples(), //  number of samples
+					volume       // gain to apply
+					);
+
+				buffer.addFrom(1,  		// destination channel
+					0,  			// destination start sample
+					buffer,      // source
+					i, 			// source channel
+					0,           // source start sample
+					buffer.getNumSamples(), //  number of samples
+					volume       // gain to apply
+					);
+
+			}
 
+		}
 	}
 
 }
diff --git a/Source/Processors/Channel.cpp b/Source/Processors/Channel.cpp
index 8430c8ae592d47b21c18047463e33b8afbc72043..bb75c3584e5d8e5658834eb8fc63f27935b3cba6 100644
--- a/Source/Processors/Channel.cpp
+++ b/Source/Processors/Channel.cpp
@@ -30,6 +30,7 @@ Channel::Channel(GenericProcessor* p, int n) :
 	sampleRate(44100.0f), bitVolts(1.0f), eventType(0)
 
 {
+	nodeId = p->getNodeId();
 
 	createDefaultName();
 }
@@ -45,7 +46,14 @@ Channel::Channel(const Channel& ch)
 	bitVolts = ch.bitVolts;
 	name = ch.name;
 	eventType = ch.eventType;
+	nodeId = ch.nodeId;
+	num = ch.num;
+}
 
+void Channel::setProcessor(GenericProcessor* p)
+{
+	processor = p;
+	nodeId = p->getNodeId();
 }
 
 String Channel::getName()
@@ -66,5 +74,5 @@ void Channel::reset()
 void Channel::createDefaultName()
 {
 	name = String("CH");
-	name += num;
+	name += (num + 1);
 }
\ No newline at end of file
diff --git a/Source/Processors/Channel.h b/Source/Processors/Channel.h
index 247d7fcbc2e1d8e56c39e892d08ff64aad716eab..c24998321c08922971b43232c0e118cbfea67450 100644
--- a/Source/Processors/Channel.h
+++ b/Source/Processors/Channel.h
@@ -60,9 +60,14 @@ public:
 
 	void reset();
 
+	void setProcessor(GenericProcessor*);
+
 	// channel number:
 	int num;
 
+	// node id
+	int nodeId;
+
 	// event info:
 	int eventType;
 
diff --git a/Source/Processors/DataThreads/FPGAThread.cpp b/Source/Processors/DataThreads/FPGAThread.cpp
index 30168c7894f06a9845577aa0bda4a5b54fbdb0b7..9d5899a85ac8c975d70cee44371b629d8b144537 100644
--- a/Source/Processors/DataThreads/FPGAThread.cpp
+++ b/Source/Processors/DataThreads/FPGAThread.cpp
@@ -97,7 +97,7 @@ int FPGAThread::getNumChannels()
 
 int FPGAThread::getNumEventChannels()
 {
-    return 8;
+    return 16; // 8 inputs, 8 outputs
 }
 
 float FPGAThread::getSampleRate()
@@ -295,7 +295,7 @@ bool FPGAThread::updateBuffer()
             if (j % 200 != 0)
             {
             	std::cout << "Buffer not aligned " << j << " " << accumulator << std::endl;
-            	return false;
+            	//return false;
             }
 
             if (i == 1)
@@ -323,7 +323,14 @@ bool FPGAThread::updateBuffer()
             
             
             eventCode = pBuffer[j+6]; // TTL input
-            ttl_out = pBuffer[j+7];   // TTL output
+            ttl_out = pBuffer[j+7];
+
+            if (ttl_out > 0)
+            {
+            	eventCode |= 0x100;   // TTL output
+            	//std::cout << "TLL out!" << std::endl;
+            }
+            	
 		
 			j += 8; //move cursor to 1st data byte
 
@@ -486,6 +493,9 @@ bool FPGAThread::initializeFPGA(bool verbose)
 			printf("FrontPanel support is not enabled.\n");
 	}
 
+	dev->SetWireInValue(0x01, 0);
+    dev->UpdateWireIns();
+
 	return true;
 
 	// this is not executed (after returning true)
diff --git a/Source/Processors/Editors/RecordControlEditor.cpp b/Source/Processors/Editors/RecordControlEditor.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..90eea8a7428ba51be9ca747c5ab467564ea2744e
--- /dev/null
+++ b/Source/Processors/Editors/RecordControlEditor.cpp
@@ -0,0 +1,78 @@
+/*
+    ------------------------------------------------------------------
+
+    This file is part of the Open Ephys GUI
+    Copyright (C) 2012 Open Ephys
+
+    ------------------------------------------------------------------
+
+    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 3 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, see <http://www.gnu.org/licenses/>.
+
+*/
+
+#include "RecordControlEditor.h"
+#include "../Utilities/RecordControl.h"
+#include "ChannelSelector.h"
+#include <stdio.h>
+
+RecordControlEditor::RecordControlEditor (GenericProcessor* parentNode)
+	: GenericEditor(parentNode)
+{
+	desiredWidth = 170;
+
+	channelSelector->eventsOnly = true;
+
+	chanSel = new Label("Chanel Text","Available Event Channels");
+	chanSel->setEditable(false);
+	chanSel->setJustificationType(Justification::centredLeft);
+	chanSel->setBounds(20,30,120,20);
+
+	addAndMakeVisible(chanSel);
+
+	
+	availableChans = new ComboBox("Event Channels");
+
+	availableChans->setEditableText(false);
+	availableChans->setJustificationType(Justification::centredLeft);
+	availableChans->addListener(this);
+	availableChans->setBounds(20,60,120,20);
+	availableChans->setSelectedId(0);
+
+	addAndMakeVisible(availableChans);
+
+	
+}
+
+RecordControlEditor::~RecordControlEditor()
+{
+	deleteAllChildren();
+}
+
+void RecordControlEditor::comboBoxChanged(ComboBox* comboBox)
+{
+	RecordControl *processor = (RecordControl*)getProcessor();
+	if (comboBox->getSelectedId() > 0)
+		processor->updateTriggerChannel(processor->eventChannels[comboBox->getSelectedId()-1]->num );
+	else
+		processor->updateTriggerChannel(-1);
+}
+
+void RecordControlEditor::updateSettings()
+{
+	availableChans->clear();
+	GenericProcessor* processor = getProcessor();
+	for (int i = 0; i < processor->eventChannels.size() ; i++)
+		availableChans->addItem(processor->eventChannels[i]->name,i+1);
+
+}
\ No newline at end of file
diff --git a/Source/Processors/Editors/RecordControlEditor.h b/Source/Processors/Editors/RecordControlEditor.h
new file mode 100644
index 0000000000000000000000000000000000000000..c010e00e667e1bed3f6f3b1fd549529fa1a1b4d6
--- /dev/null
+++ b/Source/Processors/Editors/RecordControlEditor.h
@@ -0,0 +1,53 @@
+/*
+    ------------------------------------------------------------------
+
+    This file is part of the Open Ephys GUI
+    Copyright (C) 2012 Open Ephys
+
+    ------------------------------------------------------------------
+
+    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 3 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, see <http://www.gnu.org/licenses/>.
+
+*/
+
+#ifndef __RECORDCONTROLEDITOR_H_F9C69E2B__
+#define __RECORDCONTROLEDITOR_H_F9C69E2B__
+
+#ifdef WIN32
+#include <Windows.h>
+#endif
+#include "../../../JuceLibraryCode/JuceHeader.h"
+#include "GenericEditor.h"
+
+
+class RecordControlEditor : public GenericEditor,
+							public ComboBox::Listener
+{
+public:
+	RecordControlEditor (GenericProcessor* parentNode);
+	~RecordControlEditor();
+	void comboBoxChanged(ComboBox* comboBox);
+	void updateSettings();
+
+private:
+	ComboBox* availableChans;
+	Label *chanSel;
+
+
+	JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (RecordControlEditor);
+
+};
+
+
+#endif
\ No newline at end of file
diff --git a/Source/Processors/FPGAOutput.cpp b/Source/Processors/FPGAOutput.cpp
index fbc7de632e7e78597737ac9beea164bc317c0b3b..19af9944e80741a3163eac79c3cb277cb1e11908 100755
--- a/Source/Processors/FPGAOutput.cpp
+++ b/Source/Processors/FPGAOutput.cpp
@@ -60,7 +60,7 @@ AudioProcessorEditor* FPGAOutput::createEditor()
 	return editor;
 }
 
-void FPGAOutput::handleEvent(int eventType, MidiMessage& event)
+void FPGAOutput::handleEvent(int eventType, MidiMessage& event, int sampleNum)
 {
     if (eventType == TTL && isEnabled)
     {
@@ -71,6 +71,8 @@ void FPGAOutput::handleEvent(int eventType, MidiMessage& event)
         int eventId = *(dataptr+2);
         int eventChannel = *(dataptr+3);
 
+       // std::cout << "FPGA output received event: " << eventNodeId << " " << eventId << " " << eventChannel << std::endl;
+
         if (eventId == 1 && eventChannel == TTLchannel) // channel 3 only at the moment
         {
             sendActionMessage("HI");
@@ -78,16 +80,16 @@ void FPGAOutput::handleEvent(int eventType, MidiMessage& event)
 
             if (!continuousStim)
                 startTimer(5); // pulse width
-            else
-                startTimer(10); // pulse width
+           // else
+            //    startTimer(25); // pulse width
 
-        } else if (eventId == 0 && eventChannel == TTLchannel)
+        } else if (eventId == 0 && eventChannel == TTLchannel)// && eventChannel == TTLchannel)
         {
-            if (!continuousStim)
-            {
+            if (continuousStim)
+            { /// this isn't working
                 sendActionMessage("LO");
-                isEnabled = false;
-                stopTimer();
+                isEnabled = true;
+             //   stopTimer();
             }
         }
 
@@ -166,6 +168,7 @@ void FPGAOutput::timerCallback()
     
         isEnabled = true;
         stopTimer();
+
     } else {
 
         if (isEnabled)
diff --git a/Source/Processors/FPGAOutput.h b/Source/Processors/FPGAOutput.h
index 1372a042dc93fe2b1c3e3ebd19a0b87b8213205c..eef9fd2719e612b4462dd3d09bae08bc6c000e01 100755
--- a/Source/Processors/FPGAOutput.h
+++ b/Source/Processors/FPGAOutput.h
@@ -56,7 +56,7 @@ public:
 	void process(AudioSampleBuffer &buffer, MidiBuffer &midiMessages, int& nSamples);
 	void setParameter (int parameterIndex, float newValue);
 
-    void handleEvent(int eventType, MidiMessage& event);
+    void handleEvent(int eventType, MidiMessage& event, int sampleNum);
     
 	AudioProcessorEditor* createEditor();
 
diff --git a/Source/Processors/FilterNode.cpp b/Source/Processors/FilterNode.cpp
index b668168b9f417b8cd25f49d5a5a6c5f0f119df5e..db3be8b9291ab783389f3ac3f95461694da3ce0c 100755
--- a/Source/Processors/FilterNode.cpp
+++ b/Source/Processors/FilterNode.cpp
@@ -36,7 +36,7 @@ FilterNode::FilterNode()
 	lowCutValues.add(100.0f);
 	lowCutValues.add(600.0f);
 
-	parameters.add(Parameter("low cut",lowCutValues, 3, 0));
+	parameters.add(Parameter("low cut",lowCutValues, 1, 0));
 
 	Array<var> highCutValues;
 	highCutValues.add(12.0f);
@@ -44,7 +44,7 @@ FilterNode::FilterNode()
 	highCutValues.add(6000.0f);
 	highCutValues.add(9000.0f);
 
-	parameters.add(Parameter("high cut",highCutValues, 1, 1));
+	parameters.add(Parameter("high cut",highCutValues, 0, 1));
 
 }
 
@@ -137,12 +137,12 @@ void FilterNode::updateSettings()
 				(1));	 
 
 			Parameter& p1 =  parameters.getReference(0);
-			p1.setValue(600.0f, n);
+			p1.setValue(4.0f, n);
 
 			Parameter& p2 =  parameters.getReference(1);
-			p2.setValue(6000.0f, n);
+			p2.setValue(12.0f, n);
 			
-			setFilterParameters(600.0f, 3000.0f, n);
+			setFilterParameters(4.0f, 12.0f, n);
 		}
 
 	}
diff --git a/Source/Processors/GenericProcessor.cpp b/Source/Processors/GenericProcessor.cpp
index d7033d55cea896fddea4738aeb6877abad8b407f..4f4c21097dbe8e507f871041ac00031fdfa549e3 100755
--- a/Source/Processors/GenericProcessor.cpp
+++ b/Source/Processors/GenericProcessor.cpp
@@ -113,7 +113,7 @@ int GenericProcessor::getNextChannel(bool increment)
 {
 	int chan = nextAvailableChannel;
 
-	std::cout << "Next channel: " << chan << ", num inputs: " << getNumInputs() << std::endl;
+	//std::cout << "Next channel: " << chan << ", num inputs: " << getNumInputs() << std::endl;
  
 	if (increment)
 		nextAvailableChannel++;
@@ -285,6 +285,7 @@ void GenericProcessor::clearSettings()
 	settings.sampleRate = getDefaultSampleRate();
 
 	channels.clear();
+	eventChannels.clear();
 
 }
 
@@ -306,6 +307,7 @@ void GenericProcessor::update()
 		{
 			Channel* sourceChan = sourceNode->channels[i];
 			Channel* ch = new Channel(*sourceChan);
+			ch->setProcessor(this);
 			channels.add(ch);
 		}
 
@@ -418,7 +420,7 @@ int GenericProcessor::checkForEvents(MidiBuffer& midiMessages)
 			
 			uint8* dataptr = message.getRawData();
 
-			handleEvent(*dataptr, message);
+			handleEvent(*dataptr, message, samplePosition);
 
 		}
 
@@ -447,6 +449,10 @@ void GenericProcessor::addEvent(MidiBuffer& eventBuffer,
     eventBuffer.addEvent(data, 		// spike data
                           sizeof(data), // total bytes
                           sampleNum);     // sample index
+
+    //if (type == TTL)
+    //	std::cout << "Adding event for channel " << (int) eventChannel << " with ID " << (int) eventId << std::endl;
+
 	delete data;
 }
 
diff --git a/Source/Processors/GenericProcessor.h b/Source/Processors/GenericProcessor.h
index d896c91e9e7f7e606f521ec43f0f5caafb66a937..0e628c068f8fba81baf9166a39c65c714439a484 100755
--- a/Source/Processors/GenericProcessor.h
+++ b/Source/Processors/GenericProcessor.h
@@ -189,7 +189,7 @@ public:
 	                      uint8 numBytes = 0,
 	                      uint8* data = 0);
 
-	virtual void handleEvent(int eventType, MidiMessage& event) {}
+	virtual void handleEvent(int eventType, MidiMessage& event, int samplePosition = 0) {}
 
 	enum eventTypes 
  	{
diff --git a/Source/Processors/LfpDisplayNode.cpp b/Source/Processors/LfpDisplayNode.cpp
index 4d55d9c571bdf72b83ccc93a82bd490c745e1675..035e5770a33c76f0a9b9678f02883fbd8c10c2a8 100755
--- a/Source/Processors/LfpDisplayNode.cpp
+++ b/Source/Processors/LfpDisplayNode.cpp
@@ -124,7 +124,7 @@ void LfpDisplayNode::setParameter (int parameterIndex, float newValue)
 		ed->canvas->setParameter(parameterIndex, newValue);
 }
 
-void LfpDisplayNode::handleEvent(int eventType, MidiMessage& event)
+void LfpDisplayNode::handleEvent(int eventType, MidiMessage& event, int sampleNum)
 {
 	if (eventType == TTL)
 	{
@@ -137,6 +137,10 @@ void LfpDisplayNode::handleEvent(int eventType, MidiMessage& event)
 
     	int samplesLeft = totalSamples - eventTime;
 
+
+    //	std::cout << "Received event from " << eventNodeId << ", channel "
+    //	          << eventChannel << ", with ID " << eventId << std::endl;
+//
     	int bufferIndex = (displayBufferIndex + eventTime);// % displayBuffer->getNumSamples();
 
     	if (eventId == 1)
@@ -161,9 +165,9 @@ void LfpDisplayNode::handleEvent(int eventType, MidiMessage& event)
     		int block2Size = (samplesLeft + bufferIndex) % displayBuffer->getNumSamples();
     		int block1Size = samplesLeft - block2Size;
 
-    		std::cout << "OVERFLOW." << std::endl;
+    		//std::cout << "OVERFLOW." << std::endl;
 
-    		std::cout << bufferIndex << " " << block1Size << " " << ttlState << std::endl;
+    		//std::cout << bufferIndex << " " << block1Size << " " << ttlState << std::endl;
 
     		displayBuffer->copyFrom(displayBuffer->getNumChannels()-1,  // destChannel
 					 		    bufferIndex,		// destStartSample
@@ -171,7 +175,7 @@ void LfpDisplayNode::handleEvent(int eventType, MidiMessage& event)
 					 		    block1Size, 		// numSamples
 					 		    float(ttlState));   // gain
 
-    		std::cout << 0 << " " << block2Size << " " << ttlState << std::endl;
+    		//std::cout << 0 << " " << block2Size << " " << ttlState << std::endl;
 
     		displayBuffer->copyFrom(displayBuffer->getNumChannels()-1,  // destChannel
 					 		    0,		// destStartSample
diff --git a/Source/Processors/LfpDisplayNode.h b/Source/Processors/LfpDisplayNode.h
index 61f18fcc16902474845e7e95d4b5a6627d6b75b3..19ec04aa8a3f38677495a14924c5a9b4bef3a655 100755
--- a/Source/Processors/LfpDisplayNode.h
+++ b/Source/Processors/LfpDisplayNode.h
@@ -64,7 +64,7 @@ public:
 	bool enable();
 	bool disable();
 
-	void handleEvent(int, MidiMessage&);
+	void handleEvent(int, MidiMessage&, int);
 
 	AudioSampleBuffer* getDisplayBufferAddress() {return displayBuffer;}
 	int getDisplayBufferIndex() {return displayBufferIndex;}
diff --git a/Source/Processors/PhaseDetector.cpp b/Source/Processors/PhaseDetector.cpp
index 080eee994637276c03c7a75677e5a1bc2bdbca24..09138cb4ce7618f394ef9541e783ecd5532c91d9 100644
--- a/Source/Processors/PhaseDetector.cpp
+++ b/Source/Processors/PhaseDetector.cpp
@@ -71,21 +71,27 @@ bool PhaseDetector::enable()
 	return true;
 }
 
-void PhaseDetector::handleEvent(int eventType, MidiMessage& event)
+void PhaseDetector::handleEvent(int eventType, MidiMessage& event, int sampleNum)
 {
+
+	//std::cout << "GOT EVENT." << std::endl;
+
 	if (eventType == TTL)
 	{
 		uint8* dataptr = event.getRawData();
 
-    	//int eventNodeId = *(dataptr+1);
+    	int eventNodeId = *(dataptr+1);
     	int eventId = *(dataptr+2);
-    	//int eventChannel = *(dataptr+3);
+    	int eventChannel = *(dataptr+3);
     	//int eventTime = event.getTimeStamp();
 
-    	if (eventId == 1)
+    //	std::cout << "Received event from " << eventNodeId << ", channel "
+    	//          << eventChannel << ", with ID " << eventId << std::endl;
+
+    	if (eventId == 1 && eventChannel == 5)
     	{
     		canBeTriggered = true;
-    	} else {
+    	} else if (eventId == 0 && eventChannel == 5) {
     		canBeTriggered = false;
     	}
 
diff --git a/Source/Processors/PhaseDetector.h b/Source/Processors/PhaseDetector.h
index 9f4aa94c862486ff206c108ef0ff2fb8fecc24e9..96eabe3cf2eb70399bc4c5ee14ea58495325baa4 100644
--- a/Source/Processors/PhaseDetector.h
+++ b/Source/Processors/PhaseDetector.h
@@ -71,7 +71,7 @@ private:
 
 	bool canBeTriggered;
 
-	void handleEvent(int eventType, MidiMessage& event);
+	void handleEvent(int eventType, MidiMessage& event, int sampleNum);
 
 	float estimatedFrequency;
 
diff --git a/Source/Processors/ProcessorGraph.cpp b/Source/Processors/ProcessorGraph.cpp
index 98e2731086077958738d5db96fe9ebc2eb1eaecb..47309ff74a07f658bf367347ac614c20d694e394 100644
--- a/Source/Processors/ProcessorGraph.cpp
+++ b/Source/Processors/ProcessorGraph.cpp
@@ -42,6 +42,7 @@
 #include "WiFiOutput.h"
 #include "ArduinoOutput.h"
 #include "FPGAOutput.h"
+#include "Utilities/RecordControl.h"
 #include "Utilities/Splitter.h"
 #include "Utilities/Merger.h"
 #include "../UI/UIComponent.h"
@@ -447,7 +448,12 @@ GenericProcessor* ProcessorGraph::createProcessorFromDescription(String& descrip
 
 			//sendActionMessage("New merger created.");
 
-	 	}
+		} else if (subProcessorType.equalsIgnoreCase("Record Controller")) {
+
+			std::cout << "Creating a new record controller." << std::endl;
+			processor = new RecordControl();
+
+		}
 
 	} else if (processorType.equalsIgnoreCase("Sinks")) {
 
diff --git a/Source/Processors/RecordNode.cpp b/Source/Processors/RecordNode.cpp
index 99d18b6df671b70ae5b1abd1ddfcfec851ec2383..7881ca8a0ac0d17294d2c05bd0de13a1f36499f6 100755
--- a/Source/Processors/RecordNode.cpp
+++ b/Source/Processors/RecordNode.cpp
@@ -42,6 +42,13 @@ RecordNode::RecordNode()
 	eventChannel = new Channel(this, 0);
 	eventChannel->isEventChannel = true;
 
+	recordMarker = new char[10];
+	for (int i = 0; i < 9; i++)
+	{
+		recordMarker[i] = 0;
+	}
+	recordMarker[9] = 255;
+
 	// 128 inputs, 0 outputs
 	setPlayConfigDetails(getNumInputs(),getNumOutputs(),44100.0,128);
 
@@ -119,9 +126,7 @@ void RecordNode::filenameComponentChanged(FilenameComponent* fnc)
 
 	createNewDirectory();
 
-	String filename = rootFolder.getFullPathName();
-	filename += "/all_channels.events";
-	eventChannel->filename = filename;
+	
 
 }
 
@@ -138,15 +143,11 @@ void RecordNode::addInputChannel(GenericProcessor* sourceNode, int chan)
 
         channelPointers.add(sourceNode->channels[chan]);
 
-        String filename = rootFolder.getFullPathName();
-		filename += "/";
-		filename += sourceNode->getNodeId();
-		filename += "_";
-		filename += channelPointers[channelIndex]->name;
-		filename += ".continuous";
+     //   std::cout << channelIndex << std::endl;
+
+        updateFileName(channelPointers[channelIndex]);
 
-        channelPointers[channelIndex]->filename = filename;
-        channelPointers[channelIndex]->file = 0;
+        
 
 		//if (channelPointers[channelIndex]->isRecording)
 		//	std::cout << "  This channel will be recorded." << std::endl;
@@ -175,12 +176,41 @@ void RecordNode::addInputChannel(GenericProcessor* sourceNode, int chan)
 
 }
 
+void RecordNode::updateFileName(Channel* ch)
+{
+	String filename = rootFolder.getFullPathName();
+	filename += rootFolder.separatorString;
+
+	if (!ch->isEventChannel)
+	{
+		filename += ch->nodeId;
+		filename += "_";
+		filename += ch->name;
+		filename += ".continuous";
+	} else {
+		filename += "all_channels.events";
+	}
+	
+    ch->filename = filename;
+    ch->file = 0;
+
+    //std::cout << "Updating " << filename << std::endl;
+
+}
+
 void RecordNode::createNewDirectory()
 {
 	std::cout << "Creating new directory." << std::endl;
 
 	rootFolder = File(dataDirectory.getFullPathName() + File::separator + generateDirectoryName());
 
+	updateFileName(eventChannel);
+
+	for (int i = 0; i < channelPointers.size(); i++)
+	{
+		updateFileName(channelPointers[i]);
+	}
+
 }
 
 String RecordNode::generateDirectoryName()
@@ -252,6 +282,8 @@ void RecordNode::setParameter (int parameterIndex, float newValue)
  		if (!rootFolder.exists())
  			rootFolder.createDirectory();
 
+ 		openFile(eventChannel);
+
 		// create / open necessary files
 		for (int i = 0; i < channelPointers.size(); i++)
 		{
@@ -261,7 +293,7 @@ void RecordNode::setParameter (int parameterIndex, float newValue)
 			}
 		}
 
-		openFile(eventChannel);
+		
  		
 
  	} else if (parameterIndex == 0) {
@@ -319,8 +351,11 @@ void RecordNode::openFile(Channel* ch)
 	if (!fileExists)
 	{
 		// create and write header
+		std::cout << "Writing header." << std::endl;
 		String header = generateHeader(ch);
 		fwrite(header.toUTF8(), 1, header.getNumBytesAsUTF8(), ch->file);
+	} else {
+		std::cout << "File already exists, just opening." << std::endl;
 	}
 }
 
@@ -386,6 +421,9 @@ void RecordNode::closeAllFiles()
 
 bool RecordNode::enable()
 {
+
+	//updateFileName(eventChannel);
+
 	isProcessing = true;
 	return true;
 }
@@ -418,33 +456,50 @@ void RecordNode::writeContinuousBuffer(float* data, int nSamples, int channel)
 
 	// find file and write samples to disk
 
-	AudioDataConverters::convertFloatToInt16BE(continuousDataFloatBuffer, continuousDataIntegerBuffer, nSamples);
+	//if (nSamples < 1000) // this is temporary, but there seems to be an error reading in the data if too many samples are written
+					     // in the first few blocks
+	//{
 
-	int16 samps = nSamples;
+		AudioDataConverters::convertFloatToInt16BE(continuousDataFloatBuffer, continuousDataIntegerBuffer, nSamples);
 
-	fwrite(&timestamp,							// ptr
-			   8,   							// size of each element
-			   1, 		  						// count 
-			   channelPointers[channel]->file);   // ptr to FILE object
+		int16 samps = (int16) nSamples;
 
-	fwrite(&samps,								// ptr
-			   sizeof(samps),   				// size of each element
-			   1, 		  						// count 
-			   channelPointers[channel]->file);   // ptr to FILE object
+		//std::cout << samps << std::endl;
+
+		fwrite(&timestamp,							// ptr
+				   8,   							// size of each element
+				   1, 		  						// count 
+				   channelPointers[channel]->file);   // ptr to FILE object
+
+		fwrite(&samps,								// ptr
+				   2,   							// size of each element
+				   1, 		  						// count 
+				   channelPointers[channel]->file);   // ptr to FILE object
+
+		int n = fwrite(continuousDataIntegerBuffer,		// ptr
+				   2,			     					// size of each element
+				   nSamples, 		  					// count 
+				   channelPointers[channel]->file);   // ptr to FILE object
+		// n must equal "count", otherwise there was an error
+
+		// write a 10-byte marker indicating the end of a record
+		fwrite(recordMarker,		// ptr
+				1,			     					// size of each element
+				10, 		  					// count 
+				channelPointers[channel]->file);   // ptr to FILE object
 
-	int n = fwrite(continuousDataIntegerBuffer,		// ptr
-			   2,			     					// size of each element
-			   nSamples, 		  					// count 
-			   channelPointers[channel]->file);   // ptr to FILE object
-	// n must equal "count", otherwise there was an error
+
+
+	//}
 }
  
-void RecordNode::writeEventBuffer(MidiMessage& event) //, int node, int channel)
+void RecordNode::writeEventBuffer(MidiMessage& event, int samplePosition) //, int node, int channel)
 {
 	// find file and write samples to disk
 	//std::cout << "Received event!" << std::endl;
 
 	uint8* dataptr = event.getRawData();
+	int16 samplePos = (int16) samplePosition;
 
 	// write timestamp (for buffer only, not the actual event timestamp!!!!!)
 	fwrite(&timestamp,							// ptr
@@ -452,16 +507,21 @@ void RecordNode::writeEventBuffer(MidiMessage& event) //, int node, int channel)
 			   1, 		  						// count 
 			   eventChannel->file);   			// ptr to FILE object
 
+	fwrite(&samplePos,							// ptr
+			   2,   							// size of each element
+			   1, 		  						// count 
+			   eventChannel->file);   			// ptr to FILE object
+
 	// write 1st four bytes of event (type, nodeId, eventId, eventChannel)
 	fwrite(dataptr, 1, 4, eventChannel->file);
 
 }
 
-void RecordNode::handleEvent(int eventType, MidiMessage& event)
+void RecordNode::handleEvent(int eventType, MidiMessage& event, int samplePosition)
 {
 	if (eventType == TTL)
 	{
-		writeEventBuffer(event);
+		writeEventBuffer(event, samplePosition);
 	}
 
 }
diff --git a/Source/Processors/RecordNode.h b/Source/Processors/RecordNode.h
index 508843a0b1e66d1a9e67b5d93f19afcbdd547c93..351242f759c148439293c49e0db03ca1ae90be8b 100755
--- a/Source/Processors/RecordNode.h
+++ b/Source/Processors/RecordNode.h
@@ -162,8 +162,11 @@ private:
   /** Generate a Matlab-compatible datestring */
   String generateDateString();
 
+  /** Generate filename for a given channel */
+  void updateFileName(Channel* ch);
+
   /** Cycle through the event buffer, looking for data to save */
-  void handleEvent(int eventType, MidiMessage& event);
+  void handleEvent(int eventType, MidiMessage& event, int samplePos);
 
   /** Object for holding information about the events file */
   Channel* eventChannel;
@@ -174,7 +177,10 @@ private:
   
   /** Method for writing event buffers to disk. 
   */ 
-  void writeEventBuffer(MidiMessage& event);
+  void writeEventBuffer(MidiMessage& event, int samplePos);
+
+  /** Used to indicate the end of each record */
+  char* recordMarker;
 
 	JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (RecordNode);
 
diff --git a/Source/Processors/SourceNode.cpp b/Source/Processors/SourceNode.cpp
index 05fd7f77c352edd703dee8e641c3fd75b69417de..be60f07223d1d72bdb008b288720ae3593ca8a71 100755
--- a/Source/Processors/SourceNode.cpp
+++ b/Source/Processors/SourceNode.cpp
@@ -105,12 +105,12 @@ void SourceNode::actionListenerCallback(const String& msg)
     
     if (msg.equalsIgnoreCase("HI"))
     {
-        std::cout << "HI." << std::endl;
+       // std::cout << "HI." << std::endl;
        // dataThread->setOutputHigh();
         ttlState = 1;
     } else if (msg.equalsIgnoreCase("LO"))
     {
-        std::cout << "LO." << std::endl;
+       // std::cout << "LO." << std::endl;
        // dataThread->setOutputLow();
         ttlState = 0;
     }
@@ -297,7 +297,7 @@ void SourceNode::process(AudioSampleBuffer &buffer,
 	 			if (state == 0) {
 
                     //std::cout << "OFF" << std::endl;
-                    //std::cout << *eventCodeBuffer << std::endl;
+                    //std::cout << c << std::endl;
 	 				// signal channel state is OFF
 	 				addEvent(events, // MidiBuffer
 	 						 TTL,    // eventType
@@ -307,8 +307,8 @@ void SourceNode::process(AudioSampleBuffer &buffer,
 	 						 );
 	 			} else {
 
-                    //std::cout << "ON" << std::endl;
-                    //std::cout << *eventCodeBuffer << std::endl;
+                   // std::cout << "ON" << std::endl;
+                   // std::cout << c << std::endl;
                     
 	 				// signal channel state is ON
 	 				addEvent(events, // MidiBuffer
@@ -317,6 +317,8 @@ void SourceNode::process(AudioSampleBuffer &buffer,
 	 						 1,		 // eventID
 	 						 c		 // eventChannel
 	 						 );
+	 			
+
 	 			}
 
 	 			eventChannelState[c] = state;
diff --git a/Source/Processors/Utilities/RecordControl.cpp b/Source/Processors/Utilities/RecordControl.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..eec3ab168a34d211433d11b6fb45d2249238a50e
--- /dev/null
+++ b/Source/Processors/Utilities/RecordControl.cpp
@@ -0,0 +1,76 @@
+/*
+    ------------------------------------------------------------------
+
+    This file is part of the Open Ephys GUI
+    Copyright (C) 2012 Open Ephys
+
+    ------------------------------------------------------------------
+
+    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 3 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, see <http://www.gnu.org/licenses/>.
+
+*/
+
+
+#include <stdio.h>
+#include "RecordControl.h"
+#include "../../UI/ControlPanel.h"
+
+RecordControl::RecordControl()
+	: GenericProcessor("Record Controller"), triggerChannel(0)
+{
+	
+}
+
+RecordControl::~RecordControl()
+{
+
+}
+
+AudioProcessorEditor* RecordControl::createEditor()
+{
+	editor = new RecordControlEditor(this);
+	return editor;
+}
+
+void RecordControl::updateTriggerChannel(int newChannel)
+{
+	triggerChannel = newChannel;
+}
+
+void RecordControl::process(AudioSampleBuffer &buffer,
+							MidiBuffer &events,
+							int& nSamples)
+{
+	checkForEvents(events);
+}
+
+
+void RecordControl::handleEvent(int eventType, MidiMessage& event, int)
+{
+	uint8* dataptr = event.getRawData();
+
+    int eventId = *(dataptr+2);
+    int eventChannel = *(dataptr+3);
+
+	if (eventType == TTL && eventChannel == triggerChannel)
+	{
+
+		if (eventId == 1)
+			getControlPanel()->setRecordState(true);
+		else
+			getControlPanel()->setRecordState(false);
+
+	}
+
+}
\ No newline at end of file
diff --git a/Source/Processors/Utilities/RecordControl.h b/Source/Processors/Utilities/RecordControl.h
new file mode 100644
index 0000000000000000000000000000000000000000..537187015fc204d9f1054a765435060aef7baba5
--- /dev/null
+++ b/Source/Processors/Utilities/RecordControl.h
@@ -0,0 +1,54 @@
+/*
+    ------------------------------------------------------------------
+
+    This file is part of the Open Ephys GUI
+    Copyright (C) 2012 Open Ephys
+
+    ------------------------------------------------------------------
+
+    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 3 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, see <http://www.gnu.org/licenses/>.
+
+*/
+
+#ifndef __RECORDCONTROL_H_120DD434__
+#define __RECORDCONTROL_H_120DD434__
+
+#ifdef _WIN32
+#include <Windows.h>
+#endif
+
+#include "../../../JuceLibraryCode/JuceHeader.h"
+#include "../GenericProcessor.h"
+#include "../Editors/RecordControlEditor.h"
+
+class RecordControl : public GenericProcessor
+{
+public:
+	RecordControl();
+	~RecordControl();
+
+	void process (AudioSampleBuffer &buffer, MidiBuffer &midiMessages, int& nSamples);
+	void updateTriggerChannel(int newChannel);
+	void handleEvent(int eventType, MidiMessage& event, int);
+
+	AudioProcessorEditor* createEditor();
+
+private:
+	int triggerChannel;
+
+	JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (RecordControl);
+
+};
+
+#endif
\ No newline at end of file
diff --git a/Source/Processors/Visualization/LfpDisplayCanvas.cpp b/Source/Processors/Visualization/LfpDisplayCanvas.cpp
index b34cf115fee593bef221c137c641403f3f9ddd15..2af18683c382400ad5aced754eb7b3ffa43845fa 100755
--- a/Source/Processors/Visualization/LfpDisplayCanvas.cpp
+++ b/Source/Processors/Visualization/LfpDisplayCanvas.cpp
@@ -273,8 +273,18 @@ void LfpDisplayCanvas::drawEvents()
 
 			int ttlState = int(waves[nChans][n]);
 			//std::cout << x << std::endl;
+
+			if ((ttlState & 0x100) >> 8) // channel 8
+			{
+				glColor4f(0.9, 0.9, 0.9, 0.4);
+                
+				glBegin(GL_LINE_STRIP);
+                glVertex2f(x, 0);
+                glVertex2f(x, 1);
+				glEnd();
+			}
             
-            if ((ttlState & 0x80) >> 7)
+            if ((ttlState & 0x80) >> 7) // channel 7
 			{
 				glColor4f(0.5, 0.3, 0.2, 0.1);
                 
@@ -284,7 +294,7 @@ void LfpDisplayCanvas::drawEvents()
 				glEnd();
 			}
 
-            if ((ttlState & 0x40) >> 6)
+            if ((ttlState & 0x40) >> 6) // channel 6
 			{
 				glColor4f(1.0, 0.3, 0.0, 0.1);
                 
@@ -294,7 +304,7 @@ void LfpDisplayCanvas::drawEvents()
 				glEnd();
 			}
             
-			if ((ttlState & 0x20) >> 5)
+			if ((ttlState & 0x20) >> 5) // channel 5
 			{
 				glColor4f(1.0, 0.0, 0.0, 0.1);
 
@@ -304,7 +314,7 @@ void LfpDisplayCanvas::drawEvents()
 				glEnd();
 			}
 
-			if ((ttlState & 0x10) >> 4)
+			if ((ttlState & 0x10) >> 4) // channel 4
 			{
 				glColor4f(0.0, 1.0, 0.0, 0.1);
 
@@ -315,7 +325,7 @@ void LfpDisplayCanvas::drawEvents()
 
 			}
 
-			if ((ttlState & 0x8) >> 3)
+			if ((ttlState & 0x8) >> 3) // channel 3
 			{
 				glColor4f(0.0, 0.0, 1.0, 0.1);
 
@@ -326,7 +336,7 @@ void LfpDisplayCanvas::drawEvents()
 
 			}
 
-			if ((ttlState & 0x4) >> 2)
+			if ((ttlState & 0x4) >> 2) // channel 2
 			{
 				glColor4f(0.0, 1.0, 1.0, 0.1);
 
@@ -337,7 +347,7 @@ void LfpDisplayCanvas::drawEvents()
 
 			}
 
-			if ((ttlState & 0x2) >> 1)
+			if ((ttlState & 0x2) >> 1) // channel 1
 			{
 				glColor4f(1.0, 1.0, 0.0, 0.1);
 
@@ -348,7 +358,7 @@ void LfpDisplayCanvas::drawEvents()
 
 			}
 
-			if ((ttlState & 0x1))
+			if ((ttlState & 0x1)) // channel 0
 			{
 				glColor4f(1.0, 1.0, 1.0, 0.1);
 
diff --git a/Source/Processors/WiFiOutput.cpp b/Source/Processors/WiFiOutput.cpp
index eb120465eb28baca16dd522c15da6e76ceceb939..74c2cef659e1cd9e8f9989eca3179c2f3c116648 100755
--- a/Source/Processors/WiFiOutput.cpp
+++ b/Source/Processors/WiFiOutput.cpp
@@ -40,7 +40,7 @@ AudioProcessorEditor* WiFiOutput::createEditor()
 	return editor;
 }
 
-void WiFiOutput::handleEvent(int eventType, MidiMessage& event)
+void WiFiOutput::handleEvent(int eventType, MidiMessage& event, int sampleNum)
 {
     if (eventType == TTL)
     {
diff --git a/Source/Processors/WiFiOutput.h b/Source/Processors/WiFiOutput.h
index c13c505c6ff550f68c0cfde273bd4fc29727bad6..2e0dd60736520f4b27a5675a35c0e13c9fa5efd1 100755
--- a/Source/Processors/WiFiOutput.h
+++ b/Source/Processors/WiFiOutput.h
@@ -60,7 +60,7 @@ public:
 	void process(AudioSampleBuffer &buffer, MidiBuffer &midiMessages, int& nSamples);
 	void setParameter (int parameterIndex, float newValue);
 
-    void handleEvent(int eventType, MidiMessage& event);
+    void handleEvent(int eventType, MidiMessage& event, int sampleNum);
     
 	AudioProcessorEditor* createEditor();
 
diff --git a/Source/UI/ControlPanel.cpp b/Source/UI/ControlPanel.cpp
index 7a1a6a3e4845348b02136c5682331232858a0258..0908fb299b6c04c5fb6799145aaa287b8f1b130c 100755
--- a/Source/UI/ControlPanel.cpp
+++ b/Source/UI/ControlPanel.cpp
@@ -419,6 +419,13 @@ ControlPanel::~ControlPanel()
 	graph = 0;
 }
 
+void ControlPanel::setRecordState(bool t)
+{
+
+	recordButton->setToggleState(t, true);
+
+}
+
 void ControlPanel::updateChildComponents()
 {
 
@@ -525,7 +532,7 @@ void ControlPanel::buttonClicked(Button* button)
 		{
 
 			playButton->setToggleState(true,false);
-			graph->getRecordNode()->setParameter(1,10.0f);
+			//graph->getRecordNode()->setParameter(1,10.0f);
 			masterClock->startRecording(); // turn on recording
 
 
@@ -572,6 +579,11 @@ void ControlPanel::buttonClicked(Button* button)
 				masterClock->start();
 			}
 			
+		} else {
+
+			if (recordButton->getToggleState())
+				graph->getRecordNode()->setParameter(1,10.0f);
+
 		}
 
 	} else {
diff --git a/Source/UI/ControlPanel.h b/Source/UI/ControlPanel.h
index 7ae184aa8c06757ca030667cec15cf099a2fbdbc..07fbeb7b0b6115e316a2d2bd784e352100b2ed5f 100755
--- a/Source/UI/ControlPanel.h
+++ b/Source/UI/ControlPanel.h
@@ -229,6 +229,7 @@ public:
 	void openState(bool);
 	
 	void toggleState();
+	void setRecordState(bool t);
 
 	bool isOpen() {return open;}
  
diff --git a/Source/UI/ProcessorList.cpp b/Source/UI/ProcessorList.cpp
index 75fd4bb31a9ea57b1acb7bba64e12d72a5db7c36..23ce872a70b7c7d84b10f9040f6c91ee3fd00e71 100755
--- a/Source/UI/ProcessorList.cpp
+++ b/Source/UI/ProcessorList.cpp
@@ -67,6 +67,7 @@ ProcessorList::ProcessorList() : isDragging(false),
 	ProcessorListItem* utilities = new ProcessorListItem("Utilities");
 	utilities->addSubItem(new ProcessorListItem("Splitter"));
 	utilities->addSubItem(new ProcessorListItem("Merger"));
+	utilities->addSubItem(new ProcessorListItem("Record Controller"));
 
 	baseItem = new ProcessorListItem("Processors");
 	baseItem->addSubItem(sources);
diff --git a/open-ephys.jucer b/open-ephys.jucer
index 2d990ed863e37f4aa84702244b08fa49dfdd4b2f..5ee787787eff46909047f64b483b124f7d705e45 100644
--- a/open-ephys.jucer
+++ b/open-ephys.jucer
@@ -233,6 +233,10 @@
         <FILE id="VynGpEg" name="LfpDisplayNode.h" compile="0" resource="0"
               file="Source/Processors/LfpDisplayNode.h"/>
         <GROUP id="Enz7QFy" name="Utilities">
+          <FILE id="G3r9HB" name="RecordControl.cpp" compile="1" resource="0"
+                file="Source\Processors\Utilities\RecordControl.cpp"/>
+          <FILE id="JUx3i6g" name="RecordControl.h" compile="0" resource="0"
+                file="Source\Processors\Utilities\RecordControl.h"/>
           <FILE id="qt6uLka" name="Merger.cpp" compile="1" resource="0" file="Source/Processors/Utilities/Merger.cpp"/>
           <FILE id="XNRlWg8" name="Merger.h" compile="0" resource="0" file="Source/Processors/Utilities/Merger.h"/>
           <FILE id="YMFH4P2" name="Splitter.cpp" compile="1" resource="0" file="Source/Processors/Utilities/Splitter.cpp"/>
@@ -284,6 +288,10 @@
         <FILE id="hGnGAjh" name="EventNode.cpp" compile="1" resource="0" file="Source/Processors/EventNode.cpp"/>
         <FILE id="dUtRN6" name="EventNode.h" compile="0" resource="0" file="Source/Processors/EventNode.h"/>
         <GROUP id="AqvwO6w" name="Editors">
+          <FILE id="ddLPZcq" name="RecordControlEditor.cpp" compile="1" resource="0"
+                file="Source\Processors\Editors\RecordControlEditor.cpp"/>
+          <FILE id="lWrE0xQ" name="RecordControlEditor.h" compile="0" resource="0"
+                file="Source\Processors\Editors\RecordControlEditor.h"/>
           <FILE id="vcZeT2R" name="ResamplingNodeEditor.cpp" compile="1" resource="0"
                 file="Source/Processors/Editors/ResamplingNodeEditor.cpp"/>
           <FILE id="pMjiz6m" name="ResamplingNodeEditor.h" compile="0" resource="0"