为这些波形公式添加音频

时间:2012-12-04 04:01:55

标签: 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;

    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;
        }
}

1 个答案:

答案 0 :(得分:1)

我是通过创建一个实现TargetDataLine的类来实现的。大多数要覆盖的方法都可以忽略。数据从TargetDataLine.read()方法提供给SourceDataLine。您将从TargetDataLine中查询您的公式,以填充传递给SDL的数据缓冲区。

我假设您已经知道以适当的字节格式将音频值转换为PCM数据。

我使用了波表,并使用公式来生成波表中的数据,但您的公式应该没问题。只需要让它们映射到位分辨率(16位?)和fps速率(44100 Hz?)。