问题标签 [signal-processing]

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 投票
4 回答
7217 浏览

audio - 带限波形生成

我正在编写一个软件合成器,需要以 44.1 kHz 采样率实时生成带限、无混叠波形。锯齿波形现在就可以了,因为我可以通过将两个锯齿混合在一起来产生脉冲波,一个倒相和相移。

到目前为止,我已经尝试了以下方法:

  1. 在启动时以不同的带限频率预计算一个周期的完美带限波形样本,然后播放混合在一起的两个最接近的波形样本。我猜工作正常,但感觉不是很优雅。需要大量样本,否则会听到它们之间的“间隙”。插值和混合也是相当 CPU 密集型的。

  2. 整合一系列直流补偿正弦脉冲以获得锯齿波。听起来不错,除了如果您没有完全正确地获得直流补偿(我发现这真的很棘手),波会从零漂移。可以通过向积分器添加一点泄漏来减少 DC 问题,但随后会丢失低频。

所以,我的问题是:通常的做法是什么?任何建议的解决方案在 CPU 方面都必须是高效的,因为它必须实时完成,同时针对许多声音。

0 投票
4 回答
70826 浏览

c# - 在 C# 中创建正弦波或方波

如何生成给定频率的音频正弦波或方波?

我希望这样做来校准设备,那么这些波有多精确?

0 投票
3 回答
5650 浏览

algorithm - DSP/FPGA相位累加器如何工作?

我正在查看相位累加器的代码,我一定是个傻瓜,因为我不明白。代码很简单:

accum 是一个 32 位的寄存器。显然,在某些时候它会翻转。

我的问题真的是:这与灵态有何关系?

0 投票
4 回答
3259 浏览

c# - 使用 C# 从 line-in 连续采样的最简单方法是什么

我想使用 C# 不断地从我的 PC 的音频线中采样(然后处理该数据)。进行抽样的最佳方法是什么?

0 投票
10 回答
25304 浏览

audio - 对数字音频进行下采样和应用低通滤波器

我有来自 CD 的 44Khz 音频流,表示为 16 位 PCM 样本数组。我想将其缩减为 11KHz 流。我怎么做?从我多年前上工程课的日子开始,我知道流将无法准确描述超过 5500Hz 的任何东西,所以我想我也想剪掉超过 5500Hz 的所有东西。有任何想法吗?谢谢。

更新:此页面上有一些代码使用简单的算法和看起来像 { 1, 4, 12, 12, 4, 1 } 的系数数组从 48KHz 转换为 8KHz。我认为这就是我所需要的,但我需要它的 4 倍而不是 6 倍。知道这些常数是如何计算的吗?此外,无论如何,我最终还是将 16 字节样本转换为浮点数,因此我可以使用浮点数而不是短裤进行下采样,如果这对质量有帮助的话。

0 投票
1 回答
11494 浏览

winapi - 如何实时处理麦克风输入?

我开始为我的想法创建概念验证,此时,我需要一些关于我应该如何开始的指导。

我需要对麦克风输入进行采样,并实时处理该信号(想想自动调谐,但要实时工作),而不是“录制”一段时间。

我正在做的是“一种”“麦克风输入到 MIDI 转换器”,因此它需要快速响应。

我在网上调查了一下,显然要走的路是 DirectSound 或 WaveIn* API 函数。现在,根据我阅读的内容,WaveIn API 将让我填充一定大小的缓冲区,这对于录制和后期处理来说是很好的,但我想知道......我如何进行实时处理?

我是否使用 10ms 缓冲区并自己保持循环 50ms 或 100ms 数组,并且我得到一个每 10ms 触发一次分析的函数?(可以访问最新的100ms的输入,其中只有10ms是新的)

我在这里错过了什么吗?

另外,DirectSound 是如何做到的?与常规 Win32 API 相比,它是否为我提供了任何改进的功能?

0 投票
7 回答
1475 浏览

audio - 我可以使用 DirectSound 轻松进行频带滤波吗?如果没有,我该怎么做?

我想知道这样的事情是否可能(并且相对容易做到),如果是这样,我该怎么做?

我想对正在复制的波形文件进行频带过滤。类似于您在大多数类似 Winamp 的应用程序中看到的“均衡器”。
然而,我的想法是不均衡声音,而是使用非常高的负分贝值,几乎杀死我正在过滤的频段。

第一个问题是:DirectSound 是否给了我一些允许我这样做的东西?
如果不是:您将如何解决这个问题?
我知道(尽管我不太了解)您可以使用快速傅立叶变换将采样波形转换为频率分布。现在,在更改某些频率的幅度值后,我显然无法从该分布返回到原始波形:-)

我怎么能做这样的事情?

另外,我可以使这些过滤器精确到什么程度?(如果我想过滤掉从 2250Hz 到 2275Hz 的所有内容,那么过滤器会有什么误差?我可以获得的最大精度取决于什么?)

谢谢!

0 投票
6 回答
16804 浏览

audio - Note onset detection

I am developing a system as an aid to musicians performing transcription. The aim is to perform automatic music transcription (it does not have to be perfect, as the user will correct glitches / mistakes later) on a single instrument monophonic recording. Does anyone here have experience in automatic music transcription? Or digital signal processing in general? Help from anyone is greatly appreciated no matter what your background.

So far I have investigated the use of the Fast Fourier Transform for pitch detection, and a number of tests in both MATLAB and my own Java test programs have shown it to be fast and accurate enough for my needs. Another element of the task that will need to be tackled is the display of the produced MIDI data in sheet music form, but this is something I am not concerned with right now.

In brief, what I am looking for is a good method for note onset detection, i.e. the position in the signal where a new note begins. As slow onsets can be quite difficult to detect properly, I will initially be using the system with piano recordings. This is also partially due to the fact I play piano and should be in a better position to obtain suitable recordings for testing. As stated above, early versions of this system will be used for simple monophonic recordings, possibly progressing later to more complex input depending on progress made in the coming weeks.

0 投票
2 回答
23606 浏览

signal-processing - 低通滤波器软件?

我正在为 .net windows 窗体项目寻找数字低通滤波器代码/库/类,最好用 c、c++ 或 c# 编写。我可能需要设置极点数、系数、窗口等。我不能使用任何可用的 gpl 代码,也不知道还有什么。任何建议表示赞赏。

0 投票
6 回答
6703 浏览

iphone - Cocoa Touch 中的音调生成

我需要产生一种可以操纵频率和波的音调。总体目标是创建一个基本的钢琴。有谁知道我怎么能做到这一点?

我的开发平台是 iPhone 2.x