问题标签 [pitch]

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 投票
6 回答
10958 浏览

audio - 以编程方式增加音频样本数组的音高

你好音频计算世界的好心人,

我有一组代表录音的样本。假设它在 44100Hz 时为 5 秒。我将如何以更高的音调回放这个?是否可以动态增加和减少音高?就像让音高慢慢增加到两倍的速度,然后再降下来。

换句话说,我想录制并播放它,就好像它被 dj '刮擦'

伪代码总是受欢迎的。我将用 C 来写这个。

谢谢,


编辑 1

请允许我澄清我的意图。我想将播放保持在 44100Hz,因此我需要在播放前操作样本。这也是因为我想将音高增加的音频与以正常速率运行的音频混合

以另一种方式表达,也许我需要以某种方式在相同数量的样本上缩小音频?这样播放时声音会更快吗?


编辑 2

另外,我想自己做这件事。请不要使用库(除非您觉得我可以通过代码挑选并找到有趣的东西)。


编辑 3

一段用 C 编写的示例代码,它接受 2 个参数(样本数组和音高因子),然后返回一个新音频数组,这太棒了!


PS我已经开始赏金不是因为我认为已经给出的答案是无效的。我只是认为获得有关该主题的更多反馈会很好。



赏金

老实说,我希望我可以将赏金分配给几个不同的答案,因为它们有很多我认为非常有帮助的。特别感谢 Daniel 向我传递了一些代码,以及 AShelly 和 Hotpaw2 提供了如此详细的回复。

最终,尽管我使用了datageist 引用的另一个 SO 问题的答案,因此该奖项归他所有。

再次感谢大家!

0 投票
1 回答
1563 浏览

android - Android 方向作为转向 - 滚动破坏音高?

我正在开发一个项目,其中包括一个用于控制/转向的 Android 应用程序。

  • 速度:当您将手机向前/向后(俯仰)倾斜时,它会模拟加油和中断。
  • 方向:当您向左/向右倾斜手机(滚动)时,它会模拟左右转向。

我已经编写了一些似乎可以正常工作的代码。但是当我仔细观察时,我发现有些值表现得很奇怪。

当我将手机向前/向后倾斜以处理速度时,它可以完美运行,我得到了预期的速度和方向值。但是当我将手机向左/向右倾斜以处理方向时,它似乎破坏了一些值。当它向左/向右倾斜时,不仅会改变方向值(滚动),还会影响速度值(俯仰)。

如需额外信息:

  • Android 2.2 编程
  • 设备是 Google Nexus One
  • 纵向握住设备

我用来读取传感器值的最相关的代码如下:

因此,当我运行代码时,我会查看打印的值。当向左/向右倾斜设备时,它似乎也会影响音高值。怎么来的?当“滚动”时,我怎样才能获得纯音高值?因此,将手机向左/向右倾斜不会影响/破坏音高值。

0 投票
3 回答
1473 浏览

iphone - 清理嘈杂的倒谱结果

我一直在 iphone 上进行简单的频率检测设置。在存在谐波的情况下,使用 FFT 结果在频域中进行分析有些不可靠。我希望使用倒谱结果来帮助确定正在播放的基频。

我正在使用 AudioToolbox 框架中的 AudioQueues,并使用 Accelerate 框架进行傅里叶变换。

我的过程正是 Wikipedia 的倒谱文章中列出的 Real Power Cepstrum 的内容,具体来说:signal → FT → abs() → square → log → FT → abs() → square → power cepstrum。

我遇到的问题是倒谱结果非常嘈杂。我必须删除第一个和最后 20 个值,因为它们与其他值相比是天文数字。即使在“清理”数据之后,仍然存在大量变化 - 远远超出我对第一张图表的预期。有关频域和频域的可视化,请参见下面的图片。 快速傅里叶变换 FFT 倒谱 倒谱

当我在该图上看到频域中如此明显的赢家时,我希望在频域中看到同样清晰的结果。我玩过 A440,预计 bin 82 左右的震级最高。图表上的第三个峰值代表 bin 79,它足够接近。正如我所说,前 20 个左右的 bin 的数量级如此之大,以至于无法使用,我不得不从数据集中删除它们才能看到任何东西。倒谱数据的另一个奇怪质量是偶数仓似乎比奇数仓高得多。以下是 77-86 的频率区间:

我的问题是如何清理频域,以使我的倒谱域结果不那么狂野。或者,帮助我更好地理解如何解释这些结果,如果它们符合倒谱分析中的预期。我可以发布我正在使用的代码示例,但它主要使用 vDSP 调用,我不知道这会有多大帮助。

0 投票
2 回答
1732 浏览

audio - 从歌声中提取音高

我想从歌声中提取音高。有问题的曲目仅包含一个声音,没有其他声音。

我想知道给定时间点的响度和感知的音高频率。所以类似于以下内容:

我怎样才能实现这样的输出?我对相对于特定音符值的频率轻微变化感兴趣。我有一些 DSP 知识,可以用 C++ 和 python 编程,但如果可能的话,我想避免重新发明轮子。

0 投票
1 回答
1334 浏览

c - Auriotouch,从频率 FFT 中获取音符

我正在开发一种吉他调音器。

我有一个函数可以给我 FFT,以及每个频率的 FFt 值。

我如何从那里得到音符?我必须选择最高峰吗?

}

如果您能提供帮助,非常感谢。

朱利安。

0 投票
3 回答
2628 浏览

.net - 计算偏航/俯仰/滚动

我在船上有三个 GPS 天线。它们相对于彼此处于固定的 xyz 位置。

例如:

  • Ant1 在 (0,0,0)
  • Ant2 在 (0,5,0)
  • Ant3 在 (5,2,0)

我想制作一个程序来计算船行进时的偏航、俯仰和滚动。我将每秒记录三个天线中每一个的 xyz 位置。它将是以下形式的 ascii 格式:

例如:

ant2 和 ant3 同上。

0 投票
3 回答
3514 浏览

iphone - 如何在 iphone sdk 中设置音频文件或录制的音频文件的音高?

我正在重新编码文件或我有音频文件我想更改音高并播放音频文件。如何在使用 Objective-c 的 iphone 程序中设置音高。

请帮我解决这个问题。

谢谢你,马丹·莫汉。

0 投票
1 回答
2068 浏览

iphone - 改变音高(不是实时的)

我一直在想这个问题,但无论我问什么,我都无法得到有用的答案或建议:

我怎样才能发出声音(不是实时的)?

我使用 AVFoundation 框架来播放我的声音,如下所示:

如何在不使用 OpenAL 等其他框架的情况下设置声音的音高或频率。虽然,如果您知道我可以学习一些 OpenAl 的地方,非常欢迎您:D

0 投票
1 回答
394 浏览

macos - 是否可以更改音频队列的播放音高

这应该可以在 Mac OS X 上通过覆盖 AudioStreamBasicDescription 中的采样率然后创建一个新的输出队列来实现。

我已经能够检索默认采样率并编写一个新的(即用 48000 替换 44100),但这不会导致输出信号的任何音高变化。

任何建议将不胜感激。

0 投票
2 回答
1942 浏览

lua - 如何将角度旋转到某人的位置(在 lua 中)?

假设我们有完美运行的函数 setAngle(x,y,z)。现在我们也有了自己和鸡的位置。我们如何使用 setAngle() 来瞄准小鸡?这会在fps游戏中完成吗?我不知道如何将位置转换为角度...>.<