gpt4 book ai didi

api - ADSR信封-需要淡入淡出整个,一半,四分之一,八分音符的公式(dsp.js)

转载 作者:行者123 更新时间:2023-12-03 01:04:17 24 4
gpt4 key购买 nike

我正在应用ADSR信封来淡入和淡出音符,因此在每个音符之后都听不到弹出声。我正在使用Firefox 4 Audio Data API用JavaScript编程。我正在使用的dsp.js库(https://github.com/corbanbrook/dsp.js)具有ADSR Envelope函数,例如:ADSR(攻击,衰减,sustainLevel,sustain,释放,sampleRate)(以秒为单位)。

对于四分音符,以下听起来不错(假设每分钟120拍):

var envelope = new ADSR(0.01, 0.1, 0.5, 0.1, 0.2, 44100);

我可以使用什么公式来确定适用于整个,一半,四分之一或八分音符的正确ADSR参数?

我是数字信号处理的新手,我需要根据音符的持续时间进行计算以增加/减少起音,衰减,延音和释放。

最佳答案

两种便捷功能
-SyncToSamples以X采样率从音乐时间转换为采样。
-SamplesToSeconds可以按照名称建议进行转换。

function SyncToSamples(SyncFactor, BPM, SampleRate: single): single; 
begin
result := (SyncFactor * 4) * SampleRate * 60 / BPM;
end;

function SamplesToSeconds(Samples, SampleRate: single): single;
begin
result := Samples / SampleRate;
end;

To calculate the length of
- a whole note use SyncFactor = 1
- a half note use SyncFactor = 1/2
- a quarter note use SyncFactor = 1/4



以上功能可用于计算四分音符的长度(以秒为单位)。从那里可以调整各个ADSR阶段的时间,以满足时间要求。

正如其他人所建议的那样,仅通过速度变化来调整延音时间可能听起来更自然。改变起音,衰减和释放时间将改变音符。

关于api - ADSR信封-需要淡入淡出整个,一半,四分之一,八分音符的公式(dsp.js),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4644401/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com