java中怎么传送声音_如何在Java中生成声音效果?

小编典典

您可以使用Java轻松生成采样的声音数据并进行播放,而无需使用本机代码。如果您正在谈论MIDI,可能会遇到一些棘手的问题,但是我还没有涉足该领域。

要生成采样的声音数据,您必须将过程倒退。我们将采取类似于A-to-D的方式,并随时间采样连续的声音功能。您的声卡对通过麦克风或线路输入的音频执行相同的操作。

首先,选择一个采样率(不是我们正在生成的音调的频率)。让我们以44100

Hz为例,因为这可能是声卡的播放速率(因此没有采样率转换,除非硬件做到这一点,否则并不容易)。

// in hz, number of samples in one second

sampleRate = 44100

// this is the time BETWEEN Samples

samplePeriod = 1.0 / sampleRate

// 2ms

duration = 0.002;

durationInSamples = Math.ceil(duration * sampleRate);

time = 0;

for(int i = 0; i < durationInSamples; i++)

{

// sample a sine wave at 440 hertz at each time tick

// substitute a function that generates a sawtooth as a function of time / freq

// rawOutput[i] = function_of_time(other_relevant_info, time);

rawOutput[i] = Math.sin(2 * Math.PI * 440 * time);

time += samplePeriod;

}

// now you can playback the rawOutput

// streaming this may be trickier

2020-11-13

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值