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;

我已经写出了这些公式,我相信它们会成功地生成合适的波形。如何将其与java声音库集成,为每个声音库创建测试音调

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?)。

有关生成音调的示例,请参阅。有关生成音调的示例,请参阅。