【问题标题】:What information does a 'sample' hold in a VST?VST 中的“样本”包含哪些信息?
【发布时间】:2015-11-19 18:24:55
【问题描述】:

我开始使用 VST SDK 和 Juce 制作自己的 VST。

我是一名程序员,所以我对 C++ 和计算机科学原理(例如整数和浮点数如何以二进制形式存储)有一定的了解。

我能够直接进入代码并基本了解发生了什么,但我终其一生都无法弄清楚样本到底是什么。

在代码中,单个样本是一个浮点值,在不同场景下似乎代表音高或振幅。

我对 DSP 了解不多,所以我希望有人指出我正在寻找的正确信息的正确方向。

在阅读 DSP 时,我只能找到关于浮点值和二进制的内容,以及更多的数学内容,但没有关于数字值如何表示模拟值 ETC,以及如何操纵数字值来模拟现实生活中的事情,比如非常简单的延迟。

谢谢!

编辑:

好的,我想我现在明白了,声音保存只有幅度和频率。

一个样本仅代表幅度,然后频率将是幅度随时间变化的方式,因为样本是周期性且均匀地处理的。

【问题讨论】:

  • 通常(时域)是幅度,而在频域中是特定频率(=音高)的幅度。 en.wikipedia.org/wiki/Fourier_transform ,通常使用 en.wikipedia.org/wiki/Fast_Fourier_transform 实现
  • 谢谢@KarolyHorvath!时域和频域有什么区别?通过阅读代码,似乎只有“处理”函数,其中输入缓冲区被赋予处理方法,并且可以修改输出缓冲区。如果我想在 C++ 中创建自己的 VST 效果,你会建议学习有关 FFT 的所有知识吗?或者是否有更适用于 DSP / VST 的信息的划分?我不怕数学,只是懒惰并尝试从小处着手:)
  • 它们是同一事物的不同表示。有些效果需要处理特定域中的信号。 learn.juce.com/doc/classFFT.php
  • @KarolyHorvath 你帮了大忙。我的大脑很难接受最终唯一被修改的参数是幅度,因为我没有将幅度随时间的变化是频率的逻辑联系起来。而且大多数教程只是假设大多数人都明白这一点。

标签: c++ signal-processing vst juce


【解决方案1】:

鉴于计算机无法存储连续的振幅波,信息是在离散点收集的。

这些离散点称为样本,从连续波形中提取它们的速率称为采样率(因此消费者知道如何将样本再次组合成连续波形)。

【讨论】:

    猜你喜欢
    • 2012-02-29
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    • 1970-01-01
    • 1970-01-01
    • 2019-10-03
    • 1970-01-01
    • 2012-01-26
    相关资源
    最近更新 更多