Upload
diego-apaza
View
621
Download
0
Embed Size (px)
Citation preview
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 115
ELECTROACUSTICA A9607-5
GENERACION DE ONDAS DE SONIDO
1- OBJETIVO GENERAL
El objetivo principal de este laboratorio es generar sonido de las ondas a diferentes frecuencias
2- OBJETIVOS ESPECIFICOS
Conocer los conceptos baacutesicos sobre ondas sus paraacutemetros y caracteriacutesticas
Conocer las herramientas de MATLAB y la interfaz graacutefica GUIDE
Generar sonido de manera simple con MATLAB
Crear una interfaz graacutefica para generar sonidos a diferentes frecuencias
3- ASPECTOS TEORICOS
En fiacutesica una onda es una propagacioacuten de una perturbacioacuten de alguna propiedad de un medio por ejemplo
densidad presioacuten campo eleacutectrico o campo magneacutetico que se propaga a traveacutes del espacio transportando
energiacutea El medio perturbado puede ser de naturaleza diversa como aire agua un trozo de metal o el vaciacuteo
Elementos de una Onda
Cresta La cresta es el punto maacutes alto de dicha amplitud o punto maacuteximo de saturacioacuten de la onda
Periacuteodo El periodo es el tiempo que tarda la onda en ir de un punto de maacutexima amplitud al
siguiente
Amplitud La amplitud es la distancia vertical entre una cresta y el punto medio de la onda Noacutetese
que pueden existir ondas cuya amplitud sea variable es decir crezca o decrezca con el paso del
tiempo
Frecuencia Nuacutemero de veces que es repetida dicha vibracioacuten En otras palabras es una simple
repeticioacuten de valores por un periacuteodo determinado Valle Es el punto maacutes bajo de una onda
Longitud de onda Distancia que hay entre dos crestas consecutivas de dicho tamantildeo
Las magnitudes que van a entrar en juego en el estudio matemaacutetico de estas ondas son
El periacuteodo es el tiempo que transcurre entre la generacioacuten de un pulso y el siguiente Se
representa por la letra T y en el SI se mide en segundos
La longitud de onda es la distancia que existe entre dos pulsos consecutivos Se representa por
la letra l y en el SI se mide en metros
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 215
ELECTROACUSTICA A9607-5
La velocidad de propagacioacuten es el cociente entre el desplazamiento que experimenta un pulso y
el tiempo insumido
Si consideramos un desplazamiento igual a la longitud de onda el tiempo insumido es el periacuteodo
pudiendo expresar la velocidad de la siguiente manera
La frecuencia es la inversa del periacuteodo es decir representa el nuacutemero de pulsos generados por unidad de
tiempo y en el SI se mide en Hz (Hertz)
Ecuacioacuten de onda
Una forma habitual de introducir los paraacutemetros que intervienen en la descripcioacuten de ondas es a partir de
una definicioacuten previa y justificar su significado posteriormente en la funcioacuten de onda Algunos teacuterminos son
ya conocidos de etapas previas por ejemplo amplitud como valor maacuteximo que puede alcanzar la
perturbacioacuten o la frecuencia como rapidez con que cambia la perturbacioacuten en un punto
Ondas armoacutenicas en una cuerda
Muchas de las caracteriacutesticas de las ondas dependen de la forma como se genera la perturbacioacuten en el
punto origen o FOCO de la onda Consideremos de nuevo el caso de una cuerda tensa y supongamos que
uno de sus puntos - Origen - realiza el movimiento oscilatorio causado por un muelle sujeto a eacutel
El desplazamiento vertical se transmite en sucesivos instantes a los puntos vecinos y constituye la
onda propagaacutendose en direccioacuten horizontal A esta onda que se genera durante un tiempo suficientemente
largo se le suele llamar TREN DE ONDAS para distinguirla del PULSO
Dibujando el desplazamiento vertical de todos los puntos de la cuerda y congelando la figura para
compararlos en el mismo instante apreciamos que su valor variacutea espacialmente como una funcioacuten seno
Escogemos un punto de la cuerda para dibujar en eacutel la magnitud y direccion del desplazamiento
Observamos que hay otros puntos con el mismo valor separados por la distancia que se conoce como
LONGITUD DE ONDA Esta longitud miacutenima entre dos puntos con el mismo estado de perturbacion es la
periodicidad espacial de la onda y se representa por landa l
La funcioacuten espacial del seno con un valor maacuteximo que denominamos A -AMPLITUD- puede escribirse como
Para una posicion x determinada la fase varia respecto al tiempo como podemos ver en una representacioacuten
temporal En una cuerda representa al desplazamiento vertical en cada instante si bien en este caso
particular tambieacuten puede representar el movimiento
puntual de masa Esto que solo es posible en medios materiales con propiedades elaacutesticas no da lugar sinembargo a transporte neto de materia cuando la onda se propaga
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 315
ELECTROACUSTICA A9607-5
Observamos que la nueva graacutefica tambieacuten es un seno donde se repite el mismo valor en intervalos de
tiempo T llamado PERIODO
Supongamos que el punto observado corresponde a x=0 su desplazamiento
es un movimiento armoacutenico simple (MAS) que coincide con el que realiza el extremo del muelle descrito por
Como el elemento de cuerda realiza el MAS con el mismo periodo y amplitud que el muelle comparando
ambas expresiones se obtiene una relaccion entre el periodo y la longitud de onda
Comprobamos que T es tambieacuten el tiempo para que un cierto valor de la onda determinado por la fase
llegue al siguiente punto separado la distancia de una longitud de onda Esto nos lleva a interpretar la
VELOCIDAD DE LA ONDA como aquella con la que recorre una longitud de onda en el tiempo de un periodo
Por ser la velocidad con que se transmite la fase de la funcioacuten de ondase le conce tambieacuten
comoVELOCIDAD DE FASE
Si introducimos la frecuencia angular o PULSACION como el numero de periodos en dos pi segundos
y la frecuencia espacial o NUMERO DE ONDAS como el numero longitudes de onda en dos pi metros
la funcioacuten de onda puede escribirse como
Tipos de ondas
La fiacutesica distingue entre dos tipos de ondas fundamentales las ondas materiales que requieren un medio
material para propagarse y las ondas electromagneacuteticas que no requieren un medio material
Las ondas materiales se transmiten por la vibracioacuten de las partiacuteculas que integran el medio por el que
estas viajan En este caso el medio es fundamental para la transmisioacuten de la perturbacioacuten siendo de
partiacutecula a partiacutecula La energiacutea se transmite gracias a las condiciones elaacutesticas del medio
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 415
ELECTROACUSTICA A9607-5
En cambio las ondas electromagneacuteticas se transmiten por las modificaciones que sufren los campos
magneacuteticos y eleacutectricos transmitieacutendose en el vaciacuteo
La velocidad a que se propagan las ondas electromagneacuteticas depende de la constante dieleacutectrica e y la
permeabilidad magneacutetica del medio m En caso de transmitirse por el vaciacuteo su velocidad seraacute
No obstante lo expresado anteriormente las ecuaciones que describen el comportamiento de ambos tipos
de ondas son las mismas y en ambos casos lo que se transporta es energiacutea
Tambieacuten las ondas pueden ser clasificadas seguacuten el comportamiento que tiene la perturbacioacuten en relacioacuten
a la propagacioacuten de la onda
Tendremos entonces ondas que se propagan en una direccioacuten mientras que las partiacuteculas del medio se
mueven en direccioacuten perpendicular a dicha propagacioacuten (caso de ondas en una cuerda) y las llamaremos
ondas transversales
En cambio cuando comprimimos un resorte se observa que la direccioacuten del movimiento de las partiacuteculas
es la misma que la de la onda A este tipo de ondas se les llama longitudinales
Las ondas o perturbaciones longitudinales pueden tener como ejemplo claro el de la propagacioacuten del
sonido Para entenderlo basta con pensar el movimiento de pistoacuten que realiza el cono de un parlante
donde podemos observar que se mueve en la misma direccioacuten en que se propaga el sonido
MATLAB
MATLAB (abreviatura de MATrix LABoratory laboratorio de matrices) es un software matemaacutetico que
ofrece un entorno de desarrollo integrado (IDE) con un lenguaje de programacioacuten propio (lenguaje M) Estaacute
disponible para las plataformas Unix Windows y Apple Mac OS X
Entre sus prestaciones baacutesicas se hallan la manipulacioacuten de matrices la representacioacuten de datos y
funciones la implementacioacuten de algoritmos la creacioacuten de interfaces de usuario (GUI) y la comunicacioacutencon programas en otros lenguajes y con otros dispositivos hardware El paquete MATLAB dispone de dos
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 515
ELECTROACUSTICA A9607-5
herramientas adicionales que expanden sus prestaciones a saber Simulink (plataforma de simulacioacuten
multidominio) y GUIDE (editor de interfaces de usuario - GUI) Ademaacutes se pueden ampliar las capacidades
de MATLAB con las cajas de herramientas (toolboxes) y las de Simulink con los paquetes de bloques
(blocksets)
Es un software muy usado en universidades y centros de investigacioacuten y desarrollo En los uacuteltimos antildeos ha
aumentado el nuacutemero de prestaciones como la de programar directamente procesadores digitales de sentildealo crear coacutedigo VHDL
INTERFAZ GRAFICA DE USUARIO EN MATLAB (GUIDE)
GUIDE es un entorno de programacioacuten visual disponible en MATLAB para realizar y ejecutar programas que
necesiten ingreso continuo de datos Tiene las caracteriacutesticas baacutesicas de todos los programas visuales como
Visual Basic o Visual C++
INICIOPara iniciar nuestro proyecto lo podemos hacer de dos maneras
a) Ejecutando la siguiente instruccioacuten en la ventana de comandos
gtgt guide
b) Haciendo un click en el iacutecono que muestra la figura
Se presenta el siguiente cuadro de diaacutelogo
Se presentan las siguientes opciones
a) Blank GUI (Default)La opcioacuten de interfaz graacutefica de usuario en blanco (viene predeterminada) nos presenta un formulario
nuevo en el cual podemos disentildear nuestro programa
b) GUI with Uicontrols
Esta opcioacuten presenta un ejemplo en el cual se calcula la masa dada la densidad y el volumen en alguno de
los dos sistemas de unidades Podemos ejecutar este ejemplo y obtener resultados
c) GUI with Axes and Menu
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 615
ELECTROACUSTICA A9607-5
Esta opcioacuten es otro ejemplo el cual contiene el menuacute File con las opciones Open Print y Close En el
formulario tiene un Popup menu un push button y un objeto Axes podemos ejecutar el programa eligiendo
alguna de las seis opciones que se encuentran en el menuacute despegable y haciendo click en el botoacuten de
comando
d) Modal Question DialogCon esta opcioacuten se muestra en la pantalla un cuadro de diaacutelogo comuacuten el cual consta de una pequentildea
imagen una etiqueta y dos botones Yes y No dependiendo del botoacuten que se presione el GUI retorna eltexto seleccionado (la cadena de caracteres lsquoYesrsquo o lsquoNorsquo)
Para obtener la etiqueta de cada elemento de la paleta de componentes ejecutamos FilegtgtPreferentes y
seleccionamos Show names in component palette
Tenemos la siguiente presentacioacuten
PROPIEDADES DE LOS COMPONENTES
Cada uno de los elementos de GUI tiene un conjunto de opciones que acceder con click derecho Aparece el
siguiente submenuacute
COMPONENTES
CONTROL DESCRIPCIOacuteNPush Button Genera una accioacuten
Slider Representa un rango de valoresRadio Button Representa una opcioacuten
Check Box Indica el estado de una opcioacuten
Edit Text Para editar texto
Static text Muestra un string de texto
Pop-up Menu Provee una lista de opciones
Listbox Lista deslizable
Toggle Button Genera una accioacuten on off
Axes Para graficar
Panel Visualiza grupo de controles
Button Grup Es un panel exclusivo para radio buttons y
toggle buttons
ActiveX Control Despliega controles ActiveX en Gui
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 715
ELECTROACUSTICA A9607-5
La opcioacuten Property Inspector nos permite personalizar cada elemento
Al hacer click derecho en el elemento ubicado en el aacuterea de disentildeo una de las opciones maacutes importantes es
View Callbacks la cual al ejecutarla abre el archivo m asociado a nuestro disentildeo y nos posiciona en la
parte del programa que corresponde a la subrutina que se ejecutaraacute cuando se realice una determinada
accioacuten sobre el elemento que estamos editando
FUNCIONAMIENTO DE UNA APLICACIOacuteN GUIUna aplicacioacuten GUIDE consta de dos archivos m y fig El archivo m es el que contiene el coacutedigo con las
correspondencias de los botones de control de la interfaz y el archivo fig contiene los elementos graacuteficos
Cada vez que se adicione un nuevo elemento en la interfaz graacutefica se genera automaacuteticamente coacutedigo en el
archivo m Para ejecutar una Interfaz Graacutefica si la hemos etiquetado con el nombre cursofig simplemente
ejecutamos en la ventana de comandos gtgt curso O haciendo click derecho en el m-file y seleccionando la
opcioacuten RUN
Todos los valores de las propiedades de los elementos (color valor posicioacuten stringhellip) y los valores de las
variables transitorias del programa se almacenan en una estructura los cuales son accedidos mediante un
uacutenico y mismo puntero para todos estos Tomando por ejemplo el programa listado anteriormente el
puntero se asigna en
handlesoutput = hObject
handles es nuestro puntero a los datos de la aplicacioacuten Esta definicioacuten de puntero es salvada con la
siguiente instruccioacutenguidata(hObject handles) guidata es la sentencia para salvar los datos de laaplicacioacuten
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 815
ELECTROACUSTICA A9607-5
Aviso guidata es la funcioacuten que guarda las variables y propiedades de los elementos en la estructura de
datos de la aplicacioacuten por lo tanto como regla general en cada subrutina se debe escribir en la uacuteltima liacutenea
lo siguiente
guidata(hObjecthandles)
Esta sentencia nos garantiza que cualquier cambio o asignacioacuten de propiedades o variables quede
almacenado
Por ejemplo si dentro de una subrutina una operacioacuten dio como resultado unavariable utpl para poderutilizarla desde el programa u otra subrutina debemos salvarla de la siguiente manera
handlesutpl=utpl
guidata(hObjecthandles)
La primera liacutenea crea la variable utpl a la estructura de datos de la aplicacioacuten apuntada por handles y la
segunda graba el valor
SENTENCIAS GET Y SET
La asignacioacuten u obtencioacuten de valores de los componentes se realiza mediante las sentencias get y set Por
ejemplo si queremos que la variable utpl tenga el valor del Slider escribimos
utpl= get(handlesslider1Value)
Notar que siempre se obtienen los datos a traveacutes del puntero handles
Para asignar el valor a la variable utpl al statictext etiquetada como text1 escribimos
set(handlestext1Stringutpl)Escribe el valor del Slideren static-text
MANEJO DE ARCHIVOS DE SONIDO
El computador funciona de forma discreta no en forma continua es decir trabaja con nuacutemeros que
guardamos en vectores
Un ejemplo de vector es [12345610]
Para hacer sonidos necesitamos una sentildeal que en este caso es un vector con muchos nuacutemeros de repente
millones Este vector tiene que contener el sonido
Un sonido es una vibracioacuten una onda que la vemos de forma sinuidal o de forma parecida (En realidad es
consecuencia de ello pero para formar una idea buena lo planteo asiacute)
Lo que se guarda en el vector son valores de la sentildeal Una analogiacutea para entender esto la visualizo asiacute Una
cuerda que se mueve vibrando (Fig 1) y le sacamos una foto en un instante Cuando la cuerda esta quieta
no vibrando decimos que estaacute en el valor cero (Fig 2) Mientras empieza a moverse de izquierda a derecha
va adquiriendo valores los que medimos al medio de la cuerda desde el punto donde esta quieta -cuando
esta en cero- (Fig3) su elongacioacuten maacutexima seraacute 1 a la derecha y -1 a la izquierda (Fig5 y 6)
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 915
ELECTROACUSTICA A9607-5
Bueno con cada foto que le saque a mi onda que representeacute como cuerda tendreacute un valor que guardareacute en
el vector Pero como el movimiento es una vibracioacuten tengo que guardar estos valores cada cierto intervalo
de tiempo algo asiacute como sacar fotos cada 1 segundo a mi onda y es ahiacute donde aparece el concepto de
ldquoFrecuencia de Muestrordquo
La frecuencia de Muestreo fm Es la cantidad de muestras (fotos en mi analogiacutea) que se toman en 1
segundo Si tomo la grafica de los valores que va tomando mi onda (cuerda) en el ldquoeje yrdquo pongo los valores
en funcioacuten del tiempo y en el ldquoeje xrdquo el tiempo la frecuencia de muestreo en la figura es 1Hz] pues
muestreo (tomo una foto) 1 vez por segundo
Lo que guardo es lo que se ve arriba
Frecuencia de muestreo
Loacutegicamente cuando tengo una mayor frecuencia de muestreo mejor seraacute la calidad del sonido porque
estareacute representando con maacutes puntos mi funcioacuten
Por ejemplo el teleacutefono funciona a 8000 [Hz] y se escucha maacutes o menos no maacutes (Sobre todo cuando hacen
esos contactos con las unidades moacuteviles en la Radio) Los CD tienen una frecuencia de muestreo de
44100[Hz] la radio de 22100[Hz] bueno como dato no maacutes
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1015
ELECTROACUSTICA A9607-5
4- ASPECTOS PRACTICOS
Para realizar nuestro laboratorio con ayuda de todos los aspectos teoricos ya revisados en la anterior
seccioacuten empezaremos definiendo la ecuacioacuten de la onda que programaremos
Sabiendo que la ecuacioacuten de una onda es una de caraacutecter trigonomeacutetrico la ecuacioacuten de esta seraacute
Con esta ecuacioacuten ya podemos identificar a nuestra amplitud que es de 5 ademaacutes de la velocidad angular
que contiene o depende de la frecuencia y esta es la que variara en nuestra interfaz
Ya identificados nuestros paraacutemetros procedamos a realizar una programa en matlab es deir un archivo m
que reprodusca el sonida y grafique parte de esta Entonces analicemos el siguiente programa
Con este programa vemos y reconocemos que significa cada paraacutemetro En primer lugar definimos la
frecuencia de muestreo esto se refiere a los puntos que seraacuten tomados en cuenta para que la grafica nosea tan cuadrada y nos permita apreciar bien las carcteristicas
La frecuencia de sonido esta definida a nuestra variable f de nuestra ecuacioacuten de onda por el momento la
definiremos con un valor
La duracioacuten del sonido seraacute como se ve de 2 segundos esta se puede cambiar La sentildeal que introduciremos
es la ya antes vista con lo que con el comando lsquosoundrsquo podremos escuchar el sonido de esa frecuencia
Definimos asi tambieacuten los limitesdel grafico que dependeraacuten de la frecuencia de muestreo y de la frecuencia
del sonido pa esto le damos nuevamente la ecuacioacuten con x en funcioacuten de t1
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1115
ELECTROACUSTICA A9607-5
Como vemos en la grafica la amplitud es 5 nuestra frecuencia es casi 10000 con lo que el periodo es 2e-4con esto completamos nuestro primer paso
Ahora para realizar nuestro GUI o interfaz de usuario debemos realizar los pasos para crear la interfaz el cual
debera ser modificada en PROPERTY INSPECTOR para quedar de esta manera
Luego la programacioacuten de cada botoacuten en nuestro archivo m quedara
function varargout = SON1(varargin) SON1 MATLAB code for SON1fig SON1 by itself creates a new SON1 or raises the existing singleton H = SON1 returns the handle to a new SON1 or the handle to the existing singleton SON1(CALLBACKhObjecteventDatahandles) calls the local function named CALLBACK in SON1M with the given input arguments SON1(PropertyValue) creates a new SON1 or raises the existing singleton Starting from the left property value pairs are applied to the GUI before SON1_OpeningFcn gets called An
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1215
ELECTROACUSTICA A9607-5
unrecognized property name or invalid value makes property application stop All inputs are passed to SON1_OpeningFcn via varargin See GUI Options on GUIDEs Tools menu Choose GUI allows only one instance to run (singleton) See also GUIDE GUIDATA GUIHANDLES
Edit the above text to modify the response to help SON1
Last Modified by GUIDE v25 14-Aug-2011 123846
Begin initialization code - DO NOT EDIT gui_Singleton = 1 gui_State = struct(gui_Name mfilename
gui_Singleton gui_Singleton gui_OpeningFcn SON1_OpeningFcn gui_OutputFcn SON1_OutputFcn gui_LayoutFcn [] gui_Callback [])
if nargin ampamp ischar(varargin1) gui_Stategui_Callback = str2func(varargin1) end
if nargout [varargout1nargout] = gui_mainfcn(gui_State varargin)
else gui_mainfcn(gui_State varargin)
end End initialization code - DO NOT EDIT
--- Executes just before SON1 is made visible
function SON1_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 SON1 (see VARARGIN)
Choose default command line output for SON1 handlesoutput = hObject
Update handles structure guidata(hObject handles)
UIWAIT makes SON1 wait for user response (see UIRESUME) uiwait(handlesfigure1)
--- Outputs from this function are returned to the command line function varargout = SON1_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 varargout1 = handlesoutput
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1315
ELECTROACUSTICA A9607-5
--- Executes on button press in PLAY function PLAY_Callback(hObject eventdata handles) Frecuencia de muestreo fm=44000 frecuencia sonido nota musical La
sliderValue = get(handlesedit2Value) puts the slider value into the edit text component fr= get(handlesslider1Value) Duracion en segundos duracion=1 t=01fmduracion Sentildeal senoidal y=5cos(fr2pit) La hacemos sonar sound(yfm) grafica fm1=1000000 t1=01fm12fr x=5cos(fr2pit1) La guardamos como wav wavwrite(5yfmmi440wav) Graficamos un pedacito para ver la forma t=t(round(685length(t)100)round(70length(t)100)) y=y(round(685length(y)100)round(70length(y)100)) plot(t1x) Update handles structure guidata(hObject handles)
Como se ve en la configuracioacuten del botoacuten PLAY definimos la frecuencia de muestreo la duracioacuten y nuestra
funcioacuten La aplicacioacuten del slider es que obtenemos el valor de la frecuencia de este y lo guardamos en fr
como se ve
hObject handle to PLAY (see GCBO) eventdata reserved - to be defined in a future version of MATLAB handles structure with handles and user data (see GUIDATA)
--- Executes on slider movement function slider1_Callback(hObject eventdata handles) obtains the slider value from the slider component sliderValue = get(handlesslider1Value)
puts the slider value into the edit text component set(handlesedit2String num2str(sliderValue))
Update handles structure guidata(hObject handles) handles structure with handles and user data (see GUIDATA)
Hints get(hObjectValue) returns position of slider get(hObjectMin) and get(hObjectMax) to determine range of slider
--- Executes during object creation after setting all properties function slider1_CreateFcn(hObject eventdata handles) hObject handle to slider1 (see GCBO) eventdata reserved - to be defined in a future version of MATLAB handles empty - handles not created until after all CreateFcns called
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1415
ELECTROACUSTICA A9607-5
Hint slider controls usually have a light gray background if isequal(get(hObjectBackgroundColor)get(0defaultUicontrolBackgroundColor))
set(hObjectBackgroundColor[9 9 9]) end
--- Executes during object creation after setting all properties
function edit2_Callback(hObject eventdata handles) get the string for the editText component sliderValue = get(handlesedit2String)
convert from string to number if possible otherwise returns empty sliderValue = str2num(sliderValue)
if user inputs something is not a number or if the input is less than 0
or greater than 100 then the slider value defaults to 0 set(handlesslider1Value0) set(handlesedit2String0)
else set(handlesslider1ValuesliderValue)
end
En esta parte de la programacioacuten podemos ver como determinamos los liacutemites con una condicioacuten haciendo
que si el valor de la interfaz edit text que pusimos sobrepasa el limite este mostrara por defecto un 0
Update handles structure guidata(hObject handles)
hObject handle to edit2 (see GCBO) eventdata reserved - to be defined in a future version of MATLAB handles structure with handles and user data (see GUIDATA)
Hints get(hObjectString) returns contents of edit2 as text str2double(get(hObjectString)) returns contents of edit2 as a double
--- Executes during object creation after setting all properties function edit2_CreateFcn(hObject eventdata handles) hObject handle to edit2 (see GCBO) eventdata reserved - to be defined in a future version of MATLAB handles empty - handles not created until after all CreateFcns called
Hint edit controls usually have a white background on Windows See ISPC and COMPUTER if ispc ampamp isequal(get(hObjectBackgroundColor)get(0defaultUicontrolBackgroundColor))
set(hObjectBackgroundColorwhite) end
Entonces despueacutes de haber armado nuestro GUI y luego haber configurado los botones de nuestra interfaz
la guardamos y podemos ejecutarla para poder visualizar esta interfaz y poder escuchar los sonidos a
distintas frecuencias en el rango de 20 a 20000 hertz
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1515
ELECTROACUSTICA A9607-5
5- CONCLUSIONES
Con los aspectos teoacutericos expuestos se pudo conocer los paraacutemetros de una onda que es de forma
trigonometriacutea y la podemos graficar en MATLAB
De acuerdo a las utilidades de la INTERFAZ DE USUARIO podemos generar sonido de nuestra onda a
diferentes frecuencias
6- BIBLIOGRAFIA
httpeswikipediaorgwikiOnda_(fC3ADsica)
httpwwwfisica-facilcomTemarioOndasTeoricoPulsodeOndascentrohtm
httprocoblogblogspotcom200701el-sonido-y-matlabhtml
MANUAL DE INTERFAZ GRAFICA DE USUARIO EN MATLAB por Diego Orlando Barragan Guerrero
MANUAL GUIDE CEDUVIRT
MATLAB 2010
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 215
ELECTROACUSTICA A9607-5
La velocidad de propagacioacuten es el cociente entre el desplazamiento que experimenta un pulso y
el tiempo insumido
Si consideramos un desplazamiento igual a la longitud de onda el tiempo insumido es el periacuteodo
pudiendo expresar la velocidad de la siguiente manera
La frecuencia es la inversa del periacuteodo es decir representa el nuacutemero de pulsos generados por unidad de
tiempo y en el SI se mide en Hz (Hertz)
Ecuacioacuten de onda
Una forma habitual de introducir los paraacutemetros que intervienen en la descripcioacuten de ondas es a partir de
una definicioacuten previa y justificar su significado posteriormente en la funcioacuten de onda Algunos teacuterminos son
ya conocidos de etapas previas por ejemplo amplitud como valor maacuteximo que puede alcanzar la
perturbacioacuten o la frecuencia como rapidez con que cambia la perturbacioacuten en un punto
Ondas armoacutenicas en una cuerda
Muchas de las caracteriacutesticas de las ondas dependen de la forma como se genera la perturbacioacuten en el
punto origen o FOCO de la onda Consideremos de nuevo el caso de una cuerda tensa y supongamos que
uno de sus puntos - Origen - realiza el movimiento oscilatorio causado por un muelle sujeto a eacutel
El desplazamiento vertical se transmite en sucesivos instantes a los puntos vecinos y constituye la
onda propagaacutendose en direccioacuten horizontal A esta onda que se genera durante un tiempo suficientemente
largo se le suele llamar TREN DE ONDAS para distinguirla del PULSO
Dibujando el desplazamiento vertical de todos los puntos de la cuerda y congelando la figura para
compararlos en el mismo instante apreciamos que su valor variacutea espacialmente como una funcioacuten seno
Escogemos un punto de la cuerda para dibujar en eacutel la magnitud y direccion del desplazamiento
Observamos que hay otros puntos con el mismo valor separados por la distancia que se conoce como
LONGITUD DE ONDA Esta longitud miacutenima entre dos puntos con el mismo estado de perturbacion es la
periodicidad espacial de la onda y se representa por landa l
La funcioacuten espacial del seno con un valor maacuteximo que denominamos A -AMPLITUD- puede escribirse como
Para una posicion x determinada la fase varia respecto al tiempo como podemos ver en una representacioacuten
temporal En una cuerda representa al desplazamiento vertical en cada instante si bien en este caso
particular tambieacuten puede representar el movimiento
puntual de masa Esto que solo es posible en medios materiales con propiedades elaacutesticas no da lugar sinembargo a transporte neto de materia cuando la onda se propaga
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 315
ELECTROACUSTICA A9607-5
Observamos que la nueva graacutefica tambieacuten es un seno donde se repite el mismo valor en intervalos de
tiempo T llamado PERIODO
Supongamos que el punto observado corresponde a x=0 su desplazamiento
es un movimiento armoacutenico simple (MAS) que coincide con el que realiza el extremo del muelle descrito por
Como el elemento de cuerda realiza el MAS con el mismo periodo y amplitud que el muelle comparando
ambas expresiones se obtiene una relaccion entre el periodo y la longitud de onda
Comprobamos que T es tambieacuten el tiempo para que un cierto valor de la onda determinado por la fase
llegue al siguiente punto separado la distancia de una longitud de onda Esto nos lleva a interpretar la
VELOCIDAD DE LA ONDA como aquella con la que recorre una longitud de onda en el tiempo de un periodo
Por ser la velocidad con que se transmite la fase de la funcioacuten de ondase le conce tambieacuten
comoVELOCIDAD DE FASE
Si introducimos la frecuencia angular o PULSACION como el numero de periodos en dos pi segundos
y la frecuencia espacial o NUMERO DE ONDAS como el numero longitudes de onda en dos pi metros
la funcioacuten de onda puede escribirse como
Tipos de ondas
La fiacutesica distingue entre dos tipos de ondas fundamentales las ondas materiales que requieren un medio
material para propagarse y las ondas electromagneacuteticas que no requieren un medio material
Las ondas materiales se transmiten por la vibracioacuten de las partiacuteculas que integran el medio por el que
estas viajan En este caso el medio es fundamental para la transmisioacuten de la perturbacioacuten siendo de
partiacutecula a partiacutecula La energiacutea se transmite gracias a las condiciones elaacutesticas del medio
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 415
ELECTROACUSTICA A9607-5
En cambio las ondas electromagneacuteticas se transmiten por las modificaciones que sufren los campos
magneacuteticos y eleacutectricos transmitieacutendose en el vaciacuteo
La velocidad a que se propagan las ondas electromagneacuteticas depende de la constante dieleacutectrica e y la
permeabilidad magneacutetica del medio m En caso de transmitirse por el vaciacuteo su velocidad seraacute
No obstante lo expresado anteriormente las ecuaciones que describen el comportamiento de ambos tipos
de ondas son las mismas y en ambos casos lo que se transporta es energiacutea
Tambieacuten las ondas pueden ser clasificadas seguacuten el comportamiento que tiene la perturbacioacuten en relacioacuten
a la propagacioacuten de la onda
Tendremos entonces ondas que se propagan en una direccioacuten mientras que las partiacuteculas del medio se
mueven en direccioacuten perpendicular a dicha propagacioacuten (caso de ondas en una cuerda) y las llamaremos
ondas transversales
En cambio cuando comprimimos un resorte se observa que la direccioacuten del movimiento de las partiacuteculas
es la misma que la de la onda A este tipo de ondas se les llama longitudinales
Las ondas o perturbaciones longitudinales pueden tener como ejemplo claro el de la propagacioacuten del
sonido Para entenderlo basta con pensar el movimiento de pistoacuten que realiza el cono de un parlante
donde podemos observar que se mueve en la misma direccioacuten en que se propaga el sonido
MATLAB
MATLAB (abreviatura de MATrix LABoratory laboratorio de matrices) es un software matemaacutetico que
ofrece un entorno de desarrollo integrado (IDE) con un lenguaje de programacioacuten propio (lenguaje M) Estaacute
disponible para las plataformas Unix Windows y Apple Mac OS X
Entre sus prestaciones baacutesicas se hallan la manipulacioacuten de matrices la representacioacuten de datos y
funciones la implementacioacuten de algoritmos la creacioacuten de interfaces de usuario (GUI) y la comunicacioacutencon programas en otros lenguajes y con otros dispositivos hardware El paquete MATLAB dispone de dos
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 515
ELECTROACUSTICA A9607-5
herramientas adicionales que expanden sus prestaciones a saber Simulink (plataforma de simulacioacuten
multidominio) y GUIDE (editor de interfaces de usuario - GUI) Ademaacutes se pueden ampliar las capacidades
de MATLAB con las cajas de herramientas (toolboxes) y las de Simulink con los paquetes de bloques
(blocksets)
Es un software muy usado en universidades y centros de investigacioacuten y desarrollo En los uacuteltimos antildeos ha
aumentado el nuacutemero de prestaciones como la de programar directamente procesadores digitales de sentildealo crear coacutedigo VHDL
INTERFAZ GRAFICA DE USUARIO EN MATLAB (GUIDE)
GUIDE es un entorno de programacioacuten visual disponible en MATLAB para realizar y ejecutar programas que
necesiten ingreso continuo de datos Tiene las caracteriacutesticas baacutesicas de todos los programas visuales como
Visual Basic o Visual C++
INICIOPara iniciar nuestro proyecto lo podemos hacer de dos maneras
a) Ejecutando la siguiente instruccioacuten en la ventana de comandos
gtgt guide
b) Haciendo un click en el iacutecono que muestra la figura
Se presenta el siguiente cuadro de diaacutelogo
Se presentan las siguientes opciones
a) Blank GUI (Default)La opcioacuten de interfaz graacutefica de usuario en blanco (viene predeterminada) nos presenta un formulario
nuevo en el cual podemos disentildear nuestro programa
b) GUI with Uicontrols
Esta opcioacuten presenta un ejemplo en el cual se calcula la masa dada la densidad y el volumen en alguno de
los dos sistemas de unidades Podemos ejecutar este ejemplo y obtener resultados
c) GUI with Axes and Menu
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 615
ELECTROACUSTICA A9607-5
Esta opcioacuten es otro ejemplo el cual contiene el menuacute File con las opciones Open Print y Close En el
formulario tiene un Popup menu un push button y un objeto Axes podemos ejecutar el programa eligiendo
alguna de las seis opciones que se encuentran en el menuacute despegable y haciendo click en el botoacuten de
comando
d) Modal Question DialogCon esta opcioacuten se muestra en la pantalla un cuadro de diaacutelogo comuacuten el cual consta de una pequentildea
imagen una etiqueta y dos botones Yes y No dependiendo del botoacuten que se presione el GUI retorna eltexto seleccionado (la cadena de caracteres lsquoYesrsquo o lsquoNorsquo)
Para obtener la etiqueta de cada elemento de la paleta de componentes ejecutamos FilegtgtPreferentes y
seleccionamos Show names in component palette
Tenemos la siguiente presentacioacuten
PROPIEDADES DE LOS COMPONENTES
Cada uno de los elementos de GUI tiene un conjunto de opciones que acceder con click derecho Aparece el
siguiente submenuacute
COMPONENTES
CONTROL DESCRIPCIOacuteNPush Button Genera una accioacuten
Slider Representa un rango de valoresRadio Button Representa una opcioacuten
Check Box Indica el estado de una opcioacuten
Edit Text Para editar texto
Static text Muestra un string de texto
Pop-up Menu Provee una lista de opciones
Listbox Lista deslizable
Toggle Button Genera una accioacuten on off
Axes Para graficar
Panel Visualiza grupo de controles
Button Grup Es un panel exclusivo para radio buttons y
toggle buttons
ActiveX Control Despliega controles ActiveX en Gui
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 715
ELECTROACUSTICA A9607-5
La opcioacuten Property Inspector nos permite personalizar cada elemento
Al hacer click derecho en el elemento ubicado en el aacuterea de disentildeo una de las opciones maacutes importantes es
View Callbacks la cual al ejecutarla abre el archivo m asociado a nuestro disentildeo y nos posiciona en la
parte del programa que corresponde a la subrutina que se ejecutaraacute cuando se realice una determinada
accioacuten sobre el elemento que estamos editando
FUNCIONAMIENTO DE UNA APLICACIOacuteN GUIUna aplicacioacuten GUIDE consta de dos archivos m y fig El archivo m es el que contiene el coacutedigo con las
correspondencias de los botones de control de la interfaz y el archivo fig contiene los elementos graacuteficos
Cada vez que se adicione un nuevo elemento en la interfaz graacutefica se genera automaacuteticamente coacutedigo en el
archivo m Para ejecutar una Interfaz Graacutefica si la hemos etiquetado con el nombre cursofig simplemente
ejecutamos en la ventana de comandos gtgt curso O haciendo click derecho en el m-file y seleccionando la
opcioacuten RUN
Todos los valores de las propiedades de los elementos (color valor posicioacuten stringhellip) y los valores de las
variables transitorias del programa se almacenan en una estructura los cuales son accedidos mediante un
uacutenico y mismo puntero para todos estos Tomando por ejemplo el programa listado anteriormente el
puntero se asigna en
handlesoutput = hObject
handles es nuestro puntero a los datos de la aplicacioacuten Esta definicioacuten de puntero es salvada con la
siguiente instruccioacutenguidata(hObject handles) guidata es la sentencia para salvar los datos de laaplicacioacuten
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 815
ELECTROACUSTICA A9607-5
Aviso guidata es la funcioacuten que guarda las variables y propiedades de los elementos en la estructura de
datos de la aplicacioacuten por lo tanto como regla general en cada subrutina se debe escribir en la uacuteltima liacutenea
lo siguiente
guidata(hObjecthandles)
Esta sentencia nos garantiza que cualquier cambio o asignacioacuten de propiedades o variables quede
almacenado
Por ejemplo si dentro de una subrutina una operacioacuten dio como resultado unavariable utpl para poderutilizarla desde el programa u otra subrutina debemos salvarla de la siguiente manera
handlesutpl=utpl
guidata(hObjecthandles)
La primera liacutenea crea la variable utpl a la estructura de datos de la aplicacioacuten apuntada por handles y la
segunda graba el valor
SENTENCIAS GET Y SET
La asignacioacuten u obtencioacuten de valores de los componentes se realiza mediante las sentencias get y set Por
ejemplo si queremos que la variable utpl tenga el valor del Slider escribimos
utpl= get(handlesslider1Value)
Notar que siempre se obtienen los datos a traveacutes del puntero handles
Para asignar el valor a la variable utpl al statictext etiquetada como text1 escribimos
set(handlestext1Stringutpl)Escribe el valor del Slideren static-text
MANEJO DE ARCHIVOS DE SONIDO
El computador funciona de forma discreta no en forma continua es decir trabaja con nuacutemeros que
guardamos en vectores
Un ejemplo de vector es [12345610]
Para hacer sonidos necesitamos una sentildeal que en este caso es un vector con muchos nuacutemeros de repente
millones Este vector tiene que contener el sonido
Un sonido es una vibracioacuten una onda que la vemos de forma sinuidal o de forma parecida (En realidad es
consecuencia de ello pero para formar una idea buena lo planteo asiacute)
Lo que se guarda en el vector son valores de la sentildeal Una analogiacutea para entender esto la visualizo asiacute Una
cuerda que se mueve vibrando (Fig 1) y le sacamos una foto en un instante Cuando la cuerda esta quieta
no vibrando decimos que estaacute en el valor cero (Fig 2) Mientras empieza a moverse de izquierda a derecha
va adquiriendo valores los que medimos al medio de la cuerda desde el punto donde esta quieta -cuando
esta en cero- (Fig3) su elongacioacuten maacutexima seraacute 1 a la derecha y -1 a la izquierda (Fig5 y 6)
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 915
ELECTROACUSTICA A9607-5
Bueno con cada foto que le saque a mi onda que representeacute como cuerda tendreacute un valor que guardareacute en
el vector Pero como el movimiento es una vibracioacuten tengo que guardar estos valores cada cierto intervalo
de tiempo algo asiacute como sacar fotos cada 1 segundo a mi onda y es ahiacute donde aparece el concepto de
ldquoFrecuencia de Muestrordquo
La frecuencia de Muestreo fm Es la cantidad de muestras (fotos en mi analogiacutea) que se toman en 1
segundo Si tomo la grafica de los valores que va tomando mi onda (cuerda) en el ldquoeje yrdquo pongo los valores
en funcioacuten del tiempo y en el ldquoeje xrdquo el tiempo la frecuencia de muestreo en la figura es 1Hz] pues
muestreo (tomo una foto) 1 vez por segundo
Lo que guardo es lo que se ve arriba
Frecuencia de muestreo
Loacutegicamente cuando tengo una mayor frecuencia de muestreo mejor seraacute la calidad del sonido porque
estareacute representando con maacutes puntos mi funcioacuten
Por ejemplo el teleacutefono funciona a 8000 [Hz] y se escucha maacutes o menos no maacutes (Sobre todo cuando hacen
esos contactos con las unidades moacuteviles en la Radio) Los CD tienen una frecuencia de muestreo de
44100[Hz] la radio de 22100[Hz] bueno como dato no maacutes
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1015
ELECTROACUSTICA A9607-5
4- ASPECTOS PRACTICOS
Para realizar nuestro laboratorio con ayuda de todos los aspectos teoricos ya revisados en la anterior
seccioacuten empezaremos definiendo la ecuacioacuten de la onda que programaremos
Sabiendo que la ecuacioacuten de una onda es una de caraacutecter trigonomeacutetrico la ecuacioacuten de esta seraacute
Con esta ecuacioacuten ya podemos identificar a nuestra amplitud que es de 5 ademaacutes de la velocidad angular
que contiene o depende de la frecuencia y esta es la que variara en nuestra interfaz
Ya identificados nuestros paraacutemetros procedamos a realizar una programa en matlab es deir un archivo m
que reprodusca el sonida y grafique parte de esta Entonces analicemos el siguiente programa
Con este programa vemos y reconocemos que significa cada paraacutemetro En primer lugar definimos la
frecuencia de muestreo esto se refiere a los puntos que seraacuten tomados en cuenta para que la grafica nosea tan cuadrada y nos permita apreciar bien las carcteristicas
La frecuencia de sonido esta definida a nuestra variable f de nuestra ecuacioacuten de onda por el momento la
definiremos con un valor
La duracioacuten del sonido seraacute como se ve de 2 segundos esta se puede cambiar La sentildeal que introduciremos
es la ya antes vista con lo que con el comando lsquosoundrsquo podremos escuchar el sonido de esa frecuencia
Definimos asi tambieacuten los limitesdel grafico que dependeraacuten de la frecuencia de muestreo y de la frecuencia
del sonido pa esto le damos nuevamente la ecuacioacuten con x en funcioacuten de t1
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1115
ELECTROACUSTICA A9607-5
Como vemos en la grafica la amplitud es 5 nuestra frecuencia es casi 10000 con lo que el periodo es 2e-4con esto completamos nuestro primer paso
Ahora para realizar nuestro GUI o interfaz de usuario debemos realizar los pasos para crear la interfaz el cual
debera ser modificada en PROPERTY INSPECTOR para quedar de esta manera
Luego la programacioacuten de cada botoacuten en nuestro archivo m quedara
function varargout = SON1(varargin) SON1 MATLAB code for SON1fig SON1 by itself creates a new SON1 or raises the existing singleton H = SON1 returns the handle to a new SON1 or the handle to the existing singleton SON1(CALLBACKhObjecteventDatahandles) calls the local function named CALLBACK in SON1M with the given input arguments SON1(PropertyValue) creates a new SON1 or raises the existing singleton Starting from the left property value pairs are applied to the GUI before SON1_OpeningFcn gets called An
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1215
ELECTROACUSTICA A9607-5
unrecognized property name or invalid value makes property application stop All inputs are passed to SON1_OpeningFcn via varargin See GUI Options on GUIDEs Tools menu Choose GUI allows only one instance to run (singleton) See also GUIDE GUIDATA GUIHANDLES
Edit the above text to modify the response to help SON1
Last Modified by GUIDE v25 14-Aug-2011 123846
Begin initialization code - DO NOT EDIT gui_Singleton = 1 gui_State = struct(gui_Name mfilename
gui_Singleton gui_Singleton gui_OpeningFcn SON1_OpeningFcn gui_OutputFcn SON1_OutputFcn gui_LayoutFcn [] gui_Callback [])
if nargin ampamp ischar(varargin1) gui_Stategui_Callback = str2func(varargin1) end
if nargout [varargout1nargout] = gui_mainfcn(gui_State varargin)
else gui_mainfcn(gui_State varargin)
end End initialization code - DO NOT EDIT
--- Executes just before SON1 is made visible
function SON1_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 SON1 (see VARARGIN)
Choose default command line output for SON1 handlesoutput = hObject
Update handles structure guidata(hObject handles)
UIWAIT makes SON1 wait for user response (see UIRESUME) uiwait(handlesfigure1)
--- Outputs from this function are returned to the command line function varargout = SON1_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 varargout1 = handlesoutput
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1315
ELECTROACUSTICA A9607-5
--- Executes on button press in PLAY function PLAY_Callback(hObject eventdata handles) Frecuencia de muestreo fm=44000 frecuencia sonido nota musical La
sliderValue = get(handlesedit2Value) puts the slider value into the edit text component fr= get(handlesslider1Value) Duracion en segundos duracion=1 t=01fmduracion Sentildeal senoidal y=5cos(fr2pit) La hacemos sonar sound(yfm) grafica fm1=1000000 t1=01fm12fr x=5cos(fr2pit1) La guardamos como wav wavwrite(5yfmmi440wav) Graficamos un pedacito para ver la forma t=t(round(685length(t)100)round(70length(t)100)) y=y(round(685length(y)100)round(70length(y)100)) plot(t1x) Update handles structure guidata(hObject handles)
Como se ve en la configuracioacuten del botoacuten PLAY definimos la frecuencia de muestreo la duracioacuten y nuestra
funcioacuten La aplicacioacuten del slider es que obtenemos el valor de la frecuencia de este y lo guardamos en fr
como se ve
hObject handle to PLAY (see GCBO) eventdata reserved - to be defined in a future version of MATLAB handles structure with handles and user data (see GUIDATA)
--- Executes on slider movement function slider1_Callback(hObject eventdata handles) obtains the slider value from the slider component sliderValue = get(handlesslider1Value)
puts the slider value into the edit text component set(handlesedit2String num2str(sliderValue))
Update handles structure guidata(hObject handles) handles structure with handles and user data (see GUIDATA)
Hints get(hObjectValue) returns position of slider get(hObjectMin) and get(hObjectMax) to determine range of slider
--- Executes during object creation after setting all properties function slider1_CreateFcn(hObject eventdata handles) hObject handle to slider1 (see GCBO) eventdata reserved - to be defined in a future version of MATLAB handles empty - handles not created until after all CreateFcns called
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1415
ELECTROACUSTICA A9607-5
Hint slider controls usually have a light gray background if isequal(get(hObjectBackgroundColor)get(0defaultUicontrolBackgroundColor))
set(hObjectBackgroundColor[9 9 9]) end
--- Executes during object creation after setting all properties
function edit2_Callback(hObject eventdata handles) get the string for the editText component sliderValue = get(handlesedit2String)
convert from string to number if possible otherwise returns empty sliderValue = str2num(sliderValue)
if user inputs something is not a number or if the input is less than 0
or greater than 100 then the slider value defaults to 0 set(handlesslider1Value0) set(handlesedit2String0)
else set(handlesslider1ValuesliderValue)
end
En esta parte de la programacioacuten podemos ver como determinamos los liacutemites con una condicioacuten haciendo
que si el valor de la interfaz edit text que pusimos sobrepasa el limite este mostrara por defecto un 0
Update handles structure guidata(hObject handles)
hObject handle to edit2 (see GCBO) eventdata reserved - to be defined in a future version of MATLAB handles structure with handles and user data (see GUIDATA)
Hints get(hObjectString) returns contents of edit2 as text str2double(get(hObjectString)) returns contents of edit2 as a double
--- Executes during object creation after setting all properties function edit2_CreateFcn(hObject eventdata handles) hObject handle to edit2 (see GCBO) eventdata reserved - to be defined in a future version of MATLAB handles empty - handles not created until after all CreateFcns called
Hint edit controls usually have a white background on Windows See ISPC and COMPUTER if ispc ampamp isequal(get(hObjectBackgroundColor)get(0defaultUicontrolBackgroundColor))
set(hObjectBackgroundColorwhite) end
Entonces despueacutes de haber armado nuestro GUI y luego haber configurado los botones de nuestra interfaz
la guardamos y podemos ejecutarla para poder visualizar esta interfaz y poder escuchar los sonidos a
distintas frecuencias en el rango de 20 a 20000 hertz
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1515
ELECTROACUSTICA A9607-5
5- CONCLUSIONES
Con los aspectos teoacutericos expuestos se pudo conocer los paraacutemetros de una onda que es de forma
trigonometriacutea y la podemos graficar en MATLAB
De acuerdo a las utilidades de la INTERFAZ DE USUARIO podemos generar sonido de nuestra onda a
diferentes frecuencias
6- BIBLIOGRAFIA
httpeswikipediaorgwikiOnda_(fC3ADsica)
httpwwwfisica-facilcomTemarioOndasTeoricoPulsodeOndascentrohtm
httprocoblogblogspotcom200701el-sonido-y-matlabhtml
MANUAL DE INTERFAZ GRAFICA DE USUARIO EN MATLAB por Diego Orlando Barragan Guerrero
MANUAL GUIDE CEDUVIRT
MATLAB 2010
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 315
ELECTROACUSTICA A9607-5
Observamos que la nueva graacutefica tambieacuten es un seno donde se repite el mismo valor en intervalos de
tiempo T llamado PERIODO
Supongamos que el punto observado corresponde a x=0 su desplazamiento
es un movimiento armoacutenico simple (MAS) que coincide con el que realiza el extremo del muelle descrito por
Como el elemento de cuerda realiza el MAS con el mismo periodo y amplitud que el muelle comparando
ambas expresiones se obtiene una relaccion entre el periodo y la longitud de onda
Comprobamos que T es tambieacuten el tiempo para que un cierto valor de la onda determinado por la fase
llegue al siguiente punto separado la distancia de una longitud de onda Esto nos lleva a interpretar la
VELOCIDAD DE LA ONDA como aquella con la que recorre una longitud de onda en el tiempo de un periodo
Por ser la velocidad con que se transmite la fase de la funcioacuten de ondase le conce tambieacuten
comoVELOCIDAD DE FASE
Si introducimos la frecuencia angular o PULSACION como el numero de periodos en dos pi segundos
y la frecuencia espacial o NUMERO DE ONDAS como el numero longitudes de onda en dos pi metros
la funcioacuten de onda puede escribirse como
Tipos de ondas
La fiacutesica distingue entre dos tipos de ondas fundamentales las ondas materiales que requieren un medio
material para propagarse y las ondas electromagneacuteticas que no requieren un medio material
Las ondas materiales se transmiten por la vibracioacuten de las partiacuteculas que integran el medio por el que
estas viajan En este caso el medio es fundamental para la transmisioacuten de la perturbacioacuten siendo de
partiacutecula a partiacutecula La energiacutea se transmite gracias a las condiciones elaacutesticas del medio
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 415
ELECTROACUSTICA A9607-5
En cambio las ondas electromagneacuteticas se transmiten por las modificaciones que sufren los campos
magneacuteticos y eleacutectricos transmitieacutendose en el vaciacuteo
La velocidad a que se propagan las ondas electromagneacuteticas depende de la constante dieleacutectrica e y la
permeabilidad magneacutetica del medio m En caso de transmitirse por el vaciacuteo su velocidad seraacute
No obstante lo expresado anteriormente las ecuaciones que describen el comportamiento de ambos tipos
de ondas son las mismas y en ambos casos lo que se transporta es energiacutea
Tambieacuten las ondas pueden ser clasificadas seguacuten el comportamiento que tiene la perturbacioacuten en relacioacuten
a la propagacioacuten de la onda
Tendremos entonces ondas que se propagan en una direccioacuten mientras que las partiacuteculas del medio se
mueven en direccioacuten perpendicular a dicha propagacioacuten (caso de ondas en una cuerda) y las llamaremos
ondas transversales
En cambio cuando comprimimos un resorte se observa que la direccioacuten del movimiento de las partiacuteculas
es la misma que la de la onda A este tipo de ondas se les llama longitudinales
Las ondas o perturbaciones longitudinales pueden tener como ejemplo claro el de la propagacioacuten del
sonido Para entenderlo basta con pensar el movimiento de pistoacuten que realiza el cono de un parlante
donde podemos observar que se mueve en la misma direccioacuten en que se propaga el sonido
MATLAB
MATLAB (abreviatura de MATrix LABoratory laboratorio de matrices) es un software matemaacutetico que
ofrece un entorno de desarrollo integrado (IDE) con un lenguaje de programacioacuten propio (lenguaje M) Estaacute
disponible para las plataformas Unix Windows y Apple Mac OS X
Entre sus prestaciones baacutesicas se hallan la manipulacioacuten de matrices la representacioacuten de datos y
funciones la implementacioacuten de algoritmos la creacioacuten de interfaces de usuario (GUI) y la comunicacioacutencon programas en otros lenguajes y con otros dispositivos hardware El paquete MATLAB dispone de dos
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 515
ELECTROACUSTICA A9607-5
herramientas adicionales que expanden sus prestaciones a saber Simulink (plataforma de simulacioacuten
multidominio) y GUIDE (editor de interfaces de usuario - GUI) Ademaacutes se pueden ampliar las capacidades
de MATLAB con las cajas de herramientas (toolboxes) y las de Simulink con los paquetes de bloques
(blocksets)
Es un software muy usado en universidades y centros de investigacioacuten y desarrollo En los uacuteltimos antildeos ha
aumentado el nuacutemero de prestaciones como la de programar directamente procesadores digitales de sentildealo crear coacutedigo VHDL
INTERFAZ GRAFICA DE USUARIO EN MATLAB (GUIDE)
GUIDE es un entorno de programacioacuten visual disponible en MATLAB para realizar y ejecutar programas que
necesiten ingreso continuo de datos Tiene las caracteriacutesticas baacutesicas de todos los programas visuales como
Visual Basic o Visual C++
INICIOPara iniciar nuestro proyecto lo podemos hacer de dos maneras
a) Ejecutando la siguiente instruccioacuten en la ventana de comandos
gtgt guide
b) Haciendo un click en el iacutecono que muestra la figura
Se presenta el siguiente cuadro de diaacutelogo
Se presentan las siguientes opciones
a) Blank GUI (Default)La opcioacuten de interfaz graacutefica de usuario en blanco (viene predeterminada) nos presenta un formulario
nuevo en el cual podemos disentildear nuestro programa
b) GUI with Uicontrols
Esta opcioacuten presenta un ejemplo en el cual se calcula la masa dada la densidad y el volumen en alguno de
los dos sistemas de unidades Podemos ejecutar este ejemplo y obtener resultados
c) GUI with Axes and Menu
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 615
ELECTROACUSTICA A9607-5
Esta opcioacuten es otro ejemplo el cual contiene el menuacute File con las opciones Open Print y Close En el
formulario tiene un Popup menu un push button y un objeto Axes podemos ejecutar el programa eligiendo
alguna de las seis opciones que se encuentran en el menuacute despegable y haciendo click en el botoacuten de
comando
d) Modal Question DialogCon esta opcioacuten se muestra en la pantalla un cuadro de diaacutelogo comuacuten el cual consta de una pequentildea
imagen una etiqueta y dos botones Yes y No dependiendo del botoacuten que se presione el GUI retorna eltexto seleccionado (la cadena de caracteres lsquoYesrsquo o lsquoNorsquo)
Para obtener la etiqueta de cada elemento de la paleta de componentes ejecutamos FilegtgtPreferentes y
seleccionamos Show names in component palette
Tenemos la siguiente presentacioacuten
PROPIEDADES DE LOS COMPONENTES
Cada uno de los elementos de GUI tiene un conjunto de opciones que acceder con click derecho Aparece el
siguiente submenuacute
COMPONENTES
CONTROL DESCRIPCIOacuteNPush Button Genera una accioacuten
Slider Representa un rango de valoresRadio Button Representa una opcioacuten
Check Box Indica el estado de una opcioacuten
Edit Text Para editar texto
Static text Muestra un string de texto
Pop-up Menu Provee una lista de opciones
Listbox Lista deslizable
Toggle Button Genera una accioacuten on off
Axes Para graficar
Panel Visualiza grupo de controles
Button Grup Es un panel exclusivo para radio buttons y
toggle buttons
ActiveX Control Despliega controles ActiveX en Gui
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 715
ELECTROACUSTICA A9607-5
La opcioacuten Property Inspector nos permite personalizar cada elemento
Al hacer click derecho en el elemento ubicado en el aacuterea de disentildeo una de las opciones maacutes importantes es
View Callbacks la cual al ejecutarla abre el archivo m asociado a nuestro disentildeo y nos posiciona en la
parte del programa que corresponde a la subrutina que se ejecutaraacute cuando se realice una determinada
accioacuten sobre el elemento que estamos editando
FUNCIONAMIENTO DE UNA APLICACIOacuteN GUIUna aplicacioacuten GUIDE consta de dos archivos m y fig El archivo m es el que contiene el coacutedigo con las
correspondencias de los botones de control de la interfaz y el archivo fig contiene los elementos graacuteficos
Cada vez que se adicione un nuevo elemento en la interfaz graacutefica se genera automaacuteticamente coacutedigo en el
archivo m Para ejecutar una Interfaz Graacutefica si la hemos etiquetado con el nombre cursofig simplemente
ejecutamos en la ventana de comandos gtgt curso O haciendo click derecho en el m-file y seleccionando la
opcioacuten RUN
Todos los valores de las propiedades de los elementos (color valor posicioacuten stringhellip) y los valores de las
variables transitorias del programa se almacenan en una estructura los cuales son accedidos mediante un
uacutenico y mismo puntero para todos estos Tomando por ejemplo el programa listado anteriormente el
puntero se asigna en
handlesoutput = hObject
handles es nuestro puntero a los datos de la aplicacioacuten Esta definicioacuten de puntero es salvada con la
siguiente instruccioacutenguidata(hObject handles) guidata es la sentencia para salvar los datos de laaplicacioacuten
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 815
ELECTROACUSTICA A9607-5
Aviso guidata es la funcioacuten que guarda las variables y propiedades de los elementos en la estructura de
datos de la aplicacioacuten por lo tanto como regla general en cada subrutina se debe escribir en la uacuteltima liacutenea
lo siguiente
guidata(hObjecthandles)
Esta sentencia nos garantiza que cualquier cambio o asignacioacuten de propiedades o variables quede
almacenado
Por ejemplo si dentro de una subrutina una operacioacuten dio como resultado unavariable utpl para poderutilizarla desde el programa u otra subrutina debemos salvarla de la siguiente manera
handlesutpl=utpl
guidata(hObjecthandles)
La primera liacutenea crea la variable utpl a la estructura de datos de la aplicacioacuten apuntada por handles y la
segunda graba el valor
SENTENCIAS GET Y SET
La asignacioacuten u obtencioacuten de valores de los componentes se realiza mediante las sentencias get y set Por
ejemplo si queremos que la variable utpl tenga el valor del Slider escribimos
utpl= get(handlesslider1Value)
Notar que siempre se obtienen los datos a traveacutes del puntero handles
Para asignar el valor a la variable utpl al statictext etiquetada como text1 escribimos
set(handlestext1Stringutpl)Escribe el valor del Slideren static-text
MANEJO DE ARCHIVOS DE SONIDO
El computador funciona de forma discreta no en forma continua es decir trabaja con nuacutemeros que
guardamos en vectores
Un ejemplo de vector es [12345610]
Para hacer sonidos necesitamos una sentildeal que en este caso es un vector con muchos nuacutemeros de repente
millones Este vector tiene que contener el sonido
Un sonido es una vibracioacuten una onda que la vemos de forma sinuidal o de forma parecida (En realidad es
consecuencia de ello pero para formar una idea buena lo planteo asiacute)
Lo que se guarda en el vector son valores de la sentildeal Una analogiacutea para entender esto la visualizo asiacute Una
cuerda que se mueve vibrando (Fig 1) y le sacamos una foto en un instante Cuando la cuerda esta quieta
no vibrando decimos que estaacute en el valor cero (Fig 2) Mientras empieza a moverse de izquierda a derecha
va adquiriendo valores los que medimos al medio de la cuerda desde el punto donde esta quieta -cuando
esta en cero- (Fig3) su elongacioacuten maacutexima seraacute 1 a la derecha y -1 a la izquierda (Fig5 y 6)
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 915
ELECTROACUSTICA A9607-5
Bueno con cada foto que le saque a mi onda que representeacute como cuerda tendreacute un valor que guardareacute en
el vector Pero como el movimiento es una vibracioacuten tengo que guardar estos valores cada cierto intervalo
de tiempo algo asiacute como sacar fotos cada 1 segundo a mi onda y es ahiacute donde aparece el concepto de
ldquoFrecuencia de Muestrordquo
La frecuencia de Muestreo fm Es la cantidad de muestras (fotos en mi analogiacutea) que se toman en 1
segundo Si tomo la grafica de los valores que va tomando mi onda (cuerda) en el ldquoeje yrdquo pongo los valores
en funcioacuten del tiempo y en el ldquoeje xrdquo el tiempo la frecuencia de muestreo en la figura es 1Hz] pues
muestreo (tomo una foto) 1 vez por segundo
Lo que guardo es lo que se ve arriba
Frecuencia de muestreo
Loacutegicamente cuando tengo una mayor frecuencia de muestreo mejor seraacute la calidad del sonido porque
estareacute representando con maacutes puntos mi funcioacuten
Por ejemplo el teleacutefono funciona a 8000 [Hz] y se escucha maacutes o menos no maacutes (Sobre todo cuando hacen
esos contactos con las unidades moacuteviles en la Radio) Los CD tienen una frecuencia de muestreo de
44100[Hz] la radio de 22100[Hz] bueno como dato no maacutes
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1015
ELECTROACUSTICA A9607-5
4- ASPECTOS PRACTICOS
Para realizar nuestro laboratorio con ayuda de todos los aspectos teoricos ya revisados en la anterior
seccioacuten empezaremos definiendo la ecuacioacuten de la onda que programaremos
Sabiendo que la ecuacioacuten de una onda es una de caraacutecter trigonomeacutetrico la ecuacioacuten de esta seraacute
Con esta ecuacioacuten ya podemos identificar a nuestra amplitud que es de 5 ademaacutes de la velocidad angular
que contiene o depende de la frecuencia y esta es la que variara en nuestra interfaz
Ya identificados nuestros paraacutemetros procedamos a realizar una programa en matlab es deir un archivo m
que reprodusca el sonida y grafique parte de esta Entonces analicemos el siguiente programa
Con este programa vemos y reconocemos que significa cada paraacutemetro En primer lugar definimos la
frecuencia de muestreo esto se refiere a los puntos que seraacuten tomados en cuenta para que la grafica nosea tan cuadrada y nos permita apreciar bien las carcteristicas
La frecuencia de sonido esta definida a nuestra variable f de nuestra ecuacioacuten de onda por el momento la
definiremos con un valor
La duracioacuten del sonido seraacute como se ve de 2 segundos esta se puede cambiar La sentildeal que introduciremos
es la ya antes vista con lo que con el comando lsquosoundrsquo podremos escuchar el sonido de esa frecuencia
Definimos asi tambieacuten los limitesdel grafico que dependeraacuten de la frecuencia de muestreo y de la frecuencia
del sonido pa esto le damos nuevamente la ecuacioacuten con x en funcioacuten de t1
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1115
ELECTROACUSTICA A9607-5
Como vemos en la grafica la amplitud es 5 nuestra frecuencia es casi 10000 con lo que el periodo es 2e-4con esto completamos nuestro primer paso
Ahora para realizar nuestro GUI o interfaz de usuario debemos realizar los pasos para crear la interfaz el cual
debera ser modificada en PROPERTY INSPECTOR para quedar de esta manera
Luego la programacioacuten de cada botoacuten en nuestro archivo m quedara
function varargout = SON1(varargin) SON1 MATLAB code for SON1fig SON1 by itself creates a new SON1 or raises the existing singleton H = SON1 returns the handle to a new SON1 or the handle to the existing singleton SON1(CALLBACKhObjecteventDatahandles) calls the local function named CALLBACK in SON1M with the given input arguments SON1(PropertyValue) creates a new SON1 or raises the existing singleton Starting from the left property value pairs are applied to the GUI before SON1_OpeningFcn gets called An
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1215
ELECTROACUSTICA A9607-5
unrecognized property name or invalid value makes property application stop All inputs are passed to SON1_OpeningFcn via varargin See GUI Options on GUIDEs Tools menu Choose GUI allows only one instance to run (singleton) See also GUIDE GUIDATA GUIHANDLES
Edit the above text to modify the response to help SON1
Last Modified by GUIDE v25 14-Aug-2011 123846
Begin initialization code - DO NOT EDIT gui_Singleton = 1 gui_State = struct(gui_Name mfilename
gui_Singleton gui_Singleton gui_OpeningFcn SON1_OpeningFcn gui_OutputFcn SON1_OutputFcn gui_LayoutFcn [] gui_Callback [])
if nargin ampamp ischar(varargin1) gui_Stategui_Callback = str2func(varargin1) end
if nargout [varargout1nargout] = gui_mainfcn(gui_State varargin)
else gui_mainfcn(gui_State varargin)
end End initialization code - DO NOT EDIT
--- Executes just before SON1 is made visible
function SON1_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 SON1 (see VARARGIN)
Choose default command line output for SON1 handlesoutput = hObject
Update handles structure guidata(hObject handles)
UIWAIT makes SON1 wait for user response (see UIRESUME) uiwait(handlesfigure1)
--- Outputs from this function are returned to the command line function varargout = SON1_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 varargout1 = handlesoutput
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1315
ELECTROACUSTICA A9607-5
--- Executes on button press in PLAY function PLAY_Callback(hObject eventdata handles) Frecuencia de muestreo fm=44000 frecuencia sonido nota musical La
sliderValue = get(handlesedit2Value) puts the slider value into the edit text component fr= get(handlesslider1Value) Duracion en segundos duracion=1 t=01fmduracion Sentildeal senoidal y=5cos(fr2pit) La hacemos sonar sound(yfm) grafica fm1=1000000 t1=01fm12fr x=5cos(fr2pit1) La guardamos como wav wavwrite(5yfmmi440wav) Graficamos un pedacito para ver la forma t=t(round(685length(t)100)round(70length(t)100)) y=y(round(685length(y)100)round(70length(y)100)) plot(t1x) Update handles structure guidata(hObject handles)
Como se ve en la configuracioacuten del botoacuten PLAY definimos la frecuencia de muestreo la duracioacuten y nuestra
funcioacuten La aplicacioacuten del slider es que obtenemos el valor de la frecuencia de este y lo guardamos en fr
como se ve
hObject handle to PLAY (see GCBO) eventdata reserved - to be defined in a future version of MATLAB handles structure with handles and user data (see GUIDATA)
--- Executes on slider movement function slider1_Callback(hObject eventdata handles) obtains the slider value from the slider component sliderValue = get(handlesslider1Value)
puts the slider value into the edit text component set(handlesedit2String num2str(sliderValue))
Update handles structure guidata(hObject handles) handles structure with handles and user data (see GUIDATA)
Hints get(hObjectValue) returns position of slider get(hObjectMin) and get(hObjectMax) to determine range of slider
--- Executes during object creation after setting all properties function slider1_CreateFcn(hObject eventdata handles) hObject handle to slider1 (see GCBO) eventdata reserved - to be defined in a future version of MATLAB handles empty - handles not created until after all CreateFcns called
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1415
ELECTROACUSTICA A9607-5
Hint slider controls usually have a light gray background if isequal(get(hObjectBackgroundColor)get(0defaultUicontrolBackgroundColor))
set(hObjectBackgroundColor[9 9 9]) end
--- Executes during object creation after setting all properties
function edit2_Callback(hObject eventdata handles) get the string for the editText component sliderValue = get(handlesedit2String)
convert from string to number if possible otherwise returns empty sliderValue = str2num(sliderValue)
if user inputs something is not a number or if the input is less than 0
or greater than 100 then the slider value defaults to 0 set(handlesslider1Value0) set(handlesedit2String0)
else set(handlesslider1ValuesliderValue)
end
En esta parte de la programacioacuten podemos ver como determinamos los liacutemites con una condicioacuten haciendo
que si el valor de la interfaz edit text que pusimos sobrepasa el limite este mostrara por defecto un 0
Update handles structure guidata(hObject handles)
hObject handle to edit2 (see GCBO) eventdata reserved - to be defined in a future version of MATLAB handles structure with handles and user data (see GUIDATA)
Hints get(hObjectString) returns contents of edit2 as text str2double(get(hObjectString)) returns contents of edit2 as a double
--- Executes during object creation after setting all properties function edit2_CreateFcn(hObject eventdata handles) hObject handle to edit2 (see GCBO) eventdata reserved - to be defined in a future version of MATLAB handles empty - handles not created until after all CreateFcns called
Hint edit controls usually have a white background on Windows See ISPC and COMPUTER if ispc ampamp isequal(get(hObjectBackgroundColor)get(0defaultUicontrolBackgroundColor))
set(hObjectBackgroundColorwhite) end
Entonces despueacutes de haber armado nuestro GUI y luego haber configurado los botones de nuestra interfaz
la guardamos y podemos ejecutarla para poder visualizar esta interfaz y poder escuchar los sonidos a
distintas frecuencias en el rango de 20 a 20000 hertz
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1515
ELECTROACUSTICA A9607-5
5- CONCLUSIONES
Con los aspectos teoacutericos expuestos se pudo conocer los paraacutemetros de una onda que es de forma
trigonometriacutea y la podemos graficar en MATLAB
De acuerdo a las utilidades de la INTERFAZ DE USUARIO podemos generar sonido de nuestra onda a
diferentes frecuencias
6- BIBLIOGRAFIA
httpeswikipediaorgwikiOnda_(fC3ADsica)
httpwwwfisica-facilcomTemarioOndasTeoricoPulsodeOndascentrohtm
httprocoblogblogspotcom200701el-sonido-y-matlabhtml
MANUAL DE INTERFAZ GRAFICA DE USUARIO EN MATLAB por Diego Orlando Barragan Guerrero
MANUAL GUIDE CEDUVIRT
MATLAB 2010
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 415
ELECTROACUSTICA A9607-5
En cambio las ondas electromagneacuteticas se transmiten por las modificaciones que sufren los campos
magneacuteticos y eleacutectricos transmitieacutendose en el vaciacuteo
La velocidad a que se propagan las ondas electromagneacuteticas depende de la constante dieleacutectrica e y la
permeabilidad magneacutetica del medio m En caso de transmitirse por el vaciacuteo su velocidad seraacute
No obstante lo expresado anteriormente las ecuaciones que describen el comportamiento de ambos tipos
de ondas son las mismas y en ambos casos lo que se transporta es energiacutea
Tambieacuten las ondas pueden ser clasificadas seguacuten el comportamiento que tiene la perturbacioacuten en relacioacuten
a la propagacioacuten de la onda
Tendremos entonces ondas que se propagan en una direccioacuten mientras que las partiacuteculas del medio se
mueven en direccioacuten perpendicular a dicha propagacioacuten (caso de ondas en una cuerda) y las llamaremos
ondas transversales
En cambio cuando comprimimos un resorte se observa que la direccioacuten del movimiento de las partiacuteculas
es la misma que la de la onda A este tipo de ondas se les llama longitudinales
Las ondas o perturbaciones longitudinales pueden tener como ejemplo claro el de la propagacioacuten del
sonido Para entenderlo basta con pensar el movimiento de pistoacuten que realiza el cono de un parlante
donde podemos observar que se mueve en la misma direccioacuten en que se propaga el sonido
MATLAB
MATLAB (abreviatura de MATrix LABoratory laboratorio de matrices) es un software matemaacutetico que
ofrece un entorno de desarrollo integrado (IDE) con un lenguaje de programacioacuten propio (lenguaje M) Estaacute
disponible para las plataformas Unix Windows y Apple Mac OS X
Entre sus prestaciones baacutesicas se hallan la manipulacioacuten de matrices la representacioacuten de datos y
funciones la implementacioacuten de algoritmos la creacioacuten de interfaces de usuario (GUI) y la comunicacioacutencon programas en otros lenguajes y con otros dispositivos hardware El paquete MATLAB dispone de dos
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 515
ELECTROACUSTICA A9607-5
herramientas adicionales que expanden sus prestaciones a saber Simulink (plataforma de simulacioacuten
multidominio) y GUIDE (editor de interfaces de usuario - GUI) Ademaacutes se pueden ampliar las capacidades
de MATLAB con las cajas de herramientas (toolboxes) y las de Simulink con los paquetes de bloques
(blocksets)
Es un software muy usado en universidades y centros de investigacioacuten y desarrollo En los uacuteltimos antildeos ha
aumentado el nuacutemero de prestaciones como la de programar directamente procesadores digitales de sentildealo crear coacutedigo VHDL
INTERFAZ GRAFICA DE USUARIO EN MATLAB (GUIDE)
GUIDE es un entorno de programacioacuten visual disponible en MATLAB para realizar y ejecutar programas que
necesiten ingreso continuo de datos Tiene las caracteriacutesticas baacutesicas de todos los programas visuales como
Visual Basic o Visual C++
INICIOPara iniciar nuestro proyecto lo podemos hacer de dos maneras
a) Ejecutando la siguiente instruccioacuten en la ventana de comandos
gtgt guide
b) Haciendo un click en el iacutecono que muestra la figura
Se presenta el siguiente cuadro de diaacutelogo
Se presentan las siguientes opciones
a) Blank GUI (Default)La opcioacuten de interfaz graacutefica de usuario en blanco (viene predeterminada) nos presenta un formulario
nuevo en el cual podemos disentildear nuestro programa
b) GUI with Uicontrols
Esta opcioacuten presenta un ejemplo en el cual se calcula la masa dada la densidad y el volumen en alguno de
los dos sistemas de unidades Podemos ejecutar este ejemplo y obtener resultados
c) GUI with Axes and Menu
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 615
ELECTROACUSTICA A9607-5
Esta opcioacuten es otro ejemplo el cual contiene el menuacute File con las opciones Open Print y Close En el
formulario tiene un Popup menu un push button y un objeto Axes podemos ejecutar el programa eligiendo
alguna de las seis opciones que se encuentran en el menuacute despegable y haciendo click en el botoacuten de
comando
d) Modal Question DialogCon esta opcioacuten se muestra en la pantalla un cuadro de diaacutelogo comuacuten el cual consta de una pequentildea
imagen una etiqueta y dos botones Yes y No dependiendo del botoacuten que se presione el GUI retorna eltexto seleccionado (la cadena de caracteres lsquoYesrsquo o lsquoNorsquo)
Para obtener la etiqueta de cada elemento de la paleta de componentes ejecutamos FilegtgtPreferentes y
seleccionamos Show names in component palette
Tenemos la siguiente presentacioacuten
PROPIEDADES DE LOS COMPONENTES
Cada uno de los elementos de GUI tiene un conjunto de opciones que acceder con click derecho Aparece el
siguiente submenuacute
COMPONENTES
CONTROL DESCRIPCIOacuteNPush Button Genera una accioacuten
Slider Representa un rango de valoresRadio Button Representa una opcioacuten
Check Box Indica el estado de una opcioacuten
Edit Text Para editar texto
Static text Muestra un string de texto
Pop-up Menu Provee una lista de opciones
Listbox Lista deslizable
Toggle Button Genera una accioacuten on off
Axes Para graficar
Panel Visualiza grupo de controles
Button Grup Es un panel exclusivo para radio buttons y
toggle buttons
ActiveX Control Despliega controles ActiveX en Gui
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 715
ELECTROACUSTICA A9607-5
La opcioacuten Property Inspector nos permite personalizar cada elemento
Al hacer click derecho en el elemento ubicado en el aacuterea de disentildeo una de las opciones maacutes importantes es
View Callbacks la cual al ejecutarla abre el archivo m asociado a nuestro disentildeo y nos posiciona en la
parte del programa que corresponde a la subrutina que se ejecutaraacute cuando se realice una determinada
accioacuten sobre el elemento que estamos editando
FUNCIONAMIENTO DE UNA APLICACIOacuteN GUIUna aplicacioacuten GUIDE consta de dos archivos m y fig El archivo m es el que contiene el coacutedigo con las
correspondencias de los botones de control de la interfaz y el archivo fig contiene los elementos graacuteficos
Cada vez que se adicione un nuevo elemento en la interfaz graacutefica se genera automaacuteticamente coacutedigo en el
archivo m Para ejecutar una Interfaz Graacutefica si la hemos etiquetado con el nombre cursofig simplemente
ejecutamos en la ventana de comandos gtgt curso O haciendo click derecho en el m-file y seleccionando la
opcioacuten RUN
Todos los valores de las propiedades de los elementos (color valor posicioacuten stringhellip) y los valores de las
variables transitorias del programa se almacenan en una estructura los cuales son accedidos mediante un
uacutenico y mismo puntero para todos estos Tomando por ejemplo el programa listado anteriormente el
puntero se asigna en
handlesoutput = hObject
handles es nuestro puntero a los datos de la aplicacioacuten Esta definicioacuten de puntero es salvada con la
siguiente instruccioacutenguidata(hObject handles) guidata es la sentencia para salvar los datos de laaplicacioacuten
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 815
ELECTROACUSTICA A9607-5
Aviso guidata es la funcioacuten que guarda las variables y propiedades de los elementos en la estructura de
datos de la aplicacioacuten por lo tanto como regla general en cada subrutina se debe escribir en la uacuteltima liacutenea
lo siguiente
guidata(hObjecthandles)
Esta sentencia nos garantiza que cualquier cambio o asignacioacuten de propiedades o variables quede
almacenado
Por ejemplo si dentro de una subrutina una operacioacuten dio como resultado unavariable utpl para poderutilizarla desde el programa u otra subrutina debemos salvarla de la siguiente manera
handlesutpl=utpl
guidata(hObjecthandles)
La primera liacutenea crea la variable utpl a la estructura de datos de la aplicacioacuten apuntada por handles y la
segunda graba el valor
SENTENCIAS GET Y SET
La asignacioacuten u obtencioacuten de valores de los componentes se realiza mediante las sentencias get y set Por
ejemplo si queremos que la variable utpl tenga el valor del Slider escribimos
utpl= get(handlesslider1Value)
Notar que siempre se obtienen los datos a traveacutes del puntero handles
Para asignar el valor a la variable utpl al statictext etiquetada como text1 escribimos
set(handlestext1Stringutpl)Escribe el valor del Slideren static-text
MANEJO DE ARCHIVOS DE SONIDO
El computador funciona de forma discreta no en forma continua es decir trabaja con nuacutemeros que
guardamos en vectores
Un ejemplo de vector es [12345610]
Para hacer sonidos necesitamos una sentildeal que en este caso es un vector con muchos nuacutemeros de repente
millones Este vector tiene que contener el sonido
Un sonido es una vibracioacuten una onda que la vemos de forma sinuidal o de forma parecida (En realidad es
consecuencia de ello pero para formar una idea buena lo planteo asiacute)
Lo que se guarda en el vector son valores de la sentildeal Una analogiacutea para entender esto la visualizo asiacute Una
cuerda que se mueve vibrando (Fig 1) y le sacamos una foto en un instante Cuando la cuerda esta quieta
no vibrando decimos que estaacute en el valor cero (Fig 2) Mientras empieza a moverse de izquierda a derecha
va adquiriendo valores los que medimos al medio de la cuerda desde el punto donde esta quieta -cuando
esta en cero- (Fig3) su elongacioacuten maacutexima seraacute 1 a la derecha y -1 a la izquierda (Fig5 y 6)
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 915
ELECTROACUSTICA A9607-5
Bueno con cada foto que le saque a mi onda que representeacute como cuerda tendreacute un valor que guardareacute en
el vector Pero como el movimiento es una vibracioacuten tengo que guardar estos valores cada cierto intervalo
de tiempo algo asiacute como sacar fotos cada 1 segundo a mi onda y es ahiacute donde aparece el concepto de
ldquoFrecuencia de Muestrordquo
La frecuencia de Muestreo fm Es la cantidad de muestras (fotos en mi analogiacutea) que se toman en 1
segundo Si tomo la grafica de los valores que va tomando mi onda (cuerda) en el ldquoeje yrdquo pongo los valores
en funcioacuten del tiempo y en el ldquoeje xrdquo el tiempo la frecuencia de muestreo en la figura es 1Hz] pues
muestreo (tomo una foto) 1 vez por segundo
Lo que guardo es lo que se ve arriba
Frecuencia de muestreo
Loacutegicamente cuando tengo una mayor frecuencia de muestreo mejor seraacute la calidad del sonido porque
estareacute representando con maacutes puntos mi funcioacuten
Por ejemplo el teleacutefono funciona a 8000 [Hz] y se escucha maacutes o menos no maacutes (Sobre todo cuando hacen
esos contactos con las unidades moacuteviles en la Radio) Los CD tienen una frecuencia de muestreo de
44100[Hz] la radio de 22100[Hz] bueno como dato no maacutes
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1015
ELECTROACUSTICA A9607-5
4- ASPECTOS PRACTICOS
Para realizar nuestro laboratorio con ayuda de todos los aspectos teoricos ya revisados en la anterior
seccioacuten empezaremos definiendo la ecuacioacuten de la onda que programaremos
Sabiendo que la ecuacioacuten de una onda es una de caraacutecter trigonomeacutetrico la ecuacioacuten de esta seraacute
Con esta ecuacioacuten ya podemos identificar a nuestra amplitud que es de 5 ademaacutes de la velocidad angular
que contiene o depende de la frecuencia y esta es la que variara en nuestra interfaz
Ya identificados nuestros paraacutemetros procedamos a realizar una programa en matlab es deir un archivo m
que reprodusca el sonida y grafique parte de esta Entonces analicemos el siguiente programa
Con este programa vemos y reconocemos que significa cada paraacutemetro En primer lugar definimos la
frecuencia de muestreo esto se refiere a los puntos que seraacuten tomados en cuenta para que la grafica nosea tan cuadrada y nos permita apreciar bien las carcteristicas
La frecuencia de sonido esta definida a nuestra variable f de nuestra ecuacioacuten de onda por el momento la
definiremos con un valor
La duracioacuten del sonido seraacute como se ve de 2 segundos esta se puede cambiar La sentildeal que introduciremos
es la ya antes vista con lo que con el comando lsquosoundrsquo podremos escuchar el sonido de esa frecuencia
Definimos asi tambieacuten los limitesdel grafico que dependeraacuten de la frecuencia de muestreo y de la frecuencia
del sonido pa esto le damos nuevamente la ecuacioacuten con x en funcioacuten de t1
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1115
ELECTROACUSTICA A9607-5
Como vemos en la grafica la amplitud es 5 nuestra frecuencia es casi 10000 con lo que el periodo es 2e-4con esto completamos nuestro primer paso
Ahora para realizar nuestro GUI o interfaz de usuario debemos realizar los pasos para crear la interfaz el cual
debera ser modificada en PROPERTY INSPECTOR para quedar de esta manera
Luego la programacioacuten de cada botoacuten en nuestro archivo m quedara
function varargout = SON1(varargin) SON1 MATLAB code for SON1fig SON1 by itself creates a new SON1 or raises the existing singleton H = SON1 returns the handle to a new SON1 or the handle to the existing singleton SON1(CALLBACKhObjecteventDatahandles) calls the local function named CALLBACK in SON1M with the given input arguments SON1(PropertyValue) creates a new SON1 or raises the existing singleton Starting from the left property value pairs are applied to the GUI before SON1_OpeningFcn gets called An
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1215
ELECTROACUSTICA A9607-5
unrecognized property name or invalid value makes property application stop All inputs are passed to SON1_OpeningFcn via varargin See GUI Options on GUIDEs Tools menu Choose GUI allows only one instance to run (singleton) See also GUIDE GUIDATA GUIHANDLES
Edit the above text to modify the response to help SON1
Last Modified by GUIDE v25 14-Aug-2011 123846
Begin initialization code - DO NOT EDIT gui_Singleton = 1 gui_State = struct(gui_Name mfilename
gui_Singleton gui_Singleton gui_OpeningFcn SON1_OpeningFcn gui_OutputFcn SON1_OutputFcn gui_LayoutFcn [] gui_Callback [])
if nargin ampamp ischar(varargin1) gui_Stategui_Callback = str2func(varargin1) end
if nargout [varargout1nargout] = gui_mainfcn(gui_State varargin)
else gui_mainfcn(gui_State varargin)
end End initialization code - DO NOT EDIT
--- Executes just before SON1 is made visible
function SON1_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 SON1 (see VARARGIN)
Choose default command line output for SON1 handlesoutput = hObject
Update handles structure guidata(hObject handles)
UIWAIT makes SON1 wait for user response (see UIRESUME) uiwait(handlesfigure1)
--- Outputs from this function are returned to the command line function varargout = SON1_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 varargout1 = handlesoutput
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1315
ELECTROACUSTICA A9607-5
--- Executes on button press in PLAY function PLAY_Callback(hObject eventdata handles) Frecuencia de muestreo fm=44000 frecuencia sonido nota musical La
sliderValue = get(handlesedit2Value) puts the slider value into the edit text component fr= get(handlesslider1Value) Duracion en segundos duracion=1 t=01fmduracion Sentildeal senoidal y=5cos(fr2pit) La hacemos sonar sound(yfm) grafica fm1=1000000 t1=01fm12fr x=5cos(fr2pit1) La guardamos como wav wavwrite(5yfmmi440wav) Graficamos un pedacito para ver la forma t=t(round(685length(t)100)round(70length(t)100)) y=y(round(685length(y)100)round(70length(y)100)) plot(t1x) Update handles structure guidata(hObject handles)
Como se ve en la configuracioacuten del botoacuten PLAY definimos la frecuencia de muestreo la duracioacuten y nuestra
funcioacuten La aplicacioacuten del slider es que obtenemos el valor de la frecuencia de este y lo guardamos en fr
como se ve
hObject handle to PLAY (see GCBO) eventdata reserved - to be defined in a future version of MATLAB handles structure with handles and user data (see GUIDATA)
--- Executes on slider movement function slider1_Callback(hObject eventdata handles) obtains the slider value from the slider component sliderValue = get(handlesslider1Value)
puts the slider value into the edit text component set(handlesedit2String num2str(sliderValue))
Update handles structure guidata(hObject handles) handles structure with handles and user data (see GUIDATA)
Hints get(hObjectValue) returns position of slider get(hObjectMin) and get(hObjectMax) to determine range of slider
--- Executes during object creation after setting all properties function slider1_CreateFcn(hObject eventdata handles) hObject handle to slider1 (see GCBO) eventdata reserved - to be defined in a future version of MATLAB handles empty - handles not created until after all CreateFcns called
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1415
ELECTROACUSTICA A9607-5
Hint slider controls usually have a light gray background if isequal(get(hObjectBackgroundColor)get(0defaultUicontrolBackgroundColor))
set(hObjectBackgroundColor[9 9 9]) end
--- Executes during object creation after setting all properties
function edit2_Callback(hObject eventdata handles) get the string for the editText component sliderValue = get(handlesedit2String)
convert from string to number if possible otherwise returns empty sliderValue = str2num(sliderValue)
if user inputs something is not a number or if the input is less than 0
or greater than 100 then the slider value defaults to 0 set(handlesslider1Value0) set(handlesedit2String0)
else set(handlesslider1ValuesliderValue)
end
En esta parte de la programacioacuten podemos ver como determinamos los liacutemites con una condicioacuten haciendo
que si el valor de la interfaz edit text que pusimos sobrepasa el limite este mostrara por defecto un 0
Update handles structure guidata(hObject handles)
hObject handle to edit2 (see GCBO) eventdata reserved - to be defined in a future version of MATLAB handles structure with handles and user data (see GUIDATA)
Hints get(hObjectString) returns contents of edit2 as text str2double(get(hObjectString)) returns contents of edit2 as a double
--- Executes during object creation after setting all properties function edit2_CreateFcn(hObject eventdata handles) hObject handle to edit2 (see GCBO) eventdata reserved - to be defined in a future version of MATLAB handles empty - handles not created until after all CreateFcns called
Hint edit controls usually have a white background on Windows See ISPC and COMPUTER if ispc ampamp isequal(get(hObjectBackgroundColor)get(0defaultUicontrolBackgroundColor))
set(hObjectBackgroundColorwhite) end
Entonces despueacutes de haber armado nuestro GUI y luego haber configurado los botones de nuestra interfaz
la guardamos y podemos ejecutarla para poder visualizar esta interfaz y poder escuchar los sonidos a
distintas frecuencias en el rango de 20 a 20000 hertz
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1515
ELECTROACUSTICA A9607-5
5- CONCLUSIONES
Con los aspectos teoacutericos expuestos se pudo conocer los paraacutemetros de una onda que es de forma
trigonometriacutea y la podemos graficar en MATLAB
De acuerdo a las utilidades de la INTERFAZ DE USUARIO podemos generar sonido de nuestra onda a
diferentes frecuencias
6- BIBLIOGRAFIA
httpeswikipediaorgwikiOnda_(fC3ADsica)
httpwwwfisica-facilcomTemarioOndasTeoricoPulsodeOndascentrohtm
httprocoblogblogspotcom200701el-sonido-y-matlabhtml
MANUAL DE INTERFAZ GRAFICA DE USUARIO EN MATLAB por Diego Orlando Barragan Guerrero
MANUAL GUIDE CEDUVIRT
MATLAB 2010
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 515
ELECTROACUSTICA A9607-5
herramientas adicionales que expanden sus prestaciones a saber Simulink (plataforma de simulacioacuten
multidominio) y GUIDE (editor de interfaces de usuario - GUI) Ademaacutes se pueden ampliar las capacidades
de MATLAB con las cajas de herramientas (toolboxes) y las de Simulink con los paquetes de bloques
(blocksets)
Es un software muy usado en universidades y centros de investigacioacuten y desarrollo En los uacuteltimos antildeos ha
aumentado el nuacutemero de prestaciones como la de programar directamente procesadores digitales de sentildealo crear coacutedigo VHDL
INTERFAZ GRAFICA DE USUARIO EN MATLAB (GUIDE)
GUIDE es un entorno de programacioacuten visual disponible en MATLAB para realizar y ejecutar programas que
necesiten ingreso continuo de datos Tiene las caracteriacutesticas baacutesicas de todos los programas visuales como
Visual Basic o Visual C++
INICIOPara iniciar nuestro proyecto lo podemos hacer de dos maneras
a) Ejecutando la siguiente instruccioacuten en la ventana de comandos
gtgt guide
b) Haciendo un click en el iacutecono que muestra la figura
Se presenta el siguiente cuadro de diaacutelogo
Se presentan las siguientes opciones
a) Blank GUI (Default)La opcioacuten de interfaz graacutefica de usuario en blanco (viene predeterminada) nos presenta un formulario
nuevo en el cual podemos disentildear nuestro programa
b) GUI with Uicontrols
Esta opcioacuten presenta un ejemplo en el cual se calcula la masa dada la densidad y el volumen en alguno de
los dos sistemas de unidades Podemos ejecutar este ejemplo y obtener resultados
c) GUI with Axes and Menu
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 615
ELECTROACUSTICA A9607-5
Esta opcioacuten es otro ejemplo el cual contiene el menuacute File con las opciones Open Print y Close En el
formulario tiene un Popup menu un push button y un objeto Axes podemos ejecutar el programa eligiendo
alguna de las seis opciones que se encuentran en el menuacute despegable y haciendo click en el botoacuten de
comando
d) Modal Question DialogCon esta opcioacuten se muestra en la pantalla un cuadro de diaacutelogo comuacuten el cual consta de una pequentildea
imagen una etiqueta y dos botones Yes y No dependiendo del botoacuten que se presione el GUI retorna eltexto seleccionado (la cadena de caracteres lsquoYesrsquo o lsquoNorsquo)
Para obtener la etiqueta de cada elemento de la paleta de componentes ejecutamos FilegtgtPreferentes y
seleccionamos Show names in component palette
Tenemos la siguiente presentacioacuten
PROPIEDADES DE LOS COMPONENTES
Cada uno de los elementos de GUI tiene un conjunto de opciones que acceder con click derecho Aparece el
siguiente submenuacute
COMPONENTES
CONTROL DESCRIPCIOacuteNPush Button Genera una accioacuten
Slider Representa un rango de valoresRadio Button Representa una opcioacuten
Check Box Indica el estado de una opcioacuten
Edit Text Para editar texto
Static text Muestra un string de texto
Pop-up Menu Provee una lista de opciones
Listbox Lista deslizable
Toggle Button Genera una accioacuten on off
Axes Para graficar
Panel Visualiza grupo de controles
Button Grup Es un panel exclusivo para radio buttons y
toggle buttons
ActiveX Control Despliega controles ActiveX en Gui
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 715
ELECTROACUSTICA A9607-5
La opcioacuten Property Inspector nos permite personalizar cada elemento
Al hacer click derecho en el elemento ubicado en el aacuterea de disentildeo una de las opciones maacutes importantes es
View Callbacks la cual al ejecutarla abre el archivo m asociado a nuestro disentildeo y nos posiciona en la
parte del programa que corresponde a la subrutina que se ejecutaraacute cuando se realice una determinada
accioacuten sobre el elemento que estamos editando
FUNCIONAMIENTO DE UNA APLICACIOacuteN GUIUna aplicacioacuten GUIDE consta de dos archivos m y fig El archivo m es el que contiene el coacutedigo con las
correspondencias de los botones de control de la interfaz y el archivo fig contiene los elementos graacuteficos
Cada vez que se adicione un nuevo elemento en la interfaz graacutefica se genera automaacuteticamente coacutedigo en el
archivo m Para ejecutar una Interfaz Graacutefica si la hemos etiquetado con el nombre cursofig simplemente
ejecutamos en la ventana de comandos gtgt curso O haciendo click derecho en el m-file y seleccionando la
opcioacuten RUN
Todos los valores de las propiedades de los elementos (color valor posicioacuten stringhellip) y los valores de las
variables transitorias del programa se almacenan en una estructura los cuales son accedidos mediante un
uacutenico y mismo puntero para todos estos Tomando por ejemplo el programa listado anteriormente el
puntero se asigna en
handlesoutput = hObject
handles es nuestro puntero a los datos de la aplicacioacuten Esta definicioacuten de puntero es salvada con la
siguiente instruccioacutenguidata(hObject handles) guidata es la sentencia para salvar los datos de laaplicacioacuten
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 815
ELECTROACUSTICA A9607-5
Aviso guidata es la funcioacuten que guarda las variables y propiedades de los elementos en la estructura de
datos de la aplicacioacuten por lo tanto como regla general en cada subrutina se debe escribir en la uacuteltima liacutenea
lo siguiente
guidata(hObjecthandles)
Esta sentencia nos garantiza que cualquier cambio o asignacioacuten de propiedades o variables quede
almacenado
Por ejemplo si dentro de una subrutina una operacioacuten dio como resultado unavariable utpl para poderutilizarla desde el programa u otra subrutina debemos salvarla de la siguiente manera
handlesutpl=utpl
guidata(hObjecthandles)
La primera liacutenea crea la variable utpl a la estructura de datos de la aplicacioacuten apuntada por handles y la
segunda graba el valor
SENTENCIAS GET Y SET
La asignacioacuten u obtencioacuten de valores de los componentes se realiza mediante las sentencias get y set Por
ejemplo si queremos que la variable utpl tenga el valor del Slider escribimos
utpl= get(handlesslider1Value)
Notar que siempre se obtienen los datos a traveacutes del puntero handles
Para asignar el valor a la variable utpl al statictext etiquetada como text1 escribimos
set(handlestext1Stringutpl)Escribe el valor del Slideren static-text
MANEJO DE ARCHIVOS DE SONIDO
El computador funciona de forma discreta no en forma continua es decir trabaja con nuacutemeros que
guardamos en vectores
Un ejemplo de vector es [12345610]
Para hacer sonidos necesitamos una sentildeal que en este caso es un vector con muchos nuacutemeros de repente
millones Este vector tiene que contener el sonido
Un sonido es una vibracioacuten una onda que la vemos de forma sinuidal o de forma parecida (En realidad es
consecuencia de ello pero para formar una idea buena lo planteo asiacute)
Lo que se guarda en el vector son valores de la sentildeal Una analogiacutea para entender esto la visualizo asiacute Una
cuerda que se mueve vibrando (Fig 1) y le sacamos una foto en un instante Cuando la cuerda esta quieta
no vibrando decimos que estaacute en el valor cero (Fig 2) Mientras empieza a moverse de izquierda a derecha
va adquiriendo valores los que medimos al medio de la cuerda desde el punto donde esta quieta -cuando
esta en cero- (Fig3) su elongacioacuten maacutexima seraacute 1 a la derecha y -1 a la izquierda (Fig5 y 6)
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 915
ELECTROACUSTICA A9607-5
Bueno con cada foto que le saque a mi onda que representeacute como cuerda tendreacute un valor que guardareacute en
el vector Pero como el movimiento es una vibracioacuten tengo que guardar estos valores cada cierto intervalo
de tiempo algo asiacute como sacar fotos cada 1 segundo a mi onda y es ahiacute donde aparece el concepto de
ldquoFrecuencia de Muestrordquo
La frecuencia de Muestreo fm Es la cantidad de muestras (fotos en mi analogiacutea) que se toman en 1
segundo Si tomo la grafica de los valores que va tomando mi onda (cuerda) en el ldquoeje yrdquo pongo los valores
en funcioacuten del tiempo y en el ldquoeje xrdquo el tiempo la frecuencia de muestreo en la figura es 1Hz] pues
muestreo (tomo una foto) 1 vez por segundo
Lo que guardo es lo que se ve arriba
Frecuencia de muestreo
Loacutegicamente cuando tengo una mayor frecuencia de muestreo mejor seraacute la calidad del sonido porque
estareacute representando con maacutes puntos mi funcioacuten
Por ejemplo el teleacutefono funciona a 8000 [Hz] y se escucha maacutes o menos no maacutes (Sobre todo cuando hacen
esos contactos con las unidades moacuteviles en la Radio) Los CD tienen una frecuencia de muestreo de
44100[Hz] la radio de 22100[Hz] bueno como dato no maacutes
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1015
ELECTROACUSTICA A9607-5
4- ASPECTOS PRACTICOS
Para realizar nuestro laboratorio con ayuda de todos los aspectos teoricos ya revisados en la anterior
seccioacuten empezaremos definiendo la ecuacioacuten de la onda que programaremos
Sabiendo que la ecuacioacuten de una onda es una de caraacutecter trigonomeacutetrico la ecuacioacuten de esta seraacute
Con esta ecuacioacuten ya podemos identificar a nuestra amplitud que es de 5 ademaacutes de la velocidad angular
que contiene o depende de la frecuencia y esta es la que variara en nuestra interfaz
Ya identificados nuestros paraacutemetros procedamos a realizar una programa en matlab es deir un archivo m
que reprodusca el sonida y grafique parte de esta Entonces analicemos el siguiente programa
Con este programa vemos y reconocemos que significa cada paraacutemetro En primer lugar definimos la
frecuencia de muestreo esto se refiere a los puntos que seraacuten tomados en cuenta para que la grafica nosea tan cuadrada y nos permita apreciar bien las carcteristicas
La frecuencia de sonido esta definida a nuestra variable f de nuestra ecuacioacuten de onda por el momento la
definiremos con un valor
La duracioacuten del sonido seraacute como se ve de 2 segundos esta se puede cambiar La sentildeal que introduciremos
es la ya antes vista con lo que con el comando lsquosoundrsquo podremos escuchar el sonido de esa frecuencia
Definimos asi tambieacuten los limitesdel grafico que dependeraacuten de la frecuencia de muestreo y de la frecuencia
del sonido pa esto le damos nuevamente la ecuacioacuten con x en funcioacuten de t1
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1115
ELECTROACUSTICA A9607-5
Como vemos en la grafica la amplitud es 5 nuestra frecuencia es casi 10000 con lo que el periodo es 2e-4con esto completamos nuestro primer paso
Ahora para realizar nuestro GUI o interfaz de usuario debemos realizar los pasos para crear la interfaz el cual
debera ser modificada en PROPERTY INSPECTOR para quedar de esta manera
Luego la programacioacuten de cada botoacuten en nuestro archivo m quedara
function varargout = SON1(varargin) SON1 MATLAB code for SON1fig SON1 by itself creates a new SON1 or raises the existing singleton H = SON1 returns the handle to a new SON1 or the handle to the existing singleton SON1(CALLBACKhObjecteventDatahandles) calls the local function named CALLBACK in SON1M with the given input arguments SON1(PropertyValue) creates a new SON1 or raises the existing singleton Starting from the left property value pairs are applied to the GUI before SON1_OpeningFcn gets called An
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1215
ELECTROACUSTICA A9607-5
unrecognized property name or invalid value makes property application stop All inputs are passed to SON1_OpeningFcn via varargin See GUI Options on GUIDEs Tools menu Choose GUI allows only one instance to run (singleton) See also GUIDE GUIDATA GUIHANDLES
Edit the above text to modify the response to help SON1
Last Modified by GUIDE v25 14-Aug-2011 123846
Begin initialization code - DO NOT EDIT gui_Singleton = 1 gui_State = struct(gui_Name mfilename
gui_Singleton gui_Singleton gui_OpeningFcn SON1_OpeningFcn gui_OutputFcn SON1_OutputFcn gui_LayoutFcn [] gui_Callback [])
if nargin ampamp ischar(varargin1) gui_Stategui_Callback = str2func(varargin1) end
if nargout [varargout1nargout] = gui_mainfcn(gui_State varargin)
else gui_mainfcn(gui_State varargin)
end End initialization code - DO NOT EDIT
--- Executes just before SON1 is made visible
function SON1_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 SON1 (see VARARGIN)
Choose default command line output for SON1 handlesoutput = hObject
Update handles structure guidata(hObject handles)
UIWAIT makes SON1 wait for user response (see UIRESUME) uiwait(handlesfigure1)
--- Outputs from this function are returned to the command line function varargout = SON1_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 varargout1 = handlesoutput
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1315
ELECTROACUSTICA A9607-5
--- Executes on button press in PLAY function PLAY_Callback(hObject eventdata handles) Frecuencia de muestreo fm=44000 frecuencia sonido nota musical La
sliderValue = get(handlesedit2Value) puts the slider value into the edit text component fr= get(handlesslider1Value) Duracion en segundos duracion=1 t=01fmduracion Sentildeal senoidal y=5cos(fr2pit) La hacemos sonar sound(yfm) grafica fm1=1000000 t1=01fm12fr x=5cos(fr2pit1) La guardamos como wav wavwrite(5yfmmi440wav) Graficamos un pedacito para ver la forma t=t(round(685length(t)100)round(70length(t)100)) y=y(round(685length(y)100)round(70length(y)100)) plot(t1x) Update handles structure guidata(hObject handles)
Como se ve en la configuracioacuten del botoacuten PLAY definimos la frecuencia de muestreo la duracioacuten y nuestra
funcioacuten La aplicacioacuten del slider es que obtenemos el valor de la frecuencia de este y lo guardamos en fr
como se ve
hObject handle to PLAY (see GCBO) eventdata reserved - to be defined in a future version of MATLAB handles structure with handles and user data (see GUIDATA)
--- Executes on slider movement function slider1_Callback(hObject eventdata handles) obtains the slider value from the slider component sliderValue = get(handlesslider1Value)
puts the slider value into the edit text component set(handlesedit2String num2str(sliderValue))
Update handles structure guidata(hObject handles) handles structure with handles and user data (see GUIDATA)
Hints get(hObjectValue) returns position of slider get(hObjectMin) and get(hObjectMax) to determine range of slider
--- Executes during object creation after setting all properties function slider1_CreateFcn(hObject eventdata handles) hObject handle to slider1 (see GCBO) eventdata reserved - to be defined in a future version of MATLAB handles empty - handles not created until after all CreateFcns called
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1415
ELECTROACUSTICA A9607-5
Hint slider controls usually have a light gray background if isequal(get(hObjectBackgroundColor)get(0defaultUicontrolBackgroundColor))
set(hObjectBackgroundColor[9 9 9]) end
--- Executes during object creation after setting all properties
function edit2_Callback(hObject eventdata handles) get the string for the editText component sliderValue = get(handlesedit2String)
convert from string to number if possible otherwise returns empty sliderValue = str2num(sliderValue)
if user inputs something is not a number or if the input is less than 0
or greater than 100 then the slider value defaults to 0 set(handlesslider1Value0) set(handlesedit2String0)
else set(handlesslider1ValuesliderValue)
end
En esta parte de la programacioacuten podemos ver como determinamos los liacutemites con una condicioacuten haciendo
que si el valor de la interfaz edit text que pusimos sobrepasa el limite este mostrara por defecto un 0
Update handles structure guidata(hObject handles)
hObject handle to edit2 (see GCBO) eventdata reserved - to be defined in a future version of MATLAB handles structure with handles and user data (see GUIDATA)
Hints get(hObjectString) returns contents of edit2 as text str2double(get(hObjectString)) returns contents of edit2 as a double
--- Executes during object creation after setting all properties function edit2_CreateFcn(hObject eventdata handles) hObject handle to edit2 (see GCBO) eventdata reserved - to be defined in a future version of MATLAB handles empty - handles not created until after all CreateFcns called
Hint edit controls usually have a white background on Windows See ISPC and COMPUTER if ispc ampamp isequal(get(hObjectBackgroundColor)get(0defaultUicontrolBackgroundColor))
set(hObjectBackgroundColorwhite) end
Entonces despueacutes de haber armado nuestro GUI y luego haber configurado los botones de nuestra interfaz
la guardamos y podemos ejecutarla para poder visualizar esta interfaz y poder escuchar los sonidos a
distintas frecuencias en el rango de 20 a 20000 hertz
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1515
ELECTROACUSTICA A9607-5
5- CONCLUSIONES
Con los aspectos teoacutericos expuestos se pudo conocer los paraacutemetros de una onda que es de forma
trigonometriacutea y la podemos graficar en MATLAB
De acuerdo a las utilidades de la INTERFAZ DE USUARIO podemos generar sonido de nuestra onda a
diferentes frecuencias
6- BIBLIOGRAFIA
httpeswikipediaorgwikiOnda_(fC3ADsica)
httpwwwfisica-facilcomTemarioOndasTeoricoPulsodeOndascentrohtm
httprocoblogblogspotcom200701el-sonido-y-matlabhtml
MANUAL DE INTERFAZ GRAFICA DE USUARIO EN MATLAB por Diego Orlando Barragan Guerrero
MANUAL GUIDE CEDUVIRT
MATLAB 2010
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 615
ELECTROACUSTICA A9607-5
Esta opcioacuten es otro ejemplo el cual contiene el menuacute File con las opciones Open Print y Close En el
formulario tiene un Popup menu un push button y un objeto Axes podemos ejecutar el programa eligiendo
alguna de las seis opciones que se encuentran en el menuacute despegable y haciendo click en el botoacuten de
comando
d) Modal Question DialogCon esta opcioacuten se muestra en la pantalla un cuadro de diaacutelogo comuacuten el cual consta de una pequentildea
imagen una etiqueta y dos botones Yes y No dependiendo del botoacuten que se presione el GUI retorna eltexto seleccionado (la cadena de caracteres lsquoYesrsquo o lsquoNorsquo)
Para obtener la etiqueta de cada elemento de la paleta de componentes ejecutamos FilegtgtPreferentes y
seleccionamos Show names in component palette
Tenemos la siguiente presentacioacuten
PROPIEDADES DE LOS COMPONENTES
Cada uno de los elementos de GUI tiene un conjunto de opciones que acceder con click derecho Aparece el
siguiente submenuacute
COMPONENTES
CONTROL DESCRIPCIOacuteNPush Button Genera una accioacuten
Slider Representa un rango de valoresRadio Button Representa una opcioacuten
Check Box Indica el estado de una opcioacuten
Edit Text Para editar texto
Static text Muestra un string de texto
Pop-up Menu Provee una lista de opciones
Listbox Lista deslizable
Toggle Button Genera una accioacuten on off
Axes Para graficar
Panel Visualiza grupo de controles
Button Grup Es un panel exclusivo para radio buttons y
toggle buttons
ActiveX Control Despliega controles ActiveX en Gui
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 715
ELECTROACUSTICA A9607-5
La opcioacuten Property Inspector nos permite personalizar cada elemento
Al hacer click derecho en el elemento ubicado en el aacuterea de disentildeo una de las opciones maacutes importantes es
View Callbacks la cual al ejecutarla abre el archivo m asociado a nuestro disentildeo y nos posiciona en la
parte del programa que corresponde a la subrutina que se ejecutaraacute cuando se realice una determinada
accioacuten sobre el elemento que estamos editando
FUNCIONAMIENTO DE UNA APLICACIOacuteN GUIUna aplicacioacuten GUIDE consta de dos archivos m y fig El archivo m es el que contiene el coacutedigo con las
correspondencias de los botones de control de la interfaz y el archivo fig contiene los elementos graacuteficos
Cada vez que se adicione un nuevo elemento en la interfaz graacutefica se genera automaacuteticamente coacutedigo en el
archivo m Para ejecutar una Interfaz Graacutefica si la hemos etiquetado con el nombre cursofig simplemente
ejecutamos en la ventana de comandos gtgt curso O haciendo click derecho en el m-file y seleccionando la
opcioacuten RUN
Todos los valores de las propiedades de los elementos (color valor posicioacuten stringhellip) y los valores de las
variables transitorias del programa se almacenan en una estructura los cuales son accedidos mediante un
uacutenico y mismo puntero para todos estos Tomando por ejemplo el programa listado anteriormente el
puntero se asigna en
handlesoutput = hObject
handles es nuestro puntero a los datos de la aplicacioacuten Esta definicioacuten de puntero es salvada con la
siguiente instruccioacutenguidata(hObject handles) guidata es la sentencia para salvar los datos de laaplicacioacuten
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 815
ELECTROACUSTICA A9607-5
Aviso guidata es la funcioacuten que guarda las variables y propiedades de los elementos en la estructura de
datos de la aplicacioacuten por lo tanto como regla general en cada subrutina se debe escribir en la uacuteltima liacutenea
lo siguiente
guidata(hObjecthandles)
Esta sentencia nos garantiza que cualquier cambio o asignacioacuten de propiedades o variables quede
almacenado
Por ejemplo si dentro de una subrutina una operacioacuten dio como resultado unavariable utpl para poderutilizarla desde el programa u otra subrutina debemos salvarla de la siguiente manera
handlesutpl=utpl
guidata(hObjecthandles)
La primera liacutenea crea la variable utpl a la estructura de datos de la aplicacioacuten apuntada por handles y la
segunda graba el valor
SENTENCIAS GET Y SET
La asignacioacuten u obtencioacuten de valores de los componentes se realiza mediante las sentencias get y set Por
ejemplo si queremos que la variable utpl tenga el valor del Slider escribimos
utpl= get(handlesslider1Value)
Notar que siempre se obtienen los datos a traveacutes del puntero handles
Para asignar el valor a la variable utpl al statictext etiquetada como text1 escribimos
set(handlestext1Stringutpl)Escribe el valor del Slideren static-text
MANEJO DE ARCHIVOS DE SONIDO
El computador funciona de forma discreta no en forma continua es decir trabaja con nuacutemeros que
guardamos en vectores
Un ejemplo de vector es [12345610]
Para hacer sonidos necesitamos una sentildeal que en este caso es un vector con muchos nuacutemeros de repente
millones Este vector tiene que contener el sonido
Un sonido es una vibracioacuten una onda que la vemos de forma sinuidal o de forma parecida (En realidad es
consecuencia de ello pero para formar una idea buena lo planteo asiacute)
Lo que se guarda en el vector son valores de la sentildeal Una analogiacutea para entender esto la visualizo asiacute Una
cuerda que se mueve vibrando (Fig 1) y le sacamos una foto en un instante Cuando la cuerda esta quieta
no vibrando decimos que estaacute en el valor cero (Fig 2) Mientras empieza a moverse de izquierda a derecha
va adquiriendo valores los que medimos al medio de la cuerda desde el punto donde esta quieta -cuando
esta en cero- (Fig3) su elongacioacuten maacutexima seraacute 1 a la derecha y -1 a la izquierda (Fig5 y 6)
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 915
ELECTROACUSTICA A9607-5
Bueno con cada foto que le saque a mi onda que representeacute como cuerda tendreacute un valor que guardareacute en
el vector Pero como el movimiento es una vibracioacuten tengo que guardar estos valores cada cierto intervalo
de tiempo algo asiacute como sacar fotos cada 1 segundo a mi onda y es ahiacute donde aparece el concepto de
ldquoFrecuencia de Muestrordquo
La frecuencia de Muestreo fm Es la cantidad de muestras (fotos en mi analogiacutea) que se toman en 1
segundo Si tomo la grafica de los valores que va tomando mi onda (cuerda) en el ldquoeje yrdquo pongo los valores
en funcioacuten del tiempo y en el ldquoeje xrdquo el tiempo la frecuencia de muestreo en la figura es 1Hz] pues
muestreo (tomo una foto) 1 vez por segundo
Lo que guardo es lo que se ve arriba
Frecuencia de muestreo
Loacutegicamente cuando tengo una mayor frecuencia de muestreo mejor seraacute la calidad del sonido porque
estareacute representando con maacutes puntos mi funcioacuten
Por ejemplo el teleacutefono funciona a 8000 [Hz] y se escucha maacutes o menos no maacutes (Sobre todo cuando hacen
esos contactos con las unidades moacuteviles en la Radio) Los CD tienen una frecuencia de muestreo de
44100[Hz] la radio de 22100[Hz] bueno como dato no maacutes
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1015
ELECTROACUSTICA A9607-5
4- ASPECTOS PRACTICOS
Para realizar nuestro laboratorio con ayuda de todos los aspectos teoricos ya revisados en la anterior
seccioacuten empezaremos definiendo la ecuacioacuten de la onda que programaremos
Sabiendo que la ecuacioacuten de una onda es una de caraacutecter trigonomeacutetrico la ecuacioacuten de esta seraacute
Con esta ecuacioacuten ya podemos identificar a nuestra amplitud que es de 5 ademaacutes de la velocidad angular
que contiene o depende de la frecuencia y esta es la que variara en nuestra interfaz
Ya identificados nuestros paraacutemetros procedamos a realizar una programa en matlab es deir un archivo m
que reprodusca el sonida y grafique parte de esta Entonces analicemos el siguiente programa
Con este programa vemos y reconocemos que significa cada paraacutemetro En primer lugar definimos la
frecuencia de muestreo esto se refiere a los puntos que seraacuten tomados en cuenta para que la grafica nosea tan cuadrada y nos permita apreciar bien las carcteristicas
La frecuencia de sonido esta definida a nuestra variable f de nuestra ecuacioacuten de onda por el momento la
definiremos con un valor
La duracioacuten del sonido seraacute como se ve de 2 segundos esta se puede cambiar La sentildeal que introduciremos
es la ya antes vista con lo que con el comando lsquosoundrsquo podremos escuchar el sonido de esa frecuencia
Definimos asi tambieacuten los limitesdel grafico que dependeraacuten de la frecuencia de muestreo y de la frecuencia
del sonido pa esto le damos nuevamente la ecuacioacuten con x en funcioacuten de t1
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1115
ELECTROACUSTICA A9607-5
Como vemos en la grafica la amplitud es 5 nuestra frecuencia es casi 10000 con lo que el periodo es 2e-4con esto completamos nuestro primer paso
Ahora para realizar nuestro GUI o interfaz de usuario debemos realizar los pasos para crear la interfaz el cual
debera ser modificada en PROPERTY INSPECTOR para quedar de esta manera
Luego la programacioacuten de cada botoacuten en nuestro archivo m quedara
function varargout = SON1(varargin) SON1 MATLAB code for SON1fig SON1 by itself creates a new SON1 or raises the existing singleton H = SON1 returns the handle to a new SON1 or the handle to the existing singleton SON1(CALLBACKhObjecteventDatahandles) calls the local function named CALLBACK in SON1M with the given input arguments SON1(PropertyValue) creates a new SON1 or raises the existing singleton Starting from the left property value pairs are applied to the GUI before SON1_OpeningFcn gets called An
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1215
ELECTROACUSTICA A9607-5
unrecognized property name or invalid value makes property application stop All inputs are passed to SON1_OpeningFcn via varargin See GUI Options on GUIDEs Tools menu Choose GUI allows only one instance to run (singleton) See also GUIDE GUIDATA GUIHANDLES
Edit the above text to modify the response to help SON1
Last Modified by GUIDE v25 14-Aug-2011 123846
Begin initialization code - DO NOT EDIT gui_Singleton = 1 gui_State = struct(gui_Name mfilename
gui_Singleton gui_Singleton gui_OpeningFcn SON1_OpeningFcn gui_OutputFcn SON1_OutputFcn gui_LayoutFcn [] gui_Callback [])
if nargin ampamp ischar(varargin1) gui_Stategui_Callback = str2func(varargin1) end
if nargout [varargout1nargout] = gui_mainfcn(gui_State varargin)
else gui_mainfcn(gui_State varargin)
end End initialization code - DO NOT EDIT
--- Executes just before SON1 is made visible
function SON1_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 SON1 (see VARARGIN)
Choose default command line output for SON1 handlesoutput = hObject
Update handles structure guidata(hObject handles)
UIWAIT makes SON1 wait for user response (see UIRESUME) uiwait(handlesfigure1)
--- Outputs from this function are returned to the command line function varargout = SON1_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 varargout1 = handlesoutput
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1315
ELECTROACUSTICA A9607-5
--- Executes on button press in PLAY function PLAY_Callback(hObject eventdata handles) Frecuencia de muestreo fm=44000 frecuencia sonido nota musical La
sliderValue = get(handlesedit2Value) puts the slider value into the edit text component fr= get(handlesslider1Value) Duracion en segundos duracion=1 t=01fmduracion Sentildeal senoidal y=5cos(fr2pit) La hacemos sonar sound(yfm) grafica fm1=1000000 t1=01fm12fr x=5cos(fr2pit1) La guardamos como wav wavwrite(5yfmmi440wav) Graficamos un pedacito para ver la forma t=t(round(685length(t)100)round(70length(t)100)) y=y(round(685length(y)100)round(70length(y)100)) plot(t1x) Update handles structure guidata(hObject handles)
Como se ve en la configuracioacuten del botoacuten PLAY definimos la frecuencia de muestreo la duracioacuten y nuestra
funcioacuten La aplicacioacuten del slider es que obtenemos el valor de la frecuencia de este y lo guardamos en fr
como se ve
hObject handle to PLAY (see GCBO) eventdata reserved - to be defined in a future version of MATLAB handles structure with handles and user data (see GUIDATA)
--- Executes on slider movement function slider1_Callback(hObject eventdata handles) obtains the slider value from the slider component sliderValue = get(handlesslider1Value)
puts the slider value into the edit text component set(handlesedit2String num2str(sliderValue))
Update handles structure guidata(hObject handles) handles structure with handles and user data (see GUIDATA)
Hints get(hObjectValue) returns position of slider get(hObjectMin) and get(hObjectMax) to determine range of slider
--- Executes during object creation after setting all properties function slider1_CreateFcn(hObject eventdata handles) hObject handle to slider1 (see GCBO) eventdata reserved - to be defined in a future version of MATLAB handles empty - handles not created until after all CreateFcns called
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1415
ELECTROACUSTICA A9607-5
Hint slider controls usually have a light gray background if isequal(get(hObjectBackgroundColor)get(0defaultUicontrolBackgroundColor))
set(hObjectBackgroundColor[9 9 9]) end
--- Executes during object creation after setting all properties
function edit2_Callback(hObject eventdata handles) get the string for the editText component sliderValue = get(handlesedit2String)
convert from string to number if possible otherwise returns empty sliderValue = str2num(sliderValue)
if user inputs something is not a number or if the input is less than 0
or greater than 100 then the slider value defaults to 0 set(handlesslider1Value0) set(handlesedit2String0)
else set(handlesslider1ValuesliderValue)
end
En esta parte de la programacioacuten podemos ver como determinamos los liacutemites con una condicioacuten haciendo
que si el valor de la interfaz edit text que pusimos sobrepasa el limite este mostrara por defecto un 0
Update handles structure guidata(hObject handles)
hObject handle to edit2 (see GCBO) eventdata reserved - to be defined in a future version of MATLAB handles structure with handles and user data (see GUIDATA)
Hints get(hObjectString) returns contents of edit2 as text str2double(get(hObjectString)) returns contents of edit2 as a double
--- Executes during object creation after setting all properties function edit2_CreateFcn(hObject eventdata handles) hObject handle to edit2 (see GCBO) eventdata reserved - to be defined in a future version of MATLAB handles empty - handles not created until after all CreateFcns called
Hint edit controls usually have a white background on Windows See ISPC and COMPUTER if ispc ampamp isequal(get(hObjectBackgroundColor)get(0defaultUicontrolBackgroundColor))
set(hObjectBackgroundColorwhite) end
Entonces despueacutes de haber armado nuestro GUI y luego haber configurado los botones de nuestra interfaz
la guardamos y podemos ejecutarla para poder visualizar esta interfaz y poder escuchar los sonidos a
distintas frecuencias en el rango de 20 a 20000 hertz
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1515
ELECTROACUSTICA A9607-5
5- CONCLUSIONES
Con los aspectos teoacutericos expuestos se pudo conocer los paraacutemetros de una onda que es de forma
trigonometriacutea y la podemos graficar en MATLAB
De acuerdo a las utilidades de la INTERFAZ DE USUARIO podemos generar sonido de nuestra onda a
diferentes frecuencias
6- BIBLIOGRAFIA
httpeswikipediaorgwikiOnda_(fC3ADsica)
httpwwwfisica-facilcomTemarioOndasTeoricoPulsodeOndascentrohtm
httprocoblogblogspotcom200701el-sonido-y-matlabhtml
MANUAL DE INTERFAZ GRAFICA DE USUARIO EN MATLAB por Diego Orlando Barragan Guerrero
MANUAL GUIDE CEDUVIRT
MATLAB 2010
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 715
ELECTROACUSTICA A9607-5
La opcioacuten Property Inspector nos permite personalizar cada elemento
Al hacer click derecho en el elemento ubicado en el aacuterea de disentildeo una de las opciones maacutes importantes es
View Callbacks la cual al ejecutarla abre el archivo m asociado a nuestro disentildeo y nos posiciona en la
parte del programa que corresponde a la subrutina que se ejecutaraacute cuando se realice una determinada
accioacuten sobre el elemento que estamos editando
FUNCIONAMIENTO DE UNA APLICACIOacuteN GUIUna aplicacioacuten GUIDE consta de dos archivos m y fig El archivo m es el que contiene el coacutedigo con las
correspondencias de los botones de control de la interfaz y el archivo fig contiene los elementos graacuteficos
Cada vez que se adicione un nuevo elemento en la interfaz graacutefica se genera automaacuteticamente coacutedigo en el
archivo m Para ejecutar una Interfaz Graacutefica si la hemos etiquetado con el nombre cursofig simplemente
ejecutamos en la ventana de comandos gtgt curso O haciendo click derecho en el m-file y seleccionando la
opcioacuten RUN
Todos los valores de las propiedades de los elementos (color valor posicioacuten stringhellip) y los valores de las
variables transitorias del programa se almacenan en una estructura los cuales son accedidos mediante un
uacutenico y mismo puntero para todos estos Tomando por ejemplo el programa listado anteriormente el
puntero se asigna en
handlesoutput = hObject
handles es nuestro puntero a los datos de la aplicacioacuten Esta definicioacuten de puntero es salvada con la
siguiente instruccioacutenguidata(hObject handles) guidata es la sentencia para salvar los datos de laaplicacioacuten
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 815
ELECTROACUSTICA A9607-5
Aviso guidata es la funcioacuten que guarda las variables y propiedades de los elementos en la estructura de
datos de la aplicacioacuten por lo tanto como regla general en cada subrutina se debe escribir en la uacuteltima liacutenea
lo siguiente
guidata(hObjecthandles)
Esta sentencia nos garantiza que cualquier cambio o asignacioacuten de propiedades o variables quede
almacenado
Por ejemplo si dentro de una subrutina una operacioacuten dio como resultado unavariable utpl para poderutilizarla desde el programa u otra subrutina debemos salvarla de la siguiente manera
handlesutpl=utpl
guidata(hObjecthandles)
La primera liacutenea crea la variable utpl a la estructura de datos de la aplicacioacuten apuntada por handles y la
segunda graba el valor
SENTENCIAS GET Y SET
La asignacioacuten u obtencioacuten de valores de los componentes se realiza mediante las sentencias get y set Por
ejemplo si queremos que la variable utpl tenga el valor del Slider escribimos
utpl= get(handlesslider1Value)
Notar que siempre se obtienen los datos a traveacutes del puntero handles
Para asignar el valor a la variable utpl al statictext etiquetada como text1 escribimos
set(handlestext1Stringutpl)Escribe el valor del Slideren static-text
MANEJO DE ARCHIVOS DE SONIDO
El computador funciona de forma discreta no en forma continua es decir trabaja con nuacutemeros que
guardamos en vectores
Un ejemplo de vector es [12345610]
Para hacer sonidos necesitamos una sentildeal que en este caso es un vector con muchos nuacutemeros de repente
millones Este vector tiene que contener el sonido
Un sonido es una vibracioacuten una onda que la vemos de forma sinuidal o de forma parecida (En realidad es
consecuencia de ello pero para formar una idea buena lo planteo asiacute)
Lo que se guarda en el vector son valores de la sentildeal Una analogiacutea para entender esto la visualizo asiacute Una
cuerda que se mueve vibrando (Fig 1) y le sacamos una foto en un instante Cuando la cuerda esta quieta
no vibrando decimos que estaacute en el valor cero (Fig 2) Mientras empieza a moverse de izquierda a derecha
va adquiriendo valores los que medimos al medio de la cuerda desde el punto donde esta quieta -cuando
esta en cero- (Fig3) su elongacioacuten maacutexima seraacute 1 a la derecha y -1 a la izquierda (Fig5 y 6)
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 915
ELECTROACUSTICA A9607-5
Bueno con cada foto que le saque a mi onda que representeacute como cuerda tendreacute un valor que guardareacute en
el vector Pero como el movimiento es una vibracioacuten tengo que guardar estos valores cada cierto intervalo
de tiempo algo asiacute como sacar fotos cada 1 segundo a mi onda y es ahiacute donde aparece el concepto de
ldquoFrecuencia de Muestrordquo
La frecuencia de Muestreo fm Es la cantidad de muestras (fotos en mi analogiacutea) que se toman en 1
segundo Si tomo la grafica de los valores que va tomando mi onda (cuerda) en el ldquoeje yrdquo pongo los valores
en funcioacuten del tiempo y en el ldquoeje xrdquo el tiempo la frecuencia de muestreo en la figura es 1Hz] pues
muestreo (tomo una foto) 1 vez por segundo
Lo que guardo es lo que se ve arriba
Frecuencia de muestreo
Loacutegicamente cuando tengo una mayor frecuencia de muestreo mejor seraacute la calidad del sonido porque
estareacute representando con maacutes puntos mi funcioacuten
Por ejemplo el teleacutefono funciona a 8000 [Hz] y se escucha maacutes o menos no maacutes (Sobre todo cuando hacen
esos contactos con las unidades moacuteviles en la Radio) Los CD tienen una frecuencia de muestreo de
44100[Hz] la radio de 22100[Hz] bueno como dato no maacutes
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1015
ELECTROACUSTICA A9607-5
4- ASPECTOS PRACTICOS
Para realizar nuestro laboratorio con ayuda de todos los aspectos teoricos ya revisados en la anterior
seccioacuten empezaremos definiendo la ecuacioacuten de la onda que programaremos
Sabiendo que la ecuacioacuten de una onda es una de caraacutecter trigonomeacutetrico la ecuacioacuten de esta seraacute
Con esta ecuacioacuten ya podemos identificar a nuestra amplitud que es de 5 ademaacutes de la velocidad angular
que contiene o depende de la frecuencia y esta es la que variara en nuestra interfaz
Ya identificados nuestros paraacutemetros procedamos a realizar una programa en matlab es deir un archivo m
que reprodusca el sonida y grafique parte de esta Entonces analicemos el siguiente programa
Con este programa vemos y reconocemos que significa cada paraacutemetro En primer lugar definimos la
frecuencia de muestreo esto se refiere a los puntos que seraacuten tomados en cuenta para que la grafica nosea tan cuadrada y nos permita apreciar bien las carcteristicas
La frecuencia de sonido esta definida a nuestra variable f de nuestra ecuacioacuten de onda por el momento la
definiremos con un valor
La duracioacuten del sonido seraacute como se ve de 2 segundos esta se puede cambiar La sentildeal que introduciremos
es la ya antes vista con lo que con el comando lsquosoundrsquo podremos escuchar el sonido de esa frecuencia
Definimos asi tambieacuten los limitesdel grafico que dependeraacuten de la frecuencia de muestreo y de la frecuencia
del sonido pa esto le damos nuevamente la ecuacioacuten con x en funcioacuten de t1
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1115
ELECTROACUSTICA A9607-5
Como vemos en la grafica la amplitud es 5 nuestra frecuencia es casi 10000 con lo que el periodo es 2e-4con esto completamos nuestro primer paso
Ahora para realizar nuestro GUI o interfaz de usuario debemos realizar los pasos para crear la interfaz el cual
debera ser modificada en PROPERTY INSPECTOR para quedar de esta manera
Luego la programacioacuten de cada botoacuten en nuestro archivo m quedara
function varargout = SON1(varargin) SON1 MATLAB code for SON1fig SON1 by itself creates a new SON1 or raises the existing singleton H = SON1 returns the handle to a new SON1 or the handle to the existing singleton SON1(CALLBACKhObjecteventDatahandles) calls the local function named CALLBACK in SON1M with the given input arguments SON1(PropertyValue) creates a new SON1 or raises the existing singleton Starting from the left property value pairs are applied to the GUI before SON1_OpeningFcn gets called An
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1215
ELECTROACUSTICA A9607-5
unrecognized property name or invalid value makes property application stop All inputs are passed to SON1_OpeningFcn via varargin See GUI Options on GUIDEs Tools menu Choose GUI allows only one instance to run (singleton) See also GUIDE GUIDATA GUIHANDLES
Edit the above text to modify the response to help SON1
Last Modified by GUIDE v25 14-Aug-2011 123846
Begin initialization code - DO NOT EDIT gui_Singleton = 1 gui_State = struct(gui_Name mfilename
gui_Singleton gui_Singleton gui_OpeningFcn SON1_OpeningFcn gui_OutputFcn SON1_OutputFcn gui_LayoutFcn [] gui_Callback [])
if nargin ampamp ischar(varargin1) gui_Stategui_Callback = str2func(varargin1) end
if nargout [varargout1nargout] = gui_mainfcn(gui_State varargin)
else gui_mainfcn(gui_State varargin)
end End initialization code - DO NOT EDIT
--- Executes just before SON1 is made visible
function SON1_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 SON1 (see VARARGIN)
Choose default command line output for SON1 handlesoutput = hObject
Update handles structure guidata(hObject handles)
UIWAIT makes SON1 wait for user response (see UIRESUME) uiwait(handlesfigure1)
--- Outputs from this function are returned to the command line function varargout = SON1_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 varargout1 = handlesoutput
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1315
ELECTROACUSTICA A9607-5
--- Executes on button press in PLAY function PLAY_Callback(hObject eventdata handles) Frecuencia de muestreo fm=44000 frecuencia sonido nota musical La
sliderValue = get(handlesedit2Value) puts the slider value into the edit text component fr= get(handlesslider1Value) Duracion en segundos duracion=1 t=01fmduracion Sentildeal senoidal y=5cos(fr2pit) La hacemos sonar sound(yfm) grafica fm1=1000000 t1=01fm12fr x=5cos(fr2pit1) La guardamos como wav wavwrite(5yfmmi440wav) Graficamos un pedacito para ver la forma t=t(round(685length(t)100)round(70length(t)100)) y=y(round(685length(y)100)round(70length(y)100)) plot(t1x) Update handles structure guidata(hObject handles)
Como se ve en la configuracioacuten del botoacuten PLAY definimos la frecuencia de muestreo la duracioacuten y nuestra
funcioacuten La aplicacioacuten del slider es que obtenemos el valor de la frecuencia de este y lo guardamos en fr
como se ve
hObject handle to PLAY (see GCBO) eventdata reserved - to be defined in a future version of MATLAB handles structure with handles and user data (see GUIDATA)
--- Executes on slider movement function slider1_Callback(hObject eventdata handles) obtains the slider value from the slider component sliderValue = get(handlesslider1Value)
puts the slider value into the edit text component set(handlesedit2String num2str(sliderValue))
Update handles structure guidata(hObject handles) handles structure with handles and user data (see GUIDATA)
Hints get(hObjectValue) returns position of slider get(hObjectMin) and get(hObjectMax) to determine range of slider
--- Executes during object creation after setting all properties function slider1_CreateFcn(hObject eventdata handles) hObject handle to slider1 (see GCBO) eventdata reserved - to be defined in a future version of MATLAB handles empty - handles not created until after all CreateFcns called
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1415
ELECTROACUSTICA A9607-5
Hint slider controls usually have a light gray background if isequal(get(hObjectBackgroundColor)get(0defaultUicontrolBackgroundColor))
set(hObjectBackgroundColor[9 9 9]) end
--- Executes during object creation after setting all properties
function edit2_Callback(hObject eventdata handles) get the string for the editText component sliderValue = get(handlesedit2String)
convert from string to number if possible otherwise returns empty sliderValue = str2num(sliderValue)
if user inputs something is not a number or if the input is less than 0
or greater than 100 then the slider value defaults to 0 set(handlesslider1Value0) set(handlesedit2String0)
else set(handlesslider1ValuesliderValue)
end
En esta parte de la programacioacuten podemos ver como determinamos los liacutemites con una condicioacuten haciendo
que si el valor de la interfaz edit text que pusimos sobrepasa el limite este mostrara por defecto un 0
Update handles structure guidata(hObject handles)
hObject handle to edit2 (see GCBO) eventdata reserved - to be defined in a future version of MATLAB handles structure with handles and user data (see GUIDATA)
Hints get(hObjectString) returns contents of edit2 as text str2double(get(hObjectString)) returns contents of edit2 as a double
--- Executes during object creation after setting all properties function edit2_CreateFcn(hObject eventdata handles) hObject handle to edit2 (see GCBO) eventdata reserved - to be defined in a future version of MATLAB handles empty - handles not created until after all CreateFcns called
Hint edit controls usually have a white background on Windows See ISPC and COMPUTER if ispc ampamp isequal(get(hObjectBackgroundColor)get(0defaultUicontrolBackgroundColor))
set(hObjectBackgroundColorwhite) end
Entonces despueacutes de haber armado nuestro GUI y luego haber configurado los botones de nuestra interfaz
la guardamos y podemos ejecutarla para poder visualizar esta interfaz y poder escuchar los sonidos a
distintas frecuencias en el rango de 20 a 20000 hertz
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1515
ELECTROACUSTICA A9607-5
5- CONCLUSIONES
Con los aspectos teoacutericos expuestos se pudo conocer los paraacutemetros de una onda que es de forma
trigonometriacutea y la podemos graficar en MATLAB
De acuerdo a las utilidades de la INTERFAZ DE USUARIO podemos generar sonido de nuestra onda a
diferentes frecuencias
6- BIBLIOGRAFIA
httpeswikipediaorgwikiOnda_(fC3ADsica)
httpwwwfisica-facilcomTemarioOndasTeoricoPulsodeOndascentrohtm
httprocoblogblogspotcom200701el-sonido-y-matlabhtml
MANUAL DE INTERFAZ GRAFICA DE USUARIO EN MATLAB por Diego Orlando Barragan Guerrero
MANUAL GUIDE CEDUVIRT
MATLAB 2010
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 815
ELECTROACUSTICA A9607-5
Aviso guidata es la funcioacuten que guarda las variables y propiedades de los elementos en la estructura de
datos de la aplicacioacuten por lo tanto como regla general en cada subrutina se debe escribir en la uacuteltima liacutenea
lo siguiente
guidata(hObjecthandles)
Esta sentencia nos garantiza que cualquier cambio o asignacioacuten de propiedades o variables quede
almacenado
Por ejemplo si dentro de una subrutina una operacioacuten dio como resultado unavariable utpl para poderutilizarla desde el programa u otra subrutina debemos salvarla de la siguiente manera
handlesutpl=utpl
guidata(hObjecthandles)
La primera liacutenea crea la variable utpl a la estructura de datos de la aplicacioacuten apuntada por handles y la
segunda graba el valor
SENTENCIAS GET Y SET
La asignacioacuten u obtencioacuten de valores de los componentes se realiza mediante las sentencias get y set Por
ejemplo si queremos que la variable utpl tenga el valor del Slider escribimos
utpl= get(handlesslider1Value)
Notar que siempre se obtienen los datos a traveacutes del puntero handles
Para asignar el valor a la variable utpl al statictext etiquetada como text1 escribimos
set(handlestext1Stringutpl)Escribe el valor del Slideren static-text
MANEJO DE ARCHIVOS DE SONIDO
El computador funciona de forma discreta no en forma continua es decir trabaja con nuacutemeros que
guardamos en vectores
Un ejemplo de vector es [12345610]
Para hacer sonidos necesitamos una sentildeal que en este caso es un vector con muchos nuacutemeros de repente
millones Este vector tiene que contener el sonido
Un sonido es una vibracioacuten una onda que la vemos de forma sinuidal o de forma parecida (En realidad es
consecuencia de ello pero para formar una idea buena lo planteo asiacute)
Lo que se guarda en el vector son valores de la sentildeal Una analogiacutea para entender esto la visualizo asiacute Una
cuerda que se mueve vibrando (Fig 1) y le sacamos una foto en un instante Cuando la cuerda esta quieta
no vibrando decimos que estaacute en el valor cero (Fig 2) Mientras empieza a moverse de izquierda a derecha
va adquiriendo valores los que medimos al medio de la cuerda desde el punto donde esta quieta -cuando
esta en cero- (Fig3) su elongacioacuten maacutexima seraacute 1 a la derecha y -1 a la izquierda (Fig5 y 6)
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 915
ELECTROACUSTICA A9607-5
Bueno con cada foto que le saque a mi onda que representeacute como cuerda tendreacute un valor que guardareacute en
el vector Pero como el movimiento es una vibracioacuten tengo que guardar estos valores cada cierto intervalo
de tiempo algo asiacute como sacar fotos cada 1 segundo a mi onda y es ahiacute donde aparece el concepto de
ldquoFrecuencia de Muestrordquo
La frecuencia de Muestreo fm Es la cantidad de muestras (fotos en mi analogiacutea) que se toman en 1
segundo Si tomo la grafica de los valores que va tomando mi onda (cuerda) en el ldquoeje yrdquo pongo los valores
en funcioacuten del tiempo y en el ldquoeje xrdquo el tiempo la frecuencia de muestreo en la figura es 1Hz] pues
muestreo (tomo una foto) 1 vez por segundo
Lo que guardo es lo que se ve arriba
Frecuencia de muestreo
Loacutegicamente cuando tengo una mayor frecuencia de muestreo mejor seraacute la calidad del sonido porque
estareacute representando con maacutes puntos mi funcioacuten
Por ejemplo el teleacutefono funciona a 8000 [Hz] y se escucha maacutes o menos no maacutes (Sobre todo cuando hacen
esos contactos con las unidades moacuteviles en la Radio) Los CD tienen una frecuencia de muestreo de
44100[Hz] la radio de 22100[Hz] bueno como dato no maacutes
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1015
ELECTROACUSTICA A9607-5
4- ASPECTOS PRACTICOS
Para realizar nuestro laboratorio con ayuda de todos los aspectos teoricos ya revisados en la anterior
seccioacuten empezaremos definiendo la ecuacioacuten de la onda que programaremos
Sabiendo que la ecuacioacuten de una onda es una de caraacutecter trigonomeacutetrico la ecuacioacuten de esta seraacute
Con esta ecuacioacuten ya podemos identificar a nuestra amplitud que es de 5 ademaacutes de la velocidad angular
que contiene o depende de la frecuencia y esta es la que variara en nuestra interfaz
Ya identificados nuestros paraacutemetros procedamos a realizar una programa en matlab es deir un archivo m
que reprodusca el sonida y grafique parte de esta Entonces analicemos el siguiente programa
Con este programa vemos y reconocemos que significa cada paraacutemetro En primer lugar definimos la
frecuencia de muestreo esto se refiere a los puntos que seraacuten tomados en cuenta para que la grafica nosea tan cuadrada y nos permita apreciar bien las carcteristicas
La frecuencia de sonido esta definida a nuestra variable f de nuestra ecuacioacuten de onda por el momento la
definiremos con un valor
La duracioacuten del sonido seraacute como se ve de 2 segundos esta se puede cambiar La sentildeal que introduciremos
es la ya antes vista con lo que con el comando lsquosoundrsquo podremos escuchar el sonido de esa frecuencia
Definimos asi tambieacuten los limitesdel grafico que dependeraacuten de la frecuencia de muestreo y de la frecuencia
del sonido pa esto le damos nuevamente la ecuacioacuten con x en funcioacuten de t1
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1115
ELECTROACUSTICA A9607-5
Como vemos en la grafica la amplitud es 5 nuestra frecuencia es casi 10000 con lo que el periodo es 2e-4con esto completamos nuestro primer paso
Ahora para realizar nuestro GUI o interfaz de usuario debemos realizar los pasos para crear la interfaz el cual
debera ser modificada en PROPERTY INSPECTOR para quedar de esta manera
Luego la programacioacuten de cada botoacuten en nuestro archivo m quedara
function varargout = SON1(varargin) SON1 MATLAB code for SON1fig SON1 by itself creates a new SON1 or raises the existing singleton H = SON1 returns the handle to a new SON1 or the handle to the existing singleton SON1(CALLBACKhObjecteventDatahandles) calls the local function named CALLBACK in SON1M with the given input arguments SON1(PropertyValue) creates a new SON1 or raises the existing singleton Starting from the left property value pairs are applied to the GUI before SON1_OpeningFcn gets called An
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1215
ELECTROACUSTICA A9607-5
unrecognized property name or invalid value makes property application stop All inputs are passed to SON1_OpeningFcn via varargin See GUI Options on GUIDEs Tools menu Choose GUI allows only one instance to run (singleton) See also GUIDE GUIDATA GUIHANDLES
Edit the above text to modify the response to help SON1
Last Modified by GUIDE v25 14-Aug-2011 123846
Begin initialization code - DO NOT EDIT gui_Singleton = 1 gui_State = struct(gui_Name mfilename
gui_Singleton gui_Singleton gui_OpeningFcn SON1_OpeningFcn gui_OutputFcn SON1_OutputFcn gui_LayoutFcn [] gui_Callback [])
if nargin ampamp ischar(varargin1) gui_Stategui_Callback = str2func(varargin1) end
if nargout [varargout1nargout] = gui_mainfcn(gui_State varargin)
else gui_mainfcn(gui_State varargin)
end End initialization code - DO NOT EDIT
--- Executes just before SON1 is made visible
function SON1_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 SON1 (see VARARGIN)
Choose default command line output for SON1 handlesoutput = hObject
Update handles structure guidata(hObject handles)
UIWAIT makes SON1 wait for user response (see UIRESUME) uiwait(handlesfigure1)
--- Outputs from this function are returned to the command line function varargout = SON1_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 varargout1 = handlesoutput
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1315
ELECTROACUSTICA A9607-5
--- Executes on button press in PLAY function PLAY_Callback(hObject eventdata handles) Frecuencia de muestreo fm=44000 frecuencia sonido nota musical La
sliderValue = get(handlesedit2Value) puts the slider value into the edit text component fr= get(handlesslider1Value) Duracion en segundos duracion=1 t=01fmduracion Sentildeal senoidal y=5cos(fr2pit) La hacemos sonar sound(yfm) grafica fm1=1000000 t1=01fm12fr x=5cos(fr2pit1) La guardamos como wav wavwrite(5yfmmi440wav) Graficamos un pedacito para ver la forma t=t(round(685length(t)100)round(70length(t)100)) y=y(round(685length(y)100)round(70length(y)100)) plot(t1x) Update handles structure guidata(hObject handles)
Como se ve en la configuracioacuten del botoacuten PLAY definimos la frecuencia de muestreo la duracioacuten y nuestra
funcioacuten La aplicacioacuten del slider es que obtenemos el valor de la frecuencia de este y lo guardamos en fr
como se ve
hObject handle to PLAY (see GCBO) eventdata reserved - to be defined in a future version of MATLAB handles structure with handles and user data (see GUIDATA)
--- Executes on slider movement function slider1_Callback(hObject eventdata handles) obtains the slider value from the slider component sliderValue = get(handlesslider1Value)
puts the slider value into the edit text component set(handlesedit2String num2str(sliderValue))
Update handles structure guidata(hObject handles) handles structure with handles and user data (see GUIDATA)
Hints get(hObjectValue) returns position of slider get(hObjectMin) and get(hObjectMax) to determine range of slider
--- Executes during object creation after setting all properties function slider1_CreateFcn(hObject eventdata handles) hObject handle to slider1 (see GCBO) eventdata reserved - to be defined in a future version of MATLAB handles empty - handles not created until after all CreateFcns called
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1415
ELECTROACUSTICA A9607-5
Hint slider controls usually have a light gray background if isequal(get(hObjectBackgroundColor)get(0defaultUicontrolBackgroundColor))
set(hObjectBackgroundColor[9 9 9]) end
--- Executes during object creation after setting all properties
function edit2_Callback(hObject eventdata handles) get the string for the editText component sliderValue = get(handlesedit2String)
convert from string to number if possible otherwise returns empty sliderValue = str2num(sliderValue)
if user inputs something is not a number or if the input is less than 0
or greater than 100 then the slider value defaults to 0 set(handlesslider1Value0) set(handlesedit2String0)
else set(handlesslider1ValuesliderValue)
end
En esta parte de la programacioacuten podemos ver como determinamos los liacutemites con una condicioacuten haciendo
que si el valor de la interfaz edit text que pusimos sobrepasa el limite este mostrara por defecto un 0
Update handles structure guidata(hObject handles)
hObject handle to edit2 (see GCBO) eventdata reserved - to be defined in a future version of MATLAB handles structure with handles and user data (see GUIDATA)
Hints get(hObjectString) returns contents of edit2 as text str2double(get(hObjectString)) returns contents of edit2 as a double
--- Executes during object creation after setting all properties function edit2_CreateFcn(hObject eventdata handles) hObject handle to edit2 (see GCBO) eventdata reserved - to be defined in a future version of MATLAB handles empty - handles not created until after all CreateFcns called
Hint edit controls usually have a white background on Windows See ISPC and COMPUTER if ispc ampamp isequal(get(hObjectBackgroundColor)get(0defaultUicontrolBackgroundColor))
set(hObjectBackgroundColorwhite) end
Entonces despueacutes de haber armado nuestro GUI y luego haber configurado los botones de nuestra interfaz
la guardamos y podemos ejecutarla para poder visualizar esta interfaz y poder escuchar los sonidos a
distintas frecuencias en el rango de 20 a 20000 hertz
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1515
ELECTROACUSTICA A9607-5
5- CONCLUSIONES
Con los aspectos teoacutericos expuestos se pudo conocer los paraacutemetros de una onda que es de forma
trigonometriacutea y la podemos graficar en MATLAB
De acuerdo a las utilidades de la INTERFAZ DE USUARIO podemos generar sonido de nuestra onda a
diferentes frecuencias
6- BIBLIOGRAFIA
httpeswikipediaorgwikiOnda_(fC3ADsica)
httpwwwfisica-facilcomTemarioOndasTeoricoPulsodeOndascentrohtm
httprocoblogblogspotcom200701el-sonido-y-matlabhtml
MANUAL DE INTERFAZ GRAFICA DE USUARIO EN MATLAB por Diego Orlando Barragan Guerrero
MANUAL GUIDE CEDUVIRT
MATLAB 2010
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 915
ELECTROACUSTICA A9607-5
Bueno con cada foto que le saque a mi onda que representeacute como cuerda tendreacute un valor que guardareacute en
el vector Pero como el movimiento es una vibracioacuten tengo que guardar estos valores cada cierto intervalo
de tiempo algo asiacute como sacar fotos cada 1 segundo a mi onda y es ahiacute donde aparece el concepto de
ldquoFrecuencia de Muestrordquo
La frecuencia de Muestreo fm Es la cantidad de muestras (fotos en mi analogiacutea) que se toman en 1
segundo Si tomo la grafica de los valores que va tomando mi onda (cuerda) en el ldquoeje yrdquo pongo los valores
en funcioacuten del tiempo y en el ldquoeje xrdquo el tiempo la frecuencia de muestreo en la figura es 1Hz] pues
muestreo (tomo una foto) 1 vez por segundo
Lo que guardo es lo que se ve arriba
Frecuencia de muestreo
Loacutegicamente cuando tengo una mayor frecuencia de muestreo mejor seraacute la calidad del sonido porque
estareacute representando con maacutes puntos mi funcioacuten
Por ejemplo el teleacutefono funciona a 8000 [Hz] y se escucha maacutes o menos no maacutes (Sobre todo cuando hacen
esos contactos con las unidades moacuteviles en la Radio) Los CD tienen una frecuencia de muestreo de
44100[Hz] la radio de 22100[Hz] bueno como dato no maacutes
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1015
ELECTROACUSTICA A9607-5
4- ASPECTOS PRACTICOS
Para realizar nuestro laboratorio con ayuda de todos los aspectos teoricos ya revisados en la anterior
seccioacuten empezaremos definiendo la ecuacioacuten de la onda que programaremos
Sabiendo que la ecuacioacuten de una onda es una de caraacutecter trigonomeacutetrico la ecuacioacuten de esta seraacute
Con esta ecuacioacuten ya podemos identificar a nuestra amplitud que es de 5 ademaacutes de la velocidad angular
que contiene o depende de la frecuencia y esta es la que variara en nuestra interfaz
Ya identificados nuestros paraacutemetros procedamos a realizar una programa en matlab es deir un archivo m
que reprodusca el sonida y grafique parte de esta Entonces analicemos el siguiente programa
Con este programa vemos y reconocemos que significa cada paraacutemetro En primer lugar definimos la
frecuencia de muestreo esto se refiere a los puntos que seraacuten tomados en cuenta para que la grafica nosea tan cuadrada y nos permita apreciar bien las carcteristicas
La frecuencia de sonido esta definida a nuestra variable f de nuestra ecuacioacuten de onda por el momento la
definiremos con un valor
La duracioacuten del sonido seraacute como se ve de 2 segundos esta se puede cambiar La sentildeal que introduciremos
es la ya antes vista con lo que con el comando lsquosoundrsquo podremos escuchar el sonido de esa frecuencia
Definimos asi tambieacuten los limitesdel grafico que dependeraacuten de la frecuencia de muestreo y de la frecuencia
del sonido pa esto le damos nuevamente la ecuacioacuten con x en funcioacuten de t1
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1115
ELECTROACUSTICA A9607-5
Como vemos en la grafica la amplitud es 5 nuestra frecuencia es casi 10000 con lo que el periodo es 2e-4con esto completamos nuestro primer paso
Ahora para realizar nuestro GUI o interfaz de usuario debemos realizar los pasos para crear la interfaz el cual
debera ser modificada en PROPERTY INSPECTOR para quedar de esta manera
Luego la programacioacuten de cada botoacuten en nuestro archivo m quedara
function varargout = SON1(varargin) SON1 MATLAB code for SON1fig SON1 by itself creates a new SON1 or raises the existing singleton H = SON1 returns the handle to a new SON1 or the handle to the existing singleton SON1(CALLBACKhObjecteventDatahandles) calls the local function named CALLBACK in SON1M with the given input arguments SON1(PropertyValue) creates a new SON1 or raises the existing singleton Starting from the left property value pairs are applied to the GUI before SON1_OpeningFcn gets called An
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1215
ELECTROACUSTICA A9607-5
unrecognized property name or invalid value makes property application stop All inputs are passed to SON1_OpeningFcn via varargin See GUI Options on GUIDEs Tools menu Choose GUI allows only one instance to run (singleton) See also GUIDE GUIDATA GUIHANDLES
Edit the above text to modify the response to help SON1
Last Modified by GUIDE v25 14-Aug-2011 123846
Begin initialization code - DO NOT EDIT gui_Singleton = 1 gui_State = struct(gui_Name mfilename
gui_Singleton gui_Singleton gui_OpeningFcn SON1_OpeningFcn gui_OutputFcn SON1_OutputFcn gui_LayoutFcn [] gui_Callback [])
if nargin ampamp ischar(varargin1) gui_Stategui_Callback = str2func(varargin1) end
if nargout [varargout1nargout] = gui_mainfcn(gui_State varargin)
else gui_mainfcn(gui_State varargin)
end End initialization code - DO NOT EDIT
--- Executes just before SON1 is made visible
function SON1_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 SON1 (see VARARGIN)
Choose default command line output for SON1 handlesoutput = hObject
Update handles structure guidata(hObject handles)
UIWAIT makes SON1 wait for user response (see UIRESUME) uiwait(handlesfigure1)
--- Outputs from this function are returned to the command line function varargout = SON1_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 varargout1 = handlesoutput
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1315
ELECTROACUSTICA A9607-5
--- Executes on button press in PLAY function PLAY_Callback(hObject eventdata handles) Frecuencia de muestreo fm=44000 frecuencia sonido nota musical La
sliderValue = get(handlesedit2Value) puts the slider value into the edit text component fr= get(handlesslider1Value) Duracion en segundos duracion=1 t=01fmduracion Sentildeal senoidal y=5cos(fr2pit) La hacemos sonar sound(yfm) grafica fm1=1000000 t1=01fm12fr x=5cos(fr2pit1) La guardamos como wav wavwrite(5yfmmi440wav) Graficamos un pedacito para ver la forma t=t(round(685length(t)100)round(70length(t)100)) y=y(round(685length(y)100)round(70length(y)100)) plot(t1x) Update handles structure guidata(hObject handles)
Como se ve en la configuracioacuten del botoacuten PLAY definimos la frecuencia de muestreo la duracioacuten y nuestra
funcioacuten La aplicacioacuten del slider es que obtenemos el valor de la frecuencia de este y lo guardamos en fr
como se ve
hObject handle to PLAY (see GCBO) eventdata reserved - to be defined in a future version of MATLAB handles structure with handles and user data (see GUIDATA)
--- Executes on slider movement function slider1_Callback(hObject eventdata handles) obtains the slider value from the slider component sliderValue = get(handlesslider1Value)
puts the slider value into the edit text component set(handlesedit2String num2str(sliderValue))
Update handles structure guidata(hObject handles) handles structure with handles and user data (see GUIDATA)
Hints get(hObjectValue) returns position of slider get(hObjectMin) and get(hObjectMax) to determine range of slider
--- Executes during object creation after setting all properties function slider1_CreateFcn(hObject eventdata handles) hObject handle to slider1 (see GCBO) eventdata reserved - to be defined in a future version of MATLAB handles empty - handles not created until after all CreateFcns called
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1415
ELECTROACUSTICA A9607-5
Hint slider controls usually have a light gray background if isequal(get(hObjectBackgroundColor)get(0defaultUicontrolBackgroundColor))
set(hObjectBackgroundColor[9 9 9]) end
--- Executes during object creation after setting all properties
function edit2_Callback(hObject eventdata handles) get the string for the editText component sliderValue = get(handlesedit2String)
convert from string to number if possible otherwise returns empty sliderValue = str2num(sliderValue)
if user inputs something is not a number or if the input is less than 0
or greater than 100 then the slider value defaults to 0 set(handlesslider1Value0) set(handlesedit2String0)
else set(handlesslider1ValuesliderValue)
end
En esta parte de la programacioacuten podemos ver como determinamos los liacutemites con una condicioacuten haciendo
que si el valor de la interfaz edit text que pusimos sobrepasa el limite este mostrara por defecto un 0
Update handles structure guidata(hObject handles)
hObject handle to edit2 (see GCBO) eventdata reserved - to be defined in a future version of MATLAB handles structure with handles and user data (see GUIDATA)
Hints get(hObjectString) returns contents of edit2 as text str2double(get(hObjectString)) returns contents of edit2 as a double
--- Executes during object creation after setting all properties function edit2_CreateFcn(hObject eventdata handles) hObject handle to edit2 (see GCBO) eventdata reserved - to be defined in a future version of MATLAB handles empty - handles not created until after all CreateFcns called
Hint edit controls usually have a white background on Windows See ISPC and COMPUTER if ispc ampamp isequal(get(hObjectBackgroundColor)get(0defaultUicontrolBackgroundColor))
set(hObjectBackgroundColorwhite) end
Entonces despueacutes de haber armado nuestro GUI y luego haber configurado los botones de nuestra interfaz
la guardamos y podemos ejecutarla para poder visualizar esta interfaz y poder escuchar los sonidos a
distintas frecuencias en el rango de 20 a 20000 hertz
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1515
ELECTROACUSTICA A9607-5
5- CONCLUSIONES
Con los aspectos teoacutericos expuestos se pudo conocer los paraacutemetros de una onda que es de forma
trigonometriacutea y la podemos graficar en MATLAB
De acuerdo a las utilidades de la INTERFAZ DE USUARIO podemos generar sonido de nuestra onda a
diferentes frecuencias
6- BIBLIOGRAFIA
httpeswikipediaorgwikiOnda_(fC3ADsica)
httpwwwfisica-facilcomTemarioOndasTeoricoPulsodeOndascentrohtm
httprocoblogblogspotcom200701el-sonido-y-matlabhtml
MANUAL DE INTERFAZ GRAFICA DE USUARIO EN MATLAB por Diego Orlando Barragan Guerrero
MANUAL GUIDE CEDUVIRT
MATLAB 2010
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1015
ELECTROACUSTICA A9607-5
4- ASPECTOS PRACTICOS
Para realizar nuestro laboratorio con ayuda de todos los aspectos teoricos ya revisados en la anterior
seccioacuten empezaremos definiendo la ecuacioacuten de la onda que programaremos
Sabiendo que la ecuacioacuten de una onda es una de caraacutecter trigonomeacutetrico la ecuacioacuten de esta seraacute
Con esta ecuacioacuten ya podemos identificar a nuestra amplitud que es de 5 ademaacutes de la velocidad angular
que contiene o depende de la frecuencia y esta es la que variara en nuestra interfaz
Ya identificados nuestros paraacutemetros procedamos a realizar una programa en matlab es deir un archivo m
que reprodusca el sonida y grafique parte de esta Entonces analicemos el siguiente programa
Con este programa vemos y reconocemos que significa cada paraacutemetro En primer lugar definimos la
frecuencia de muestreo esto se refiere a los puntos que seraacuten tomados en cuenta para que la grafica nosea tan cuadrada y nos permita apreciar bien las carcteristicas
La frecuencia de sonido esta definida a nuestra variable f de nuestra ecuacioacuten de onda por el momento la
definiremos con un valor
La duracioacuten del sonido seraacute como se ve de 2 segundos esta se puede cambiar La sentildeal que introduciremos
es la ya antes vista con lo que con el comando lsquosoundrsquo podremos escuchar el sonido de esa frecuencia
Definimos asi tambieacuten los limitesdel grafico que dependeraacuten de la frecuencia de muestreo y de la frecuencia
del sonido pa esto le damos nuevamente la ecuacioacuten con x en funcioacuten de t1
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1115
ELECTROACUSTICA A9607-5
Como vemos en la grafica la amplitud es 5 nuestra frecuencia es casi 10000 con lo que el periodo es 2e-4con esto completamos nuestro primer paso
Ahora para realizar nuestro GUI o interfaz de usuario debemos realizar los pasos para crear la interfaz el cual
debera ser modificada en PROPERTY INSPECTOR para quedar de esta manera
Luego la programacioacuten de cada botoacuten en nuestro archivo m quedara
function varargout = SON1(varargin) SON1 MATLAB code for SON1fig SON1 by itself creates a new SON1 or raises the existing singleton H = SON1 returns the handle to a new SON1 or the handle to the existing singleton SON1(CALLBACKhObjecteventDatahandles) calls the local function named CALLBACK in SON1M with the given input arguments SON1(PropertyValue) creates a new SON1 or raises the existing singleton Starting from the left property value pairs are applied to the GUI before SON1_OpeningFcn gets called An
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1215
ELECTROACUSTICA A9607-5
unrecognized property name or invalid value makes property application stop All inputs are passed to SON1_OpeningFcn via varargin See GUI Options on GUIDEs Tools menu Choose GUI allows only one instance to run (singleton) See also GUIDE GUIDATA GUIHANDLES
Edit the above text to modify the response to help SON1
Last Modified by GUIDE v25 14-Aug-2011 123846
Begin initialization code - DO NOT EDIT gui_Singleton = 1 gui_State = struct(gui_Name mfilename
gui_Singleton gui_Singleton gui_OpeningFcn SON1_OpeningFcn gui_OutputFcn SON1_OutputFcn gui_LayoutFcn [] gui_Callback [])
if nargin ampamp ischar(varargin1) gui_Stategui_Callback = str2func(varargin1) end
if nargout [varargout1nargout] = gui_mainfcn(gui_State varargin)
else gui_mainfcn(gui_State varargin)
end End initialization code - DO NOT EDIT
--- Executes just before SON1 is made visible
function SON1_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 SON1 (see VARARGIN)
Choose default command line output for SON1 handlesoutput = hObject
Update handles structure guidata(hObject handles)
UIWAIT makes SON1 wait for user response (see UIRESUME) uiwait(handlesfigure1)
--- Outputs from this function are returned to the command line function varargout = SON1_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 varargout1 = handlesoutput
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1315
ELECTROACUSTICA A9607-5
--- Executes on button press in PLAY function PLAY_Callback(hObject eventdata handles) Frecuencia de muestreo fm=44000 frecuencia sonido nota musical La
sliderValue = get(handlesedit2Value) puts the slider value into the edit text component fr= get(handlesslider1Value) Duracion en segundos duracion=1 t=01fmduracion Sentildeal senoidal y=5cos(fr2pit) La hacemos sonar sound(yfm) grafica fm1=1000000 t1=01fm12fr x=5cos(fr2pit1) La guardamos como wav wavwrite(5yfmmi440wav) Graficamos un pedacito para ver la forma t=t(round(685length(t)100)round(70length(t)100)) y=y(round(685length(y)100)round(70length(y)100)) plot(t1x) Update handles structure guidata(hObject handles)
Como se ve en la configuracioacuten del botoacuten PLAY definimos la frecuencia de muestreo la duracioacuten y nuestra
funcioacuten La aplicacioacuten del slider es que obtenemos el valor de la frecuencia de este y lo guardamos en fr
como se ve
hObject handle to PLAY (see GCBO) eventdata reserved - to be defined in a future version of MATLAB handles structure with handles and user data (see GUIDATA)
--- Executes on slider movement function slider1_Callback(hObject eventdata handles) obtains the slider value from the slider component sliderValue = get(handlesslider1Value)
puts the slider value into the edit text component set(handlesedit2String num2str(sliderValue))
Update handles structure guidata(hObject handles) handles structure with handles and user data (see GUIDATA)
Hints get(hObjectValue) returns position of slider get(hObjectMin) and get(hObjectMax) to determine range of slider
--- Executes during object creation after setting all properties function slider1_CreateFcn(hObject eventdata handles) hObject handle to slider1 (see GCBO) eventdata reserved - to be defined in a future version of MATLAB handles empty - handles not created until after all CreateFcns called
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1415
ELECTROACUSTICA A9607-5
Hint slider controls usually have a light gray background if isequal(get(hObjectBackgroundColor)get(0defaultUicontrolBackgroundColor))
set(hObjectBackgroundColor[9 9 9]) end
--- Executes during object creation after setting all properties
function edit2_Callback(hObject eventdata handles) get the string for the editText component sliderValue = get(handlesedit2String)
convert from string to number if possible otherwise returns empty sliderValue = str2num(sliderValue)
if user inputs something is not a number or if the input is less than 0
or greater than 100 then the slider value defaults to 0 set(handlesslider1Value0) set(handlesedit2String0)
else set(handlesslider1ValuesliderValue)
end
En esta parte de la programacioacuten podemos ver como determinamos los liacutemites con una condicioacuten haciendo
que si el valor de la interfaz edit text que pusimos sobrepasa el limite este mostrara por defecto un 0
Update handles structure guidata(hObject handles)
hObject handle to edit2 (see GCBO) eventdata reserved - to be defined in a future version of MATLAB handles structure with handles and user data (see GUIDATA)
Hints get(hObjectString) returns contents of edit2 as text str2double(get(hObjectString)) returns contents of edit2 as a double
--- Executes during object creation after setting all properties function edit2_CreateFcn(hObject eventdata handles) hObject handle to edit2 (see GCBO) eventdata reserved - to be defined in a future version of MATLAB handles empty - handles not created until after all CreateFcns called
Hint edit controls usually have a white background on Windows See ISPC and COMPUTER if ispc ampamp isequal(get(hObjectBackgroundColor)get(0defaultUicontrolBackgroundColor))
set(hObjectBackgroundColorwhite) end
Entonces despueacutes de haber armado nuestro GUI y luego haber configurado los botones de nuestra interfaz
la guardamos y podemos ejecutarla para poder visualizar esta interfaz y poder escuchar los sonidos a
distintas frecuencias en el rango de 20 a 20000 hertz
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1515
ELECTROACUSTICA A9607-5
5- CONCLUSIONES
Con los aspectos teoacutericos expuestos se pudo conocer los paraacutemetros de una onda que es de forma
trigonometriacutea y la podemos graficar en MATLAB
De acuerdo a las utilidades de la INTERFAZ DE USUARIO podemos generar sonido de nuestra onda a
diferentes frecuencias
6- BIBLIOGRAFIA
httpeswikipediaorgwikiOnda_(fC3ADsica)
httpwwwfisica-facilcomTemarioOndasTeoricoPulsodeOndascentrohtm
httprocoblogblogspotcom200701el-sonido-y-matlabhtml
MANUAL DE INTERFAZ GRAFICA DE USUARIO EN MATLAB por Diego Orlando Barragan Guerrero
MANUAL GUIDE CEDUVIRT
MATLAB 2010
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1115
ELECTROACUSTICA A9607-5
Como vemos en la grafica la amplitud es 5 nuestra frecuencia es casi 10000 con lo que el periodo es 2e-4con esto completamos nuestro primer paso
Ahora para realizar nuestro GUI o interfaz de usuario debemos realizar los pasos para crear la interfaz el cual
debera ser modificada en PROPERTY INSPECTOR para quedar de esta manera
Luego la programacioacuten de cada botoacuten en nuestro archivo m quedara
function varargout = SON1(varargin) SON1 MATLAB code for SON1fig SON1 by itself creates a new SON1 or raises the existing singleton H = SON1 returns the handle to a new SON1 or the handle to the existing singleton SON1(CALLBACKhObjecteventDatahandles) calls the local function named CALLBACK in SON1M with the given input arguments SON1(PropertyValue) creates a new SON1 or raises the existing singleton Starting from the left property value pairs are applied to the GUI before SON1_OpeningFcn gets called An
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1215
ELECTROACUSTICA A9607-5
unrecognized property name or invalid value makes property application stop All inputs are passed to SON1_OpeningFcn via varargin See GUI Options on GUIDEs Tools menu Choose GUI allows only one instance to run (singleton) See also GUIDE GUIDATA GUIHANDLES
Edit the above text to modify the response to help SON1
Last Modified by GUIDE v25 14-Aug-2011 123846
Begin initialization code - DO NOT EDIT gui_Singleton = 1 gui_State = struct(gui_Name mfilename
gui_Singleton gui_Singleton gui_OpeningFcn SON1_OpeningFcn gui_OutputFcn SON1_OutputFcn gui_LayoutFcn [] gui_Callback [])
if nargin ampamp ischar(varargin1) gui_Stategui_Callback = str2func(varargin1) end
if nargout [varargout1nargout] = gui_mainfcn(gui_State varargin)
else gui_mainfcn(gui_State varargin)
end End initialization code - DO NOT EDIT
--- Executes just before SON1 is made visible
function SON1_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 SON1 (see VARARGIN)
Choose default command line output for SON1 handlesoutput = hObject
Update handles structure guidata(hObject handles)
UIWAIT makes SON1 wait for user response (see UIRESUME) uiwait(handlesfigure1)
--- Outputs from this function are returned to the command line function varargout = SON1_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 varargout1 = handlesoutput
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1315
ELECTROACUSTICA A9607-5
--- Executes on button press in PLAY function PLAY_Callback(hObject eventdata handles) Frecuencia de muestreo fm=44000 frecuencia sonido nota musical La
sliderValue = get(handlesedit2Value) puts the slider value into the edit text component fr= get(handlesslider1Value) Duracion en segundos duracion=1 t=01fmduracion Sentildeal senoidal y=5cos(fr2pit) La hacemos sonar sound(yfm) grafica fm1=1000000 t1=01fm12fr x=5cos(fr2pit1) La guardamos como wav wavwrite(5yfmmi440wav) Graficamos un pedacito para ver la forma t=t(round(685length(t)100)round(70length(t)100)) y=y(round(685length(y)100)round(70length(y)100)) plot(t1x) Update handles structure guidata(hObject handles)
Como se ve en la configuracioacuten del botoacuten PLAY definimos la frecuencia de muestreo la duracioacuten y nuestra
funcioacuten La aplicacioacuten del slider es que obtenemos el valor de la frecuencia de este y lo guardamos en fr
como se ve
hObject handle to PLAY (see GCBO) eventdata reserved - to be defined in a future version of MATLAB handles structure with handles and user data (see GUIDATA)
--- Executes on slider movement function slider1_Callback(hObject eventdata handles) obtains the slider value from the slider component sliderValue = get(handlesslider1Value)
puts the slider value into the edit text component set(handlesedit2String num2str(sliderValue))
Update handles structure guidata(hObject handles) handles structure with handles and user data (see GUIDATA)
Hints get(hObjectValue) returns position of slider get(hObjectMin) and get(hObjectMax) to determine range of slider
--- Executes during object creation after setting all properties function slider1_CreateFcn(hObject eventdata handles) hObject handle to slider1 (see GCBO) eventdata reserved - to be defined in a future version of MATLAB handles empty - handles not created until after all CreateFcns called
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1415
ELECTROACUSTICA A9607-5
Hint slider controls usually have a light gray background if isequal(get(hObjectBackgroundColor)get(0defaultUicontrolBackgroundColor))
set(hObjectBackgroundColor[9 9 9]) end
--- Executes during object creation after setting all properties
function edit2_Callback(hObject eventdata handles) get the string for the editText component sliderValue = get(handlesedit2String)
convert from string to number if possible otherwise returns empty sliderValue = str2num(sliderValue)
if user inputs something is not a number or if the input is less than 0
or greater than 100 then the slider value defaults to 0 set(handlesslider1Value0) set(handlesedit2String0)
else set(handlesslider1ValuesliderValue)
end
En esta parte de la programacioacuten podemos ver como determinamos los liacutemites con una condicioacuten haciendo
que si el valor de la interfaz edit text que pusimos sobrepasa el limite este mostrara por defecto un 0
Update handles structure guidata(hObject handles)
hObject handle to edit2 (see GCBO) eventdata reserved - to be defined in a future version of MATLAB handles structure with handles and user data (see GUIDATA)
Hints get(hObjectString) returns contents of edit2 as text str2double(get(hObjectString)) returns contents of edit2 as a double
--- Executes during object creation after setting all properties function edit2_CreateFcn(hObject eventdata handles) hObject handle to edit2 (see GCBO) eventdata reserved - to be defined in a future version of MATLAB handles empty - handles not created until after all CreateFcns called
Hint edit controls usually have a white background on Windows See ISPC and COMPUTER if ispc ampamp isequal(get(hObjectBackgroundColor)get(0defaultUicontrolBackgroundColor))
set(hObjectBackgroundColorwhite) end
Entonces despueacutes de haber armado nuestro GUI y luego haber configurado los botones de nuestra interfaz
la guardamos y podemos ejecutarla para poder visualizar esta interfaz y poder escuchar los sonidos a
distintas frecuencias en el rango de 20 a 20000 hertz
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1515
ELECTROACUSTICA A9607-5
5- CONCLUSIONES
Con los aspectos teoacutericos expuestos se pudo conocer los paraacutemetros de una onda que es de forma
trigonometriacutea y la podemos graficar en MATLAB
De acuerdo a las utilidades de la INTERFAZ DE USUARIO podemos generar sonido de nuestra onda a
diferentes frecuencias
6- BIBLIOGRAFIA
httpeswikipediaorgwikiOnda_(fC3ADsica)
httpwwwfisica-facilcomTemarioOndasTeoricoPulsodeOndascentrohtm
httprocoblogblogspotcom200701el-sonido-y-matlabhtml
MANUAL DE INTERFAZ GRAFICA DE USUARIO EN MATLAB por Diego Orlando Barragan Guerrero
MANUAL GUIDE CEDUVIRT
MATLAB 2010
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1215
ELECTROACUSTICA A9607-5
unrecognized property name or invalid value makes property application stop All inputs are passed to SON1_OpeningFcn via varargin See GUI Options on GUIDEs Tools menu Choose GUI allows only one instance to run (singleton) See also GUIDE GUIDATA GUIHANDLES
Edit the above text to modify the response to help SON1
Last Modified by GUIDE v25 14-Aug-2011 123846
Begin initialization code - DO NOT EDIT gui_Singleton = 1 gui_State = struct(gui_Name mfilename
gui_Singleton gui_Singleton gui_OpeningFcn SON1_OpeningFcn gui_OutputFcn SON1_OutputFcn gui_LayoutFcn [] gui_Callback [])
if nargin ampamp ischar(varargin1) gui_Stategui_Callback = str2func(varargin1) end
if nargout [varargout1nargout] = gui_mainfcn(gui_State varargin)
else gui_mainfcn(gui_State varargin)
end End initialization code - DO NOT EDIT
--- Executes just before SON1 is made visible
function SON1_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 SON1 (see VARARGIN)
Choose default command line output for SON1 handlesoutput = hObject
Update handles structure guidata(hObject handles)
UIWAIT makes SON1 wait for user response (see UIRESUME) uiwait(handlesfigure1)
--- Outputs from this function are returned to the command line function varargout = SON1_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 varargout1 = handlesoutput
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1315
ELECTROACUSTICA A9607-5
--- Executes on button press in PLAY function PLAY_Callback(hObject eventdata handles) Frecuencia de muestreo fm=44000 frecuencia sonido nota musical La
sliderValue = get(handlesedit2Value) puts the slider value into the edit text component fr= get(handlesslider1Value) Duracion en segundos duracion=1 t=01fmduracion Sentildeal senoidal y=5cos(fr2pit) La hacemos sonar sound(yfm) grafica fm1=1000000 t1=01fm12fr x=5cos(fr2pit1) La guardamos como wav wavwrite(5yfmmi440wav) Graficamos un pedacito para ver la forma t=t(round(685length(t)100)round(70length(t)100)) y=y(round(685length(y)100)round(70length(y)100)) plot(t1x) Update handles structure guidata(hObject handles)
Como se ve en la configuracioacuten del botoacuten PLAY definimos la frecuencia de muestreo la duracioacuten y nuestra
funcioacuten La aplicacioacuten del slider es que obtenemos el valor de la frecuencia de este y lo guardamos en fr
como se ve
hObject handle to PLAY (see GCBO) eventdata reserved - to be defined in a future version of MATLAB handles structure with handles and user data (see GUIDATA)
--- Executes on slider movement function slider1_Callback(hObject eventdata handles) obtains the slider value from the slider component sliderValue = get(handlesslider1Value)
puts the slider value into the edit text component set(handlesedit2String num2str(sliderValue))
Update handles structure guidata(hObject handles) handles structure with handles and user data (see GUIDATA)
Hints get(hObjectValue) returns position of slider get(hObjectMin) and get(hObjectMax) to determine range of slider
--- Executes during object creation after setting all properties function slider1_CreateFcn(hObject eventdata handles) hObject handle to slider1 (see GCBO) eventdata reserved - to be defined in a future version of MATLAB handles empty - handles not created until after all CreateFcns called
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1415
ELECTROACUSTICA A9607-5
Hint slider controls usually have a light gray background if isequal(get(hObjectBackgroundColor)get(0defaultUicontrolBackgroundColor))
set(hObjectBackgroundColor[9 9 9]) end
--- Executes during object creation after setting all properties
function edit2_Callback(hObject eventdata handles) get the string for the editText component sliderValue = get(handlesedit2String)
convert from string to number if possible otherwise returns empty sliderValue = str2num(sliderValue)
if user inputs something is not a number or if the input is less than 0
or greater than 100 then the slider value defaults to 0 set(handlesslider1Value0) set(handlesedit2String0)
else set(handlesslider1ValuesliderValue)
end
En esta parte de la programacioacuten podemos ver como determinamos los liacutemites con una condicioacuten haciendo
que si el valor de la interfaz edit text que pusimos sobrepasa el limite este mostrara por defecto un 0
Update handles structure guidata(hObject handles)
hObject handle to edit2 (see GCBO) eventdata reserved - to be defined in a future version of MATLAB handles structure with handles and user data (see GUIDATA)
Hints get(hObjectString) returns contents of edit2 as text str2double(get(hObjectString)) returns contents of edit2 as a double
--- Executes during object creation after setting all properties function edit2_CreateFcn(hObject eventdata handles) hObject handle to edit2 (see GCBO) eventdata reserved - to be defined in a future version of MATLAB handles empty - handles not created until after all CreateFcns called
Hint edit controls usually have a white background on Windows See ISPC and COMPUTER if ispc ampamp isequal(get(hObjectBackgroundColor)get(0defaultUicontrolBackgroundColor))
set(hObjectBackgroundColorwhite) end
Entonces despueacutes de haber armado nuestro GUI y luego haber configurado los botones de nuestra interfaz
la guardamos y podemos ejecutarla para poder visualizar esta interfaz y poder escuchar los sonidos a
distintas frecuencias en el rango de 20 a 20000 hertz
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1515
ELECTROACUSTICA A9607-5
5- CONCLUSIONES
Con los aspectos teoacutericos expuestos se pudo conocer los paraacutemetros de una onda que es de forma
trigonometriacutea y la podemos graficar en MATLAB
De acuerdo a las utilidades de la INTERFAZ DE USUARIO podemos generar sonido de nuestra onda a
diferentes frecuencias
6- BIBLIOGRAFIA
httpeswikipediaorgwikiOnda_(fC3ADsica)
httpwwwfisica-facilcomTemarioOndasTeoricoPulsodeOndascentrohtm
httprocoblogblogspotcom200701el-sonido-y-matlabhtml
MANUAL DE INTERFAZ GRAFICA DE USUARIO EN MATLAB por Diego Orlando Barragan Guerrero
MANUAL GUIDE CEDUVIRT
MATLAB 2010
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1315
ELECTROACUSTICA A9607-5
--- Executes on button press in PLAY function PLAY_Callback(hObject eventdata handles) Frecuencia de muestreo fm=44000 frecuencia sonido nota musical La
sliderValue = get(handlesedit2Value) puts the slider value into the edit text component fr= get(handlesslider1Value) Duracion en segundos duracion=1 t=01fmduracion Sentildeal senoidal y=5cos(fr2pit) La hacemos sonar sound(yfm) grafica fm1=1000000 t1=01fm12fr x=5cos(fr2pit1) La guardamos como wav wavwrite(5yfmmi440wav) Graficamos un pedacito para ver la forma t=t(round(685length(t)100)round(70length(t)100)) y=y(round(685length(y)100)round(70length(y)100)) plot(t1x) Update handles structure guidata(hObject handles)
Como se ve en la configuracioacuten del botoacuten PLAY definimos la frecuencia de muestreo la duracioacuten y nuestra
funcioacuten La aplicacioacuten del slider es que obtenemos el valor de la frecuencia de este y lo guardamos en fr
como se ve
hObject handle to PLAY (see GCBO) eventdata reserved - to be defined in a future version of MATLAB handles structure with handles and user data (see GUIDATA)
--- Executes on slider movement function slider1_Callback(hObject eventdata handles) obtains the slider value from the slider component sliderValue = get(handlesslider1Value)
puts the slider value into the edit text component set(handlesedit2String num2str(sliderValue))
Update handles structure guidata(hObject handles) handles structure with handles and user data (see GUIDATA)
Hints get(hObjectValue) returns position of slider get(hObjectMin) and get(hObjectMax) to determine range of slider
--- Executes during object creation after setting all properties function slider1_CreateFcn(hObject eventdata handles) hObject handle to slider1 (see GCBO) eventdata reserved - to be defined in a future version of MATLAB handles empty - handles not created until after all CreateFcns called
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1415
ELECTROACUSTICA A9607-5
Hint slider controls usually have a light gray background if isequal(get(hObjectBackgroundColor)get(0defaultUicontrolBackgroundColor))
set(hObjectBackgroundColor[9 9 9]) end
--- Executes during object creation after setting all properties
function edit2_Callback(hObject eventdata handles) get the string for the editText component sliderValue = get(handlesedit2String)
convert from string to number if possible otherwise returns empty sliderValue = str2num(sliderValue)
if user inputs something is not a number or if the input is less than 0
or greater than 100 then the slider value defaults to 0 set(handlesslider1Value0) set(handlesedit2String0)
else set(handlesslider1ValuesliderValue)
end
En esta parte de la programacioacuten podemos ver como determinamos los liacutemites con una condicioacuten haciendo
que si el valor de la interfaz edit text que pusimos sobrepasa el limite este mostrara por defecto un 0
Update handles structure guidata(hObject handles)
hObject handle to edit2 (see GCBO) eventdata reserved - to be defined in a future version of MATLAB handles structure with handles and user data (see GUIDATA)
Hints get(hObjectString) returns contents of edit2 as text str2double(get(hObjectString)) returns contents of edit2 as a double
--- Executes during object creation after setting all properties function edit2_CreateFcn(hObject eventdata handles) hObject handle to edit2 (see GCBO) eventdata reserved - to be defined in a future version of MATLAB handles empty - handles not created until after all CreateFcns called
Hint edit controls usually have a white background on Windows See ISPC and COMPUTER if ispc ampamp isequal(get(hObjectBackgroundColor)get(0defaultUicontrolBackgroundColor))
set(hObjectBackgroundColorwhite) end
Entonces despueacutes de haber armado nuestro GUI y luego haber configurado los botones de nuestra interfaz
la guardamos y podemos ejecutarla para poder visualizar esta interfaz y poder escuchar los sonidos a
distintas frecuencias en el rango de 20 a 20000 hertz
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1515
ELECTROACUSTICA A9607-5
5- CONCLUSIONES
Con los aspectos teoacutericos expuestos se pudo conocer los paraacutemetros de una onda que es de forma
trigonometriacutea y la podemos graficar en MATLAB
De acuerdo a las utilidades de la INTERFAZ DE USUARIO podemos generar sonido de nuestra onda a
diferentes frecuencias
6- BIBLIOGRAFIA
httpeswikipediaorgwikiOnda_(fC3ADsica)
httpwwwfisica-facilcomTemarioOndasTeoricoPulsodeOndascentrohtm
httprocoblogblogspotcom200701el-sonido-y-matlabhtml
MANUAL DE INTERFAZ GRAFICA DE USUARIO EN MATLAB por Diego Orlando Barragan Guerrero
MANUAL GUIDE CEDUVIRT
MATLAB 2010
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1415
ELECTROACUSTICA A9607-5
Hint slider controls usually have a light gray background if isequal(get(hObjectBackgroundColor)get(0defaultUicontrolBackgroundColor))
set(hObjectBackgroundColor[9 9 9]) end
--- Executes during object creation after setting all properties
function edit2_Callback(hObject eventdata handles) get the string for the editText component sliderValue = get(handlesedit2String)
convert from string to number if possible otherwise returns empty sliderValue = str2num(sliderValue)
if user inputs something is not a number or if the input is less than 0
or greater than 100 then the slider value defaults to 0 set(handlesslider1Value0) set(handlesedit2String0)
else set(handlesslider1ValuesliderValue)
end
En esta parte de la programacioacuten podemos ver como determinamos los liacutemites con una condicioacuten haciendo
que si el valor de la interfaz edit text que pusimos sobrepasa el limite este mostrara por defecto un 0
Update handles structure guidata(hObject handles)
hObject handle to edit2 (see GCBO) eventdata reserved - to be defined in a future version of MATLAB handles structure with handles and user data (see GUIDATA)
Hints get(hObjectString) returns contents of edit2 as text str2double(get(hObjectString)) returns contents of edit2 as a double
--- Executes during object creation after setting all properties function edit2_CreateFcn(hObject eventdata handles) hObject handle to edit2 (see GCBO) eventdata reserved - to be defined in a future version of MATLAB handles empty - handles not created until after all CreateFcns called
Hint edit controls usually have a white background on Windows See ISPC and COMPUTER if ispc ampamp isequal(get(hObjectBackgroundColor)get(0defaultUicontrolBackgroundColor))
set(hObjectBackgroundColorwhite) end
Entonces despueacutes de haber armado nuestro GUI y luego haber configurado los botones de nuestra interfaz
la guardamos y podemos ejecutarla para poder visualizar esta interfaz y poder escuchar los sonidos a
distintas frecuencias en el rango de 20 a 20000 hertz
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1515
ELECTROACUSTICA A9607-5
5- CONCLUSIONES
Con los aspectos teoacutericos expuestos se pudo conocer los paraacutemetros de una onda que es de forma
trigonometriacutea y la podemos graficar en MATLAB
De acuerdo a las utilidades de la INTERFAZ DE USUARIO podemos generar sonido de nuestra onda a
diferentes frecuencias
6- BIBLIOGRAFIA
httpeswikipediaorgwikiOnda_(fC3ADsica)
httpwwwfisica-facilcomTemarioOndasTeoricoPulsodeOndascentrohtm
httprocoblogblogspotcom200701el-sonido-y-matlabhtml
MANUAL DE INTERFAZ GRAFICA DE USUARIO EN MATLAB por Diego Orlando Barragan Guerrero
MANUAL GUIDE CEDUVIRT
MATLAB 2010
5102018 Generacion de Ondas de Sonido - slidepdfcom
httpslidepdfcomreaderfullgeneracion-de-ondas-de-sonido 1515
ELECTROACUSTICA A9607-5
5- CONCLUSIONES
Con los aspectos teoacutericos expuestos se pudo conocer los paraacutemetros de una onda que es de forma
trigonometriacutea y la podemos graficar en MATLAB
De acuerdo a las utilidades de la INTERFAZ DE USUARIO podemos generar sonido de nuestra onda a
diferentes frecuencias
6- BIBLIOGRAFIA
httpeswikipediaorgwikiOnda_(fC3ADsica)
httpwwwfisica-facilcomTemarioOndasTeoricoPulsodeOndascentrohtm
httprocoblogblogspotcom200701el-sonido-y-matlabhtml
MANUAL DE INTERFAZ GRAFICA DE USUARIO EN MATLAB por Diego Orlando Barragan Guerrero
MANUAL GUIDE CEDUVIRT
MATLAB 2010