diff --git a/src/binarystreamreader.cpp b/src/binarystreamreader.cpp
--- a/src/binarystreamreader.cpp
+++ b/src/binarystreamreader.cpp
@@ -28,6 +28,7 @@ BinaryStreamReader::BinaryStreamReader(Q
 {
     paused = false;
     skipByteRequested = false;
+    skipSampleRequested = false;
     sampleCount = 0;
 
     _numOfChannels = _settingsWidget.numOfChannels();
@@ -41,12 +42,17 @@ BinaryStreamReader::BinaryStreamReader(Q
     connect(&_settingsWidget, &BinaryStreamReaderSettings::numberFormatChanged,
             this, &BinaryStreamReader::onNumberFormatChanged);
 
-    // enable skip byte button
+    // enable skip byte and sample buttons
     connect(&_settingsWidget, &BinaryStreamReaderSettings::skipByteRequested,
             [this]()
             {
                 skipByteRequested = true;
             });
+    connect(&_settingsWidget, &BinaryStreamReaderSettings::skipSampleRequested,
+            [this]()
+            {
+                skipSampleRequested = true;
+            });
 }
 
 QWidget* BinaryStreamReader::settingsWidget()
@@ -123,6 +129,7 @@ void BinaryStreamReader::onDataReady()
     int packageSize = sampleSize * _numOfChannels;
     int bytesAvailable = _device->bytesAvailable();
 
+    // skip 1 byte if requested
     if (bytesAvailable > 0 && skipByteRequested)
     {
         _device->read(1);
@@ -130,6 +137,14 @@ void BinaryStreamReader::onDataReady()
         bytesAvailable--;
     }
 
+    // skip 1 sample (channel) if requested
+    if (bytesAvailable >= (int) sampleSize && skipSampleRequested)
+    {
+        _device->read(sampleSize);
+        skipSampleRequested = false;
+        bytesAvailable--;
+    }
+
     if (bytesAvailable < packageSize) return;
 
     int numOfPackagesToRead =
diff --git a/src/binarystreamreader.h b/src/binarystreamreader.h
--- a/src/binarystreamreader.h
+++ b/src/binarystreamreader.h
@@ -46,6 +46,7 @@ private:
     unsigned sampleSize;
     bool paused;
     bool skipByteRequested;
+    bool skipSampleRequested;
 
     /// points to the readSampleAs function for currently selected number format
     double (BinaryStreamReader::*readSample)();
diff --git a/src/binarystreamreadersettings.cpp b/src/binarystreamreadersettings.cpp
--- a/src/binarystreamreadersettings.cpp
+++ b/src/binarystreamreadersettings.cpp
@@ -39,6 +39,7 @@ BinaryStreamReaderSettings::BinaryStream
             this, SIGNAL(numberFormatChanged(NumberFormat)));
 
     connect(ui->pbSkipByte, SIGNAL(clicked()), this, SIGNAL(skipByteRequested()));
+    connect(ui->pbSkipSample, SIGNAL(clicked()), this, SIGNAL(skipSampleRequested()));
 }
 
 BinaryStreamReaderSettings::~BinaryStreamReaderSettings()
diff --git a/src/binarystreamreadersettings.h b/src/binarystreamreadersettings.h
--- a/src/binarystreamreadersettings.h
+++ b/src/binarystreamreadersettings.h
@@ -44,6 +44,7 @@ signals:
     void numOfChannelsChanged(unsigned);
     void numberFormatChanged(NumberFormat);
     void skipByteRequested();
+    void skipSampleRequested();
 
 private:
     Ui::BinaryStreamReaderSettings *ui;
diff --git a/src/binarystreamreadersettings.ui b/src/binarystreamreadersettings.ui
--- a/src/binarystreamreadersettings.ui
+++ b/src/binarystreamreadersettings.ui
@@ -73,13 +73,23 @@
      - 
       
        
-        Skip reading 1 byte to correct the alignment
+        Skip 1 byte while reading to correct the alignment
        
        
         Skip Byte
        
       
      
 
+     - 
+      
+       
+        Skip reading 1 sample while reading to shift channel order
+       
+       
+        Skip Sample
+       
+      
+     
 
     
    
    -