问题标签 [sound-synthesis]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
295 浏览

android - 使用 OpenSL ES 在 Android 上进行音频合成

我正在使用一些合成、FM 或 AM 在 Android 上制作音频应用程序。我正在使用 OpenSL 来降低延迟。我使用了 Audiotrack 库,延迟非常糟糕,但制作声音比使用 OpenSL 容易得多。我从 Native Audio 项目开始。有一点声音产生,但我不知道如何继续它。

这是锯齿声的代码

有人能解释一下为什么这些数字吗?我查看了 OpenSL API,但没有找到关于合成声音的信息。

谢谢

0 投票
2 回答
1557 浏览

android - Android 音轨 getMinBufferSize() 在不同设备上返回不同的值

我有一个音频合成应用程序,它使用缓冲区大小和搜索栏值来改变速度。缓冲区大小越小,速度越快。从缓冲区大小中减去搜索栏值;搜索栏移动得越远,速度越快。

缓冲区大小使用以下公式计算:

在三星 Galaxy S6 手机上,返回的缓冲区大小为 10584。滑块值的底部和顶部分别给出 60 bpm 和 192 bpm。

但是,在 7" LG G Pad 7.0 上,返回的缓冲区大小仅为 3528。因此,起始速度约为 180-200 bpm,而不是所需的 60 bpm。

我正在考虑使用基于屏幕大小的硬编码缓冲区大小,但这只是创可贴的工作。

为什么相同的计算会在两个设备上返回两个不同的缓冲区大小?缓冲区大小是如何计算的?

0 投票
2 回答
572 浏览

android - 使用 OpenSL ES 在 Android 上生成声音

我正在 Android 上制作音频应用程序,我简单地生成了三种类型的声波——正弦波、锯齿波和方波。

产生波浪很好。我打印了结果,看起来不错。但是声音很奇怪。这是我记录的。 https://soundcloud.com/syntey/synth-sine-wave-test-nothing-to-do-here

锯齿和方格是一样的,但是当我用锯齿任意A演奏时,声音是正常的。

有人知道出了什么问题吗?如果我增加缓冲区的大小,那么周期会更长,但仍然是同样的问题

生成正弦波的代码:

0 投票
0 回答
41 浏览

android - Android将两种音(或更多)合成为一种?

如何将两种音(或更多)合成为一种音并播放?

我在使用 Android播放任意音调中发现使用 Android 播放任意音调

谁有相关资料?

0 投票
2 回答
480 浏览

parsing - SID文件格式解析

我想为 .sid 文件(C64 芯片的音乐)编写一个解析器,以将一些模式提取到笔记中。我搜索格式,发现:http ://cpansearch.perl.org/src/LALA/Audio-SID-3.11/SID_file_format.txt

我可以阅读该文档中的标题,但我不明白如何提取单个注释并输出它们。

我搜索现成的转换器并找到了这些:

那是我发现了更多,但 StackOverflow 说我不能发布超过 2 个链接。

请帮忙。对不起,我的英语不好。感谢您的考虑!

0 投票
2 回答
1245 浏览

javascript - 带有两个调制器的 Webaudio FM 合成

F是载波,ED是调制器。

带一个调制器的 FM 合成

只有一个调制器的简单 FM 合成在网络音频中非常简单。

带一个调制器的 FM 合成


但现在我想做这样的东西。

带有两个调制器的 FM 合成

两个调制器。这如何在 webaudio 中实现?

0 投票
5 回答
781 浏览

c - 如何随着时间的推移准确计算正弦波

用例是为数字合成生成正弦波,因此,我们需要计算 sin(dt) 的所有值,其中:

t是一个整数,代表样本数。这是可变的。一小时 CD 音质的范围是从 0 到 158,760,000。

d是双倍的,表示角度的增量。这是恒定的。范围是:大于 0,小于 pi。

目标是使用传统的intdouble数据类型实现高精度。性能并不重要。

天真的实现是:

但是,问题是当t增加时,准确性会降低,因为为“sin”函数提供了大量数字。

一个改进的版本如下:

在这里,我确保将 0 到 2*pi 范围内的数字提供给“sin”函数。

但是,现在的问题是当d很小时,有很多小的加法,每次都会降低精度。

这里的问题是如何提高准确性。


附录1

“由于向“sin”函数提供了大量数字,因此准确性降低了:

输出:

0 投票
2 回答
68 浏览

sound-synthesis - 如何在 Csound 中的乐器定义中包含持续时间

使用函数oscil,我定义了一个具有给定频率和幅度的振荡器组:

我知道我可以在该orchestra部分设置持续时间。但是我怎样才能给不同的振荡提供不同的持续时间呢?我可以在instrument定义中这样做吗?因为我希望能够在以下一行中调用仪器(3 个振荡器)orchestra

0 投票
1 回答
946 浏览

python - Python Pyo midi 键盘模拟

我希望用 python 和 Pyo 开发一个合成器。我想用我的电脑键盘作为 MIDI 键盘来演奏旋律。

如何将我的电脑键盘伪装成 MIDI 键盘?

谢谢

0 投票
1 回答
288 浏览

matlab - 如何用带通滤波器合成雷声

我正在研究在 MATLAB 中合成雷声。我产生了粉红噪声,现在我试图在 30Hz 上添加带通滤波器,但出现错误:

这是我的代码:

也许还有其他方法可以合成它?