function StartStopLiveSpectrumButtonValueChanged(app, event)
if ~isfield(app, 'bckgrnd_avg')
load("Spectrometer_Settings.mat", "bckgrnd_avg");
data = load("Spectrometer_Settings.mat");
app.bckgrnd_avg = bckgrnd_avg;
pass = BackgroundPhotoExistenceCheck(app,"Live Spectrum");
triggerconfig(app.vid_ASI, 'manual');
grating = app.Spectrometer_gratting;
fields = fieldnames(data);
field_value = data.(field_name);
if contains(field_name, num2str(grating)) && contains(field_name,"max")
wvlngth_end = field_value;
elseif contains(field_name, num2str(grating)) && contains(field_name,"min")
wvlngth_start = field_value;
wvlength = linspace(wvlngth_start, wvlngth_end, size(app.vid_ASI.VideoResolution, 1));
while app.StartStopLiveSpectrumButton.Value
Emission_Reading_Img = getdata(app.vid_ASI, 1);
[spectrum_sum] = app.MyFuncs.ASI_Live_Feed_Snapping(Emission_Reading_Img,app.bckgrnd_avg);
warning(ME.Identifier,'Failed to capture or process spectrum: %s', ME.message);
if isempty(app.PlotHandle) || ~isvalid(app.PlotHandle)
app.PlotHandle = plot(app.Spectrometer_Plot, wvlength, spectrum_sum);
xlabel(app.Spectrometer_Plot, 'Wavelength (nm)');
ylabel(app.Spectrometer_Plot, 'Arb. Counts');
set(app.PlotHandle,'YData', spectrum_sum);