Unroll a frequently executed loop a little for a small speedup

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14924 a1c6a512-1295-4272-9138-f99709370657
diff --git a/apps/plugins/midi/synth.h b/apps/plugins/midi/synth.h
index 5edaf2b..223b597 100644
--- a/apps/plugins/midi/synth.h
+++ b/apps/plugins/midi/synth.h
@@ -16,20 +16,37 @@
  * KIND, either express or implied.
  *
  ****************************************************************************/
-
 int initSynth(struct MIDIfile * mf, char * filename, char * drumConfig);
 signed short int synthVoice(struct SynthObject * so);
 void setPoint(struct SynthObject * so, int pt);
 
 static inline void synthSample(int * mixL, int * mixR)
 {
-   register int dL=0;
-   register int dR=0;
-   register short sample=0;
-   register struct SynthObject *voicept=voices;
-   struct SynthObject *lastvoice=&voices[MAX_VOICES];
+    int i;
+    register int dL=0;
+    register int dR=0;
+    register short sample = 0;
+    register struct SynthObject *voicept=voices;
 
-    while(voicept!=lastvoice)
+    for(i=MAX_VOICES/2; i > 0; i--)
+    {
+        if(voicept->isUsed==1)
+        {
+            sample = synthVoice(voicept);
+            dL += (sample*chPanLeft[voicept->ch])>>7;
+            dR += (sample*chPanRight[voicept->ch])>>7;
+        }
+        voicept++;
+        if(voicept->isUsed==1)
+        {
+            sample = synthVoice(voicept);
+            dL += (sample*chPanLeft[voicept->ch])>>7;
+            dR += (sample*chPanRight[voicept->ch])>>7;
+        }
+        voicept++;
+    }
+
+    for(i=MAX_VOICES%2; i > 0; i--)
     {
         if(voicept->isUsed==1)
         {