Apéndice H Tatamiento del audio con MALAB Hoy día, todas las computadoras incluyen hardware para captura y reproducción de audio. Ahora bien, en MATLAB se incluen funciones para aprovechar ls cpacidades del mencionado hardware. Las funciones que a continuación se describen, operan sobre cualquier sistema operativo sobre el que se monte MATLAB. H.1. H.1.1. Funciones para captura de audio audiorecorder La función «audiorecorder» crea una estructura de datos que contiene, entre diversas informaciones, la frecuencia de muestreo, la cantidad de bits por muestra, el número de canales que se usarán para grabar o reproducir sonido. El formato de esta función es: recorderObj = audiorecorder(Fs,nBits,nChannels) La estructura que se crea con la función también contiene una búfer para almacenar audio capturado. H.1.2. recordblocking La función «recordblocking» registra audio desde un dispositivo de entrada, como el micrófono, a una estructura creada con la función «audiorecorder ». Esta función no retorna el control hasta que no se ha completado la grabación del audio. El formato de esta función es: recordblocking(recorderObj, length) En donde: 389 390 APÉNDICE H. TATAMIENTO DEL AUDIO CON MALAB Tipo de dato int8 uint8 int16 single double Intervalo de valores -128 a 127 0 a 255 -32768 a 32767 -1 a 1 en punto flotante (16 bits) -1 a 1 en punto flotante (32 bits) Cuadro H.1: Tipos de dato devueltos por función «getaudiodata». recorderObj es un objeto creado con la función «audiorecorder ». length Es el tiempo de grabación en segundos H.1.3. getaudiodata La función «getaudiodata» copia las muestras grabadas en el búfer de la estructura «audiorecorder» a una matriz. De esta forma el programador puede procesar la señal de audio. La función también puede efectuar un cambio en el tipo de dato que devuelve. El formato de esta función es: y = getaudiodata(recorderObj) y = getaudiodata(recorderObj, dataType) Lo tipos de dato que pueden ser devueltos pueden observars en el cuatro de la tabla H.1. H.2. H.2.1. Funciones de reproducción de audio play La función «play» crea una estructura de datos capaz de reproducir audio grabado. El formato de esta función es: player = play(recObj) player = play(recObj, [start stop]) La función «play» también reproduce el audio almacenado en el búfer de la estructura «audiorecorder». H.2.2. audioplayer La función «audioplayer » crea una esructra de datos capaz de reproducir audio grabado. El formato de esta función es: player=audioplayer(Y,fs) player=audioplayer(recObj) En donde: H.3. EJEMPLO, GABADOR-REPRODUCTOR DE AUDIO 391 Y es una matriz con muestras de audio, ya sea un canal o ambos canales. Los tipos de dato válidos pueden verse en la tabla H.1. fs es la frecuencia de muestreo recObj es la estructura «audiorecorder» H.3. H.3.1. Ejemplo, gabador-reproductor de audio Ejemplo: grabación y reproducción A continuación se ofrece un pequeño codigo que permite la grabación de audio por 5 segundos con calidad de CD y luego lo reproduce: myVoice = audiorecorder(44100,16,5); input(’Presiona -enter- para empezar grbacion’); recordblocking(myVoice, 5); input(’Grabado. Prsione -enter- para reproducir...’); play(myVoice); H.3.2. Ejemplo: grabación, reproducción y exhibición de la forma de onda El ejemplo siguiente permite, además e grabar y reproducir audio, visualizarla forma de onda. % Grava voz por 5 segundos recObj = audiorecorder; input(’Presione -enter- para empezar a grabar’) recordblocking(recObj, 5); disp(’Fin de grabacion’); % Reproduce el sonido play(recObj); % Almacena las muestras en un arreglo. myRecording = getaudiodata(recObj); % Plot the waveform. plot(myRecording);