Generacion de Ondas de Sonido

15
 ELECTROACUSTICA A9607-5 GENERACION DE ONDAS DE SONIDO 1.- OBJETIVO GENERAL  El objetivo principal de este laboratorio es generar sonido de las ondas a difere ntes frecuencias. 2.- OBJETIVOS ESPECIFICOS  Conocer los conceptos básicos sobre ondas, sus parámetros y características.  Conocer las herramientas de MATLAB y la interfaz g ráfica GUIDE.  Generar sonido de manera simple con MATLAB.  Crear una interfaz gráfica para gener ar sonidos a diferentes frecuencias. 3.- ASPECTOS TEORICOS En física, una onda es una propagación de una perturbación de alguna propiedad de un medio, por ejemplo, densidad, presión, campo eléctrico o campo magnético, que se propaga a través del espacio transportando energía. El medio perturbado puede ser de naturaleza diversa como aire, agua, un trozo de metal o el vacío. Elementos de una Onda  Cresta: La cresta es el punto más alto de dicha amplitud o punto máximo de saturación de la onda.  Período: El periodo es el tiempo que tarda la onda en ir de un punto de máxima amplitud al siguiente.  Amplitud: La amplitud es la distancia vertical entre una cresta y el punto medio de la onda. Nótese que pueden existir ondas cuya amplitud sea variable, es decir, crezca o de crezca con el paso del tiempo.  Frecuencia: Número de veces que es repetida dicha vibración. En otras palabras, es una simple repetición de valores por un período determinado.  Valle: Es el punto más bajo de una onda.  Longitud de onda: Distancia que hay entre dos crestas consecutivas de dicho tamaño. Las magnitudes que van a entrar e n juego en el estudio matemático de estas ondas son:  El período es el tiempo que transcurre entre la generación de un pulso y el siguiente. Se representa por la letra " T " y en el  S.I. 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 S.I se mide en metros.

Transcript of Generacion de Ondas de Sonido

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