【发布时间】:2011-04-28 12:37:53
【问题描述】:
我的目标是使用 Android 的 AudioTrack 生成 sine、square、triangle 和 sawtooth 信号 类。
我已根据tutorial 进行了尝试。它的效果相对较好,尽管我并不总是确定生成的频率与目标频率的对应程度有多准确。
我想做正方形、三角形等函数。本教程仅实现正弦。因此,我的问题是:
示例的具体工作原理
new Thread( new Runnable( )
{
public void run( )
{
final float frequency = 440;
float increment = (float)(2*Math.PI) * frequency / 44100; // angular increment for each sample
float angle = 0;
AudioDevice device = new AndroidAudioDevice( );
float samples[] = new float[1024];
while( true )
{
for( int i = 0; i < samples.length; i++ )
{
samples[i] = (float)Math.sin( angle );
angle += increment;
}
device.writeSamples( samples );
}
}
} ).start();
我可以将正弦变成如下所示的正方形吗(使用 signum 函数)?
samples[i] = (float)Math.signum(Math.sin( angle ));
基本上,我想从根本上了解正在编写的样本,这样我就可以生成各种信号并最终叠加它们。
感谢您的宝贵时间!
【问题讨论】:
标签: java android generator frequency