将音频添加到这些波形公式
Posted
技术标签:
【中文标题】将音频添加到这些波形公式【英文标题】:Adding audio to these wave formulas 【发布时间】:2012-12-04 04:01:54 【问题描述】:我已经写出了这些公式,我认为这些公式应该能够成功生成适当的波形。我如何将它与 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;
【问题讨论】:
请参阅Beeper
以获取生成音调的示例。
【参考方案1】:
我通过创建一个实现 TargetDataLine 的类来做到这一点。大多数要覆盖的方法都可以忽略。数据从 TargetDataLine.read() 方法馈送到 SourceDataLine。将从 TargetDataLine 查询您的公式以填充传递给 SDL 的数据缓冲区。
我假设您已经知道如何将音频值转换为适当的字节格式的 PCM 数据。
我使用了一个波表,并使用公式来生成波表中的数据,但你的公式应该没问题。只需让它们映射到分辨率(16 位?)和 fps 速率(44100 Hz?)的位数。
【讨论】:
以上是关于将音频添加到这些波形公式的主要内容,如果未能解决你的问题,请参考以下文章
音频处理WAV 文件格式分析 ( 逐个字节解析文件头 | 相关字段的计算公式 )
如何使用 Google Apps 脚本将公式添加到 Google 表格?