Index: src/Experimental.h
===================================================================
--- src/Experimental.h	(revision 11311)
+++ src/Experimental.h	(working copy)
@@ -64,7 +64,7 @@
 // A spectrumLogF-like view mode with notes quantization.
 // Just select the "Find Notes" checkbox in the spectrum prefs 
 // to activate it instead of the Spectrum log(f) mode.
-//#define EXPERIMENTAL_FIND_NOTES
+#define EXPERIMENTAL_FIND_NOTES
 
 // AM, 22.Nov 2007
 // Skip Points support in the spectrum view mode.
@@ -72,7 +72,7 @@
 
 // AM, 22.Nov 2007: 
 // A Frequency Grid for the Spectrum Log(f) & Find Notes modes
-//#define EXPERIMENTAL_FFT_Y_GRID
+#define EXPERIMENTAL_FFT_Y_GRID
 
 // Andy Coder, 03.Mar 2009:
 // Allow keyboard seeking before initial playback position
Index: src/prefs/SpectrumPrefs.cpp
===================================================================
--- src/prefs/SpectrumPrefs.cpp	(revision 11311)
+++ src/prefs/SpectrumPrefs.cpp	(working copy)
@@ -153,7 +153,7 @@
          mFrequencyGain =
 			 S.TieNumericTextBox(_("Frequency g&ain (dB/dec):"),
                               wxT("/Spectrum/FrequencyGain"),
-                              0,
+                              -4,
                               4);
       }
       S.EndTwoColumn();
@@ -248,8 +248,8 @@
       wxMessageBox(_("The frequency gain must be an integer"));
       return false;
    }
-   if (frequencygain < 0) {
-      wxMessageBox(_("The frequency gain cannot be negative"));
+   if (frequencygain < -60) {
+      wxMessageBox(_("The frequency gain must be not less than -60 dB/dec"));
       return false;
    }
    if (frequencygain > 60) {
Index: src/TrackArtist.cpp
===================================================================
--- src/TrackArtist.cpp	(revision 11311)
+++ src/TrackArtist.cpp	(working copy)
@@ -1578,7 +1578,42 @@
    }
 }
 
+// (Hue,Saturation,Brightness) to (R,G,B):
+//
+// Hue: [0..1] {0: red, 0.33: green, 0.66: blue, 1: red}
+// Saturation: [0..1] {0: no color, 1: full color}
+// Brightness: [0..1] {0: black, 1: brightest}
+void hsb2rgb(float h, float s, float b_, float &r, float &g, float &b)
+{
+	float h2,L,x,y,z;
+	h=fmodf(h,1.0f)*3;
+	h2=fmodf(h,1.0f);
+	if (h2 < 0.5)
+	{	L=b_*(1+s*h2);
+		s=s/(1+s*h2);	//s>=0, h2>=0 always so never s/0
+		x=1+(-1-h2)*s;	y=1-h2*s;	z=1-(1-h2)*s;
+	}else
+	{	L=b_*(1+s*(1-h2));
+		s=s/(1+s*(1-h2));
+		y=1-h2*s;	z=1-(1-h2)*s;	x=1-(2-h2)*s;
+	}
+	x=x*L; 	y=y*L;	z=z*L;
+	if (h < 1.0)
+	{	b=x; r=y; g=z;
+	}else	if (h < 2.0)
+	{	r=x;	g=y;	b=z;
+	}else
+	{	g=x;	b=y;	r=z;
+	}
+	if (r < 0) r=0;
+	if (g < 0) g=0;
+	if (b < 0) b=0;
+	if (r > 1) r=1;
+	if (g > 1) g=1;
+	if (b > 1) b=1;
+}
 
+
 void TrackArtist::DrawSpectrum(WaveTrack *track,
                                wxDC & dc,
                                const wxRect & r,
@@ -1842,8 +1877,13 @@
    for (int y = 0; y < mid.height; y++) {
       float n =(float(y  )/mid.height*scale2-lmin2)*12; 
       float n2=(float(y+1)/mid.height*scale2-lmin2)*12; 
+#ifdef EXPERIMENTAL_FFT_SKIP_POINTS
       float f =float(minFreq)/(mFftSkipPoints+1)*powf(2.0f, n /12.0f+lmin2);
       float f2=float(minFreq)/(mFftSkipPoints+1)*powf(2.0f, n2/12.0f+lmin2);
+#else //!EXPERIMENTAL_FFT_SKIP_POINTS
+      float f =float(minFreq)*powf(2.0f, n /12.0f+lmin2);
+      float f2=float(minFreq)*powf(2.0f, n2/12.0f+lmin2);
+#endif //EXPERIMENTAL_FFT_SKIP_POINTS
       n =logf(f /440)/log2*12;
       n2=logf(f2/440)/log2*12;
       if (floor(n) < floor(n2))
@@ -1856,6 +1896,18 @@
 #ifdef EXPERIMENTAL_FIND_NOTES
    int maxima[128];
    float maxima0[128], maxima1[128];
+   const int MAX_NOTES=10;
+   float 
+      notes  [MAX_NOTES], 
+      starts [MAX_NOTES], 
+      levels [MAX_NOTES], 
+      lengths[MAX_NOTES];
+   for (int n=0; n<MAX_NOTES; n++)
+   {  notes[n]=0;
+      starts[n]=0;
+      levels[n]=0;
+      lengths[n]=0;
+   }
    const float 
 #ifdef EXPERIMENTAL_FFT_SKIP_POINTS
       f2bin = half/(rate/2.0f/(mFftSkipPoints+1)),
@@ -1869,6 +1921,18 @@
       minColor=0.0f;
    const int maxTableSize=1024;
    int *indexes=new int[maxTableSize];
+
+   float rainbow_r[2][7], rainbow_g[2][7], rainbow_b[2][7];
+   for (int si=0; si<2; si++) {  
+      for (int hi=0; hi<7; hi++) {  
+         float h=hi/7.0f;
+         float s=1-float(si)/2;
+         hsb2rgb(h,s,1, rainbow_r[si][hi], rainbow_g[si][hi], rainbow_b[si][hi]);
+         rainbow_r[si][hi]*=255;
+         rainbow_g[si][hi]*=255;
+         rainbow_b[si][hi]*=255;
+      }
+   }
 #endif //EXPERIMENTAL_FIND_NOTES
 
    while (x < mid.width) 
@@ -1982,18 +2046,56 @@
 // The f2pix helper macro converts a frequency into a pixel coordinate.
 #define f2pix(f) (logf(f)-lmins)/(lmaxs-lmins)*mid.height
 
+// The pix2f helper macro converts a pixel coordinate into a frequency.
+#define pix2f(pix) expf(float(pix)/mid.height*(lmaxs-lmins)+lmins)
+
             // Possibly quantize the maxima frequencies and create the pixel block limits.
             for (int i=0; i < maximas; i++) {
                int index=maxima[i];
                float f = float(index)*bin2f;
                if (mFindNotesQuantize)
-               {  f = expf(int(log(f/440)/log2*12-0.5)/12.0f*log2)*440;
+               {  float note=int(log(f/440)/log2*12)-0.5f;
+                  f = expf(note/12.0f*log2)*440;
                   maxima[i] = f*f2bin;
+                  float delta=1000;
+                  int nn=-1;
+                  for (int n=0; n<mNumberOfMaxima; n++)
+                  {  if (levels[n] < 0.01f)
+                     {  delta=abs(notes[n]-note);
+                        nn=n;
+                     }
+                     if (abs(notes[n]-note) < delta)
+                     {  delta=abs(notes[n]-note);
+                        nn=n;
+                     }
+                  }
+                  if (nn >= 0)
+                  {  if (levels[nn] < 0.01f)
+                        starts[nn]=x;
+                     notes[nn]=note;
+                     value = (freq[index] + gain + range) / (double)range;
+                     levels[nn]=(levels[nn]*2+value)/3;
+                     lengths[nn]=x-starts[nn];
+                     //if (lengths[nn] > 10)
+                     {  float f0 = expf((log(f/440)/log2*12-0.5f-levels[nn]/2)/12.0f*log2)*440;
+                        maxima0[i] = f2pix(f0);
+                        float f1 = expf((log(f/440)/log2*12)/12.0f*log2)*440;
+                        maxima1[i] = f2pix(f1);
+                     }
+                  }
+                  for (int n=0; n<mNumberOfMaxima; n++)
+                  {  levels[n]*=0.99f;
+                     if (levels[n] < 0.01f)
+                     {  starts[n]=x;
+                        lengths[n]=x-starts[n];
+                     }
+                  }
+               }else
+               {  float f0 = expf((log(f/440)/log2*12-1)/12.0f*log2)*440;
+                  maxima0[i] = f2pix(f0);
+                  float f1 = expf((log(f/440)/log2*12)/12.0f*log2)*440;
+                  maxima1[i] = f2pix(f1);
                }
-               float f0 = expf((log(f/440)/log2*24-1)/24.0f*log2)*440;
-               maxima0[i] = f2pix(f0);
-               float f1 = expf((log(f/440)/log2*24+1)/24.0f*log2)*440;
-               maxima1[i] = f2pix(f1);
             }
          }
          int it=0;
@@ -2030,7 +2132,7 @@
                         float i1=maxima1[it];
                         if (yy+1 <= i1) {
                            value=sumFreqValues(freq, x0, bin0, bin1);
-                           if (value < mFindNotesMinA)
+                           if (!mFindNotesQuantize && value < mFindNotesMinA)
                               value = minColor;
                            else
                               value = (value + gain + range) / (double)range;
@@ -2063,13 +2165,39 @@
             else
                value = clip->mSpecPxCache->values[x * mid.height + yy];
 
-            GetColorGradient(value, selflag, mIsGrayscale, &rv, &gv, &bv);
 
+#ifdef EXPERIMENTAL_FIND_NOTES
+            if (mIsGrayscale && mFftFindNotes) {
+               float f = pix2f(yy);
+               float note = logf(f/440.0f)/log2*12+0.5f+1200;
+               int inote = int(fmodf(note, 12.0f));
+               if (inote < 0) 
+                  inote+=12;
+               int scale[14]={0,0,1,2,2,3,3,4,5,5,6,6,7,7};
+               int scsat[14]={0,1,0,0,1,0,1,0,0,1,0,1,0,1};
+               int scaled=scale[inote];
+               int sat   =scsat[inote];
+               float grey=float(value)*float(value);
+	            rv=grey*rainbow_r[sat][scaled];
+	            gv=grey*rainbow_g[sat][scaled];
+	            bv=grey*rainbow_b[sat][scaled];
+            }
+            else
+#endif //EXPERIMENTAL_FIND_NOTES
+            {  GetColorGradient(value, selflag, mIsGrayscale, &rv, &gv, &bv);
+            }
+
 #ifdef EXPERIMENTAL_FFT_Y_GRID
             if (mFftYGrid && yGrid[yy]) {
-               rv /= 1.1f;
-               gv /= 1.1f;
-               bv /= 1.1f;
+               if (mIsGrayscale) {
+                  rv += 50; rv = rv>255? 1:rv;
+                  gv += 50; gv = gv>255? 1:gv;
+                  bv += 50; bv = bv>255? 1:bv;
+               } else {
+                  rv /= 1.1f;
+                  gv /= 1.1f;
+                  bv /= 1.1f;
+               }
             }
 #endif //EXPERIMENTAL_FFT_Y_GRID
 
Index: win/audacity.sln
===================================================================
--- win/audacity.sln	(revision 11311)
+++ win/audacity.sln	(working copy)
@@ -1,77 +1,54 @@
-Microsoft Visual Studio Solution File, Format Version 10.00
-# Visual C++ Express 2008
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Audacity", "Projects\Audacity\Audacity.vcproj", "{1D64095C-F936-4FCF-B609-56E9DDF941FA}"
-	ProjectSection(ProjectDependencies) = postProject
-		{8A1C2514-85DD-4AE2-9CF3-3183B66C537D} = {8A1C2514-85DD-4AE2-9CF3-3183B66C537D}
-		{A64FFB5D-0CF0-43EE-9DE3-C72260864BFF} = {A64FFB5D-0CF0-43EE-9DE3-C72260864BFF}
-		{D5AB2D87-51DC-4277-A9AB-2A6018D0E947} = {D5AB2D87-51DC-4277-A9AB-2A6018D0E947}
-		{C0FE933B-4AF7-4ACD-95E8-ACD3A73F1400} = {C0FE933B-4AF7-4ACD-95E8-ACD3A73F1400}
-		{EC3F5835-C486-4970-8A6B-A0700F4B3637} = {EC3F5835-C486-4970-8A6B-A0700F4B3637}
-		{6C7DC635-26FB-419A-B69A-7ECBBB068245} = {6C7DC635-26FB-419A-B69A-7ECBBB068245}
-		{B28C9F3F-FF0E-4FEC-844C-685390B8AC06} = {B28C9F3F-FF0E-4FEC-844C-685390B8AC06}
-		{5284D863-3813-479F-BBF0-AC234E216BC6} = {5284D863-3813-479F-BBF0-AC234E216BC6}
-		{F4B4A272-4ED3-4951-A6EE-B7BAAC1C4952} = {F4B4A272-4ED3-4951-A6EE-B7BAAC1C4952}
-		{727D6675-67EE-4D0B-9DC1-177A0AF741F0} = {727D6675-67EE-4D0B-9DC1-177A0AF741F0}
-		{7ABA0F80-94AE-4E82-AB89-2E1258212D59} = {7ABA0F80-94AE-4E82-AB89-2E1258212D59}
-		{3A76129B-55AB-4D54-BAA7-08F63ED52569} = {3A76129B-55AB-4D54-BAA7-08F63ED52569}
-		{A52BBEA5-8B02-4147-8734-5D9BBF4D1177} = {A52BBEA5-8B02-4147-8734-5D9BBF4D1177}
-		{3DDDCAA9-276D-4FC3-A15C-485F7B9B24CC} = {3DDDCAA9-276D-4FC3-A15C-485F7B9B24CC}
-		{38C2C6B1-FBF8-4C5C-BB90-63F996083F56} = {38C2C6B1-FBF8-4C5C-BB90-63F996083F56}
-		{8C69F7B6-684F-48D9-9057-8912CA3DAA8B} = {8C69F7B6-684F-48D9-9057-8912CA3DAA8B}
-		{D96C7BE1-E3F1-4767-BBBB-320E082CE425} = {D96C7BE1-E3F1-4767-BBBB-320E082CE425}
-		{7AA41BED-41B0-427A-9148-DEA40549D158} = {7AA41BED-41B0-427A-9148-DEA40549D158}
-		{A61E2BF1-21AA-4118-B0D8-FD3D53DB892E} = {A61E2BF1-21AA-4118-B0D8-FD3D53DB892E}
-		{F00717F2-67C8-44E1-AF00-541DFA9CB7F2} = {F00717F2-67C8-44E1-AF00-541DFA9CB7F2}
-		{A939AAF8-44F1-4CE7-9DD0-7A6E99814857} = {A939AAF8-44F1-4CE7-9DD0-7A6E99814857}
-	EndProjectSection
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual C++ Express 2010
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Audacity", "Projects\Audacity\Audacity.vcxproj", "{1D64095C-F936-4FCF-B609-56E9DDF941FA}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "soundtouch", "Projects\soundtouch\soundtouch.vcproj", "{EC3F5835-C486-4970-8A6B-A0700F4B3637}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "soundtouch", "Projects\soundtouch\soundtouch.vcxproj", "{EC3F5835-C486-4970-8A6B-A0700F4B3637}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "expat", "Projects\expat\expat.vcproj", "{38C2C6B1-FBF8-4C5C-BB90-63F996083F56}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "expat", "Projects\expat\expat.vcxproj", "{38C2C6B1-FBF8-4C5C-BB90-63F996083F56}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libflac", "Projects\libflac\libflac.vcproj", "{6C7DC635-26FB-419A-B69A-7ECBBB068245}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libflac", "Projects\libflac\libflac.vcxproj", "{6C7DC635-26FB-419A-B69A-7ECBBB068245}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libflac++", "Projects\libflac++\libflac++.vcproj", "{B28C9F3F-FF0E-4FEC-844C-685390B8AC06}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libflac++", "Projects\libflac++\libflac++.vcxproj", "{B28C9F3F-FF0E-4FEC-844C-685390B8AC06}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libid3tag", "Projects\libid3tag\libid3tag.vcproj", "{D96C7BE1-E3F1-4767-BBBB-320E082CE425}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libid3tag", "Projects\libid3tag\libid3tag.vcxproj", "{D96C7BE1-E3F1-4767-BBBB-320E082CE425}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libmad", "Projects\libmad\libmad.vcproj", "{A52BBEA5-8B02-4147-8734-5D9BBF4D1177}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libmad", "Projects\libmad\libmad.vcxproj", "{A52BBEA5-8B02-4147-8734-5D9BBF4D1177}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libnyquist", "Projects\libnyquist\libnyquist.vcproj", "{7AA41BED-41B0-427A-9148-DEA40549D158}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libnyquist", "Projects\libnyquist\libnyquist.vcxproj", "{7AA41BED-41B0-427A-9148-DEA40549D158}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libresample", "Projects\libresample\libresample.vcproj", "{F00717F2-67C8-44E1-AF00-541DFA9CB7F2}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libresample", "Projects\libresample\libresample.vcxproj", "{F00717F2-67C8-44E1-AF00-541DFA9CB7F2}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libsamplerate", "Projects\libsamplerate\libsamplerate.vcproj", "{3DDDCAA9-276D-4FC3-A15C-485F7B9B24CC}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libsamplerate", "Projects\libsamplerate\libsamplerate.vcxproj", "{3DDDCAA9-276D-4FC3-A15C-485F7B9B24CC}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libsndfile", "Projects\libsndfile\libsndfile.vcproj", "{F4B4A272-4ED3-4951-A6EE-B7BAAC1C4952}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libsndfile", "Projects\libsndfile\libsndfile.vcxproj", "{F4B4A272-4ED3-4951-A6EE-B7BAAC1C4952}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libogg", "Projects\libogg\libogg.vcproj", "{A939AAF8-44F1-4CE7-9DD0-7A6E99814857}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libogg", "Projects\libogg\libogg.vcxproj", "{A939AAF8-44F1-4CE7-9DD0-7A6E99814857}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "portmixer", "Projects\portmixer\portmixer.vcproj", "{3A76129B-55AB-4D54-BAA7-08F63ED52569}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "portmixer", "Projects\portmixer\portmixer.vcxproj", "{3A76129B-55AB-4D54-BAA7-08F63ED52569}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libvorbis", "Projects\libvorbis\libvorbis.vcproj", "{727D6675-67EE-4D0B-9DC1-177A0AF741F0}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libvorbis", "Projects\libvorbis\libvorbis.vcxproj", "{727D6675-67EE-4D0B-9DC1-177A0AF741F0}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "portaudio-v19", "Projects\portaudio-v19\portaudio-v19.vcproj", "{7ABA0F80-94AE-4E82-AB89-2E1258212D59}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "portaudio-v19", "Projects\portaudio-v19\portaudio-v19.vcxproj", "{7ABA0F80-94AE-4E82-AB89-2E1258212D59}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "locale", "Projects\locale\locale.vcproj", "{BE9F28C5-058A-45F5-B2C1-D077BC058AAE}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "locale", "Projects\locale\locale.vcxproj", "{BE9F28C5-058A-45F5-B2C1-D077BC058AAE}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "filedialog", "Projects\filedialog\filedialog.vcproj", "{5284D863-3813-479F-BBF0-AC234E216BC6}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "filedialog", "Projects\filedialog\filedialog.vcxproj", "{5284D863-3813-479F-BBF0-AC234E216BC6}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod-script-pipe", "Projects\mod-script-pipe\mod-script-pipe.vcproj", "{85774A29-EA2F-4A40-994F-6BE593D847A5}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod-script-pipe", "Projects\mod-script-pipe\mod-script-pipe.vcxproj", "{85774A29-EA2F-4A40-994F-6BE593D847A5}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libvamp", "Projects\libvamp\libvamp.vcproj", "{A61E2BF1-21AA-4118-B0D8-FD3D53DB892E}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libvamp", "Projects\libvamp\libvamp.vcxproj", "{A61E2BF1-21AA-4118-B0D8-FD3D53DB892E}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "twolame", "Projects\twolame\twolame.vcproj", "{8C69F7B6-684F-48D9-9057-8912CA3DAA8B}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "twolame", "Projects\twolame\twolame.vcxproj", "{8C69F7B6-684F-48D9-9057-8912CA3DAA8B}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "portsmf", "Projects\portsmf\portsmf.vcproj", "{8A1C2514-85DD-4AE2-9CF3-3183B66C537D}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "portsmf", "Projects\portsmf\portsmf.vcxproj", "{8A1C2514-85DD-4AE2-9CF3-3183B66C537D}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sbsms", "Projects\sbsms\sbsms.vcproj", "{A64FFB5D-0CF0-43EE-9DE3-C72260864BFF}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sbsms", "Projects\sbsms\sbsms.vcxproj", "{A64FFB5D-0CF0-43EE-9DE3-C72260864BFF}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libscorealign", "Projects\libscorealign\libscorealign.vcproj", "{C0FE933B-4AF7-4ACD-95E8-ACD3A73F1400}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libscorealign", "Projects\libscorealign\libscorealign.vcxproj", "{C0FE933B-4AF7-4ACD-95E8-ACD3A73F1400}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "portmidi", "Projects\portmidi\portmidi.vcproj", "{D5AB2D87-51DC-4277-A9AB-2A6018D0E947}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "portmidi", "Projects\portmidi\portmidi.vcxproj", "{D5AB2D87-51DC-4277-A9AB-2A6018D0E947}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "help", "Projects\help\help.vcproj", "{02F94A40-586A-4403-8464-13B50801FFEC}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "help", "Projects\help\help.vcxproj", "{02F94A40-586A-4403-8464-13B50801FFEC}"
 EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
