加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 以编程方式创建垫声音

发布时间:2020-12-16 10:27:56 所属栏目:百科 来源:网络整理
导读:好的,这个可能有点离开了左边的场地,但我还是会试试. 垫是一种环境电子声,有点’哼唱’.像 this 这样的东西. 我怎样才能在代码中生成这个?使用Processing,OpenFrameworks,C,Objective-C或C.请记住,我没有那么长时间的编程. 如果这导致答案,我会非常感动!
好的,这个可能有点离开了左边的场地,但我还是会试试.

垫是一种环境电子声,有点’哼唱’.像 this 这样的东西.

我怎样才能在代码中生成这个?使用Processing,OpenFrameworks,C,Objective-C或C.请记住,我没有那么长时间的编程.

如果这导致答案,我会非常感动!

好的……去!

解决方法

我从来没有听过这里应用的术语“垫”,但它听起来像合成器官的声音,演奏大和弦.

首先,为了表示单个音符,您可以在音符的基频处产生正弦波(如果我们谈论的是A大调,则说440Hz)和接下来的几个倍数(880,1760,3520)和将它们与一些(递减的)权重相加.然后添加以相同方式渲染的和弦(C#和E)的其他音符.

如果这对你来说听起来很有用,我可以根据需要进行扩展.

编辑:通过“一些(减少)重量”,我的意思是添加泛音一些放大倍数,例如

F = 440;  // Hz
tone[t] = A * sin(t/F) + B * sin(t/(2*F)) + C * sin(t/(3*F)); // + etc,perhaps

在哪里,也许,

A = 1.0;
B = 1.0/2.0;
C = 1.0/3.0;

或某些这样的事情.

对于ADSR滤波器(向上看),您将生成的波形乘以在您选择的“攻击”期间从0增加到1的放大倍数,然后在“衰减”期间下降到您选择的某个数字(也许0.7),当你“释放”持续音符时,然后线性地下降到0.

对于回声/混响,您可以将波形添加回自身,但有一些延迟,例如:

D = 4410;  // 10 msec at 44.1 kHz.,as an example value
tone[t] += 0.5 * tone[t-D];

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读