Change default/startup preset.

projectM as shipped always starts on the same preset, which features the
projectM logo.  In addition to being boringly repetetive, we'd prefer
not to flash the projectM logo.

Replace the projectM "idle" preset with the contents of "Rovastar & Fvese -
Stranger Minds.milk", which I particularly like.

Disable the on-disk projectM logo preset as well.

On startup, if we're in shuffle mode, pick a starting preset at random.

Change-Id: I013539cdc1b0f374b27452137348607895e377bd
diff --git "a/presets_projectM/Geiss & Sperl - Feedback \050projectM idle HDR mix\051.prjm" "b/presets_projectM_disabled/Geiss & Sperl - Feedback \050projectM idle HDR mix\051.prjm"
similarity index 100%
rename from "presets_projectM/Geiss & Sperl - Feedback \050projectM idle HDR mix\051.prjm"
rename to "presets_projectM_disabled/Geiss & Sperl - Feedback \050projectM idle HDR mix\051.prjm"
diff --git a/src/libprojectM/MilkdropPresetFactory/IdlePreset.cpp b/src/libprojectM/MilkdropPresetFactory/IdlePreset.cpp
index 4dcd008..4762ec3 100644
--- a/src/libprojectM/MilkdropPresetFactory/IdlePreset.cpp
+++ b/src/libprojectM/MilkdropPresetFactory/IdlePreset.cpp
@@ -5,7 +5,7 @@
 
 
 const std::string IdlePresets::IDLE_PRESET_NAME
-  ("Geiss & Sperl - Feedback (projectM idle HDR mix).milk");
+  ("Rovastar & Fvese - Stranger Minds (idle-ized).milk");
 
 
 std::string
@@ -14,188 +14,79 @@
   std::ostringstream out;
 
   out << "[preset00]\n"
-      << "fRating=2.000000\n"
-      << "fGammaAdj=1.700000\n"
-      << "fDecay=0.940000\n"
-      << "fVideoEchoZoom=1.000000\n"
-      << "fVideoEchoAlpha=0.000000\n"
-      << "nVideoEchoOrientation=0\n"
-      << "nWaveMode=0\n"
+      << "fRating=3.500000\n"
+      << "fGammaAdj=1.000000\n"
+      << "fDecay=0.999000\n"
+      << "fVideoEchoZoom=0.999600\n"
+      << "fVideoEchoAlpha=0.500000\n"
+      << "nVideoEchoOrientation=1\n"
+      << "nWaveMode=5\n"
       << "bAdditiveWaves=1\n"
       << "bWaveDots=0\n"
-      << "bWaveThick=0\n"
-      << "bModWaveAlphaByVolume=0\n"
-      << "bMaximizeWaveColor=0\n"
-      << "bTexWrap=1\n"
+      << "bModWaveAlphaByVolume=1\n"
+      << "bMaximizeWaveColor=1\n"
+      << "bTexWrap=0\n"
       << "bDarkenCenter=0\n"
       << "bRedBlueStereo=0\n"
       << "bBrighten=0\n"
       << "bDarken=0\n"
       << "bSolarize=0\n"
       << "bInvert=0\n"
-      << "fWaveAlpha=0.001000\n"
-      << "fWaveScale=0.010000\n"
-      << "fWaveSmoothing=0.630000\n"
-      << "fWaveParam=-1.000000\n"
-      << "fModWaveAlphaStart=0.710000\n"
-      << "fModWaveAlphaEnd=1.300000\n"
+      << "fWaveAlpha=1.005730\n"
+      << "fWaveScale=0.535239\n"
+      << "fWaveSmoothing=0.000000\n"
+      << "fWaveParam=0.000000\n"
+      << "fModWaveAlphaStart=1.489999\n"
+      << "fModWaveAlphaEnd=0.750000\n"
       << "fWarpAnimSpeed=1.000000\n"
       << "fWarpScale=1.331000\n"
       << "fZoomExponent=1.000000\n"
       << "fShader=0.000000\n"
-      << "zoom=13.290894\n"
-      << "rot=-0.020000\n"
+      << "zoom=0.999500\n"
+      << "rot=0.200000\n"
       << "cx=0.500000\n"
       << "cy=0.500000\n"
-      << "dx=-0.280000\n"
-      << "dy=-0.320000\n"
+      << "dx=0.000000\n"
+      << "dy=0.000000\n"
       << "warp=0.010000\n"
       << "sx=1.000000\n"
       << "sy=1.000000\n"
-      << "wave_r=0.650000\n"
-      << "wave_g=0.650000\n"
-      << "wave_b=0.650000\n"
+      << "wave_r=0.000000\n"
+      << "wave_g=0.000000\n"
+      << "wave_b=0.000000\n"
       << "wave_x=0.500000\n"
       << "wave_y=0.500000\n"
-      << "ob_size=0.000000\n"
-      << "ob_r=0.010000\n"
+      << "ob_size=0.005000\n"
+      << "ob_r=0.000000\n"
       << "ob_g=0.000000\n"
       << "ob_b=0.000000\n"
       << "ob_a=1.000000\n"
-      << "ib_size=0.000000\n"
-      << "ib_r=0.950000\n"
-      << "ib_g=0.850000\n"
-      << "ib_b=0.650000\n"
+      << "ib_size=0.005000\n"
+      << "ib_r=0.000000\n"
+      << "ib_g=0.000000\n"
+      << "ib_b=0.000000\n"
       << "ib_a=1.000000\n"
-      << "nMotionVectorsX=64.000000\n"
-      << "nMotionVectorsY=0.000000\n"
-      << "mv_dx=0.000000\n"
-      << "mv_dy=0.000000\n"
-      << "mv_l=0.900000\n"
-      << "mv_r=1.000000\n"
+      << "nMotionVectorsX=3.200000\n"
+      << "nMotionVectorsY=1.440000\n"
+      << "mv_l=5.000000\n"
+      << "mv_r=0.000000\n"
       << "mv_g=1.000000\n"
       << "mv_b=1.000000\n"
       << "mv_a=0.000000\n"
-      << "shapecode_3_enabled=1\n"
-      << "shapecode_3_sides=20\n"
-      << "shapecode_3_additive=0\n"
-      << "shapecode_3_thickOutline=0\n"
-      << "shapecode_3_textured=1\n"
-      << "shapecode_3_ImageURL=M.tga\n"
-      << "shapecode_3_x=0.68\n"
-      << "shapecode_3_y=0.5\n"
-      << "shapecode_3_rad=0.41222\n"
-      << "shapecode_3_ang=0\n"
-      << "shapecode_3_tex_ang=0\n"
-      << "shapecode_3_tex_zoom=0.71\n"
-      << "shapecode_3_r=1\n"
-      << "shapecode_3_g=1\n"
-      << "shapecode_3_b=1\n"
-      << "shapecode_3_a=1\n"
-      << "shapecode_3_r2=1\n"
-      << "shapecode_3_g2=1\n"
-      << "shapecode_3_b2=1\n"
-      << "shapecode_3_a2=1\n"
-      << "shapecode_3_border_r=0\n"
-      << "shapecode_3_border_g=0\n"
-      << "shapecode_3_border_b=0\n"
-      << "shapecode_3_border_a=0\n"
-      << "shape_3_per_frame1=x = x + q1;\n"
-      << "shape_3_per_frame2=y = y + q2;\n"
-      << "shape_3_per_frame3=r =0.5 + 0.5*sin(q8*0.613 + 1);\n"
-      << "shape_3_per_frame4=g = 0.5 + 0.5*sin(q8*0.763 + 2);\n"
-      << "shape_3_per_frame5=b = 0.5 + 0.5*sin(q8*0.771 + 5);\n"
-      << "shape_3_per_frame6=r2 = 0.5 + 0.5*sin(q8*0.635 + 4);\n"
-      << "shape_3_per_frame7=g2 = 0.5 + 0.5*sin(q8*0.616+ 1);\n"
-      << "shape_3_per_frame8=b2 = 0.5 + 0.5*sin(q8*0.538 + 3);\n"
-      << "shapecode_4_enabled=1\n"
-      << "shapecode_4_sides=4\n"
-      << "shapecode_4_additive=0\n"
-      << "shapecode_4_thickOutline=0\n"
-      << "shapecode_4_textured=1\n"
-      << "shapecode_4_ImageURL=headphones.tga\n"
-      << "shapecode_4_x=0.68\n"
-      << "shapecode_4_y=0.58\n"
-      << "shapecode_4_rad=0.6\n"
-      << "shapecode_4_ang=0\n"
-      << "shapecode_4_tex_ang=0\n"
-      << "shapecode_4_tex_zoom=0.71\n"
-      << "shapecode_4_r=1\n"
-      << "shapecode_4_g=1\n"
-      << "shapecode_4_b=1\n"
-      << "shapecode_4_a=1\n"
-      << "shapecode_4_r2=1\n"
-      << "shapecode_4_g2=1\n"
-      << "shapecode_4_b2=1\n"
-      << "shapecode_4_a2=1\n"
-      << "shapecode_4_border_r=0\n"
-      << "shapecode_4_border_g=0\n"
-      << "shapecode_4_border_b=0\n"
-      << "shapecode_4_border_a=0\n"
-      << "shape_4_per_frame1=x = x + q1;\n"
-      << "shape_4_per_frame2=y = y + q2;\n"
-      << "shape_4_per_frame3=rad = rad + bass * 0.1;\n"
-      << "shape_4_per_frame4=a = q3;\n"
-      << "shape_4_per_frame5=a2 = q3;\n"
-      << "shapecode_6_enabled=1\n"
-      << "shapecode_6_sides=4\n"
-      << "shapecode_6_additive=0\n"
-      << "shapecode_6_thickOutline=0\n"
-      << "shapecode_6_textured=1\n"
-      << "shapecode_6_ImageURL=project.tga\n"
-      << "shapecode_6_x=0.38\n"
-      << "shapecode_6_y=0.435\n"
-      << "shapecode_6_rad=0.8\n"
-      << "shapecode_6_ang=0\n"
-      << "shapecode_6_tex_ang=0\n"
-      << "shapecode_6_tex_zoom=0.71\n"
-      << "shapecode_6_r=1\n"
-      << "shapecode_6_g=1\n"
-      << "shapecode_6_b=1\n"
-      << "shapecode_6_a=1\n"
-      << "shapecode_6_r2=1\n"
-      << "shapecode_6_g2=1\n"
-      << "shapecode_6_b2=1\n"
-      << "shapecode_6_a2=1\n"
-      << "shapecode_6_border_r=0\n"
-      << "shapecode_6_border_g=0\n"
-      << "shapecode_6_border_b=0\n"
-      << "shapecode_6_border_a=0\n"
-      << "shape_6_per_frame1=x = x + q1;\n"
-      << "shape_6_per_frame2=y = y + q2;\n"
-      << "shape_6_per_frame3=a = q3;\n"
-      << "shape_6_per_frame4=a2 = q3;\n"
-      << "per_frame_1=ob_r = 0.5 + 0.4*sin(time*1.324);\n"
-      << "per_frame_2=ob_g = 0.5 + 0.4*cos(time*1.371);\n"
-      << "per_frame_3=ob_b = 0.5+0.4*sin(2.332*time);\n"
-      << "per_frame_4=ib_r = 0.5 + 0.25*sin(time*1.424);\n"
-      << "per_frame_5=ib_g = 0.25 + 0.25*cos(time*1.871);\n"
-      << "per_frame_6=ib_b = 1-ob_b;\n"
-      << "per_frame_7=volume = 0.15*(bass+bass_att+treb+treb_att+mid+mid_att);\n"
-      << "per_frame_8=xamptarg = if(equal(frame%15,0),min(0.5*volume*bass_att,0.5),xamptarg);\n"
-      << "per_frame_9=xamp = xamp + 0.5*(xamptarg-xamp);\n"
-      << "per_frame_10=xdir = if(above(abs(xpos),xamp),-sign(xpos),if(below(abs(xspeed),0.1),2*above(xpos,0)-1,xdir));\n"
-      << "per_frame_11=xaccel = xdir*xamp - xpos - xspeed*0.055*below(abs(xpos),xamp);\n"
-      << "per_frame_12=xspeed = xspeed + xdir*xamp - xpos - xspeed*0.055*below(abs(xpos),xamp);\n"
-      << "per_frame_13=xpos = xpos + 0.001*xspeed;\n"
-      << "per_frame_14=dx = xpos*0.05;\n"
-      << "per_frame_15=yamptarg = if(equal(frame%15,0),min(0.3*volume*treb_att,0.5),yamptarg);\n"
-      << "per_frame_16=yamp = yamp + 0.5*(yamptarg-yamp);\n"
-      << "per_frame_17=ydir = if(above(abs(ypos),yamp),-sign(ypos),if(below(abs(yspeed),0.1),2*above(ypos,0)-1,ydir));\n"
-      << "per_frame_18=yaccel = ydir*yamp - ypos - yspeed*0.055*below(abs(ypos),yamp);\n"
-      << "per_frame_19=yspeed = yspeed + ydir*yamp - ypos - yspeed*0.055*below(abs(ypos),yamp);\n"
-      << "per_frame_20=ypos = ypos + 0.001*yspeed;\n"
-      << "per_frame_21=dy = ypos*0.05;\n"
-      << "per_frame_22=wave_a = 0;\n"
-      << "per_frame_23=q8 = oldq8 + 0.0003*(pow(1+1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,6)/fps);\n"
-      << "per_frame_24=oldq8 = q8;\n"
-      << "per_frame_25=q7 = 0.003*(pow(1+1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,6)/fps);\n"
-      << "per_frame_26=rot = 0.4 + 1.5*sin(time*0.273) + 0.4*sin(time*0.379+3);\n"
-      << "per_frame_27=q1 = 0.05*sin(time*1.14);\n"
-      << "per_frame_28=q2 = 0.03*sin(time*0.93+2);\n"
-      << "per_frame_29=q3 = if(above(frame,60),1, frame/60.0);\n"
-      << "per_frame_30=oldq8 = if(above(oldq8,1000),0,oldq8);\n"
-      << "per_pixel_1=zoom =( log(sqrt(2)-rad) -0.24)*1;\n";
+      << "per_frame_1=wave_r = wave_r + 0.350*( 0.60*sin(0.825*time) + 0.40*sin(0.915*time) );\n"
+      << "per_frame_2=wave_g = wave_g + 0.350*( 0.60*sin(0.900*time) + 0.40*sin(1.025*time) );\n"
+      << "per_frame_3=wave_b = wave_b + 0.350*( 0.60*sin(0.810*time) + 0.40*sin(0.950*time) );\n"
+      << "per_frame_4=mv_r= wave_r + 0.350*( 0.60*sin(0.900*time) + 0.40*sin(0.750*time) );\n"
+      << "per_frame_5=mv_g= wave_g + 0.350*( 0.60*sin(0.825*time) + 0.40*sin(0.950*time) );\n"
+      << "per_frame_6=mv_b= wave_b + 0.350*( 0.60*sin(0.775*time) + 0.40*sin(1.025*time) );\n"
+      << "per_frame_7=ib_r=min(bass*0.5,1);\n"
+      << "per_frame_8=ib_b=min(treb*0.5,1);\n"
+      << "per_frame_9=ib_g=min(mid*0.5,1);\n"
+      << "per_frame_10=ob_r=1-min(mid_att*0.5,1);\n"
+      << "per_frame_11=ob_b=1-min(bass_att*0.5,1);\n"
+      << "per_frame_12=ob_g=1-min(treb_att*0.5,1);\n"
+      << "per_pixel_1=zoom =0.9- sin(time + ang*2)*0.02;\n"
+      << "per_pixel_2=zoom=zoom+(bass_att-1.0)*0.115;\n";
 
   return out.str();
 }
diff --git a/src/libprojectM/projectM.cpp b/src/libprojectM/projectM.cpp
index 952035f..2a7fb1b 100644
--- a/src/libprojectM/projectM.cpp
+++ b/src/libprojectM/projectM.cpp
@@ -636,20 +636,25 @@
   // Start at end ptr- this allows next/previous to easily be done from this position.
   *m_presetPos = m_presetChooser->end();
 
-  // Load idle preset
-  std::cerr << "[projectM] Allocating idle preset..." << std::endl;
-  m_activePreset = m_presetLoader->loadPreset
-                    ("idle://Geiss & Sperl - Feedback (projectM idle HDR mix).milk");
-
-  renderer->SetPipeline (m_activePreset->pipeline());
-
   // Case where no valid presets exist in directory. Could also mean
   // playlist initialization was deferred
-  if (m_presetChooser->empty())
-  {
+  if (m_presetChooser->empty()) {
+    // Load idle preset
+    std::cerr << "[projectM] Allocating idle preset..." << std::endl;
+    m_activePreset = m_presetLoader->loadPreset
+                      ("idle://Rovastar & Fvese - Stranger Minds (idle-ized).milk");
+    renderer->SetPipeline (m_activePreset->pipeline());
     //std::cerr << "[projectM] warning: no valid files found in preset directory \""
     //<< m_presetLoader->directoryName() << "\"" << std::endl;
   }
+  else if (settings().shuffleEnabled)
+  {
+    /*
+     * Starting at the same preset every time we launch is boring.  Pick a
+     * preset at random.
+     */
+    selectRandom (true);
+  }
 
   _matcher = new RenderItemMatcher();
   _merger = new MasterRenderItemMerge();