问题标签 [sampling]

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 投票
3 回答
1557 浏览

c# - XNA 动态音频的 C# 环绕弧度角

编辑 2 + 答案

原来我需要在0and之间换行Frequency*2*Math.pi

发帖的每个人都为解决这个问题做出了贡献。由于客人的声誉最低,我只是将他的帖子标记为答案。非常感谢大家,这让我发疯了!

编辑 1

这是我的 WrapValue 方法,之前应该考虑过发布。它不像克里斯泰勒那样复杂,但它对我的影响相同。


这可能适合 Gamedev,但它不是游戏性的,而是更多的代码和数学,所以我把它放在这里。

我正在尝试使用新的 XNA 4.0 DynamicSoundEffectInstance 类将我的 Xbox 变成数字乐器,并且我每秒都会收到一次点击。我已经确定这是由于任何尝试将我的域值包装在 0 和 2*pi 之间造成的。

我编写了一个名为 SineGenerator 的小类,它只维护一个 DynamicSoundEffectInstance 并将其提供给使用Math.Sin().

因为我想要精确并使用 44.1 或 48k 采样率,所以我保持 a double x(我正在喂食的角度Math.Sin())和 a double stepwhere stepis 2 * Math.PI / SAMPLING_FREQUENCY。每次我为 DynamicSoundEffectInstance.SubmitBuffer() 生成数据时,我都会递增xstep添加sin(frequency * x)到我的样本缓冲区(截断为 a,short因为 XNA 仅支持 16 位样本深度)。

我想我最好将角度包裹在 0 和 2*pi 之间,这样我就不会x因为它变大而失去精度。但是,这样做会引入点击。我编写了自己的double WrapValue(double val, double min, double max)方法,以防 MathHelper.WrapAngle() 搞砸了。Math.PI 和 -Math.PI 或 0 和 2*Math.PI 之间的环绕都不会消除点击。但是,如果我不费心包装价值并让它增长,点击就会消失。

我认为这与 .NET 三角函数的准确性有关,sin(0) != sin(2*pi) 如何,但我不知道如何判断。

我的问题:为什么会发生这种情况,我是否应该费心折角?

编码:

0 投票
2 回答
6893 浏览

profiling - 分析器检测与采样

我正在研究分析器之间的主要仪器和采样。我想出了以下信息:

  • 采样:停止程序的执行,取 PC 从而推断程序是
  • 检测:向程序添加一些开销代码,以便增加一些指针以了解程序

如果上述信息有误,请纠正我。

在此之后,我查看了执行时间,有人说检测比采样需要更多时间!它是否正确?

如果是,那是为什么?在采样中,您必须为进程之间的上下文切换付出代价,而在后者中,您在同一个程序中没有成本

我错过了什么吗?

干杯!=)

0 投票
1 回答
547 浏览

c++ - 如何将采样率的影响添加到差分方程?

我想实现下面的差分方程来设计一个累加器和一个微分器:

累加器:
y[n] = y[n-1] + x[n],其中y[n]是第 n 个输出,x[n]是第 n 个输入。

微分器:
y[n] = x[n] - x[n-1],其中y[n]是第 n 个输出,x[n]是第 n 个输入。

累加器:

微分器:

输入向量中的数据来源于一个连续的时间信号。换句话说,它被采样以获得这个离散的时间信号。它有一个采样率 T d

当我增加输入信号的采样率时,累加器的输出幅度。这是意料之中的,因为恰好有更多的样本需要区分。另一方面,随着采样率的增加,微分器的输出幅度减小。当采样率是单一的(即 1.0 个样本/秒)时,微分器和积分器的幅度都是正确的(在数学上认为它们必须是的值)。

我的问题是;
如何消除采样率对输出向量的影响?

我的一般问题是;
假设我从任意因果离散时间传递函数中获得差分方程H(z)。在这种情况下,差分方程可以是任何东西。在这种一般情况下,如何消除采样率的影响?

(请参阅此论坛主题以获取更多详细信息: 相关论坛主题

0 投票
12 回答
59335 浏览

java - 从 List 中取 n 个随机元素?

如何从 中获取 n 个随机元素ArrayList<E>?理想情况下,我希望能够连续调用该take()方法以获取另一个 x 元素,而无需替换。

0 投票
1 回答
12294 浏览

algorithm - 在三角形中采样随机点

假设您有一个任意三角形,其顶点A为 、BC这篇论文(第 4.2 节)说,您可以通过以下顶点的凸组合P从三角形内均匀地生成一个随机点 :ABC

其中r1r2是从 中统一绘制的[0, 1]sqrt是平方根函数。

您如何证明在三角形内均匀分布ABC的采样点是合理的?

编辑

正如在 mathoverflow 问题的评论中指出的那样, Graphical Gems 讨论了这个算法

0 投票
1 回答
3689 浏览

linux - linux中的音频流采样率

我正在尝试使用 C/C++ 从 Linux 中的音频麦克风读取和存储样本。使用 PCM ioctl 我使用 SOUND_PCM_WRITE_RATE ioctl 等将设备设置为具有一定的采样率,例如 10Khz。设备设置正确,并且我能够在使用“读取”设置后从设备读取。

我遇到的问题是,在设置了适当的采样率后,我有一个线程连续从 /dev/dsp1 读取并存储这些样本,但是我在 1 秒的记录中获得的样本数与采样率相差甚远,而且总是比设定的采样率高出几个数量级。任何想法从哪里开始找出可能是什么问题?

编辑:

部分源代码:

0 投票
1 回答
2072 浏览

c# - DirectX 9 HLSL 纹理采样问题

我正在使用托管的 DirectX 2.0(我相信它与 DirectX9 相同)制作应用程序,而且我是 HLSL 的新手,所以如果我所做的事情是愚蠢的,我很抱歉。我正在编写一个简单的像素着色器,它只是将存储的纹理(分配为全局变量)输出到屏幕,但我发现它正在渲染传递给它的纹理(我也在传递不同的渲染纹理,这个着色器是一个测试着色器)。

我的 HLSL 代码如下:

我的 C# 是:

输出是存储在 RenderTexture 中的任何内容,而不是存储在 DepthTexture 中的内容,这是它应该做的。我尝试在这一行中将 RenderTexture 与 DepthTexture 交换:

并且输出是 DepthTexture,所以它显然是从那里获取数据并且纹理格式正确。

有人知道如何告诉 HLSL 何时从传入的纹理中采样以及何时从绘制的数据中采样的任何好的教程吗?

0 投票
2 回答
3225 浏览

ios - 如何从音频文件的长度计算样本数?

给定一个持续时间为 10 秒的音频文件,我如何找出 2 秒和 8 秒之间的样本数?

0 投票
1 回答
300 浏览

audio - 获取音频文件中特定时间对应的样本帧偏移量-iPhone

给定一个持续时间为 10s 的音频文件,如果我想寻找 2s,我如何获得样本帧偏移量?

0 投票
4 回答
2512 浏览

javascript - javascript:从范围生成2个随机但不同的数字

快速提问:

实现这行python代码的最佳方法是什么(从给定范围生成两个随机但不同的数字)...

...在Javascript中?

提前致谢!

马丁