Modulación de sonido

Un poco de teoría que sé sobre el sonido: el sonido es:
onda, oscilaciones, oscilaciones amortiguadas, la onda se puede describir desde el punto de vista de la física, la onda se puede describir desde el punto de vista de las matemáticas.

Descargue y pruebe el programa


Como estamos modelando en una computadora, nuestra onda se describe usando una secuencia (serie de Fourier) de bytes (números de -128 a 127 y cero), es decir, una matriz de bytes.

La ecuación vibratoria se describe mejor con la función SIN.

De acuerdo, sería demasiado simple si solo ejecutáramos la función SIN a través de la matriz.

Por lo tanto, guiado por artículos sobre la descripción del dispositivo sintetizador Yamaha, escribí el siguiente algoritmo:

1. Usando la función SIN, se crea una onda principal o de modelado, aquí hay una fórmula que puede ser útil para otros desarrolladores:

for(int k = 0; k < SoundLabVisual.player.data.length;k++){ double sinusoid = amplitude1 * Math.sin(2 * (3.14/1 ) * k * frequency1 + faza); } 

Donde:
amplitud1 - amplitud
frecuencia1 - frecuencia de oscilación
faza - la fase inicial de las oscilaciones

2. Usando la segunda función SIN, se crea una onda principal, con la amplitud de los valores de la primera onda:

 //c   double a1 = 0.1f; //c   double c1 = 0.1f; //c   double d1 = 0.1f; sinusoid = a1 + (sinusoid * Math.sin( (c1 * (double)k) * frequency2Double + d1 )); 


Captura de pantalla del programa

imagen

Cargué los sonidos de prueba en el programa lmms.

imagen

Escuchar mp3

Se implementará otro algoritmo que funcionará en los canales, si es posible, escribiré sobre eso en el segundo artículo.

Actualización:
Según los comentarios de los comentaristas, los algoritmos ahora pueden multiplicarse por sí mismos y entre ellos.

 if(jCheckBox8.isSelected()){ sinusoid = (a1 + (sinusoid * Math.sin( (c1 * (double)k) * frequency2Double + d1 ))) * (a1 + (sinusoid * Math.sin( (c1 * (double)k) * frequency2Double + d1 ))); }else{ sinusoid = a1 + (sinusoid * Math.sin( (c1 * (double)k) * frequency2Double + d1 )); } 


Actualización 2: el programa se ha actualizado, ahora la onda se puede mezclar con el sonido.

Source: https://habr.com/ru/post/es431488/


All Articles