Um pouco de teoria que eu sei sobre som - som é:
onda, oscilações, oscilações amortecidas, onda pode ser descrita do ponto de vista da física, onda pode ser descrita do ponto de vista da matemática.
Baixe e teste o programa
Como estamos modelando em um computador, nossa onda é descrita usando uma sequência (série de Fourier) de bytes (números de -128 a 127 e zero), ou seja, uma matriz de bytes.
A equação vibracional é melhor descrita pela função SIN.
Concordo, seria muito simples se apenas executássemos a função SIN através da matriz.
Portanto, guiado por artigos sobre a descrição do dispositivo sintetizador Yamaha, escrevi o seguinte algoritmo:
1. Usando a função SIN, uma onda principal ou de modelagem é criada, eis uma fórmula que pode ser útil para outros desenvolvedores:
for(int k = 0; k < SoundLabVisual.player.data.length;k++){ double sinusoid = amplitude1 * Math.sin(2 * (3.14/1 ) * k * frequency1 + faza); }
Onde:
amplitude1 - amplitude
frequency1 - frequência de oscilação
faza - a fase inicial das oscilações
2. Usando a segunda função SIN, uma onda principal é criada, cuja amplitude é o valor da primeira onda:
Captura de tela do programa

Carreguei os sons de teste no programa lmms.
Ouça mp3Será implementado outro algoritmo que funcionará nos canais, se possível, escreverei sobre isso no segundo artigo.
Atualização:
De acordo com os comentários dos comentaristas, agora os algoritmos podem ser multiplicados por si e entre si.
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 )); }
Atualização 2: O programa foi atualizado, agora a onda pode ser misturada com o som.