COLEGIO TÉCNICO SALESIANO DON BOSCO
MECATRÓNICA
Interfaces de Control I
Actividad en Clase No. 7
Manejo de Audio
Nombre: Simbaña Daniel
Curso: 2doG
Fecha: 03 – 04 – 2025
Objetivos
• Utilizar las funciones de programación para manipular archivos de audio
• Utilizar funciones de programación para generar la gráfica de los datos generados
por un audio.
Desarrollo
1. Crear un programa en el que el usuario elija:
a. El porcentaje inicial y final de la canción que desea recortar. (input)
b. El multiplicador de volumen. (entre 0.5 y 2) (input) si ingresa mal vuelve a pedir
hasta que ingrese el valor correcto.
c. La velocidad de reproducción. (0.75 – 1 - 1.25) (questdlg)
d. Si desea incluir eco de 0.5 segundos. (questdlg)
e. Si desea invertir el audio. (questdlg)
Reproducir el audio con las características seleccionadas y mostrar la imagen del audio
creado.
%DANIEL SIMBAÑA 2doG%
clear,clc
[data, frec] = audioread('C:\Users\CTDB\Downloads\cancion.wav');
inicio_porcentaje = input('Ingresar el porcentaje de inicio para recortar
la canción (0-100):');
fin_porcentaje = input('Ingresar el porcentaje de fin para recortar la
canción (0-100):');
yinicio=inicio_porcentaje/100;
yfinal=fin_porcentaje/100;
ydata=data(1042000*yinicio:1042000*yfinal,:);
total_muestras = size(data, 1);
inicio_indice = inicio_porcentaje * total_muestras / 100;
fin_indice = fin_porcentaje * total_muestras / 100;
data_recortada = data(inicio_indice:fin_indice, :);
volumen = false;
while volumen == false
multiplicador = input('Ingresar multiplicador de volumen [0.5 - 2]:
');
if multiplicador >= 0.5 && multiplicador <= 2
volumen = true;
else
disp('Valor fuera de rango. Por favor ingrese un valor entre 0.5
y 2.');
end
end
opciones = {'0.75x', '1x', '1.25x'};
titulo = 'Velocidad de reproducción';
mensaje = 'Seleccione la velocidad de reproducción:';
seleccion = questdlg(mensaje, titulo, opciones{1}, opciones{2},
opciones{3}, opciones{3});
switch seleccion
case '0.75x'
velocidad = 1.25;
case '1x'
velocidad = 1;
case '1.25x'
velocidad = 0.75;
end
eco = questdlg('¿Desea incluir un eco de 0.5 segundos?', 'Eco', 'Sí',
'No', 'No');
if eco== "Sí"
modif=[[data(:,1);zeros(44100,1)],[zeros(44100,1);data(:,2)]];
sound(modif, frec)
end
if eco== "No"
end
invertir_seleccion = questdlg('¿Desea invertir el audio?', 'Invertir
Audio', 'Sí', 'No', 'No');
if invertir_seleccion == "Sí"
data_recortada = flip(data_recortada);
end
sound(multiplicador * data_recortada, frec / velocidad);
plot(data)
Evaluación Formativa
Escribe UNA pregunta sobre la clase o la actividad realizada
1. ¿Cómo se pueden aplicar diferentes efectos de audio sin alterar la calidad
original?
Escribe DOS cosas que aprendí
1. Aprendí como recortar una canción usando porcentajes de inicio y fin en
MATLAB.
2. Aprendí a ajustar la velocidad y el sonido del audio utilizando como principal
base el plot (data) y el sound (data, frec).
Escribe TRES aspectos que podría mejorar
1. Debería hacer el código mas limpio y fácil de leer.
2. Tengo que mejorar la forma de validar las entradas del usuario, para que no
haya errores.
3. Sería útil agregar mas comentarios en el código para saber el propósito de
cada parte.