diff --git a/public/client.js b/public/client.js
index 8e8d58997a3c1217c219de636fb6f8e475dd9207..b3b5dc5674c63888a412e79a6263a3a126c6d122 100644
--- a/public/client.js
+++ b/public/client.js
@@ -15,8 +15,8 @@ $(function(){
     iosocket.on('metronome', function(serverStepPos){
         stepPos = serverStepPos;
         advanceStep(stepPos);
-        playSound();
         playExternalSound();
+        playSound();
     });
 
     // if bpm changes from other client, update slider pos here
@@ -116,7 +116,7 @@ function getAllSteps(){
     for(var i = 0; i < 4; i++){
         grid [i] = new Array(16);
         for(var j = 0; j < 16; j++){
-            grid[i][j] = $('.step' + j + '.row' + i).is(":checked") ? $('#row'+i+' select').val() : '0'; 
+            grid[i][j] = $('.step' + j + '.row' + i).is(":checked") ? {sound: $('#row'+i+' select').val(), rate: $('#pitchRow'+i).val()} : '0'; 
         }
     }
     iosocket.emit('grid', grid);
@@ -132,11 +132,10 @@ function playExternalSound(){
             for(var j = 0; j < 16; j++){
                 if(externalGrid[i][j] != 0){
                     if(stepPos == j){
-                        this[externalGrid[i][j]].pause();
-                        this[externalGrid[i][j]].currentTime = 0;
-                    //this[externalGrid[i][j]].playbackRate = pitch;
-                    
-                        this[externalGrid[i][j]].play();
+                        this[externalGrid[i][j].sound].pause();
+                        this[externalGrid[i][j].sound].currentTime = 0;
+                        this[externalGrid[i][j].sound].playbackRate =  externalGrid[i][j].rate;                  
+                        this[externalGrid[i][j].sound].play();
                     }
                 }            
             }