【问题标题】:I want to learn audio programming [closed]我想学习音频编程[关闭]
【发布时间】:2011-06-15 15:50:27
【问题描述】:

在我的高中,我们可以参加一个学期的课程,基本上我们可以自学一门学科。我在想我想学习“声音编程”,但我意识到我不知道这意味着什么。例如,我有兴趣了解合成器的工作原理以及声音在计算机科学中的工作原理。我真的想专注于低级代码部分,而不是组合部分。这是一个可行的课题吗?对于完全不熟悉这个的人来说,有什么好的教程吗? 我知道 C++ 并且正在使用 Windows。 this 中的第一个答案让我很感兴趣(尽管它在我脑海中)。

【问题讨论】:

  • 糟糕,我没有意识到我必须这样做。感谢您的提醒!

标签: audio signal-processing synthesis


【解决方案1】:

“声音编程”是一个非常广泛的领域。首先,这绝对是一个可行的科目,但是由于您需要将东西塞进一个学期,因此您需要限制您的范围。我可以看到您正在寻找一个开始的地方,所以这里有一些想法可以让您思考。

既然您提到了“声音在计算机科学中的工作原理”和“合成器”,那么值得指出模拟声音、采样声音和之间的区别>合成声音,因为它们是不同的概念。我将在这里简要解释一下。

模拟声音是我们人类通常解释的声音——人耳感知到的空气振动。您可以将声音视为一维信号,其中自变量是时间,因变量是振动幅度。模拟声音在时域和幅度域中都是连续的。较旧的录音方法(例如磁带)使用模拟声音表示。计算机不经常使用模拟声音(计算机不擅长存储连续域数据),但理解模拟信号仍然很重要。如果您沿着这条路走,预计会看到大量数学知识(例如复数、傅里叶变换)。

采样的声音是一种很适合用计算机处理的声音表示。人们最熟悉通过 CD 和其他音乐录音采样的声音。以某种频率对模拟信号进行采样(例如,用于 CD 录制的 44.1KHz)。因此,采样的声音信号在时域中是离散的。如果信号被量化,那么它在幅度域中也是离散的。 MP3 等格式是采样格式。如果您有兴趣,可以在这个领域研究很多东西,例如恢复(去除静态等)和压缩(同样,编解码器 MP3、Ogg Vorbis)。这很有趣,因为有很多东西要试验和编码。

模拟和采样声音都深入研究了一个称为数字信号处理的领域。谷歌一下,以了解它的感觉。它通常在大学里作为一门课程教授,所以如果你真的很感兴趣,可以看看一些讲座幻灯片,甚至可以尝试一些早期的、更简单的项目。

合成的声音是一种适用于再现音乐曲目的表示,其中播放曲目的乐器是事先已知的。把它想象成电脑的乐谱。必须有人编写活页乐谱——你不能像模拟或采样声音一样录制它。这使得合成声音与模拟声音和采样声音完全不同。此外,计算机需要知道乐器是什么(例如钢琴)以便它可以播放(合成)曲目。如果它不知道乐器,它要么放弃要么选择一个接近的匹配(例如用电子键盘代替钢琴)。我以前从未使用过合成器,所以我无法评论它们的学习曲线。

所以,根据我写的内容——选择一个你更感兴趣的方向,谷歌搜索,然后完善你的问题。

编辑

一本好书是this。您可能可以在亚马逊上查看相关标题并找到更新的内容,但我已经有一段时间没有进行音频处理购物了。

如果你有半小时的空闲时间,那么看看这个video tutorial。它涵盖了声音、图像和视频处理——它们实际上是密切相关的领域。

【讨论】:

  • 很棒的答案。你给了我很多东西。我一定会看看那本书!
【解决方案2】:

考虑通读这本书"Who Is Fourier?: A Mathematical Adventure"。您可以调整这些示例以进行演示基本概念的小型编程任务。完成后,您应该能够在发音元音 a、e、i、o、u 时使用 fft 制作语音频谱图——识别每个元音的基频和共振峰。

我建议学习 Python 和模块 NumPy, SciPy, and matplotlib(那里有很多,所以除了基本教程之外,边学边学)。 iPython shell 有选项“-pylab -p scipy”可以自动将最常用的工具导入你的命名空间。您可以使用PyAudio 录制和播放音频。还有Pygame,它扩展了 SDL(Simple DirectMedia 层)和pyglet,它使用了 OpenAL(音频的 OpenGL;它处理 3D 音频和效果)。

在 C/C++ 方面,有用于信号处理的 IT++、SPUC 和 FFTW,以及用于连接硬件和音频文件的 SDL/SDL_mixer 和 OpenAL/ALmixer。

【讨论】:

    【解决方案3】:
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-10
    相关资源
    最近更新 更多