将音频添加到这些波形公式

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 文件格式分析 ( 逐个字节解析文件头 | 相关字段的计算公式 )

H5录音音频可视化-实时波形频谱绘制频率直方图

如何使用 Google Apps 脚本将公式添加到 Google 表格?

python:xlsxwriter将数据框+公式添加到excel文件

将音频数据转换为波形数据?