Java 为这些波形公式添加音频
我已经写出了这些公式,我相信它们会成功地生成合适的波形。如何将其与java声音库集成,为每个声音库创建测试音调Java 为这些波形公式添加音频,java,javasound,Java,Javasound,我已经写出了这些公式,我相信它们会成功地生成合适的波形。如何将其与java声音库集成,为每个声音库创建测试音调 import java.lang.Math; public class SoundWaves { int WAV_MULTI = 25; int amplitude; double frequency; int time; double sineWave; double sawWave; double squareWave;
import java.lang.Math;
public class SoundWaves
{
int WAV_MULTI = 25;
int amplitude;
double frequency;
int time;
double sineWave;
double sawWave;
double squareWave;
SoundWave ( int a, int f, int t)
{
}
double makeSineWave ( int a, int f, int t)
{
sineWave = a * Math.sin(2*PI*f*t); //passing amplitude frequency and time
return sineWave;
}
double makeSawTooth (int a, int f, int t)
{
for ( int i = 1; i < WAV_MULTI; i++)
{
sawWave = sawWave + (Math.sin((2*PI*f*(i*t)/i);
}
return sawWave;
}
double makeSquareWave (int a, int f, int t)
{
for ( int i = 1; i < WAV_MULTI; i++)
{
if ( i%2 != 0 )
squareWave = squareWave + (Math.sin((2*PI*f* (i*t)/i);
}
return squareWave;
}
}
import java.lang.Math;
公共级声波
{
int WAV_MULTI=25;
内振幅;
双频;
整数时间;
双正弦波;
双锯齿波;
双方波;
声波(int a、int f、int t)
{
}
双Make正弦波(整数a、整数f、整数t)
{
正弦波=a*Math.sin(2*PI*f*t);//通过振幅频率和时间
返回正弦波;
}
双锯齿(int a、int f、int t)
{
对于(int i=1;i
我是通过创建一个实现TargetDataLine的类来实现的。大多数要重写的方法都可以忽略。数据从TargetDataLine.read()方法馈送到SourceDataLine。将从TargetDataLine中查询您的公式,以填充传递到SDL的数据缓冲区
我假设您已经知道如何将音频值转换为相应字节格式的PCM数据
我使用了波形表,并使用公式生成波形表中的数据,但您的公式应该很好。只需将它们映射到位数分辨率(16位?)和fps速率(44100 Hz?).我是通过创建一个实现TargetDataLine的类来实现的。大多数要重写的方法都可以忽略。数据从TargetDataLine.read()方法馈送到SourceDataLine。将从TargetDataLine中查询您的公式,以填充传递到SDL的数据缓冲区 我假设您已经知道如何将音频值转换为相应字节格式的PCM数据 我使用了波形表,并使用公式生成波形表中的数据,但您的公式应该很好。只需将它们映射到位数分辨率(16位?)和fps速率(44100 Hz?)。有关生成音调的示例,请参阅。有关生成音调的示例,请参阅。