diff --git a/lib/+artoa/+controller/+track/+parameter/open.m b/lib/+artoa/+controller/+track/+parameter/open.m
index fc248bd8dd20e2c8d2ccd31b2319f80450f54821..6f818393fb360fefe8fc134a061b5165699f631e 100644
--- a/lib/+artoa/+controller/+track/+parameter/open.m
+++ b/lib/+artoa/+controller/+track/+parameter/open.m
@@ -23,6 +23,7 @@ callbacks.inputOutputInterpolationInterval = @artoa.controller.track.parameter.i
 callbacks.inputGapSize = @artoa.controller.track.parameter.inputGapSize;
 callbacks.tableSoundSourceCombinationsSelection = '';
 callbacks.tableSoundSourceCombinationsEdit = '';
+callbacks.tableSoundSourceOffsetsEdit = @artoa.controller.track.parameter.tableSoundsourceOffsetsEdit;
 callbacks.buttonTrack = '';
 callbacks.buttonQuickTrack = '';
 callbacks.buttonAddCombination = '';
@@ -37,9 +38,33 @@ artoa.gui.track.parameter( ...
     artoaWorkspace.defaults.soundspeedMethods ...
 );
 
+
 %% Create workspace variables
 if ~isfield(artoaWorkspace, 'trackParameter')
     artoaWorkspace.trackParameter = struct();
+    % initialize sound source offsets
+    artoaGui.trackParameter.tableSoundSourceOffsets.RowName = fieldnames( ...
+        artoaWorkspace.filteredSoundsources ...
+    );
+    artoaGui.trackParameter.tableSoundSourceOffsets.Data(1:length(artoaGui.trackParameter.tableSoundSourceOffsets.RowName), 1) = {0};
+    % initialize settings
+    availableCallbacks = { ...
+        'comboboxTrackingMethod', ...
+        'checkboxDopplerCorrection', ...
+        'comboboxInterpolationMethod', ...
+        'comboboxSoundspeedMethod', ...
+        'checkboxPlotResiduals', ...
+        'inputOutputInterpolationInterval', ...
+        'inputGapSize', ...
+        'tableSoundSourceOffsetsEdit' ...
+    };
+
+    for i = 1:length(availableCallbacks)
+        if isfield(callbacks, availableCallbacks{i})
+            % execute the callback to save the state
+            callbacks.(availableCallbacks{i})();
+        end
+    end
 end
 
 %% Update the values if required
diff --git a/lib/+artoa/+controller/+track/+parameter/tableSoundsourceOffsetsEdit.m b/lib/+artoa/+controller/+track/+parameter/tableSoundsourceOffsetsEdit.m
new file mode 100644
index 0000000000000000000000000000000000000000..fe0a2c3f7f2a49ef2065a380ad77b670d1c6bdad
--- /dev/null
+++ b/lib/+artoa/+controller/+track/+parameter/tableSoundsourceOffsetsEdit.m
@@ -0,0 +1,13 @@
+function [] = tableSoundsourceOffsetsEdit(~, ~)
+%TABLESOUNDSOURCEOFFSETSEDIT Summary of this function goes here
+%   Detailed explanation goes here
+
+
+global artoaWorkspace artoaGui;
+
+artoaWorkspace.trackParameter.soundsourceOffsets = artoaGui.trackParameter.tableSoundSourceOffsets.Data;
+
+
+
+end
+
diff --git a/lib/+artoa/+controller/+track/+parameter/updateGui.m b/lib/+artoa/+controller/+track/+parameter/updateGui.m
index 40d3482b44fcf17e8e74a5976a44a56be5024a28..3f86a76efe39e41b5e93d84e94cda284decf21aa 100644
--- a/lib/+artoa/+controller/+track/+parameter/updateGui.m
+++ b/lib/+artoa/+controller/+track/+parameter/updateGui.m
@@ -28,8 +28,15 @@ for i = 1:length(fieldNames)
             artoaGui.trackParameter.inputOutputInterpolationInterval.String = currentValue;
         case 'gapSize'
             artoaGui.trackParameter.inputGapSize.String = currentValue;
+        case 'soundsourceOffsets'
+            artoaGui.trackParameter.tableSoundSourceOffsets.Data = currentValue;
     end
 end
 
+% update soundsources
+artoaGui.trackParameter.tableSoundSourceOffsets.RowName = fieldnames( ...
+    artoaWorkspace.filteredSoundsources ...
+);
+
 end
 
diff --git a/lib/+artoa/+gui/+track/parameter.m b/lib/+artoa/+gui/+track/parameter.m
index cbf16b558ad9b9de550905cbdc6d50003e4332e7..4d2a9f362b4aed807a751a9bc5dec9a8cdc1209c 100644
--- a/lib/+artoa/+gui/+track/parameter.m
+++ b/lib/+artoa/+gui/+track/parameter.m
@@ -18,6 +18,8 @@ availableCallbacks = { ...
     'inputGapSize', ...
     'tableSoundSourceCombinationsSelection', ...
     'tableSoundSourceCombinationsEdit', ...
+    'tableSoundSourceOffsetsSelection', ...
+    'tableSoundSourceOffsetsEdit', ...
     'buttonTrack', ...
     'buttonQuickTrack', ...
     'buttonAddCombination', ...
@@ -82,6 +84,7 @@ artoaGui.trackParameter.checkboxDopplerCorrection = uicontrol( ...
     'FontSize', 8, ...
     'Units', 'normalized', ...
     'Position', [left .1 .9 .3], ...
+    'Value', 1, ...
     'CallBack', pCallbacks.checkboxDopplerCorrection ...
 );
 
@@ -186,7 +189,7 @@ columns = { ...
 artoaGui.trackParameter.tableSoundSourceCombinations = uitable( ...
     artoaGui.figures.trackParameter, ...
     'Units', 'normalized', ...
-    'Position', [left, 0.13, (5*left + 3.25*width), 0.6], ...
+    'Position', [left, 0.4, (5*left + 3.25*width), 0.3], ...
     'Data', cell(1, length(columns)), ...
     'ColumnName', columns, ...
     'ColumnEditable', true, ...
@@ -195,6 +198,23 @@ artoaGui.trackParameter.tableSoundSourceCombinations = uitable( ...
 );
 clear columns;
 
+%% Sound source offset table
+
+columns = { ...
+    'Offset'
+};
+artoaGui.trackParameter.tableSoundSourceOffsets = uitable( ...
+    artoaGui.figures.trackParameter, ...
+    'Units', 'normalized', ...
+    'Position', [left, 0.1, 0.75*width, 0.27], ...
+    'Data', cell(1, length(columns)), ...
+    'ColumnName', columns, ...
+    'ColumnEditable', true, ...
+    'CellSelectionCallback', pCallbacks.tableSoundSourceOffsetsSelection,... %@(app,event) disp(num2str(event.Indices)) ...
+    'CellEditCallback', pCallbacks.tableSoundSourceOffsetsEdit ...
+);
+clear columns;
+
 %% Track buttons frame
 
 artoaGui.trackParameter.frameTrackButtons = uipanel( ...