GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Procesamiento científico de audio, Parte II - Cómo hacer procesamiento básico de señales matemáticas en archivos de audio usando Ubuntu con Octave 4.0

En el tutorial anterior, vimos los pasos simples para leer, escribir y reproducir archivos de audio. Incluso vimos cómo podemos sintetizar un archivo de audio a partir de una función periódica como la función coseno. En este tutorial, veremos cómo podemos hacer adiciones a señales, multiplicar señales (modulación) y aplicar algunas funciones matemáticas básicas para ver su efecto en la señal original.

Adición de señales

La suma de dos señales S1(t) y S2(t) da como resultado una señal R(t) cuyo valor en cualquier instante de tiempo es la suma de los valores de las señales sumadas en ese momento. Así:

R(t) =S1(t) + S2(t)

Recrearemos la suma de dos señales en Octave y veremos el efecto gráficamente. Primero, generaremos dos señales de frecuencias diferentes para ver la señal resultante de la suma.

Paso 1:Crear dos señales de frecuencias diferentes (archivos ogg)

>> sig1='cos440.ogg';                  %creating the audio file @440 Hz
>> sig2='cos880.ogg';                  %creating the audio file @880 Hz
>> fs=44100;                           %generating the parameters values (Period, sampling frequency and angular frequency)
>> t=0:1/fs:0.02;
>> w1=2*pi*440*t;
>> w2=2*pi*880*t;
>> audiowrite(sig1,cos(w1),fs);        %writing the function cos(w) on the files created
>> audiowrite(sig2,cos(w2),fs);


Aquí trazaremos ambas señales.

Gráfico de Señal 1 (440 Hz)

>> [y1, fs] = audioread(sig1);
>> plot(y1)

Gráfico de Señal 2 (880 Hz)

>> [y2, fs] = audioread(sig2);
>> plot(y2)


Paso 2:Agregar dos señales

Ahora realizamos la suma de las dos señales creadas en el paso anterior.

>> sumres=y1+y2;
>> plot(sumres)

Gráfico de la señal resultante


El efecto octavador

En el Octaver, el sonido que proporciona este efecto es característico porque emula la nota que está tocando el músico, ya sea en una octava más baja o más alta (según se haya programado), aunado a sonar la nota original, es decir, aparecen dos notas con un sonido idéntico.

Paso 3:Añadir dos señales reales (ejemplo con dos pistas musicales)

Para ello, utilizaremos dos pistas de Cantos Gregorianos (muestreo de voces).

Pista de Avemaría

Primero, leerá y trazará una pista de Avemaria:

>> [y1,fs]=audioread('avemaria_.ogg');
>> plot(y1)

Pista de himnos

Ahora, leerá y trazará una pista de himnos

>> [y2,fs]=audioread('hymnus.ogg');
>> plot(y2)

Pista Avemaria + Himno

>> y='avehymnus.ogg';
>> audiowrite(y, y1+y2, fs);
>> [y, fs]=audioread('avehymnus.ogg');
>> plot(y)




El resultado, desde el punto de vista del audio, es que ambas pistas sonará mezclado.

Producto de dos Señales


Para multiplicar dos señales, tenemos que usar una forma análoga a la suma. Usemos los mismos archivos creados anteriormente.

R(t) =S1(t) * S2(t)



>> sig1='cos440.ogg';                  %creating the audio file @440 Hz
>> sig2='cos880.ogg';                  %creating the audio file @880 Hz
>> product='prod.ogg';                 %creating the audio file for product
>> fs=44100;                           %generating the parameters values (Period, sampling frequency and angular frequency)
>> t=0:1/fs:0.02;
>> w1=2*pi*440*t;
>> w2=2*pi*880*t;
>> audiowrite(sig1, cos(w1), fs);      %writing the function cos(w) on the files created
>> audiowrite(sig2, cos(w2), fs);
>> [y1,fs]=audioread(sig1);
>> [y2,fs]=audioread(sig2);
>> audiowrite(product, y1.*y2, fs);    %performing the product
>> [yprod,fs]=audioread(product);
>> plot(yprod);                        %plotting the product


Nota:tenemos que usar el operando  '.*' porque este producto se crea, valor a valor, en los archivos de argumentos. Para obtener más información, consulte el manual de operaciones del producto con matrices de Octave.

Gráfico de la señal del producto resultante

Efecto gráfico de multiplicar dos señales con una gran diferencia de frecuencia fundamental (Principios de modulación)

Paso 1:

Cree una señal de frecuencia de audio con una frecuencia de 220 Hz.

>> fs=44100;
>> t=0:1/fs:0.03;
>> w=2*pi*220*t;
>> y1=cos(w);
>> plot(y1);


Paso 2:

Cree una señal de modulación de frecuencia más alta de 22000 Hz.

>> y2=cos(100*w);
>> plot(y2);

Paso 3:

Multiplicando y trazando las dos señales.

>> plot(y1.*y2);


Multiplicar una señal por un escalar

El efecto de multiplicar una función por un escalar equivale a modificar su alcance y, en algunos casos, el signo de la fase. Dado un escalar K, el producto de una función F(t) por el escalar se define como:

R(t) =K*F(t)


>> [y,fs]=audioread('cos440.ogg');        %creating the work files
>> res1='coslow.ogg';               
>> res2='coshigh.ogg';
>> res3='cosinverted.ogg';
>> K1=0.2;                                %values of the scalars
>> K2=0.5;
>> K3=-1;
>> audiowrite(res1, K1*y, fs);            %product function-scalar
>> audiowrite(res2, K2*y, fs);
>> audiowrite(res3, K3*y, fs);

Gráfica de la señal original
>> plot(y)

Gráfica de una señal reducida en amplitud en 0,2

>> plot(res1)


Gráfica de una señal reducida en amplitud en 0,5

>> plot(res2)


Gráfica de una Señal con fase invertida

>> plot(res3)

Conclusión


Las operaciones matemáticas básicas, como suma algebraica, producto y producto de una función por un escalar, son la columna vertebral de operaciones más avanzadas entre las que se encuentran, análisis de espectro, modulación en amplitud, modulación angular, etc. tutorial, veremos cómo realizar dichas operaciones y sus efectos en las señales de audio.


Ubuntu
  1. ¿Cómo configurar un clúster MongoDB usando 3 nodos con Ubuntu 16?

  2. Cómo hacer un servidor de Minecraft con Hostinger, Ubuntu, Windows y macOS

  3. Cómo monitorear los archivos de registro del servidor con Logwatch en Debian y Ubuntu

  4. Procesamiento científico de audio, Parte III - Cómo aplicar efectos de procesamiento matemático avanzado en archivos de audio con Octave 4.0 en Ubuntu

  5. Procesamiento científico de audio, Parte I - Cómo leer y escribir archivos de audio con Octave 4.0.0 en Ubuntu

Cómo encontrar y eliminar archivos duplicados en Ubuntu usando Fdupes

Cómo transferir archivos de forma segura entre sistemas Ubuntu usando Croc

Cómo limpiar su sistema Ubuntu usando la herramienta Bleachbit

Cómo hacer una carpeta temporal en Ubuntu usando MKTemp

Cómo crear un proyecto HTML5 básico en Ubuntu usando Netbeans

¿Cómo hacer que el archivo de texto creado en Ubuntu sea compatible con el Bloc de notas de Windows?