Leggendo lo script, l'unico punto nel quale mi sembra che venga chiamata la GUI che controlla il volume è
controllo_gui=gui_nota;
se è così non mi è chiaro quale suono riproduca e, quindi, come vengano cambiati i valori del volume.
Ad ogni modo, se la domanda è: come esportare dalla GUI che consente di regolare il volume con uno slider, spero che quanto segue risponda alla tua domanda.
La procedura consiste nell'aggiungere del codice in diverse funzioni e callback della GUI come di seguito riportato.
I valori vengono esportati quando la GUI viene chiusa.
Le modifiche / aggiunte sono racchiuse tra due righe di "
%"
%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%
(*)(tieni presente che, purtroppo, non uso MatLab 2015, per cui, non posso garantirti che le istruzioni che seguono funzionino direttamente in MatLab 2015 - potrebbe essere necessario apportare qualche modifica).
(*) nel seguito,
XXX_ è il nome della GUI
function play_m_OpeningFcn(hObject, eventdata, handles, varargin)
% --- Executes just before play_m is made visible.
function play_m_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to play_m (see VARARGIN)
% Choose default command line output for play_m
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Definizione della struttura che memorizza i dati della GUI
gui_my_data=guidata(handles.figure1)
% Inizializzazione del contatore degli elementi del vettore che contiene i
% settaggi del volume
gui_my_data.vol_cnt=0;
% Inizializzazione del vettore che contiene i settaggi del volume
gui_my_data.volume_settings=[];
% Aggiornaento della struttura dati della GUI
guidata(handles.figure1,gui_my_data)
load handel
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% UIWAIT makes play_m wait for user response (see UIRESUME)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Questa istruzione è stata "scommentata" (di default dovrebbe essere
% commentata
uiwait(handles.figure1);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function varargout = play_m_OutputFcn(hObject, eventdata, handles)
% --- Outputs from this function are returned to the command line.
function varargout = play_m_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Get default command line output from handles structure
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Questa istruzione è stata commentata
% varargout{1} = handles.output;
% Acquisizione della struttura che memorizza i dati della GUI
gui_my_data=guidata(handles.figure1)
% Assegnazione del vettore contgenente i settaggi del volume alla variabile
% "varargout". Questo sarà il valore ritornato dalla GUI
varargout{1} = gui_my_data.volume_settings;
% Chiusura della GUI
delete(hObject);
function slider1_Callback(hObject, eventdata, handles) (callback per la gestione dello slider
% --- Executes on slider movement.
function slider1_Callback(hObject, eventdata, handles)
% hObject handle to slider1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'Value') returns position of slider
% get(hObject,'Min') and get(hObject,'Max') to determine range of slider
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Acquisizione del valore dello slider
act_vol=get(hObject,'Value');
% Chiamata della funzione che regola il volume
SoundVolume(act_vol)
% Acquisizione dati GUI
gui_my_data=guidata(handles.figure1)
% Incremento del contatore dei settaggi del volume
vol_cnt=gui_my_data.vol_cnt+1;
% Memorizzazione dell'i-esimo settaggio del volume nel vettore della
% struttura dati della GUI
gui_my_data.volume_settings(vol_cnt)=act_vol;
% Memorizzazione del contatore dei settaggi del volume nella struttura dati
% della GUI
gui_my_data.vol_cnt=vol_cnt;
% Aggiornamento della struttura dati della GUI
guidata(handles.figure1,gui_my_data)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function figure1_CloseRequestFcn(hObject, eventdata, handles)
% --- Executes when user attempts to close figure1.
function figure1_CloseRequestFcn(hObject, eventdata, handles)
% hObject handle to figure1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hint: delete(hObject) closes the figure
uiresume(hObject);
% delete(hObject);
function figure1_CloseRequestFcn(hObject, eventdata, handles)
% --- Executes when user attempts to close figure1.
function figure1_CloseRequestFcn(hObject, eventdata, handles)
% hObject handle to figure1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hint: delete(hObject) closes the figure
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
uiresume(hObject);
% delete(hObject);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Con le modifiche apportate alle funzioni automaticamente create da GUIDE:
OpeningFcn
OutputFcn
CloseRequestFcn
ed alla callback per la gestione dello slider:
slider1_Callback
invocando la GUI in uno script:
ret_vat=my_gui
quando la GUI viene chiusa, nel vettore "ret_vat" saranno memorizzati i valori assunti dallo slider per il controllo del volume.
Si possono trovare informazioni ed un esempio qui:
http://blogs.mathworks.com/videos/2010/02/12/advanced-getting-an-output-from-a-guide-gui/
Mi rendo conto che è un po' complicato e che probabilmente la spiegazione potrebbe essere migliore, tuttavia ...
Un suggerimento per lo script che hai inserito:
Puoi notevolmente velocizzare la sezione che costruisce i vettori
do4,
re,
mi ecc. se sostituisci tutta la serie di cicli for con le seguenti istruzioni:
%------------------------DO4-------------------
n=1:Fs;
Fdo4=261.6;
do4=A*sin(2*pi*Fdo4*n*Ts)+A/2*sin(2*pi*(3*Fdo4)*n*Ts)+A/3*sin(2*pi*(5*Fdo4)*n*Ts)+A/5*sin(2*pi*(7*Fdo4)*n*Ts);
%------------------------RE-------------------
Fre=293.7;
re=A*sin(2*pi*Fre*n*Ts)+A/2*sin(2*pi*(3*Fre)*n*Ts)+A/3*sin(2*pi*(5*Fre)*n*Ts)+A/5*sin(2*pi*(7*Fre)*n*Ts);
%------------------------MI-------------------
Fmi=329.6;
mi=A*sin(2*pi*Fmi*n*Ts)+A/2*sin(2*pi*(3*Fmi)*n*Ts)+A/3*sin(2*pi*(5*Fmi)*n*Ts)+A/5*sin(2*pi*(7*Fmi)*n*Ts);
%------------------------FA-------------------
Ffa=349.2;
fa=A*sin(2*pi*Ffa*n*Ts)+A/2*sin(2*pi*(3*Ffa)*n*Ts)+A/3*sin(2*pi*(5*Ffa)*n*Ts)+A/5*sin(2*pi*(7*Ffa)*n*Ts);
%------------------------SOL-------------------
Fsol=261.6;
sol=A*sin(2*pi*Fsol*n*Ts)+A/2*sin(2*pi*(3*Fsol)*n*Ts)+A/3*sin(2*pi*(5*Fsol)*n*Ts)+A/5*sin(2*pi*(7*Fsol)*n*Ts);
%------------------------LA-------------------
Fla=440;
la=A*sin(2*pi*Fla*n*Ts)+A/2*sin(2*pi*(3*Fla)*n*Ts)+A/3*sin(2*pi*(5*Fla)*n*Ts)+A/5*sin(2*pi*(7*Fla)*n*Ts);
%------------------------SI-------------------
Fsi=493.9;
si=A*sin(2*pi*Fsi*n*Ts)+A/2*sin(2*pi*(3*Fsi)*n*Ts)+A/3*sin(2*pi*(5*Fsi)*n*Ts)+A/5*sin(2*pi*(7*Fsi)*n*Ts);
%------------------------DO5-------------------
Fdo5=523.2;
do5=A*sin(2*pi*Fdo5*n*Ts)+A/2*sin(2*pi*(3*Fdo5)*n*Ts)+A/3*sin(2*pi*(5*Fdo5)*n*Ts)+A/5*sin(2*pi*(7*Fdo5)*n*Ts);
Hope this helps.